36 lines
1.4 KiB
JavaScript
36 lines
1.4 KiB
JavaScript
export function adaptSlots(slotsResponse) {
|
|
const sessions = slotsResponse?.data?.sessions ?? slotsResponse?.sessions ?? [];
|
|
|
|
// Group slots by the shifts the backend already returns; the front does not
|
|
// decide shift boundaries (no hard-coded morning/evening split). Each session
|
|
// becomes one tab labelled with its own time range.
|
|
return sessions
|
|
.filter((session) => Array.isArray(session.slots) && session.slots.length > 0)
|
|
.map((session) => ({
|
|
start_time: session.start_time,
|
|
end_time: session.end_time,
|
|
label: `${session.start_time} - ${session.end_time}`,
|
|
slots: session.slots,
|
|
}));
|
|
}
|
|
|
|
// حالت سرویسی: پاسخ appointment-service-slots فقط start_times دارد (همه کافی).
|
|
// آنها را در یک session قالببندی میکنیم تا مثل حالت اسلاتی رندر شوند.
|
|
export function adaptServiceSlots(slotsResponse) {
|
|
const starts =
|
|
slotsResponse?.data?.start_times ?? slotsResponse?.start_times ?? [];
|
|
if (!starts.length) return [];
|
|
return [
|
|
{
|
|
start_time: starts[0].start_time,
|
|
end_time: starts[starts.length - 1].start_time,
|
|
label: "زمانهای خالی",
|
|
slots: starts.map((s) => ({ ...s, is_available: true })),
|
|
},
|
|
];
|
|
}
|
|
|
|
export function hasAvailable(slots) {
|
|
return Array.isArray(slots) && slots.some((slot) => slot.is_available);
|
|
}
|