<?php
/*
 * Copyright (c) 2023 LatePoint LLC. All rights reserved.
 */

/* @var $cart OsCartModel */
/* @var $customer OsCustomerModel */
/* @var $booking OsBookingModel */
/* @var $active_cart_item OsCartItemModel */
/* @var $output_target string [summary_panel, step_verify] */
/* @var $current_step_code string */


if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}
?>

    <div class="cart-summary-main-section">
		<?php
		if ( ! $cart->is_empty() ) {
			$cart_bookings = $cart->get_bookings_from_cart_items();
			$cart_bundles  = $cart->get_bundles_from_cart_items();


			$count_class = ( ( count( $cart_bookings ) + count( $cart_bundles ) ) == 1 ) ? 'single-item' : 'multi-item';

			if ( $cart_bookings && $cart_bundles && $output_target != 'summary_panel' ) {
				?>
                <div class="summary-heading summary-variant-heading">
                    <div class="pb-heading">
                        <div class="pbh-label"><?php esc_html_e( 'Service Bundles', 'latepoint' ); ?></div>
                        <div class="pbh-line"></div>
                    </div>
                </div>
				<?php
			}

			if ( $cart_bundles ) {
				foreach ( $cart_bundles as $cart_item_id => $bundle ) { ?>
                    <div class="cart-item-wrapper <?php echo esc_attr($count_class); ?>">
                        <div class="summary-box main-box" data-cart-item-id="<?php echo esc_attr($cart_item_id); ?>">
							<?php
							$bundle_headings = [];
							$bundle_headings = apply_filters( 'latepoint_cart_summary_bundle_headings', $bundle_headings, $bundle );
							if ( $bundle_headings ) {
								echo '<div class="summary-box-heading">';
								foreach ( $bundle_headings as $heading ) {
									echo '<div class="sbh-item">' . esc_html($heading) . '</div>';
								}
								echo '<div class="sbh-line"></div>';
								echo '</div>';
							}
							$bundle_services              = $bundle->get_services();
							$bundle_services_descriptions = [];
							foreach ( $bundle_services as $service ) {
								$qty                            = $bundle->quantity_for_service( $service->id );
								$qty_html                       = $qty > 1 ? ' [' . $qty . ']' : '';
								$bundle_services_descriptions[] = $service->name . $qty_html;
							}
							?>
                            <div class="summary-box-content os-cart-item is-removable">
								<?php if ( OsCartsHelper::can_checkout_multiple_items() ) { ?>
                                    <div class="os-remove-item-from-cart"
                                         role="button"
                                         tabindex="0"
                                         data-confirm-text="<?php esc_attr_e( 'Are you sure you want to remove this item from your cart?', 'latepoint' ); ?>"
                                         data-cart-item-id="<?php echo esc_attr($cart_item_id); ?>"
                                         data-nonce="<?php echo esc_attr( wp_create_nonce( 'remove_item_from_cart' ) ); ?>"
                                         data-route="<?php echo esc_attr(OsRouterHelper::build_route_name( 'carts', 'remove_item_from_cart' )); ?>">
                                        <div class="os-remove-from-cart-icon"></div></div>
								<?php } ?>
                                <div class="sbc-big-item"><?php echo esc_html($bundle->name); ?></div>
                                <div class="sbc-highlighted-item">
									<?php echo esc_html(implode( ', ', $bundle_services_descriptions )); ?>
                                </div>
                            </div>
                        </div>
                    </div>
					<?php
				}
			}

			if ( $cart_bookings && $cart_bundles && $output_target != 'summary_panel' ) {
				?>
                <div class="summary-heading summary-variant-heading">
                    <div class="pb-heading">
                        <div class="pbh-label"><?php esc_html_e( 'Individual Services', 'latepoint' ); ?></div>
                        <div class="pbh-line"></div>
                    </div>
                </div>
				<?php
			}
			if ( $cart_bookings ) {

				$same_location = OsBookingHelper::bookings_have_same_location( $cart_bookings );
				$same_agent    = OsBookingHelper::bookings_have_same_agent( $cart_bookings );

                $recurrent_bookings_packs = [];
				foreach ( $cart_bookings as $cart_item_id => $cart_booking ) {
                    $cart_booking->cart_item_id = $cart_item_id;
                    if($cart_booking->recurrence_id){
                        $recurrent_bookings_packs['recurrence_'.$cart_booking->recurrence_id][] = $cart_booking;
                    }else{
                        echo '<div class="cart-item-wrapper ' . esc_attr($count_class) . '">';
                        echo OsBookingHelper::generate_summary_for_booking( $cart_booking, $cart_item_id );
                        if ( ! $same_agent || ! $same_location ) {
                            echo '<div class="booking-summary-info-w">';
                            echo '<div class="summary-boxes-columns">';
                            if ( ! $same_agent && ( OsAgentHelper::count_agents() > 1 ) ) {
                                OsAgentHelper::generate_summary_for_agent( $cart_booking );
                            }
                            if ( ! $same_location ) {
                                OsLocationHelper::generate_summary_for_location( $cart_booking );
                            }
                            echo '</div>';
                            echo '</div>';
                        }
                        echo '</div>';
                    }
				}
                if(!empty($recurrent_bookings_packs)){
                    foreach($recurrent_bookings_packs as $recurrent_bookings_pack){
                        echo '<div class="cart-item-wrapper ' . esc_attr($count_class) . '">';
                        $recurrent_bookings_sequence_info = apply_filters('latepoint_recurrent_bookings_sequence_info', '', $recurrent_bookings_pack, $same_location, $same_agent);
                        echo $recurrent_bookings_sequence_info;
                        echo '</div>';
                    }
                }
			}

			if ( $cart_bookings ) {
				echo '<div class="booking-summary-info-w">';
				echo '<div class="summary-boxes-columns">';
				if ( $same_agent && ( OsAgentHelper::count_agents() > 1 ) ) {
					OsAgentHelper::generate_summary_for_agent( reset( $cart_bookings ) );
				}
				if ( $same_location ) {
					OsLocationHelper::generate_summary_for_location( reset( $cart_bookings ) );
				}
				if ( !empty($customer) && !$customer->is_new_record() ) {
					OsCustomerHelper::generate_summary_for_customer( $customer, ($current_step_code != 'customer') );
				}
				echo '</div>';
				echo '</div>';
			} else {
				if ( !empty($customer) && !$customer->is_new_record() ) {
					echo '<div class="booking-summary-info-w">';
					echo '<div class="summary-boxes-columns">';
					OsCustomerHelper::generate_summary_for_customer( $customer, ($current_step_code != 'customer') );
					echo '</div>';
					echo '</div>';
				}
			}
		}
		if ( OsCartsHelper::can_checkout_multiple_items() ) {
			echo '<div class="latepoint-add-another-item-trigger-wrapper on-summary">
					<div class="latepoint-add-another-item-trigger" tabindex="0" data-step="' . esc_attr(OsStepsHelper::get_first_step_code( 'booking' )) . '">
						<i class="latepoint-icon latepoint-icon-plus"></i>
						<span>' . esc_html__( 'Add More', 'latepoint' ) . '</span>
					</div>
				</div>';
		}

		do_action( 'latepoint_cart_summary_before_price_breakdown', $cart );
		?>
    </div>
