<?php
/**
 * ملف مساعد للتصدير والطباعة
 * يحتوي على دوال مشتركة لتحسين عمليات التصدير
 */

class ExportHelper {
    
    /**
     * إعداد معلومات المستشفى للتصدير
     */
    public static function getHospitalInfo() {
        return [
            'name' => 'مستشفى مدينة نصر التخصصي',
            'name_en' => 'Nasr City Specialized Hospital',
            'logo_path' => '../assets/images/hospital_logo.svg',
            'address' => 'المملكة العربية السعودية',
            'phone' => '+966-XX-XXXXXXX',
            'email' => 'info@kfh.med.sa',
            'website' => 'www.kfh.med.sa'
        ];
    }
    
    /**
     * ترجمة سلطة المشكلة
     */
    public static function translateProblemAuthority($authority) {
        $translations = [
            'physicians' => 'الأطباء',
            'nurses' => 'الممرضات',
            'pharmacist' => 'الصيدلي',
            'other' => 'أخرى'
        ];
        
        return $translations[$authority] ?? $authority;
    }
    
    /**
     * ترجمة حالة التقرير
     */
    public static function translateStatus($status) {
        $translations = [
            'completed' => 'مكتمل',
            'pending' => 'معلق',
            'cancelled' => 'ملغي',
            'in_progress' => 'قيد التنفيذ'
        ];
        
        return $translations[$status] ?? $status;
    }
    
    /**
     * تنسيق التاريخ العربي
     */
    public static function formatArabicDate($date) {
        $months = [
            1 => 'يناير', 2 => 'فبراير', 3 => 'مارس', 4 => 'أبريل',
            5 => 'مايو', 6 => 'يونيو', 7 => 'يوليو', 8 => 'أغسطس',
            9 => 'سبتمبر', 10 => 'أكتوبر', 11 => 'نوفمبر', 12 => 'ديسمبر'
        ];
        
        $timestamp = strtotime($date);
        $day = date('d', $timestamp);
        $month = $months[(int)date('m', $timestamp)];
        $year = date('Y', $timestamp);
        
        return "$day $month $year";
    }
    
    /**
     * إنشاء هيدر PDF محسن
     */
    public static function createPDFHeader($pdf, $title = 'تقرير المضادات الحيوية') {
        $hospitalInfo = self::getHospitalInfo();
        
        // إضافة اللوجو إذا كان موجوداً
        if (file_exists($hospitalInfo['logo_path'])) {
            $pdf->ImageSVG($hospitalInfo['logo_path'], 15, 10, 60, 20, '', '', '', 0, false);
        }
        
        // إعداد الخط والألوان
        $pdf->SetFont('dejavusans', 'B', 16);
        $pdf->SetTextColor(13, 110, 253);
        $pdf->Cell(0, 15, $title, 0, 1, 'C');
        
        $pdf->SetFont('dejavusans', '', 10);
        $pdf->SetTextColor(100, 100, 100);
        $pdf->Cell(0, 5, $hospitalInfo['name'], 0, 1, 'C');
        $pdf->Cell(0, 5, 'تاريخ التقرير: ' . date('Y-m-d H:i:s'), 0, 1, 'C');
        
        $pdf->Ln(5);
    }
    
    /**
     * إنشاء فوتر PDF محسن
     */
    public static function createPDFFooter($pdf, $userName = '') {
        $pdf->SetY(-15);
        $pdf->SetFont('dejavusans', '', 8);
        $pdf->SetTextColor(100, 100, 100);
        
        // الجانب الأيسر - رقم الصفحة
        $pdf->Cell(0, 10, 'صفحة ' . $pdf->getAliasNumPage() . ' من ' . $pdf->getAliasNbPages(), 0, 0, 'L');
        
        // الوسط - اسم المستشفى
        $pdf->Cell(0, 10, 'مستشفى مدينة نصر التخصصي', 0, 0, 'C');
        
        // الجانب الأيمن - المستخدم والتاريخ
        $pdf->Cell(0, 10, 'المستخدم: ' . $userName . ' | ' . date('Y-m-d'), 0, 0, 'R');
    }
    
