| export type UserRole = "customer" | "worker" | "admin"; | |
| export type BookingStatus = | |
| | "pending_approval" | |
| | "open" | |
| | "pending" | |
| | "accepted" | |
| | "rejected" | |
| | "completed" | |
| | "cancelled"; | |
| export type KycStatus = "not_submitted" | "pending" | "verified" | "rejected"; | |
| export interface Token { | |
| access_token: string; | |
| refresh_token: string; | |
| token_type: string; | |
| role: UserRole; | |
| user_id: number; | |
| } | |
| export interface AccessToken { | |
| access_token: string; | |
| refresh_token: string; | |
| token_type: string; | |
| } | |
| export interface AppUser { | |
| id: number; | |
| name: string; | |
| phone?: string | null; | |
| email?: string | null; | |
| role: UserRole; | |
| profile_image?: string | null; | |
| is_active: boolean; | |
| created_at: string; | |
| } | |
| export interface Category { | |
| id: number; | |
| name: string; | |
| icon?: string | null; | |
| is_active: boolean; | |
| } | |
| export interface DashboardStats { | |
| total_customers: number; | |
| total_workers: number; | |
| verified_workers: number; | |
| pending_kyc: number; | |
| total_bookings: number; | |
| completed_bookings: number; | |
| pending_bookings: number; | |
| total_revenue: number; | |
| } | |
| export interface AdminWorker { | |
| id: number; | |
| user_id: number; | |
| category_id?: number | null; | |
| experience: number; | |
| bio?: string | null; | |
| service_area?: string | null; | |
| kyc_status: KycStatus; | |
| is_verified: boolean; | |
| is_available: boolean; | |
| is_suspended: boolean; | |
| rating: number; | |
| rating_count: number; | |
| category?: Category | null; | |
| name?: string | null; | |
| phone?: string | null; | |
| is_active?: boolean | null; | |
| } | |
| export interface BookingParty { | |
| id: number; | |
| name: string; | |
| phone?: string | null; | |
| profile_image?: string | null; | |
| } | |
| export interface ReviewLite { | |
| id: number; | |
| booking_id: number; | |
| rating: number; | |
| comment?: string | null; | |
| is_hidden: boolean; | |
| created_at: string; | |
| } | |
| export interface Booking { | |
| id: number; | |
| customer_id: number; | |
| worker_id?: number | null; | |
| category_id?: number | null; | |
| booking_date: string; | |
| booking_time?: string | null; | |
| address: string; | |
| notes?: string | null; | |
| status: BookingStatus; | |
| amount: number; | |
| is_open_request: boolean; | |
| created_at: string; | |
| customer?: BookingParty | null; | |
| worker?: BookingParty | null; | |
| category?: Category | null; | |
| review?: ReviewLite | null; | |
| } | |