File size: 2,335 Bytes
b24b684 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | 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;
}
|