<?php
// admin/excel-import.php - آپلود و پردازش فایل اکسل با تبدیل تاریخ شمسی

session_start();
require_once '../config/database.php';
require_once '../includes/db.php';
require_once '../includes/auth.php';
require_once '../includes/functions.php';

if (!isLoggedIn()) {
    header('Location: ../login.php');
    exit;
}

$user = getCurrentUser();
if (!in_array($user['role_level'], [1,2,5])) {
    header('Location: dashboard.php');
    exit;
}

$pageTitle = 'آپلود فایل اکسل';
$pageSubtitle = 'بارگذاری اطلاعات مدرسین از طریق فایل اکسل';

$message = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['excel_file'])) {
    $file = $_FILES['excel_file'];
    $uploadDir = '../uploads/excel/';
    if (!is_dir($uploadDir)) mkdir($uploadDir, 0777, true);
    
    $fileName = time() . '_' . $file['name'];
    $filePath = $uploadDir . $fileName;
    
    if (move_uploaded_file($file['tmp_name'], $filePath)) {
        $fileInfo = pathinfo($filePath);
        $ext = strtolower($fileInfo['extension']);
        
        if ($ext == 'csv') {
            $data = array_map('str_getcsv', file($filePath));
        } else {
            $message = '❌ لطفاً فایل را به فرمت CSV ذخیره کنید.';
            $content = 'excel-import-content.php';
            require_once '../includes/layout.php';
            exit;
        }
        
        $headers = array_shift($data);
        
        $successCount = 0;
        $errorCount = 0;
        $errors = [];
        $processedTeachers = [];
        
        $teacherRole = fetchOne("SELECT id FROM roles WHERE level = 6");
        $teacherRoleId = $teacherRole ? $teacherRole['id'] : 6;
        
        foreach ($data as $rowIndex => $row) {
            if (empty(array_filter($row))) continue;
            
            $name = trim($row[0] ?? '');
            $family = trim($row[1] ?? '');
            $national_code = trim($row[2] ?? '');
            $mobile = trim($row[3] ?? '');
            $sheba_number = trim($row[4] ?? '');
            $course_name = trim($row[5] ?? '');
            $units = (int)($row[6] ?? 0);
            $hours = (int)($row[7] ?? 0);
            $amount = (int)($row[8] ?? 0);
            $payment_date_shamsi = trim($row[9] ?? '');
            $term_code = trim($row[10] ?? '');
            $degree = (int)($row[11] ?? 0);
            $sessions_count = (int)($row[12] ?? 0);
            
            // ===== اعتبارسنجی فیلدهای اجباری =====
            if (empty($name) || empty($family) || empty($national_code) || empty($mobile)) {
                $errors[] = "سطر " . ($rowIndex + 2) . ": اطلاعات ناقص است.";
                $errorCount++;
                continue;
            }
            
            if (!preg_match('/^\d{10}$/', $national_code)) {
                $errors[] = "سطر " . ($rowIndex + 2) . ": کد ملی نامعتبر است.";
                $errorCount++;
                continue;
            }
            
            if (!preg_match('/^09\d{9}$/', $mobile)) {
                $errors[] = "سطر " . ($rowIndex + 2) . ": شماره موبایل نامعتبر است.";
                $errorCount++;
                continue;
            }
            
            // ===== بررسی کد ترم =====
            $term_id = 0;
            if (!empty($term_code)) {
                $term = fetchOne("SELECT id FROM terms WHERE code = ?", [$term_code]);
                if ($term) {
                    $term_id = $term['id'];
                } else {
                    $errors[] = "سطر " . ($rowIndex + 2) . ": کد ترم '$term_code' نامعتبر است.";
                    $errorCount++;
                    continue;
                }
            } else {
                $errors[] = "سطر " . ($rowIndex + 2) . ": کد ترم اجباری است.";
                $errorCount++;
                continue;
            }
            
            // =============================================
            // بررسی وجود مدرس در دیتابیس یا فایل
            // =============================================
            $existingTeacher = fetchOne("SELECT id FROM users WHERE national_code = ?", [$national_code]);
            if (!$existingTeacher && isset($processedTeachers[$national_code])) {
                $existingTeacher = ['id' => $processedTeachers[$national_code]];
            }
            
            if ($existingTeacher) {
                $userId = $existingTeacher['id'];
            } else {
                // ===== ثبت مدرس جدید =====
                $userData = [
                    'role_id' => $teacherRoleId,
                    'name' => $name,
                    'family' => $family,
                    'national_code' => $national_code,
                    'mobile' => $mobile,
                    'sheba_number' => $sheba_number ?: null,
                    'degree' => $degree ?: 2,
                    'password' => '123456',
                    'is_active' => 1
                ];
                
                $userId = insertData('users', $userData);
                
                if (!$userId) {
                    $errors[] = "سطر " . ($rowIndex + 2) . ": خطا در ثبت مدرس.";
                    $errorCount++;
                    continue;
                }
                
                $processedTeachers[$national_code] = $userId;
                $successCount++;
            }
            
            // ===== ثبت درس =====
            if (!empty($course_name)) {
                $courseData = [
                    'teacher_id' => $userId,
                    'term_id' => $term_id,
                    'name' => $course_name,
                    'course_type' => 'theoretical',
                    'units' => $units,
                    'hours' => $hours,
                    'salary' => 0
                ];
                $courseId = insertData('courses', $courseData);
                
                // ===== ثبت جلسات =====
                if ($courseId && $sessions_count > 0) {
                    $sessionData = [
                        'course_id' => $courseId,
                        'term_id' => $term_id,
                        'teacher_id' => $userId,
                        'sessions_count' => $sessions_count,
                        'student_count' => 0
                    ];
                    insertData('course_sessions', $sessionData);
                }
            }
            
            // =============================================
            // ===== ثبت تراکنش با تبدیل تاریخ شمسی به میلادی =====
            // =============================================
            if ($amount > 0 && !empty($payment_date_shamsi)) {
                // ===== تبدیل تاریخ شمسی به میلادی =====
                $payment_date = shamsiToMiladi($payment_date_shamsi);
                
                if ($payment_date) {
                    $transactionData = [
                        'teacher_id' => $userId,
                        'amount' => $amount,
                        'payment_date' => $payment_date,
                        'term_id' => $term_id,
                        'description' => 'واریز از طریق آپلود اکسل',
                        'source' => 'excel',
                        'created_by' => $_SESSION['user_id']
                    ];
                    insertData('transactions', $transactionData);
                } else {
                    $errors[] = "سطر " . ($rowIndex + 2) . ": تاریخ واریز نامعتبر است.";
                    $errorCount++;
                }
            }
        }
        
        $message = "✅ $successCount مدرس با موفقیت ثبت شد.";
        if ($errorCount > 0) {
            $message .= " ❌ $errorCount خطا رخ داد.";
            if (!empty($errors)) {
                $message .= "<br><br><strong>جزئیات خطاها:</strong><br>" . implode('<br>', $errors);
            }
        }
        
    } else {
        $message = '❌ خطا در آپلود فایل.';
    }
}

$content = 'excel-import-content.php';
require_once '../includes/layout.php';
?>