<?php if ( ! $cart->is_empty() || ( $booking && ! empty( $active_cart_item ) ) ) {

	if ( $cart->is_empty() ) {
		// cart is empty - temporary add active cart item to cart to get a breakdown
		$cart->add_item( $active_cart_item, false );
        $just_added = true;
	}else{
        $just_added = false;
    }
	$price_breakdown_rows = $cart->generate_price_breakdown_rows( [ 'payments', 'balance' ] );
    $extra_css_classes = [];
    $extra_css_classes[] = ( count( $cart->get_items() ) > 1 || ( !$just_added && $booking->is_ready_for_summary() && !$cart->is_empty() && isset( $active_cart_item ) && $active_cart_item->is_new_record() ) ) ? 'compact-summary' : 'full-summary';
    $extra_css_classes[] = ( count( $cart->get_items() ) > 1 ) ? 'multi-item' : 'single-item';
	?>
    <div class="summary-price-breakdown-wrapper <?php echo esc_attr(implode(' ', $extra_css_classes)); ?>">
        <?php if( $cart->get_subtotal() > 0 || OsSettingsHelper::is_off('hide_breakdown_if_subtotal_zero')){ ?>
        <div class="summary-price-breakdown-inner">
            <div class="price-breakdown-unfold">
                <i class="latepoint-icon latepoint-icon-chevron-right"></i>
                <span><?php esc_html_e( 'Breakdown', 'latepoint' ); ?></span>
            </div>
            <div class="pb-heading">
                <div class="pbh-label"><?php esc_html_e( 'Cost Breakdown', 'latepoint' ); ?></div>
                <div class="pbh-line"></div>
            </div>
			<?php
			OsPriceBreakdownHelper::output_price_breakdown( $price_breakdown_rows ); ?>
        </div>
        <?php } ?>
		<?php
		if ( OsCartsHelper::can_checkout_multiple_items() ) {
			echo '<div class="latepoint-add-another-item-trigger-wrapper on-verify">
					<div class="latepoint-add-another-item-trigger" tabindex="0" data-step="' . esc_attr(OsStepsHelper::get_first_step_code( 'booking' )) . '">
						<i class="latepoint-icon latepoint-icon-plus"></i>
						<span>' . esc_html__( 'Add more items to this order', 'latepoint' ) . '</span>
					</div>
				</div>';
		}
		?>
    </div>
<?php } ?>