export interface PlumberJob { id: string serviceRequestId: string customerId: string customerName: string customerPhone: string serviceId: string serviceName: string status: "pending" | "accepted" | "in-progress" | "completed" | "cancelled" scheduledDate: string scheduledTime: string address: string description: string urgency: "low" | "medium" | "high" | "emergency" estimatedPrice: number actualPrice?: number startTime?: string endTime?: string notes?: string customerRating?: number customerReview?: string createdAt: string updatedAt: string completedAt?: string } export interface PlumberEarnings { totalEarnings: number monthlyEarnings: number weeklyEarnings: number completedJobs: number averageRating: number totalReviews: number } // وظائف مساعدة للسباكين export const mockPlumberJobs: PlumberJob[] = [ { id: "JOB-001", serviceRequestId: "SRV-001", customerId: "2", customerName: "أحمد محمد", customerPhone: "01234567890", serviceId: "emergency-leak", serviceName: "إصلاح تسريب طارئ", status: "accepted", scheduledDate: "2024-01-20", scheduledTime: "14:00", address: "القاهرة، مصر الجديدة، شارع الحجاز 15", description: "تسريب في ماسورة المطبخ تحت الحوض", urgency: "high", estimatedPrice: 280, createdAt: "2024-01-19T09:15:00Z", updatedAt: "2024-01-19T09:30:00Z", }, { id: "JOB-002", serviceRequestId: "SRV-002", customerId: "3", customerName: "فاطمة علي", customerPhone: "01987654321", serviceId: "drain-cleaning", serviceName: "تنظيف المجاري", status: "completed", scheduledDate: "2024-01-18", scheduledTime: "10:00", address: "الجيزة، المهندسين، شارع النيل 25", description: "انسداد في مجرى الحمام", urgency: "medium", estimatedPrice: 150, actualPrice: 150, startTime: "10:15", endTime: "11:30", notes: "تم تنظيف المجرى وإزالة الانسداد بالكامل", customerRating: 5, customerReview: "خدمة ممتازة وسريعة، السباك محترف جداً", createdAt: "2024-01-17T14:20:00Z", updatedAt: "2024-01-18T11:30:00Z", completedAt: "2024-01-18T11:30:00Z", }, { id: "JOB-003", serviceRequestId: "SRV-003", customerId: "4", customerName: "محمد حسن", customerPhone: "01555666777", serviceId: "fixture-installation", serviceName: "تركيب أدوات صحية", status: "pending", scheduledDate: "2024-01-22", scheduledTime: "09:00", address: "القاهرة، النزهة، شارع عباس العقاد 40", description: "تركيب خلاط جديد في الحمام", urgency: "low", estimatedPrice: 200, createdAt: "2024-01-19T16:45:00Z", updatedAt: "2024-01-19T16:45:00Z", }, ] export function getJobsByPlumberId(plumberId: string): PlumberJob[] { // في التطبيق الحقيقي، سيتم جلب البيانات من قاعدة البيانات return mockPlumberJobs } export function getPlumberEarnings(plumberId: string): PlumberEarnings { const jobs = getJobsByPlumberId(plumberId) const completedJobs = jobs.filter((job) => job.status === "completed") const totalEarnings = completedJobs.reduce((sum, job) => sum + (job.actualPrice || 0), 0) const totalReviews = completedJobs.filter((job) => job.customerRating).length const averageRating = totalReviews > 0 ? completedJobs.reduce((sum, job) => sum + (job.customerRating || 0), 0) / totalReviews : 0 // حساب الأرباح الشهرية والأسبوعية (محاكاة) const monthlyEarnings = totalEarnings * 0.7 // 70% من الإجمالي للشهر الحالي const weeklyEarnings = totalEarnings * 0.2 // 20% من الإجمالي للأسبوع الحالي return { totalEarnings, monthlyEarnings, weeklyEarnings, completedJobs: completedJobs.length, averageRating, totalReviews, } } export function getJobStatusColor(status: PlumberJob["status"]): string { switch (status) { case "pending": return "bg-yellow-100 text-yellow-800" case "accepted": return "bg-blue-100 text-blue-800" case "in-progress": return "bg-purple-100 text-purple-800" case "completed": return "bg-green-100 text-green-800" case "cancelled": return "bg-red-100 text-red-800" default: return "bg-gray-100 text-gray-800" } } export function getJobStatusText(status: PlumberJob["status"]): string { switch (status) { case "pending": return "في الانتظار" case "accepted": return "مقبول" case "in-progress": return "قيد التنفيذ" case "completed": return "مكتمل" case "cancelled": return "ملغي" default: return "غير معروف" } } export function getUrgencyColor(urgency: PlumberJob["urgency"]): string { switch (urgency) { case "low": return "text-green-600" case "medium": return "text-yellow-600" case "high": return "text-orange-600" case "emergency": return "text-red-600" default: return "text-gray-600" } } export function getUrgencyText(urgency: PlumberJob["urgency"]): string { switch (urgency) { case "low": return "عادي" case "medium": return "متوسط" case "high": return "عاجل" case "emergency": return "طارئ" default: return "غير محدد" } }