    /**
     * تنظيف البيانات للتصدير
     */
    public static function sanitizeForExport($data) {
        if (is_array($data)) {
            return array_map([self::class, 'sanitizeForExport'], $data);
        }
        
        // إزالة HTML tags
        $data = strip_tags($data);
        
        // تنظيف الأحرف الخاصة
        $data = htmlspecialchars_decode($data);
        
        // إزالة المسافات الزائدة
        $data = trim($data);
        
        return $data;
    }
    
    /**
     * إنشاء اسم ملف آمن للتصدير
     */
    public static function generateSafeFilename($prefix = 'report', $extension = 'pdf') {
        $timestamp = date('Y-m-d_H-i-s');
        $randomString = substr(md5(uniqid()), 0, 6);
        
        return $prefix . '_' . $timestamp . '_' . $randomString . '.' . $extension;
    }
    
    /**
     * تسجيل عملية التصدير في السجل
     */
    public static function logExportActivity($conn, $userId, $exportType, $tableName = '') {
        try {
            $stmt = $conn->prepare("
                INSERT INTO activity_logs (user_id, action, table_name, created_at) 
                VALUES (:user_id, :action, :table_name, NOW())
            ");
            
            $stmt->bindParam(':user_id', $userId);
            $stmt->bindParam(':action', $exportType);
            $stmt->bindParam(':table_name', $tableName);
            
            $stmt->execute();
        } catch (PDOException $e) {
            error_log("Error logging export activity: " . $e->getMessage());
        }
    }
    
    /**
     * التحقق من صحة البيانات قبل التصدير
     */
    public static function validateExportData($data) {
        if (empty($data)) {
            throw new Exception('لا توجد بيانات للتصدير');
        }
        
        if (!is_array($data)) {
            throw new Exception('تنسيق البيانات غير صحيح');
        }
        
        return true;
    }
    
    /**
     * إنشاء ملخص إحصائي للتصدير
     */
    public static function generateExportSummary($data, $type = 'reports') {
        $summary = [
            'total_records' => count($data),
            'export_date' => date('Y-m-d H:i:s'),
            'export_type' => $type
        ];
        
        if ($type === 'reports') {
            $completed = array_filter($data, function($item) {
                return isset($item['status']) && $item['status'] === 'completed';
            });
            
            $pending = array_filter($data, function($item) {
                return isset($item['status']) && $item['status'] === 'pending';
            });
            
            $summary['completed_reports'] = count($completed);
            $summary['pending_reports'] = count($pending);
        }
        
        return $summary;
    }
}

/**
 * كلاس مخصص لـ TCPDF مع تحسينات للغة العربية
 */
class ArabicPDF extends TCPDF {
    private $hospitalInfo;
    private $reportTitle;
    private $userName;
    
    public function __construct($orientation = 'P', $unit = 'mm', $format = 'A4', $unicode = true, $encoding = 'UTF-8') {
        parent::__construct($orientation, $unit, $format, $unicode, $encoding);
        
        $this->hospitalInfo = ExportHelper::getHospitalInfo();
        $this->reportTitle = 'تقرير المضادات الحيوية';
        $this->userName = $_SESSION['full_name'] ?? 'غير محدد';
        
        // إعدادات افتراضية للغة العربية
        $this->setRTL(true);
        $this->SetFont('dejavusans', '', 10);
    }
    
    public function setReportTitle($title) {
        $this->reportTitle = $title;
    }
    
    public function Header() {
        ExportHelper::createPDFHeader($this, $this->reportTitle);
    }
    
    public function Footer() {
        ExportHelper::createPDFFooter($this, $this->userName);
    }
}
?>
