- Add SendSmsMessage class for encapsulating SMS message data. - Create KavehNegarProvider and RanginehProvider classes implementing SmsProviderInterface for sending SMS. - Implement SmsLogRepository and SmsTemplateRepository for managing SMS logs and templates. - Develop SendSmsHandler for handling SMS sending messages. - Create SmsService to manage SMS dispatching and logging. - Add UserProfileController for managing user profiles with CRUD operations. - Implement UserProfile entity and repository for user profile data management. - Update symfony.lock and bootstrap.php for project dependencies and environment setup.
2.1 KiB
2.1 KiB
جریان کاربری — تسک ۰۹: تنظیمات نوبتدهی
جریان تنظیم اولیه نوبتدهی توسط دکتر
دکتر وارد پنل میشود
│
▼
POST /api/v1/appointment-settings/weekly-schedule
{ doctor_uuid, schedule: { saturday: {...}, sunday: {...}, ... } }
│
└─► ذخیره برنامه هفتگی پایه
جریان ثبت مرخصی یا تعطیلات
دکتر تعطیلات را ثبت میکند
│
▼
POST /api/v1/appointment-settings/holidays
{ doctor_uuid, start_date, end_date, reason }
│
└─► در بازه تعطیلات، هیچ نوبتی نمیتوان گرفت
جریان override یک روز خاص
دکتر میخواهد یک روز خاص را سفارشی کند
│
├─► غیرفعال کردن یک روز:
│ POST /date-override { date: "2024-03-15", active: false }
│
└─► اسلات سفارشی برای یک روز:
POST /date-override {
date: "2024-03-15",
active: true,
custom_slots: [{ start: "10:00", end: "12:00", duration: 20 }]
}
الگوریتم محاسبه اسلاتهای خالی (تسک ۱۰ از این استفاده میکند)
برای تاریخ درخواستشده:
│
▼
آیا در بازه Holiday است؟
بله → نوبت موجود نیست
خیر │
▼
آیا DateOverride برای این تاریخ وجود دارد؟
بله → active=false: نوبت موجود نیست
active=true: از custom_slots استفاده کن
خیر │
▼
از WeeklySchedule روز هفته مربوطه استفاده کن
active=false: نوبت موجود نیست
active=true: اسلاتهای slots را محاسبه کن
│
▼
اسلاتهای رزروشده را حذف کن (از جدول appointments)
│
▼
لیست اسلاتهای خالی را برگردان