<?php

/**
 * Shipping Methods Display
 *
 * In 2.1 we show methods per package. This allows for multiple methods per order if so desired.
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/cart/cart-shipping.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see https://docs.woocommerce.com/document/template-structure/
 * @package WooCommerce\Templates
 * @version 7.3.0
 */

defined('ABSPATH') || exit;

$formatted_destination    = isset($formatted_destination) ? $formatted_destination : WC()->countries->get_formatted_address($package['destination'], ', ');
$has_calculated_shipping  = !empty($has_calculated_shipping);
$show_shipping_calculator = !empty($show_shipping_calculator);
$calculator_text          = '';
?>
<tr class="woocommerce-shipping-totals shipping">
    <th><?php echo wp_kses_post($package_name); ?></th>
    <td data-title="<?php echo esc_attr($package_name); ?>">
        <?php if ($available_methods) : ?>
            <ul id="shipping_method" class="woocommerce-shipping-methods">
                <?php foreach ($available_methods as $method) : ?>
                    <li>
                        <?php
                        if (1 < count($available_methods)) {
                            printf('<input type="radio" name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" %4$s />', $index, esc_attr(sanitize_title($method->id)), esc_attr($method->id), checked($method->id, $chosen_method, false)); // WPCS: XSS ok.
                        } else {
                            printf('<input type="hidden" name="shipping_method[%1$d]" data-index="%1$d" id="shipping_method_%1$d_%2$s" value="%3$s" class="shipping_method" />', $index, esc_attr(sanitize_title($method->id)), esc_attr($method->id)); // WPCS: XSS ok.
                        }
                        printf('<label for="shipping_method_%1$s_%2$s">%3$s</label>', $index, esc_attr(sanitize_title($method->id)), wc_cart_totals_shipping_method_label($method)); // WPCS: XSS ok.
                        do_action('woocommerce_after_shipping_rate', $method, $index);
                        ?>
                    </li>
                <?php endforeach; ?>
            </ul>
            <?php if (is_cart()) : ?>
                <p class="woocommerce-shipping-destination">
                    <?php
                    if ($formatted_destination) {
                        // Translators: $s shipping destination.
                        printf(esc_html__('Shipping to %s.', 'woocommerce') . ' ', '<strong>' . esc_html($formatted_destination) . '</strong>');
                        $calculator_text = esc_html__('Change address', 'woocommerce');
                    } else {
                        echo wp_kses_post(apply_filters('woocommerce_shipping_estimate_html', __('Shipping options will be updated during checkout.', 'woocommerce')));
                    }
                    ?>
                </p>
            <?php endif; ?>
        <?php
        elseif (!$has_calculated_shipping || !$formatted_destination) :
            if (is_cart() && 'no' === get_option('woocommerce_enable_shipping_calc')) {
                echo wp_kses_post(apply_filters('woocommerce_shipping_not_enabled_on_cart_html', __('Shipping costs are calculated during checkout.', 'woocommerce')));
            } else {
                echo wp_kses_post(apply_filters('woocommerce_shipping_may_be_available_html', __('Enter your address to view shipping options.', 'woocommerce')));
            }
        elseif (!is_cart()) :
            echo wp_kses_post(apply_filters('woocommerce_no_shipping_available_html', __('There are no shipping options available. Please ensure that your address has been entered correctly, or contact us if you need any help.', 'woocommerce')));
        else :
            echo wp_kses_post(
                /**
                 * Provides a means of overriding the default 'no shipping available' HTML string.
                 *
                 * @since 3.0.0
                 *
                 * @param string $html                  HTML message.
                 * @param string $formatted_destination The formatted shipping destination.
                 */
                apply_filters(
                    'woocommerce_cart_no_shipping_available_html',
                    // Translators: $s shipping destination.
                    sprintf(esc_html__('No shipping options were found for %s.', 'woocommerce') . ' ', '<strong>' . esc_html($formatted_destination) . '</strong>'),
                    $formatted_destination
                )
            );
            $calculator_text = esc_html__('Enter a different address', 'woocommerce');
        endif;
        ?>

        <?php if ($show_package_details) : ?>
            <?php echo '<p class="woocommerce-shipping-contents"><small>' . esc_html($package_details) . '</small></p>'; ?>
        <?php endif; ?>

        <?php if ($show_shipping_calculator) : ?>
            <?php woocommerce_shipping_calculator($calculator_text); ?>
        <?php endif; ?>
    </td>
</tr>
<?php if (get_option("wildrobot_logistra_pickuppoint_checkout_inline") === "yes") : ?>
    <?php $service_partner_object = apply_filters("logistra_robots_service_partner_select", null, $args) ?>
    <?php if ($service_partner_object && $service_partner_object->service_partner_possible) : ?>
        <tr class="woocommerce-wildrobot-pickuppoint-checkout-inline">
            <th><?php echo __('Utleveringssted', 'logistra-robots'); ?></th>
            <td>
                <?php
                $value = !empty(WC()->session->get('wildrobot_logistra_service_partner_number')) ? WC()->session->get('wildrobot_logistra_service_partner_number') . "@@@" . WC()->session->get('wildrobot_logistra_service_partner_customer_number') : null;
                woocommerce_form_field("logistra_robots_select_servicepartner", [
                    'type'          => 'select',
                    'class'         => array('logistra_robots_select_servicepartner form-row-wide'),
                    'required'    => false,
                    'options' => $service_partner_object->service_partner_select_values,
                    'default' => $value,
                    'customAttributes' => [
                        'style' => 'font-weight: bold;'
                    ]
                ]);
                ?>
            </td>
        </tr>
        <script>
            jQuery(document).ready(function($) {
                $('.logistra_robots_select_servicepartner').on('change', function() {
                    const selectedOption = $(this).find('option:selected');
                    const servicePartners = <?php echo json_encode($service_partner_object->service_partners); ?>;
                    const servicePartner = servicePartners.find(sp => selectedOption.val() === sp.number + "@@@" + (typeof sp["customer-number"] === 'string' ? sp["customer-number"] : ""));
                    if (!servicePartner || !servicePartner.number) {
                        return;
                    }
                    $.ajax({
                        url: '<?php echo admin_url('admin-ajax.php'); ?>',
                        type: 'POST',
                        data: {
                            action: 'logistra_save_service_partner',
                            service_partner_number: servicePartner.number,
                            service_partner_customer_number: servicePartner["customer-number"],
                            service_partner_name: servicePartner.name,
                            service_partner_postcode: servicePartner.postcode,
                            service_partner_city: servicePartner.city,
                            service_partner_country: servicePartner.country,
                            nonce: '<?php echo wp_create_nonce('wildrobot_logistra_select_servicepartner'); ?>'
                        },
                        success: function(response) {
                            if (response.success) {
                                if (typeof wc_checkout_params !== 'undefined') {
                                    $(document.body).trigger('update_checkout');
                                } else {
                                    // $(document.body).trigger('update_cart');
                                }
                            } else {
                                console.log("Error saving service partner");
                            }
                        }
                    });
                });
            });
        </script>
    <?php endif; ?>
<?php endif; ?>