add schedule rescheduling
This commit is contained in:
parent
b8eeb093d3
commit
7576ccaf09
9 changed files with 314 additions and 5 deletions
|
|
@ -11,9 +11,11 @@ use App\Schedule\UseCases\CreateSchedule\CreateSchedule;
|
|||
use App\Schedule\UseCases\CreateSchedule\CreateScheduleRequest;
|
||||
use App\Schedule\UseCases\GetSchedule\GetSchedule;
|
||||
use App\Schedule\UseCases\GetSchedule\GetScheduleRequest;
|
||||
use App\Schedule\UseCases\ListSchedules\ListSchedules;
|
||||
use App\Schedule\UseCases\ListAssignmentsForDate\ListAssignmentsForDate;
|
||||
use App\Schedule\UseCases\ListAssignmentsForDate\ListAssignmentsForDateRequest;
|
||||
use App\Schedule\UseCases\ListSchedules\ListSchedules;
|
||||
use App\Schedule\UseCases\RescheduleSchedule\RescheduleSchedule;
|
||||
use App\Schedule\UseCases\RescheduleSchedule\RescheduleScheduleRequest;
|
||||
use App\Schedule\UseCases\SetAssignmentCompletion\SetAssignmentCompletion;
|
||||
use App\Schedule\UseCases\SetAssignmentCompletion\SetAssignmentCompletionRequest;
|
||||
use App\Shared\Http\RequestInput;
|
||||
|
|
@ -27,6 +29,7 @@ class ScheduleController extends Controller
|
|||
private CreateSchedule $createSchedule,
|
||||
private ListSchedules $listSchedules,
|
||||
private GetSchedule $getSchedule,
|
||||
private RescheduleSchedule $rescheduleSchedule,
|
||||
private ListAssignmentsForDate $listAssignmentsForDate,
|
||||
private SetAssignmentCompletion $setAssignmentCompletion,
|
||||
) {}
|
||||
|
|
@ -100,6 +103,39 @@ class ScheduleController extends Controller
|
|||
]);
|
||||
}
|
||||
|
||||
public function update(Request $request, int $scheduleId): JsonResponse
|
||||
{
|
||||
$input = new RequestInput($request);
|
||||
|
||||
try {
|
||||
$schedule = $this->rescheduleSchedule->execute(
|
||||
new RescheduleScheduleRequest(
|
||||
scheduleId: $scheduleId,
|
||||
user: $this->user($request),
|
||||
startDate: $input->string('startDate'),
|
||||
targetDate: $input->string('targetDate'),
|
||||
workloadPlacement: $input->string(
|
||||
'workloadPlacement',
|
||||
),
|
||||
),
|
||||
);
|
||||
} catch (BadRequestException $exception) {
|
||||
return new JsonResponse(
|
||||
['error' => $exception->getMessage()],
|
||||
400,
|
||||
);
|
||||
} catch (NotFoundException $exception) {
|
||||
return new JsonResponse(
|
||||
['error' => $exception->getMessage()],
|
||||
404,
|
||||
);
|
||||
}
|
||||
|
||||
return new JsonResponse([
|
||||
'schedule' => $this->detailPayload($schedule),
|
||||
]);
|
||||
}
|
||||
|
||||
public function assignments(Request $request): JsonResponse
|
||||
{
|
||||
$input = new RequestInput($request);
|
||||
|
|
@ -206,15 +242,23 @@ class ScheduleController extends Controller
|
|||
);
|
||||
}
|
||||
|
||||
$days = [];
|
||||
$includedDates = [];
|
||||
$date = $schedule->getStartDate();
|
||||
while ($date <= $schedule->getTargetDate()) {
|
||||
$formattedDate = $date->format('Y-m-d');
|
||||
$includedDates[$date->format('Y-m-d')] = true;
|
||||
$date = $date->modify('+1 day');
|
||||
}
|
||||
foreach (array_keys($assignmentsByDate) as $assignmentDate) {
|
||||
$includedDates[$assignmentDate] = true;
|
||||
}
|
||||
ksort($includedDates);
|
||||
|
||||
$days = [];
|
||||
foreach (array_keys($includedDates) as $formattedDate) {
|
||||
$days[] = [
|
||||
'date' => $formattedDate,
|
||||
'assignments' => $assignmentsByDate[$formattedDate] ?? [],
|
||||
];
|
||||
$date = $date->modify('+1 day');
|
||||
}
|
||||
|
||||
return $days;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue