add assignment completion api
This commit is contained in:
parent
916f070455
commit
350d2ec0b7
11 changed files with 281 additions and 16 deletions
|
|
@ -14,6 +14,8 @@ 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\SetAssignmentCompletion\SetAssignmentCompletion;
|
||||
use App\Schedule\UseCases\SetAssignmentCompletion\SetAssignmentCompletionRequest;
|
||||
use App\Shared\Http\RequestInput;
|
||||
use App\User\User;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
|
@ -26,6 +28,7 @@ class ScheduleController extends Controller
|
|||
private ListSchedules $listSchedules,
|
||||
private GetSchedule $getSchedule,
|
||||
private ListAssignmentsForDate $listAssignmentsForDate,
|
||||
private SetAssignmentCompletion $setAssignmentCompletion,
|
||||
) {}
|
||||
|
||||
public function store(Request $request): JsonResponse
|
||||
|
|
@ -124,6 +127,41 @@ class ScheduleController extends Controller
|
|||
]);
|
||||
}
|
||||
|
||||
public function updateAssignment(
|
||||
Request $request,
|
||||
int $assignmentId,
|
||||
): JsonResponse {
|
||||
$input = new RequestInput($request);
|
||||
|
||||
try {
|
||||
$assignment = $this->setAssignmentCompletion->execute(
|
||||
new SetAssignmentCompletionRequest(
|
||||
assignmentId: $assignmentId,
|
||||
user: $this->user($request),
|
||||
completed: $input->boolean('completed'),
|
||||
),
|
||||
);
|
||||
} catch (BadRequestException $exception) {
|
||||
return new JsonResponse(
|
||||
['error' => $exception->getMessage()],
|
||||
400,
|
||||
);
|
||||
} catch (NotFoundException $exception) {
|
||||
return new JsonResponse(
|
||||
['error' => $exception->getMessage()],
|
||||
404,
|
||||
);
|
||||
}
|
||||
|
||||
return new JsonResponse([
|
||||
'assignment' => [
|
||||
'id' => $assignment->getId(),
|
||||
'completedAt' => $assignment->getCompletedAt()
|
||||
?->format(DATE_ATOM),
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
|
|
@ -180,7 +218,7 @@ class ScheduleController extends Controller
|
|||
}
|
||||
|
||||
/**
|
||||
* @return array{id: int, element: array{
|
||||
* @return array{id: int, completedAt: string|null, element: array{
|
||||
* name: string,
|
||||
* kind: string,
|
||||
* path: list<string>
|
||||
|
|
@ -191,6 +229,8 @@ class ScheduleController extends Controller
|
|||
): array {
|
||||
return [
|
||||
'id' => $assignment->getId(),
|
||||
'completedAt' => $assignment->getCompletedAt()
|
||||
?->format(DATE_ATOM),
|
||||
'element' => [
|
||||
'name' => $assignment->getName(),
|
||||
'kind' => $assignment->getKind(),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue