<?php
/**
 * کلاس مدیریت کوپن‌های تخفیف
 */
if (!defined('ABSPATH')) exit;

class Dima_Coupon {
    
    private static $instance = null;
    
    public static function get_instance() {
        if (null === self::$instance) {
            self::$instance = new self();
        }
        return self::$instance;
    }
    
    /**
     * اعمال کوپن
     */
    public function apply_coupon($code, $cart_total) {
        global $wpdb;
        $table = $wpdb->prefix . 'dima_coupons';
        
        $coupon = $wpdb->get_row($wpdb->prepare(
            "SELECT * FROM $table WHERE code = %s AND status = 'active'",
            $code
        ));
        
        if (!$coupon) {
            return new WP_Error('invalid_coupon', 'کد کوپن نامعتبر است');
        }
        
        if ($coupon->expiry_date && strtotime($coupon->expiry_date) < time()) {
            return new WP_Error('expired_coupon', 'کد کوپن منقضی شده است');
        }
        
        if ($coupon->min_amount > 0 && $cart_total < $coupon->min_amount) {
            return new WP_Error('min_amount', 'حداقل مبلغ خرید باید ' . number_format($coupon->min_amount) . ' تومان باشد');
        }
        
        if ($coupon->max_uses > 0 && $coupon->used_count >= $coupon->max_uses) {
            return new WP_Error('max_uses', 'ظرفیت استفاده از این کوپن تکمیل شده است');
        }
        
        $discount = 0;
        if ($coupon->type === 'percent') {
            $discount = ($cart_total * $coupon->value) / 100;
        } else {
            $discount = $coupon->value;
        }
        
        if ($discount > $cart_total) {
            $discount = $cart_total;
        }
        
        return array(
            'coupon_id' => $coupon->id,
            'code' => $coupon->code,
            'type' => $coupon->type,
            'value' => $coupon->value,
            'discount' => $discount
        );
    }
    
    /**
     * افزایش تعداد استفاده
     */
    public function increment_usage($coupon_id) {
        global $wpdb;
        $table = $wpdb->prefix . 'dima_coupons';
        
        $wpdb->query($wpdb->prepare(
            "UPDATE $table SET used_count = used_count + 1 WHERE id = %d",
            $coupon_id
        ));
    }
    
    /**
     * اعتبارسنجی کوپن
     */
    public function validate_coupon($code) {
        global $wpdb;
        $table = $wpdb->prefix . 'dima_coupons';
        
        $coupon = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table WHERE code = %s", $code));
        
        if (!$coupon) return false;
        if ($coupon->status !== 'active') return false;
        if ($coupon->expiry_date && strtotime($coupon->expiry_date) < time()) return false;
        if ($coupon->max_uses > 0 && $coupon->used_count >= $coupon->max_uses) return false;
        
        return true;
    }
}