- Implemented InviteDoctorModal component for inviting doctors to clinics. - Updated ClinicDashboard to include a button for inviting doctors and handle modal state. - Added createAppointment API endpoint in AdminApiController for scheduling appointments. - Enhanced ClinicInvitationController to check user access when inviting doctors. - Updated MyAppointmentsController to ensure unique appointment records. - Added seed_test_data.php for populating test data including doctors, clinics, and appointments. - Refactored styles to include new appointment status badges and updated font imports.
49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
export function formatRial(amount: number): string {
|
|
return new Intl.NumberFormat('fa-IR').format(amount) + ' تومان';
|
|
}
|
|
|
|
export function formatNumber(n: number): string {
|
|
return new Intl.NumberFormat('fa-IR').format(n);
|
|
}
|
|
|
|
export function toDate(val: string | number | null | undefined): Date | null {
|
|
if (val == null || val === '') return null;
|
|
if (typeof val === 'number') return new Date(val * 1000);
|
|
// Y-m-d → treat as local noon to avoid UTC-off-by-one
|
|
if (/^\d{4}-\d{2}-\d{2}$/.test(val)) return new Date(`${val}T12:00:00`);
|
|
return new Date(val);
|
|
}
|
|
|
|
export function formatDate(val: string | number | null | undefined): string {
|
|
const d = toDate(val);
|
|
if (!d || isNaN(d.getTime())) return '—';
|
|
return new Intl.DateTimeFormat('fa-IR-u-ca-persian', {
|
|
year: 'numeric', month: '2-digit', day: '2-digit',
|
|
}).format(d);
|
|
}
|
|
|
|
export function formatDateTime(val: string | number | null | undefined): string {
|
|
const d = toDate(val);
|
|
if (!d || isNaN(d.getTime())) return '—';
|
|
return new Intl.DateTimeFormat('fa-IR-u-ca-persian', {
|
|
year: 'numeric', month: '2-digit', day: '2-digit',
|
|
hour: '2-digit', minute: '2-digit',
|
|
}).format(d);
|
|
}
|
|
|
|
export function toGregorianDate(d: Date): string {
|
|
const y = d.getFullYear();
|
|
const m = String(d.getMonth() + 1).padStart(2, '0');
|
|
const day = String(d.getDate()).padStart(2, '0');
|
|
return `${y}-${m}-${day}`;
|
|
}
|
|
|
|
export function maskMobile(mobile: string): string {
|
|
if (mobile.length < 7) return mobile;
|
|
return mobile.slice(0, 4) + '***' + mobile.slice(-3);
|
|
}
|
|
|
|
export function cn(...classes: (string | undefined | null | false)[]): string {
|
|
return classes.filter(Boolean).join(' ');
|
|
}
|