feat: enhance staff management and payment gateway features
- Fix national code handling in staff creation and updates to support Persian digits. - Update ClinicStaff entity to allow longer national codes (up to 15 characters). - Implement support for clinic secretaries in SecretaryController, allowing creation without a doctor UUID. - Add a new endpoint to retrieve doctors associated with a clinic for secretary management. - Improve appointment management by ensuring doctors are selectable even when no appointments exist. - Extend PatientController to allow secretaries to create patient records if they have the appropriate permissions. - Introduce a PriceInput component for better price formatting in forms, supporting Persian digits. - Add a MockGateway for testing payment processes without real transactions. - Enhance SMS settings management with an approval flow for post-visit text messages, including new fields for pending text and status. - Update migrations to reflect changes in database schema for national codes and SMS settings.
This commit is contained in:
+56
-8
@@ -10,7 +10,7 @@ Secretaries are linked to a doctor and have granular permissions controlling wha
|
||||
|
||||
Create a secretary for a doctor.
|
||||
|
||||
**Permission:** `ROLE_DOCTOR` — must own the doctor profile
|
||||
**Permission:** `ROLE_DOCTOR` (must own the doctor) | `ROLE_CLINIC` (must have the doctor in its clinic) | `ROLE_ADMIN`
|
||||
|
||||
### Request Body (`application/json`)
|
||||
```json
|
||||
@@ -74,10 +74,12 @@ Create a secretary for a doctor.
|
||||
"success": true,
|
||||
"data": {
|
||||
"uuid": "sec-uuid-...",
|
||||
"user_name": "علی محمدی",
|
||||
"mobile_number": "09123456789",
|
||||
"active": true,
|
||||
"doctor_name": "دکتر احمد رضایی",
|
||||
"doctor_uuid": "...",
|
||||
"is_active": true,
|
||||
"permissions": { ... },
|
||||
"doctor": { "uuid": "...", "title": "دکتر علی احمدی" },
|
||||
"created_at": 1717000000
|
||||
}
|
||||
}
|
||||
@@ -87,9 +89,9 @@ Create a secretary for a doctor.
|
||||
| Code | HTTP | Description |
|
||||
|------|------|-------------|
|
||||
| `ERR_AUTH_001` | 401 | Missing token |
|
||||
| `ERR_AUTH_006` | 403 | Not a doctor or not the doctor's owner |
|
||||
| `ERR_AUTH_006` | 403 | Not the doctor owner / clinic owner / admin |
|
||||
| `ERR_NOT_FOUND_001` | 404 | Doctor not found |
|
||||
| `ERR_CONFLICT_001` | 409 | Mobile number already in use |
|
||||
| `ERR_CONFLICT_001` | 409 | Secretary already added for this doctor |
|
||||
| `ERR_SECRETARY_001` | 422 | Plan limit for secretaries reached |
|
||||
|
||||
---
|
||||
@@ -189,7 +191,7 @@ Delete a secretary.
|
||||
|
||||
Get all secretaries for a specific doctor.
|
||||
|
||||
**Permission:** `AUTH` — must be the doctor or `ROLE_ADMIN`
|
||||
**Permission:** `ROLE_DOCTOR` (must own doctor) | `ROLE_CLINIC` (must have doctor in clinic) | `ROLE_ADMIN`
|
||||
|
||||
### Path Parameters
|
||||
| Param | Type | Description |
|
||||
@@ -203,8 +205,11 @@ Get all secretaries for a specific doctor.
|
||||
"data": [
|
||||
{
|
||||
"uuid": "...",
|
||||
"user_name": "علی محمدی",
|
||||
"mobile_number": "09...",
|
||||
"active": true,
|
||||
"doctor_name": "دکتر احمد رضایی",
|
||||
"doctor_uuid": "...",
|
||||
"is_active": true,
|
||||
"permissions": { ... },
|
||||
"created_at": 1717000000
|
||||
}
|
||||
@@ -216,11 +221,54 @@ Get all secretaries for a specific doctor.
|
||||
| Code | HTTP | Description |
|
||||
|------|------|-------------|
|
||||
| `ERR_AUTH_001` | 401 | Missing token |
|
||||
| `ERR_FORBIDDEN_001` | 403 | Not the doctor |
|
||||
| `ERR_FORBIDDEN_001` | 403 | Not authorized |
|
||||
| `ERR_NOT_FOUND_001` | 404 | Doctor not found |
|
||||
|
||||
---
|
||||
|
||||
## GET `/api/v1/secretaries/clinic/{clinicUuid}`
|
||||
|
||||
Get all secretaries across **all doctors** of a clinic.
|
||||
|
||||
**Permission:** `ROLE_CLINIC` (must own clinic) | `ROLE_ADMIN`
|
||||
|
||||
### Path Parameters
|
||||
| Param | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| `clinicUuid` | string (UUID) | Clinic UUID |
|
||||
|
||||
### Response `200`
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": [
|
||||
{
|
||||
"uuid": "...",
|
||||
"user_name": "علی محمدی",
|
||||
"mobile_number": "09...",
|
||||
"doctor_name": "دکتر احمد رضایی",
|
||||
"doctor_uuid": "...",
|
||||
"is_active": true,
|
||||
"permissions": { ... },
|
||||
"created_at": 1717000000
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Notes
|
||||
- یک منشی میتواند برای یک یا چند دکتر تعریف شود (جداگانه در جدول `doctor_secretaries`)
|
||||
- این endpoint همه منشیان همه دکترهای کلینیک را یکجا برمیگرداند با ستون `doctor_name` برای تشخیص
|
||||
|
||||
### Errors
|
||||
| Code | HTTP | Description |
|
||||
|------|------|-------------|
|
||||
| `ERR_AUTH_001` | 401 | Missing token |
|
||||
| `ERR_FORBIDDEN_001` | 403 | Not clinic owner |
|
||||
| `ERR_NOT_FOUND_001` | 404 | Clinic not found |
|
||||
|
||||
---
|
||||
|
||||
## محدودیت پنل اشتراکی
|
||||
|
||||
تعداد منشیهای مجاز بر اساس پنل فعال doctor تعیین میشود:
|
||||
|
||||
Reference in New Issue
Block a user