feat: enhance DoctorAddress entity to support clinic addresses and types
- Added `clinic_id` and `type` fields to `DoctorAddress` entity to differentiate between personal and clinic addresses. - Updated constructor to support creation of addresses for both doctors and clinics. - Modified repository methods to handle new address types and added methods for counting and finding addresses by clinic. - Implemented migration to update the database schema accordingly. - Removed deprecated endpoint for creating addresses from clinics and updated related controller methods. - Added new endpoints for managing clinic addresses, including CRUD operations. - Updated frontend components to handle new address types and display accordingly.
This commit is contained in:
@@ -538,3 +538,61 @@ The `SlotCalculatorService` calculates available slots in this priority order:
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Available Locations
|
||||
|
||||
### `GET /api/v1/appointment-settings/available-locations/{doctorUuid}`
|
||||
|
||||
**Permission:** Public
|
||||
|
||||
Returns all locations a doctor can assign as `location_id` in their schedule sessions. Includes both the doctor's personal addresses and the addresses of all clinics they belong to.
|
||||
|
||||
#### Response `200`
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": [
|
||||
{
|
||||
"id": "5",
|
||||
"uuid": "...",
|
||||
"type": "personal",
|
||||
"clinic_id": null,
|
||||
"clinic_name": null,
|
||||
"name": "مطب شخصی",
|
||||
"address": "تهران، ...",
|
||||
"telephone": "09121234567",
|
||||
"map": { "latitude": "35.7", "longitude": "51.4" },
|
||||
"city": { "id": "1", "name": "تهران" },
|
||||
"province": { "id": "8", "name": "تهران" }
|
||||
},
|
||||
{
|
||||
"id": "12",
|
||||
"uuid": "...",
|
||||
"type": "clinic",
|
||||
"clinic_id": "3",
|
||||
"clinic_name": "کلینیک نور",
|
||||
"name": "شعبه مرکزی",
|
||||
"address": "تهران، خیابان ولیعصر...",
|
||||
"telephone": "02112345678",
|
||||
"map": { "latitude": "35.699", "longitude": "51.337" },
|
||||
"city": { "id": "1", "name": "تهران" },
|
||||
"province": { "id": "8", "name": "تهران" }
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| `type` | `personal` = doctor's own address; `clinic` = clinic address |
|
||||
| `clinic_id` | ID of the clinic (only for type=clinic) |
|
||||
| `clinic_name` | Name of the clinic (only for type=clinic) |
|
||||
|
||||
> Use `id` as the `location_id` value in weekly schedule sessions or date override sessions.
|
||||
|
||||
#### Errors
|
||||
| Code | HTTP | Description |
|
||||
|------|------|-------------|
|
||||
| `ERR_VALIDATION_002` | 404 | Doctor not found |
|
||||
|
||||
Reference in New Issue
Block a user