<?php
/**
 * Helper: Tính toán khuyến mãi và affiliate
 */

/**
 * Lấy khuyến mãi áp dụng dựa trên số lượng
 */
function layKhuyenMaiTheoSoLuong($pdo, $loai_noi_dung, $id_noi_dung, $so_luong) {
    $bang = ($loai_noi_dung === 'khoa_hoc') ? 'khuyen_mai_khoa_hoc' : 'khuyen_mai_dich_vu';
    $cot_id = ($loai_noi_dung === 'khoa_hoc') ? 'khoa_hoc_id' : 'dich_vu_id';
    
    $stmt = $pdo->prepare("
        SELECT * FROM $bang 
        WHERE $cot_id = ? AND so_luong_toi_thieu <= ? AND trang_thai = 1
        ORDER BY so_luong_toi_thieu DESC
        LIMIT 1
    ");
    $stmt->execute([$id_noi_dung, $so_luong]);
    return $stmt->fetch();
}

/**
 * Tính giá sau khuyến mãi
 */
function tinhGiaSauKhuyenMai($gia_goc, $khuyen_mai) {
    if (!$khuyen_mai) {
        return $gia_goc;
    }
    
    if ($khuyen_mai['loai_khuyen_mai'] === 'tien_mat') {
        return max(0, $gia_goc - $khuyen_mai['gia_tri_khuyen_mai']);
    } else { // phan_tram
        return $gia_goc * (1 - $khuyen_mai['gia_tri_khuyen_mai'] / 100);
    }
}

/**
 * Tính affiliate dựa trên giá sau khuyến mãi
 */
function tinhAffiliateVoiKhuyenMai($pdo, $loai_noi_dung, $id_noi_dung, $gia_goc, $so_luong) {
    // Lấy khuyến mãi
    $khuyen_mai = layKhuyenMaiTheoSoLuong($pdo, $loai_noi_dung, $id_noi_dung, $so_luong);
    
    // Tính giá sau khuyến mãi
    $gia_sau_khuyen_mai = tinhGiaSauKhuyenMai($gia_goc, $khuyen_mai);
    
    // Lấy chính sách affiliate
    $stmt = $pdo->prepare("
        SELECT * FROM chinh_sach_affiliate 
        WHERE loai_noi_dung = ? AND id_noi_dung = ? AND trang_thai = 1
    ");
    $stmt->execute([$loai_noi_dung, $id_noi_dung]);
    $chinh_sach = $stmt->fetch();
    
    if (!$chinh_sach) {
        return [
            'gia_goc' => $gia_goc,
            'khuyen_mai' => $khuyen_mai,
            'gia_sau_khuyen_mai' => $gia_sau_khuyen_mai,
            'affiliate' => 0,
            'chinh_sach' => null
        ];
    }
    
    // Tính affiliate dựa trên giá sau khuyến mãi
    if ($chinh_sach['loai_hoa_hong'] === 'phan_tram') {
        $tien_affiliate = $gia_sau_khuyen_mai * ($chinh_sach['gia_tri'] / 100);
    } else { // co_dinh
        $tien_affiliate = $chinh_sach['gia_tri'];
    }
    
    return [
        'gia_goc' => $gia_goc,
        'khuyen_mai' => $khuyen_mai,
        'gia_sau_khuyen_mai' => $gia_sau_khuyen_mai,
        'affiliate' => $tien_affiliate,
        'chinh_sach' => $chinh_sach
    ];
}

/**
 * Hiển thị thông tin khuyến mãi
 */
function hienThiKhuyenMai($khuyen_mai) {
    if (!$khuyen_mai) {
        return '';
    }
    
    if ($khuyen_mai['loai_khuyen_mai'] === 'tien_mat') {
        return "Mua từ {$khuyen_mai['so_luong_toi_thieu']} → Giảm " . number_format($khuyen_mai['gia_tri_khuyen_mai'], 0, ',', '.') . " ₫";
    } else {
        return "Mua từ {$khuyen_mai['so_luong_toi_thieu']} → Giảm {$khuyen_mai['gia_tri_khuyen_mai']}%";
    }
}

/**
 * Hiển thị giá với khuyến mãi
 */
function hienThiGiaVoiKhuyenMai($gia_goc, $khuyen_mai) {
    if (!$khuyen_mai) {
        return number_format($gia_goc, 0, ',', '.') . ' ₫';
    }
    
    $gia_sau = tinhGiaSauKhuyenMai($gia_goc, $khuyen_mai);
    $tien_giam = $gia_goc - $gia_sau;
    
    return '<span style="text-decoration: line-through; color: #999;">' . number_format($gia_goc, 0, ',', '.') . ' ₫</span> 
            → <span style="color: #dc3545; font-weight: bold;">' . number_format($gia_sau, 0, ',', '.') . ' ₫</span>
            <span style="color: #28a745; font-size: 12px;">(Tiết kiệm ' . number_format($tien_giam, 0, ',', '.') . ' ₫)</span>';
}
?>
