feat: unify doctor title handling and enhance specialty selection

- Implemented a helper function `displayDoctorName` to prepend "دکتر" to doctor names for consistent display across the application.
- Updated various components (InviteDoctorModal, DashboardPage, DoctorDetailPage, DoctorsPage, etc.) to utilize the new helper for rendering doctor names.
- Modified the DoctorFormPage to automatically add the "دکتر" title in the UI without requiring user input.
- Fixed the EditSpecialtyPicker component to allow multiple specialty selections, resolving a UI bug where only one specialty could be selected at a time.
- Ensured that the backend strips the "دکتر" title from the name during pre-registration and doctor creation processes.
- Added tests for the new functionality, including checks for title handling and specialty selection logic.
- Updated API documentation to reflect changes in name handling and display logic.
This commit is contained in:
hamed
2026-07-19 19:57:03 +03:30
parent 801c6f96db
commit 74577c2ff6
17 changed files with 482 additions and 40 deletions
+12
View File
@@ -63,4 +63,16 @@ final class PersianText
// پیشوندهای متوالی «دکتر دکتر …» را هم کامل حذف می‌کند.
return trim(preg_replace('/^(?:دکتر\s+)+/u', '', $normalized) ?? $normalized);
}
/**
* نامِ نمایشیِ پزشک با عنوان «دکتر» — تنها نقطهٔ افزودن عنوان در بک‌اند تا همهٔ
* مصرف‌کننده‌ها (سایت عمومی، پنل، اپ) یکسان و بدون «دکتر دکتر …» ببینند.
* name در دیتابیس خام می‌ماند؛ این فقط برای serialization است.
*/
public static function withDoctorTitle(?string $name): string
{
$clean = self::stripDoctorTitle((string) ($name ?? ''));
return $clean === '' ? '' : 'دکتر ' . $clean;
}
}