refactor: normalize date handling to Tehran timezone

- Updated date handling in BlogSeoFields and ScheduleSection to use Tehran timezone utilities for consistency.
- Introduced `toTehranClockTime`, `tehranWallClockToUnix`, and `todayIso` functions for accurate date representation.
- Modified various components to utilize these new utilities, ensuring that date strings are correctly formatted and timestamps are accurately converted.
- Enhanced API documentation to clarify the handling of date fields, emphasizing the importance of server-local midnight.
- Added tests to verify that date overrides and holidays maintain the correct day without shifting due to timezone discrepancies.
This commit is contained in:
hamed
2026-07-27 19:37:44 +03:30
parent 2963e2ac74
commit b423a0ae4d
21 changed files with 267 additions and 57 deletions
+3
View File
@@ -91,6 +91,9 @@ class DateOverride
'clinic_uuid' => $this->clinic?->getUuid(),
'context' => $this->clinic === null ? 'personal' : 'clinic',
'date' => $this->date,
// نمایش تاریخ باید از این رشته خوانده شود؛ تبدیل timestamp در مرورگر
// با UTC انجام می‌شود و برای نیمه‌شبِ تهران یک روز عقب می‌افتد.
'date_string' => date('Y-m-d', $this->date),
'active' => $this->active,
'reason' => $this->reason,
'custom_slots' => $this->setting ?? [],
+4
View File
@@ -90,6 +90,10 @@ class Holiday
'scope' => $this->clinic === null ? 'global' : 'clinic',
'start_date' => $this->startDate,
'end_date' => $this->endDate,
// نمایش تاریخ باید از این رشته‌ها خوانده شود؛ تبدیل timestamp در مرورگر
// با UTC انجام می‌شود و برای نیمه‌شبِ تهران یک روز عقب می‌افتد.
'start_date_string' => date('Y-m-d', $this->startDate),
'end_date_string' => date('Y-m-d', $this->endDate),
'active' => $this->active,
'reason' => $this->reason,
'created_at' => $this->createdAt,