feat: add PublicResourceBookingController and PublicResourceBookingService for public booking functionality
- Implemented PublicResourceBookingController to handle public resource booking requests. - Added methods for retrieving bookable resources, available slots, and month availability. - Created PublicResourceBookingService to manage public resource offerings and service visibility. - Developed tests for public resource booking to ensure correct functionality and error handling.
This commit is contained in:
@@ -291,6 +291,27 @@ Book an appointment slot.
|
||||
>
|
||||
> نوبت بدون منبع دقیقاً مثل قبل با کلید و قفل پزشک محافظت میشود.
|
||||
>
|
||||
> **مدت نوبت روی منبع (2026-08).** وقتی `resource_uuid` داده شده و منبع **همهٔ**
|
||||
> سرویسهای `service_item_uuids` را با ردیفِ ارائهٔ فعال و توگلِ «نمایش در نوبتدهی
|
||||
> آنلاین» روشن ارائه میدهد، `slot_end` از زنجیرهٔ حلِ خودِ منبع محاسبه میشود
|
||||
> (`ResourceServiceResolver`) — همان عددی که
|
||||
> [`appointment-resource-slots`](resource.md) با آن زمانها را ساخته. پیش از این مدت
|
||||
> همیشه از `ServiceBookingCalculator` پزشکمحور میآمد، پس نوبتِ ثبتشده با اسلاتی که به
|
||||
> بیمار نشان داده شده بود یکی نمیشد.
|
||||
>
|
||||
> شرطی است و نه همیشگی — سه رفتار که با هم فرق دارند:
|
||||
>
|
||||
> - **ردیف ارائه هست و فعال + سرویس روشن** ⇒ مدت از منبع. مثلاً سرویسِ ۳۰ دقیقهایِ
|
||||
> پیشفرض با `duration_minutes = 45` روی این دستگاه، نوبتِ ۴۵ دقیقهای میسازد.
|
||||
> - **هیچ ردیفی نیست** ⇒ مثل قبل، مدت از پیشفرضِ خودِ سرویس. محیطی که هنوز رابطههای
|
||||
> منبع↔سرویس را پر نکرده نباید یکشبه نوبتدهیاش قطع شود.
|
||||
> - **ردیف هست ولی غیرفعال** ⇒ `422` با «این منبع این سرویس را ارائه نمیدهد». غیرفعال
|
||||
> حرفِ صریحِ مالک است، نه سکوت.
|
||||
>
|
||||
> گیتِ `bookable` هم دور زده نمیشود: سرویسی که توگلش خاموش است حتی با ردیفِ ارائهٔ فعال
|
||||
> `422` میگیرد («این سرویس برای نوبتدهی فعال نیست») — همان رفتار مسیر پزشکمحور.
|
||||
> مسیر پنل (`POST /api/v1/my/appointment`) عمداً سختگیریِ `bookable` را ندارد.
|
||||
>
|
||||
> **پاسخ:** علاوه بر فیلدهای قبلی، `resource` (`uuid`, `name`, `type`) و `service_option`
|
||||
> (`uuid`, `name`) برمیگردند. نوبتهای پیش از مدل منبعمحور هر دو را `null` دارند، پس
|
||||
> کلاینت باید با `null` کنار بیاید.
|
||||
|
||||
Reference in New Issue
Block a user