feat(doctor): update schedule fields in doctor API responses to reflect actual availability
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Doctor\Controller;
|
||||
|
||||
use App\Appointment\Repository\WeeklyScheduleRepository;
|
||||
use App\Auth\Entity\User;
|
||||
use App\Auth\Repository\UserRepository;
|
||||
use App\Clinic\Entity\Clinic;
|
||||
@@ -37,6 +38,7 @@ class DoctorController extends BaseController
|
||||
private readonly CityRepository $cityRepo,
|
||||
private readonly UserRepository $userRepo,
|
||||
private readonly FileValidatorService $fileValidator,
|
||||
private readonly WeeklyScheduleRepository $scheduleRepo,
|
||||
private readonly string $projectDir,
|
||||
) {}
|
||||
|
||||
@@ -114,7 +116,8 @@ class DoctorController extends BaseController
|
||||
$this->userRepo->save($user);
|
||||
}
|
||||
|
||||
return $this->success(['data' => $doctor->toDetailArray()], 201);
|
||||
$schedule = $this->scheduleRepo->findByDoctor($doctor);
|
||||
return $this->success(['data' => $doctor->toDetailArray($schedule)], 201);
|
||||
}
|
||||
|
||||
#[OA\Get(
|
||||
@@ -160,7 +163,8 @@ class DoctorController extends BaseController
|
||||
],
|
||||
], $clinics);
|
||||
|
||||
return $this->success(['data' => array_merge($doctor->toDetailArray(), ['clinics' => $clinicData])]);
|
||||
$schedule = $this->scheduleRepo->findByDoctor($doctor);
|
||||
return $this->success(['data' => array_merge($doctor->toDetailArray($schedule), ['clinics' => $clinicData])]);
|
||||
}
|
||||
|
||||
#[Route('/api/v1/clinic/my-doctor/{doctorUuid}', methods: ['GET'])]
|
||||
@@ -181,7 +185,8 @@ class DoctorController extends BaseController
|
||||
return $this->error(ErrorCodes::ERR_AUTH_006, 'این پزشک عضو کلینیک شما نیست', 403);
|
||||
}
|
||||
|
||||
return $this->success(['data' => array_merge($doctor->toDetailArray(), ['clinics' => [[
|
||||
$schedule = $this->scheduleRepo->findByDoctor($doctor);
|
||||
return $this->success(['data' => array_merge($doctor->toDetailArray($schedule), ['clinics' => [[
|
||||
'id' => (string) $clinic->getId(),
|
||||
'uuid' => $clinic->getUuid(),
|
||||
'name' => $clinic->getName(),
|
||||
@@ -235,8 +240,13 @@ class DoctorController extends BaseController
|
||||
$filters = $request->query->all();
|
||||
$result = $this->doctorRepo->findWithFilters($filters);
|
||||
|
||||
$scheduleMap = [];
|
||||
foreach ($this->scheduleRepo->findByDoctors($result['items']) as $schedule) {
|
||||
$scheduleMap[$schedule->getDoctor()->getId()] = $schedule;
|
||||
}
|
||||
|
||||
return $this->paginated(
|
||||
array_map(fn(Doctor $d) => $d->toListArray(), $result['items']),
|
||||
array_map(fn(Doctor $d) => $d->toListArray($scheduleMap[$d->getId()] ?? null), $result['items']),
|
||||
$result['total'],
|
||||
$result['page'],
|
||||
$result['limit']
|
||||
@@ -309,7 +319,8 @@ class DoctorController extends BaseController
|
||||
$this->hydrateDoctor($doctor, $data);
|
||||
$this->doctorRepo->save($doctor);
|
||||
|
||||
return $this->success(['data' => $doctor->toDetailArray()]);
|
||||
$schedule = $this->scheduleRepo->findByDoctor($doctor);
|
||||
return $this->success(['data' => $doctor->toDetailArray($schedule)]);
|
||||
}
|
||||
|
||||
#[OA\Delete(
|
||||
|
||||
Reference in New Issue
Block a user