<?php
/**
 * Export Service
 * خدمة التصدير (PDF, Excel, CSV)
 * 
 * @author Almanara GPS Team
 * @version 1.0
 */

require_once __DIR__ . '/config.php';
require_once __DIR__ . '/firebase_service.php';

class ExportService {
    private $conn;
    private $userId;
    
    public function __construct($connection, $userId) {
        $this->conn = $connection;
        $this->userId = $userId;
    }
    
    /**
     * تصدير إلى CSV
     */
    public function exportToCSV($deviceId, $startDate, $endDate, $filename = null) {
        if (defined('USE_FIREBASE') && USE_FIREBASE) {
            $locations = FirebaseService::getLocationsByTimeRange($deviceId, $startDate, $endDate);
        } else {
            $stmt = $this->conn->prepare("
                SELECT * FROM locations
                WHERE device_id = ? AND timestamp BETWEEN ? AND ?
                ORDER BY timestamp ASC
            ");
            $stmt->execute([$deviceId, $startDate, $endDate]);
            $locations = $stmt->fetchAll(PDO::FETCH_ASSOC);
        }
        
        if (empty($locations)) {
            return false;
        }
        
        $filename = $filename ?: 'locations_' . date('Y-m-d_His') . '.csv';
        
        header('Content-Type: text/csv; charset=UTF-8');
        header('Content-Disposition: attachment; filename="' . $filename . '"');
        header('Pragma: no-cache');
        header('Expires: 0');
        
        // BOM للـ UTF-8
        echo "\xEF\xBB\xBF";
        
        $output = fopen('php://output', 'w');
        
        // رأس الجدول
        fputcsv($output, [
            'الوقت',
            'خط العرض',
            'خط الطول',
            'السرعة (كم/س)',
            'البطارية (%)',
            'الدقة (متر)',
            'الارتفاع (متر)',
            'الاتجاه'
        ]);
        
        // البيانات
        foreach ($locations as $location) {
            fputcsv($output, [
                $location['timestamp'] ?? '',
                $location['latitude'] ?? '',
                $location['longitude'] ?? '',
                $location['speed'] ?? '',
                $location['battery'] ?? '',
                $location['accuracy'] ?? '',
                $location['altitude'] ?? '',
                $location['heading'] ?? ''
            ]);
        }
        
        fclose($output);
        return true;
    }
    
    /**
     * تصدير إلى Excel (XLSX)
     */
    public function exportToExcel($deviceId, $startDate, $endDate, $filename = null) {
        // هذا يتطلب مكتبة PhpSpreadsheet
        // سنستخدم CSV كبديل بسيط
        return $this->exportToCSV($deviceId, $startDate, $endDate, str_replace('.csv', '.xlsx', $filename));
    }
    
    /**
     * تصدير تقرير PDF (يتطلب مكتبة TCPDF أو FPDF)
     */
    public function exportToPDF($deviceId, $startDate, $endDate, $deviceName = '') {
        // هذا يتطلب مكتبة PDF
        // يمكن إضافته لاحقاً
        return false;
    }
}

