add dated assignment endpoint
This commit is contained in:
parent
6afe7864be
commit
483ca6fc1d
9 changed files with 252 additions and 8 deletions
|
|
@ -4,6 +4,7 @@ namespace App\Http\Controllers;
|
|||
|
||||
use App\Exceptions\BadRequestException;
|
||||
use App\Exceptions\NotFoundException;
|
||||
use App\Schedule\AssignmentForDate;
|
||||
use App\Schedule\Schedule;
|
||||
use App\Schedule\ScheduleAssignment;
|
||||
use App\Schedule\UseCases\CreateSchedule\CreateSchedule;
|
||||
|
|
@ -11,6 +12,8 @@ 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\Shared\Http\RequestInput;
|
||||
use App\User\User;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
|
@ -22,6 +25,7 @@ class ScheduleController extends Controller
|
|||
private CreateSchedule $createSchedule,
|
||||
private ListSchedules $listSchedules,
|
||||
private GetSchedule $getSchedule,
|
||||
private ListAssignmentsForDate $listAssignmentsForDate,
|
||||
) {}
|
||||
|
||||
public function store(Request $request): JsonResponse
|
||||
|
|
@ -90,6 +94,36 @@ class ScheduleController extends Controller
|
|||
]);
|
||||
}
|
||||
|
||||
public function assignments(Request $request): JsonResponse
|
||||
{
|
||||
$input = new RequestInput($request);
|
||||
$date = $input->string('date');
|
||||
|
||||
try {
|
||||
$assignments = $this->listAssignmentsForDate->execute(
|
||||
new ListAssignmentsForDateRequest(
|
||||
user: $this->user($request),
|
||||
date: $date,
|
||||
),
|
||||
);
|
||||
} catch (BadRequestException $exception) {
|
||||
return new JsonResponse(
|
||||
['error' => $exception->getMessage()],
|
||||
400,
|
||||
);
|
||||
}
|
||||
|
||||
return new JsonResponse([
|
||||
'date' => $date,
|
||||
'assignments' => array_map(
|
||||
function (AssignmentForDate $assignment): array {
|
||||
return $this->assignmentForDatePayload($assignment);
|
||||
},
|
||||
$assignments,
|
||||
),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
|
|
@ -165,6 +199,30 @@ class ScheduleController extends Controller
|
|||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
private function assignmentForDatePayload(
|
||||
AssignmentForDate $assignmentForDate,
|
||||
): array {
|
||||
$assignment = $assignmentForDate->getAssignment();
|
||||
|
||||
return [
|
||||
'id' => $assignment->getId(),
|
||||
'schedule' => [
|
||||
'id' => $assignmentForDate->getScheduleId(),
|
||||
'set' => [
|
||||
'name' => $assignmentForDate->getSetName(),
|
||||
],
|
||||
],
|
||||
'element' => [
|
||||
'name' => $assignment->getName(),
|
||||
'kind' => $assignment->getKind(),
|
||||
'path' => $assignment->getPath(),
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
private function user(Request $request): User
|
||||
{
|
||||
/** @var User $user */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue