add dated assignment endpoint
This commit is contained in:
parent
6afe7864be
commit
483ca6fc1d
9 changed files with 252 additions and 8 deletions
|
|
@ -61,6 +61,40 @@ class EloquentScheduleRepository implements ScheduleRepository
|
|||
return $schedules;
|
||||
}
|
||||
|
||||
public function findAssignmentsForUserOnDate(
|
||||
User $user,
|
||||
DateTimeImmutable $date,
|
||||
): array {
|
||||
$assignmentModels = ScheduleAssignmentModel::query()
|
||||
->select('schedule_assignments.*')
|
||||
->join(
|
||||
'schedules',
|
||||
'schedules.id',
|
||||
'=',
|
||||
'schedule_assignments.schedule_id',
|
||||
)
|
||||
->where('schedules.user_id', $user->getId())
|
||||
->where('schedule_assignments.scheduled_date', $date->format(
|
||||
'Y-m-d',
|
||||
))
|
||||
->with('schedule')
|
||||
->orderByDesc('schedules.id')
|
||||
->orderBy('schedule_assignments.position')
|
||||
->orderBy('schedule_assignments.id')
|
||||
->get();
|
||||
$assignments = [];
|
||||
|
||||
foreach ($assignmentModels as $assignmentModel) {
|
||||
$assignments[] = new AssignmentForDate(
|
||||
scheduleId: $assignmentModel->schedule->id,
|
||||
setName: $assignmentModel->schedule->set_name,
|
||||
assignment: $this->assignmentToDomain($assignmentModel),
|
||||
);
|
||||
}
|
||||
|
||||
return $assignments;
|
||||
}
|
||||
|
||||
private function toDomain(ScheduleModel $model, User $user): Schedule
|
||||
{
|
||||
$assignmentModels = ScheduleAssignmentModel::query()
|
||||
|
|
@ -71,14 +105,7 @@ class EloquentScheduleRepository implements ScheduleRepository
|
|||
$assignments = [];
|
||||
|
||||
foreach ($assignmentModels as $assignmentModel) {
|
||||
$assignments[] = new ScheduleAssignment(
|
||||
id: $assignmentModel->id,
|
||||
name: $assignmentModel->element_name,
|
||||
kind: $assignmentModel->element_kind,
|
||||
path: $assignmentModel->element_path,
|
||||
scheduledDate: $this->date($assignmentModel->scheduled_date),
|
||||
position: $assignmentModel->position,
|
||||
);
|
||||
$assignments[] = $this->assignmentToDomain($assignmentModel);
|
||||
}
|
||||
|
||||
return new Schedule(
|
||||
|
|
@ -92,6 +119,19 @@ class EloquentScheduleRepository implements ScheduleRepository
|
|||
);
|
||||
}
|
||||
|
||||
private function assignmentToDomain(
|
||||
ScheduleAssignmentModel $model,
|
||||
): ScheduleAssignment {
|
||||
return new ScheduleAssignment(
|
||||
id: $model->id,
|
||||
name: $model->element_name,
|
||||
kind: $model->element_kind,
|
||||
path: $model->element_path,
|
||||
scheduledDate: $this->date($model->scheduled_date),
|
||||
position: $model->position,
|
||||
);
|
||||
}
|
||||
|
||||
private function date(string $value): DateTimeImmutable
|
||||
{
|
||||
return new DateTimeImmutable($value, new DateTimeZone('UTC'));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue