feat: Implement resource-based appointment booking flow
- Updated DoctorPage component to accept bookingResources prop for appointment list. - Added serviceQuery function to serialize service item UUIDs for API requests. - Introduced new API endpoints for fetching booking resources and resource slots. - Enhanced tests for new resource-based booking functionality, including resource selection and service availability. - Created ResourceSelect component for selecting appointment types, including doctor and resource options. - Updated appointment submission logic to include resource_uuid in payload when applicable. - Ensured UI reflects changes in booking flow without disrupting existing doctor-centric experience.
This commit is contained in:
@@ -22,10 +22,20 @@ const formatJalali = (ts) => {
|
||||
* قابلرزرو را برمیگرداند. تا وقتی حداقل یک محل هست، نوبتدهی فعال است — حتی
|
||||
* اگر فیلد قدیمی active به هر دلیل false باشد. بدون محل، همان فیلدهای doctor
|
||||
* ملاک میمانند (سازگاری با پزشک بدون برنامه).
|
||||
*
|
||||
* منبع مسیر سومی است: دستگاه و اتاق تقویم خودشان را دارند و به برنامهٔ هفتگیِ پزشک
|
||||
* وابسته نیستند. پزشکی که خودش نوبت آنلاین نمیدهد ولی دستگاهش میدهد، «نوبتدهی
|
||||
* غیرفعال» نیست — فقط ویزیت مستقیم ندارد.
|
||||
*/
|
||||
export function bookingState(doctor, bookingLocations) {
|
||||
export function bookingState(doctor, bookingLocations, bookingResources = []) {
|
||||
const hasLocations =
|
||||
Array.isArray(bookingLocations) && bookingLocations.length > 0;
|
||||
const hasResources =
|
||||
Array.isArray(bookingResources) && bookingResources.length > 0;
|
||||
|
||||
if (!hasLocations && hasResources) {
|
||||
return { enabled: true, label: "رزرو نوبت دستگاه و خدمات" };
|
||||
}
|
||||
|
||||
if (!hasLocations) {
|
||||
const enabled = doctor?.active !== false && !!doctor?.free_turn;
|
||||
|
||||
Reference in New Issue
Block a user