'use client'; import { useState, useEffect } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { useRouter } from 'next/navigation'; import toast, { Toaster } from 'react-hot-toast'; import { FileText, Calendar, DollarSign, Send, Loader2, CheckCircle, AlertCircle, User, MessageSquare, Hash, } from 'lucide-react'; import { submitReport, submitReservationReport, submitSaleReport } from '../utils/api'; import AuthService from '../services/AuthService'; const tabs = [ { id: 'general', label: 'تقرير عام', icon: FileText }, { id: 'reservation', label: 'تقرير حجز', icon: Calendar }, { id: 'sale', label: 'تقرير بيع', icon: DollarSign }, ]; export default function ReportsPage() { const router = useRouter(); const [activeTab, setActiveTab] = useState('general'); const [isLoading, setIsLoading] = useState(false); const [isSuccess, setIsSuccess] = useState(false); useEffect(() => { if (!AuthService.isAuthenticated()) { router.push('/login'); } }, [router]); const [generalForm, setGeneralForm] = useState({ subject: '', body: '' }); const [reservationForm, setReservationForm] = useState({ reservationId: '', message: '', reporter: 'customer' }); const [saleForm, setSaleForm] = useState({ saleId: '', message: '', reporter: 'buyer' }); const [errors, setErrors] = useState({}); const validateGeneral = () => { const e = {}; if (!generalForm.subject.trim()) e.subject = 'الموضوع مطلوب'; if (!generalForm.body.trim()) e.body = 'الوصف مطلوب'; setErrors(e); return Object.keys(e).length === 0; }; const validateReservation = () => { const e = {}; if (!reservationForm.reservationId.trim()) e.reservationId = 'رقم الحجز مطلوب'; if (!reservationForm.message.trim()) e.message = 'الرسالة مطلوبة'; setErrors(e); return Object.keys(e).length === 0; }; const validateSale = () => { const e = {}; if (!saleForm.saleId.trim()) e.saleId = 'رقم البيع مطلوب'; if (!saleForm.message.trim()) e.message = 'الرسالة مطلوبة'; setErrors(e); return Object.keys(e).length === 0; }; const handleGeneralSubmit = async (e) => { e.preventDefault(); if (!validateGeneral()) return; setIsLoading(true); try { await submitReport(generalForm.subject, generalForm.body); setIsSuccess(true); toast.success('تم إرسال التقرير بنجاح!', { style: { background: '#dcfce7', color: '#166534' }, }); setGeneralForm({ subject: '', body: '' }); setTimeout(() => setIsSuccess(false), 2000); } catch (err) { toast.error(err.message || 'فشل إرسال التقرير', { style: { background: '#fee2e2', color: '#991b1b' }, }); } finally { setIsLoading(false); } }; const handleReservationSubmit = async (e) => { e.preventDefault(); if (!validateReservation()) return; setIsLoading(true); try { await submitReservationReport(reservationForm); setIsSuccess(true); toast.success('تم إرسال تقرير الحجز!', { style: { background: '#dcfce7', color: '#166534' }, }); setReservationForm({ reservationId: '', message: '', reporter: 'customer' }); setTimeout(() => setIsSuccess(false), 2000); } catch (err) { toast.error(err.message || 'فشل إرسال التقرير', { style: { background: '#fee2e2', color: '#991b1b' }, }); } finally { setIsLoading(false); } }; const handleSaleSubmit = async (e) => { e.preventDefault(); if (!validateSale()) return; setIsLoading(true); try { await submitSaleReport(saleForm); setIsSuccess(true); toast.success('تم إرسال تقرير البيع!', { style: { background: '#dcfce7', color: '#166534' }, }); setSaleForm({ saleId: '', message: '', reporter: 'buyer' }); setTimeout(() => setIsSuccess(false), 2000); } catch (err) { toast.error(err.message || 'فشل إرسال التقرير', { style: { background: '#fee2e2', color: '#991b1b' }, }); } finally { setIsLoading(false); } }; const tabContent = { general: (
{ setGeneralForm({ ...generalForm, subject: e.target.value }); if (errors.subject) setErrors({ ...errors, subject: null }); }} className={`w-full pr-12 pl-4 py-3 border rounded-xl focus:outline-none focus:ring-2 focus:ring-amber-500 focus:border-transparent transition-all ${errors.subject ? 'border-red-500' : 'border-gray-300'}`} placeholder="أدخل موضوع التقرير" />
{errors.subject &&

{errors.subject}

}