89 lines
2.0 KiB
TypeScript
89 lines
2.0 KiB
TypeScript
// Appointment Models
|
|
|
|
export interface Appointment {
|
|
id: string;
|
|
first_name: string;
|
|
last_name: string;
|
|
email: string;
|
|
phone?: string;
|
|
reason?: string;
|
|
preferred_dates: string[]; // YYYY-MM-DD format
|
|
preferred_time_slots: string[]; // "morning", "afternoon", "evening"
|
|
status: "pending_review" | "scheduled" | "rejected";
|
|
created_at: string;
|
|
updated_at: string;
|
|
scheduled_datetime?: string;
|
|
scheduled_duration?: number;
|
|
rejection_reason?: string;
|
|
jitsi_meet_url?: string;
|
|
jitsi_room_id?: string;
|
|
has_jitsi_meeting?: boolean;
|
|
can_join_meeting?: boolean;
|
|
meeting_status?: string;
|
|
}
|
|
|
|
export interface AppointmentResponse {
|
|
appointment?: Appointment;
|
|
message?: string;
|
|
[key: string]: any;
|
|
}
|
|
|
|
export interface AppointmentsListResponse {
|
|
appointments: Appointment[];
|
|
count?: number;
|
|
next?: string | null;
|
|
previous?: string | null;
|
|
}
|
|
|
|
export interface AvailableDatesResponse {
|
|
dates: string[]; // YYYY-MM-DD format
|
|
available_days?: number[]; // 0-6 (Monday-Sunday)
|
|
available_days_display?: string[];
|
|
}
|
|
|
|
export interface AdminAvailability {
|
|
available_days: number[]; // 0-6 (Monday-Sunday)
|
|
available_days_display: string[];
|
|
}
|
|
|
|
export interface AppointmentStats {
|
|
total_requests: number;
|
|
pending_review: number;
|
|
scheduled: number;
|
|
rejected: number;
|
|
completion_rate: number;
|
|
users?: number; // Total users count from API
|
|
}
|
|
|
|
export interface UserAppointmentStats {
|
|
total_requests: number;
|
|
pending_review: number;
|
|
scheduled: number;
|
|
rejected: number;
|
|
completed: number;
|
|
completion_rate: number;
|
|
}
|
|
|
|
export interface JitsiMeetingInfo {
|
|
meeting_url: string;
|
|
room_id: string;
|
|
scheduled_time: string;
|
|
duration: string;
|
|
can_join: boolean;
|
|
meeting_status: string;
|
|
join_instructions: string;
|
|
}
|
|
|
|
export interface ApiError {
|
|
detail?: string | string[];
|
|
message?: string | string[];
|
|
error?: string;
|
|
preferred_dates?: string[];
|
|
preferred_time_slots?: string[];
|
|
email?: string[];
|
|
first_name?: string[];
|
|
last_name?: string[];
|
|
[key: string]: string | string[] | undefined;
|
|
}
|
|
|