<?php
require_once __DIR__ . '/../magic/auth.php';

$auth = bdr_require_privilege(30, '../logout.php');
$father = $auth['user_id'];
$user = $auth['user_id'];
$branch = $auth['branch'];
$conn = $auth['conn'];
$db = $auth['conn'];

if (!isset($_REQUEST["start"]) || !isset($_REQUEST["end"])) {
    die("Missing required parameters");
}

require_once __DIR__ . "/../magic/DataBase.php";
require_once __DIR__ . "/../magic/VatBase.php";

if (!isset($_REQUEST["start"]) || !isset($_REQUEST["end"])) {
    die("يجب تحديد تاريخ البداية والنهاية");
}

require_once __DIR__ . "/../magic/DataBase.php";
require_once __DIR__ . "/../magic/VatBase.php";

$rawStart = $_REQUEST["start"];
$rawEnd = $_REQUEST["end"];

// Improved date validation and conversion
function validateAndConvertDate($date) {
    // Check both YYYY/MM/DD and YYYY-MM-DD formats
    if (preg_match('/^\d{4}[\/-]\d{2}[\/-]\d{2}$/', $date)) {
        // Convert to YYYY-MM-DD format
        $dateObj = DateTime::createFromFormat('Y/m/d', str_replace('-', '/', $date));
        return $dateObj ? $dateObj->format('Y-m-d') : false;
    }
    return false;
}

$start = validateAndConvertDate($rawStart);
$end = validateAndConvertDate($rawEnd);

if (!$start || !$end) {
    die("صيغة التاريخ غير صالحة. يجب استخدام الصيغة YYYY/MM/DD أو YYYY-MM-DD");
}

// Database connections
$mainBase = new DataBase();
$vatBase = new VatBase();

try {
    $mainConn = $mainBase->getConnection();
    $vatConn = $vatBase->getConnection();

    // Generate filename with current date
    $filename = 'وارد_القيمة_المضافة_' . date("Ymd") . '.xls';

    // Prepare report data
    $reportQuery = $vatConn->prepare("
        SELECT `IRN`, `ClientName`, `InvoiceIssueDate`, `contract_id`,
               `TaxableAmount`, `TaxAmount`, `PayableAmount`
        FROM `prevat`
        WHERE signed = 1
          AND `InvoiceIssueDate` BETWEEN ? AND ?
        ORDER BY IRN
    ");
    $reportQuery->execute([$start, $end]);

    // Initialize totals
    $totalTaxable = 0;
    $totalTax = 0;
    $totalPayable = 0;
    $rowCount = $reportQuery->rowCount();

    // Build Excel content
    $excelContent = <<<HTML
    <div class="form-row" style="padding:5px;">
        <div class="col-4">
            <h6 style="font-weight:bold;padding:3px;font-size:17px;">مؤسسة الوسام المعتمد فرع تأجير السيارات</h6>
        </div>
        <div class="col-4">
            <h6 style="font-weight:bold;padding:3px;font-size:17px;">الرقم الضريبي ٣٠٠٠٩٨٥٣٢٥٠٠٠٠٣</h6>
        </div>
        <div class="col-4" style="float:left;">
            <h6 style="font-weight:bold;padding:3px;font-size:17px;">وارد القيمة المضافة من $start إلي $end</h6>
        </div>
    </div>
    <div class="form-row">
        <div class="col">
            <table border="1" class="table table-bordered">
                <thead>
                    <tr>
                        <th width="4%">م</th>
                        <th width="4%">رقم الفاتورة</th>
                        <th width="30%">اسم المستأجر/العميل</th>
                        <th width="9%">تاريخ الإصدار</th>
                        <th width="6%">رقم العقد</th>
                        <th width="14%">المبلغ الخاضع للضريبة</th>
                        <th width="8%">الضريبة</th>
                        <th width="5%">شامل الضريبة</th>
                        <th width="20%">تعليق</th>
                    </tr>
                </thead>
                <tbody>
    HTML;

    if ($rowCount > 0) {
        $counter = 1;
        while ($row = $reportQuery->fetch()) {
            // Format currency values
            $taxable = number_format($row['TaxableAmount'], 2);
            $tax = number_format($row['TaxAmount'], 2);
            $payable = number_format($row['PayableAmount'], 2);

            $excelContent .= <<<ROW
            <tr>
                <td>{$counter}</td>
                <td>{$row['IRN']}</td>
                <td>{$row['ClientName']}</td>
                <td>{$row['InvoiceIssueDate']}</td>
                <td>{$row['contract_id']}</td>
                <td>{$taxable}</td>
                <td>{$tax}</td>
                <td>{$payable}</td>
                <td></td>
            </tr>
            ROW;

            // Accumulate totals
            $totalTaxable += $row['TaxableAmount'];
            $totalTax += $row['TaxAmount'];
            $totalPayable += $row['PayableAmount'];
            $counter++;
        }

        // Format totals
        $fmtTotalTaxable = number_format($totalTaxable, 2);
        $fmtTotalTax = number_format($totalTax, 2);
        $fmtTotalPayable = number_format($totalPayable, 2);

        $excelContent .= <<<TOTALS
            <tr>
                <td colspan="5" style="font-weight:bold;text-align:center">الإجمالي</td>
                <td>{$fmtTotalTaxable}</td>
                <td>{$fmtTotalTax}</td>
                <td>{$fmtTotalPayable}</td>
                <td></td>
            </tr>
        TOTALS;
    } else {
        $excelContent .= '<tr><td colspan="9" style="text-align:center">لا يوجد سجلات</td></tr>';
    }

    $excelContent .= "</tbody></table></div></div>";

    // Send Excel headers
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    header('Cache-Control: max-age=0');
    
    echo $excelContent;
    exit;

} catch (PDOException $e) {
    error_log("Database error: " . $e->getMessage());
    die("حدث خطأ في إعداد التقرير");
}
