feat: Implement SMS sending functionality with KavehNegar and Rangineh providers
- 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.
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# جریان کاربری — تسک ۰۹: تنظیمات نوبتدهی
|
||||
|
||||
## جریان تنظیم اولیه نوبتدهی توسط دکتر
|
||||
|
||||
```
|
||||
دکتر وارد پنل میشود
|
||||
│
|
||||
▼
|
||||
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)
|
||||
│
|
||||
▼
|
||||
لیست اسلاتهای خالی را برگردان
|
||||
```
|
||||
Reference in New Issue
Block a user