<?php
/**
 * قالب تکمیل خرید Dima Shop
 * نسخه: 1.0.0
 */
if (!defined('ABSPATH')) exit;

$cart = Dima_Cart::get_instance();
$items = $cart->get_items();

// بررسی خالی بودن سبد
if (empty($items)) {
    $shop_url = get_permalink(get_option('dima_shop_page'));
    ?>
    <div class="checkout-empty" dir="rtl">
        <div class="empty-icon"></div>
        <h2>سبد خرید شما خالی است</h2>
        <p>برای تکمیل خرید، ابتدا محصولی به سبد اضافه کنید</p>
        <a href="<?php echo esc_url($shop_url); ?>" class="btn btn-primary btn-large">
            🛍️ مشاهده محصولات
        </a>
    </div>
    <style>
    .checkout-empty { text-align: center; padding: 80px 20px; background: white; border-radius: 20px; box-shadow: 0 4px 20px rgba(0,0,0,0.06); max-width: 600px; margin: 40px auto; }
    .checkout-empty .empty-icon { font-size: 80px; margin-bottom: 20px; opacity: 0.6; }
    .checkout-empty h2 { font-size: 24px; color: #1f2937; margin-bottom: 10px; }
    .checkout-empty p { color: #6b7280; margin-bottom: 30px; }
    </style>
    <?php
    return;
}

$subtotal = $cart->get_total();
$coupon_discount = $cart->get_coupon_discount();
$final_total = $subtotal - $coupon_discount;
$currency = get_option('dima_currency', 'تومان');

// اطلاعات کاربر لاگین شده
$current_user = wp_get_current_user();
$user_data = array(
    'name' => $current_user->display_name,
    'email' => $current_user->user_email,
    'phone' => get_user_meta($current_user->ID, 'phone', true) ?: ''
);

do_action('dima_before_checkout');
?>

<div class="dima-checkout-page" dir="rtl">
    
    <div class="checkout-header">
        <h1>💳 تکمیل خرید</h1>
        <div class="checkout-steps">
            <div class="step active">
                <span class="step-number"></span>
                <span class="step-label">اطلاعات</span>
            </div>
            <div class="step-line"></div>
            <div class="step">
                <span class="step-number"></span>
                <span class="step-label">پرداخت</span>
            </div>
            <div class="step-line"></div>
            <div class="step">
                <span class="step-number">۳</span>
                <span class="step-label">تایید</span>
            </div>
        </div>
    </div>
    
    <div class="checkout-layout">
        
        <!-- فرم اطلاعات -->
        <div class="checkout-form-section">
            
            <form id="checkout-form" method="post" novalidate>
                <?php wp_nonce_field('dima_checkout', 'dima_checkout_nonce'); ?>
                
                <!-- اطلاعات شخصی -->
                <div class="checkout-box">
                    <h3>👤 اطلاعات شخصی</h3>
                    
                    <div class="form-row">
                        <div class="form-group">
                            <label for="customer_name">نام و نام خانوادگی *</label>
                            <input type="text" id="customer_name" name="customer_name" required 
                                   value="<?php echo esc_attr($user_data['name']); ?>"
                                   minlength="3" maxlength="100" autocomplete="name">
                            <span class="field-error"></span>
                        </div>
                        
                        <div class="form-group">
                            <label for="customer_phone">شماره موبایل *</label>
                            <input type="tel" id="customer_phone" name="customer_phone" required 
                                   value="<?php echo esc_attr($user_data['phone']); ?>"
                                   pattern="09[0-9]{9}" maxlength="11" placeholder="09123456789" autocomplete="tel">
                            <span class="field-error"></span>
                            <small>فرمت: 09xxxxxxxxx</small>
                        </div>
                    </div>
                    
                    <div class="form-row">
                        <div class="form-group">
                            <label for="customer_email">ایمیل (اختیاری)</label>
                            <input type="email" id="customer_email" name="customer_email" 
                                   value="<?php echo esc_attr($user_data['email']); ?>"
                                   maxlength="100" autocomplete="email">
                            <span class="field-error"></span>
                        </div>
                        
                        <div class="form-group">
                            <label for="customer_postal_code">کد پستی *</label>
                            <input type="text" id="customer_postal_code" name="customer_postal_code" required 
                                   pattern="[0-9]{10}" maxlength="10" placeholder="1234567890">
                            <span class="field-error"></span>
                            <small>۱۰ رقم</small>
                        </div>
                    </div>
                </div>
                
                <!-- آدرس -->
                <div class="checkout-box">
                    <h3>📍 آدرس ارسال</h3>
                    
                    <div class="form-row">
                        <div class="form-group">
                            <label for="customer_province">استان *</label>
                            <select id="customer_province" name="customer_province" required>
                                <option value="">— انتخاب استان —</option>
                                <option value="تهران">تهران</option>
                                <option value="اصفهان">اصفهان</option>
                                <option value="فارس">فارس</option>
                                <option value="خراسان رضوی">خراسان رضوی</option>
                                <option value="آذربایجان شرقی">آذربایجان شرقی</option>
                                <option value="آذربایجان غربی">آذربایجان غربی</option>
                                <option value="مازندران">مازندران</option>
                                <option value="گیلان">گیلان</option>
                                <option value="البرز">البرز</option>
                                <option value="سایر">سایر استان‌ها</option>
                            </select>
                            <span class="field-error"></span>
                        </div>
                        
                        <div class="form-group">
                            <label for="customer_city">شهر *</label>
                            <input type="text" id="customer_city" name="customer_city" required 
                                   maxlength="50" placeholder="نام شهر">
                            <span class="field-error"></span>
                        </div>
                    </div>
                    
                    <div class="form-group">
                        <label for="customer_address">آدرس کامل *</label>
                        <textarea id="customer_address" name="customer_address" required 
                                  minlength="10" maxlength="500" rows="3"
                                  placeholder="خیابان، کوچه، پلاک، واحد..."></textarea>
                        <span class="field-error"></span>
                    </div>
                </div>
                
                <!-- توضیحات -->
                <div class="checkout-box">
                    <h3>📝 توضیحات سفارش (اختیاری)</h3>
                    <div class="form-group">
                        <textarea name="order_notes" rows="3" maxlength="500" 
                                  placeholder="توضیحات اضافی برای سفارش شما..."></textarea>
                    </div>
                </div>
                
            </div>
            
            <!-- خلاصه سفارش -->
            <div class="checkout-summary-section">
                <div class="summary-card">
                    <h3>📋 خلاصه سفارش</h3>
                    
                    <!-- آیتم‌ها -->
                    <div class="summary-items">
                        <?php foreach ($items as $item): ?>
                        <div class="summary-item">
                            <div class="item-info">
                                <span class="item-title"><?php echo esc_html($item['title']); ?></span>
                                <span class="item-qty">× <?php echo intval($item['quantity']); ?></span>
                            </div>
                            <span class="item-price"><?php echo number_format($item['subtotal']); ?> <?php echo esc_html($currency); ?></span>
                        </div>
                        <?php endforeach; ?>
                    </div>
                    
                    <div class="summary-divider"></div>
                    
                    <!-- جمع کل -->
                    <div class="summary-row">
                        <span>جمع کل:</span>
                        <span><?php echo number_format($subtotal); ?> <?php echo esc_html($currency); ?></span>
                    </div>
                    
                    <?php if ($coupon_discount > 0): ?>
                    <div class="summary-row discount-row">
                        <span>تخفیف:</span>
                        <span style="color:#10b981;">-<?php echo number_format($coupon_discount); ?> <?php echo esc_html($currency); ?></span>
                    </div>
                    <?php endif; ?>
                    
                    <div class="summary-row final-row">
                        <span><strong>مبلغ قابل پرداخت:</strong></span>
                        <span class="final-amount">
                            <strong><?php echo number_format($final_total); ?> <?php echo esc_html($currency); ?></strong>
                        </span>
                    </div>
                    
                    <!-- دکمه پرداخت -->
                    <button type="submit" name="dima_place_order" class="btn btn-primary btn-block btn-large place-order-btn">
                        🔒 پرداخت امن و ثبت سفارش
                    </button>
                    
                    <!-- نمادهای اعتماد -->
                    <div class="trust-badges">
                        <div class="trust-item">
                            <span class="trust-icon"></span>
                            <span>پرداخت امن با درگاه معتبر</span>
                        </div>
                        <div class="trust-item">
                            <span class="trust-icon"></span>
                            <span>SSL رمزنگاری شده</span>
                        </div>
                        <div class="trust-item">
                            <span class="trust-icon">✅</span>
                            <span>ضمانت بازگشت وجه</span>
                        </div>
                    </div>
                    
                </div>
            </div>
            
        </div>
        
    </form>
    
</div>

<style>
.dima-checkout-page {
    max-width: 1200px;
    margin: 0 auto;
    padding: 30px 20px;
    font-family: 'Vazir', Tahoma, sans-serif;
}

/* Header */
.checkout-header {
    margin-bottom: 30px;
}

.checkout-header h1 {
    font-size: 28px;
    color: #1f2937;
    margin: 0 0 20px 0;
}

.checkout-steps {
    display: flex;
    align-items: center;
    gap: 10px;
}

.step {
    display: flex;
    align-items: center;
    gap: 8px;
}

.step-number {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #e5e7eb;
    color: #6b7280;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 14px;
}

.step.active .step-number {
    background: linear-gradient(135deg, #6366f1, #a855f7);
    color: white;
}

.step-label {
    font-size: 14px;
    color: #6b7280;
    font-weight: 600;
}

.step.active .step-label {
    color: #6366f1;
}

.step-line {
    flex: 1;
    height: 2px;
    background: #e5e7eb;
    max-width: 80px;
}

/* Layout */
.checkout-layout {
    display: grid;
    grid-template-columns: 1fr 380px;
    gap: 30px;
}

@media (max-width: 968px) {
    .checkout-layout {
        grid-template-columns: 1fr;
    }
}

/* Form */
.checkout-box {
    background: white;
    border-radius: 16px;
    padding: 24px;
    margin-bottom: 20px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.06);
    border: 1px solid #e5e7eb;
}

.checkout-box h3 {
    font-size: 18px;
    color: #1f2937;
    margin: 0 0 20px 0;
    padding-bottom: 12px;
    border-bottom: 2px solid #f3f4f6;
}

.form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-bottom: 15px;
}

@media (max-width: 768px) {
    .form-row {
        grid-template-columns: 1fr;
    }
}

.form-group {
    margin-bottom: 15px;
}

.form-group label {
    display: block;
    font-weight: 600;
    font-size: 14px;
    color: #374151;
    margin-bottom: 6px;
}

.form-group input,
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 12px 14px;
    border: 2px solid #e5e7eb;
    border-radius: 10px;
    font-family: inherit;
    font-size: 14px;
    transition: all 0.2s;
    background: white;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    outline: none;
    border-color: #6366f1;
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
}

.form-group input.error,
.form-group select.error,
.form-group textarea.error {
    border-color: #ef4444;
}

.field-error {
    display: block;
    color: #ef4444;
    font-size: 12px;
    margin-top: 4px;
    min-height: 16px;
}

.form-group small {
    display: block;
    color: #6b7280;
    font-size: 12px;
    margin-top: 4px;
}

/* Summary */
.summary-card {
    background: white;
    border-radius: 16px;
    padding: 24px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.06);
    border: 1px solid #e5e7eb;
    position: sticky;
    top: 100px;
}

.summary-card h3 {
    font-size: 18px;
    color: #1f2937;
    margin: 0 0 20px 0;
    padding-bottom: 12px;
    border-bottom: 2px solid #f3f4f6;
}

.summary-items {
    margin-bottom: 15px;
}

.summary-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 0;
    border-bottom: 1px solid #f3f4f6;
}

.summary-item:last-child {
    border-bottom: none;
}

.item-info {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.item-title {
    font-weight: 600;
    font-size: 14px;
    color: #1f2937;
}

.item-qty {
    font-size: 12px;
    color: #6b7280;
}

.item-price {
    font-weight: 700;
    font-size: 14px;
    color: #1f2937;
}

.summary-divider {
    height: 1px;
    background: #e5e7eb;
    margin: 15px 0;
}

.summary-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 0;
    font-size: 14px;
}

.discount-row {
    color: #10b981;
}

.final-row {
    background: linear-gradient(135deg, #eef2ff, #faf5ff);
    padding: 16px;
    border-radius: 12px;
    margin: 15px 0;
}

.final-amount {
    font-size: 20px;
    color: #6366f1;
}

/* Place Order Button */
.place-order-btn {
    margin-top: 20px;
    text-align: center;
}

/* Trust Badges */
.trust-badges {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid #e5e7eb;
}

.trust-item {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 13px;
    color: #6b7280;
}

.trust-icon {
    font-size: 18px;
}

/* Buttons */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px 24px;
    border-radius: 10px;
    font-family: inherit;
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    border: none;
    text-decoration: none;
    transition: all 0.2s;
}

.btn-primary {
    background: linear-gradient(135deg, #6366f1, #a855f7);
    color: white;
}

.btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(99, 102, 241, 0.3);
}

.btn-primary:disabled {
    opacity: 0.6;
    cursor: not-allowed;
    transform: none;
}

.btn-block {
    width: 100%;
}

.btn-large {
    padding: 16px 32px;
    font-size: 16px;
}

/* Loading */
.place-order-btn.loading {
    position: relative;
    color: transparent !important;
}

.place-order-btn.loading::after {
    content: '';
    position: absolute;
    width: 24px;
    height: 24px;
    border: 3px solid rgba(255,255,255,0.3);
    border-top-color: white;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

/* Alert */
.checkout-alert {
    padding: 15px 20px;
    border-radius: 10px;
    margin-bottom: 20px;
    font-size: 14px;
}

.checkout-alert.error {
    background: #fee2e2;
    color: #991b1b;
    border: 1px solid #fecaca;
}

.checkout-alert.success {
    background: #d1fae5;
    color: #065f46;
    border: 1px solid #a7f3d0;
}
</style>

<script>
jQuery(document).ready(function($) {
    
    // اعتبارسنجی فرم
    $('#checkout-form').on('submit', function(e) {
        var isValid = true;
        var $form = $(this);
        var $btn = $form.find('.place-order-btn');
        
        // پاک کردن خطاهای قبلی
        $form.find('.field-error').text('');
        $form.find('input, select, textarea').removeClass('error');
        
        // بررسی فیلدهای الزامی
        $form.find('[required]').each(function() {
            var $field = $(this);
            var value = $field.val().trim();
            var $errorSpan = $field.siblings('.field-error');
            
            if (!value) {
                isValid = false;
                $field.addClass('error');
                $errorSpan.text('این فیلد الزامی است');
            } else if ($field.attr('pattern')) {
                var pattern = new RegExp('^' + $field.attr('pattern') + '$');
                if (!pattern.test(value)) {
                    isValid = false;
                    $field.addClass('error');
                    $errorSpan.text('فرمت وارد شده صحیح نیست');
                }
            } else if ($field.attr('minlength')) {
                if (value.length < parseInt($field.attr('minlength'))) {
                    isValid = false;
                    $field.addClass('error');
                    $errorSpan.text('حداقل ' + $field.attr('minlength') + ' کاراکتر وارد کنید');
                }
            }
        });
        
        if (!isValid) {
            e.preventDefault();
            $('html, body').animate({
                scrollTop: $form.find('.error').first().offset().top - 100
            }, 300);
            return false;
        }
        
        // نمایش loading
        $btn.addClass('loading').prop('disabled', true);
    });
    
    // حذف کلاس error هنگام تایپ
    $(document).on('input change', 'input, select, textarea', function() {
        $(this).removeClass('error');
        $(this).siblings('.field-error').text('');
    });
    
});
</script>

<?php
// ═══════════════════════════════════════════════════════════
// پردازش سفارش
// ═══════════════════════════════════════════════════════════
if (isset($_POST['dima_place_order']) && check_admin_referer('dima_checkout', 'dima_checkout_nonce')) {
    
    // Rate limiting
    if (class_exists('Dima_Security') && !Dima_Security::check_rate_limit('checkout', 5, 60)) {
        echo '<div class="checkout-alert error">تعداد درخواست‌های شما بیش از حد مجاز است. لطفاً چند دقیقه صبر کنید.</div>';
        return;
    }
    
    // دریافت و اعتبارسنجی داده‌ها
    $errors = array();
    
    $customer_data = array(
        'name' => sanitize_text_field($_POST['customer_name'] ?? ''),
        'phone' => preg_replace('/[^0-9+]/', '', $_POST['customer_phone'] ?? ''),
        'email' => sanitize_email($_POST['customer_email'] ?? ''),
        'province' => sanitize_text_field($_POST['customer_province'] ?? ''),
        'city' => sanitize_text_field($_POST['customer_city'] ?? ''),
        'address' => sanitize_textarea_field($_POST['customer_address'] ?? ''),
        'postal_code' => preg_replace('/[^0-9]/', '', $_POST['customer_postal_code'] ?? ''),
        'notes' => sanitize_textarea_field($_POST['order_notes'] ?? '')
    );
    
    // اعتبارسنجی
    if (strlen($customer_data['name']) < 3) $errors[] = 'نام معتبر وارد کنید';
    if (!preg_match('/^09[0-9]{9}$/', $customer_data['phone'])) $errors[] = 'شماره موبایل معتبر نیست';
    if (!empty($customer_data['email']) && !is_email($customer_data['email'])) $errors[] = 'ایمیل معتبر نیست';
    if (empty($customer_data['province'])) $errors[] = 'استان را انتخاب کنید';
    if (strlen($customer_data['city']) < 2) $errors[] = 'شهر را وارد کنید';
    if (strlen($customer_data['address']) < 10) $errors[] = 'آدرس کامل را وارد کنید';
    if (!preg_match('/^[0-9]{10}$/', $customer_data['postal_code'])) $errors[] = 'کد پستی ۱۰ رقمی معتبر وارد کنید';
    
    if (!empty($errors)) {
        echo '<div class="checkout-alert error"><strong>خطا در ثبت سفارش:</strong><ul style="margin:10px 0 0 20px;">';
        foreach ($errors as $error) {
            echo '<li>' . esc_html($error) . '</li>';
        }
        echo '</ul></div>';
        return;
    }
    
    // ایجاد سفارش
    $checkout = Dima_Checkout::get_instance();
    $coupon_code = $cart->get_coupon_code();
    $discount = $cart->get_coupon_discount();
    
    $order_id = $checkout->create_order($customer_data, $items, $coupon_code, $discount);
    
    if (is_wp_error($order_id)) {
        echo '<div class="checkout-alert error"> ' . esc_html($order_id->get_error_message()) . '</div>';
        return;
    }
    
    // اتصال به درگاه پرداخت
    $gateway = get_option('dima_payment_gateway', 'zarinpal');
    $payment_url = Dima_Gateway::process_payment($order_id, $gateway);
    
    if (is_wp_error($payment_url)) {
        echo '<div class="checkout-alert error">❌ خطا در اتصال به درگاه: ' . esc_html($payment_url->get_error_message()) . '</div>';
        return;
    }
    
    // هدایت به درگاه
    if (is_array($payment_url) && isset($payment_url['post_data'])) {
        // فرم POST برای ملت
        echo '<form id="payment-form" action="' . esc_url($payment_url['url']) . '" method="POST">';
        foreach ($payment_url['post_data'] as $key => $value) {
            echo '<input type="hidden" name="' . esc_attr($key) . '" value="' . esc_attr($value) . '">';
        }
        echo '</form>';
        echo '<script>document.getElementById("payment-form").submit();</script>';
    } else {
        wp_redirect($payment_url);
        exit;
    }
}

do_action('dima_after_checkout');
?>