Merge branch 'main' into #22-vacation-calendar
# Conflicts: # resources/js/Pages/Dashboard.vue # resources/js/Shared/Layout/AppLayout.vue # resources/js/Shared/MainMenu.vue # routes/web.php
This commit is contained in:
		| @@ -7,7 +7,8 @@ namespace Toby\Infrastructure\Http\Controllers; | ||||
| use Illuminate\Http\RedirectResponse; | ||||
| use Illuminate\Http\Request; | ||||
| use Inertia\Response; | ||||
| use Toby\Domain\EmploymentForm; | ||||
| use Toby\Domain\Enums\EmploymentForm; | ||||
| use Toby\Domain\Enums\Role; | ||||
| use Toby\Eloquent\Models\User; | ||||
| use Toby\Infrastructure\Http\Requests\UserRequest; | ||||
| use Toby\Infrastructure\Http\Resources\UserFormDataResource; | ||||
| @@ -35,6 +36,7 @@ class UserController extends Controller | ||||
|     { | ||||
|         return inertia("Users/Create", [ | ||||
|             "employmentForms" => EmploymentForm::casesToSelect(), | ||||
|             "roles" => Role::casesToSelect(), | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
| @@ -52,6 +54,7 @@ class UserController extends Controller | ||||
|         return inertia("Users/Edit", [ | ||||
|             "user" => new UserFormDataResource($user), | ||||
|             "employmentForms" => EmploymentForm::casesToSelect(), | ||||
|             "roles" => Role::casesToSelect(), | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -0,0 +1,102 @@ | ||||
| <?php | ||||
|  | ||||
| declare(strict_types=1); | ||||
|  | ||||
| namespace Toby\Infrastructure\Http\Controllers; | ||||
|  | ||||
| use Illuminate\Http\RedirectResponse; | ||||
| use Illuminate\Http\Request; | ||||
| use Inertia\Response; | ||||
| use Toby\Domain\Enums\VacationRequestState; | ||||
| use Toby\Domain\Enums\VacationType; | ||||
| use Toby\Domain\VacationRequestStateManager; | ||||
| use Toby\Domain\Validation\VacationRequestValidator; | ||||
| use Toby\Eloquent\Models\VacationRequest; | ||||
| use Toby\Infrastructure\Http\Requests\VacationRequestRequest; | ||||
| use Toby\Infrastructure\Http\Resources\VacationRequestActivityResource; | ||||
| use Toby\Infrastructure\Http\Resources\VacationRequestResource; | ||||
|  | ||||
| class VacationRequestController extends Controller | ||||
| { | ||||
|     public function index(Request $request): Response | ||||
|     { | ||||
|         $vacationRequests = $request->user() | ||||
|             ->vacationRequests() | ||||
|             ->latest() | ||||
|             ->states(VacationRequestState::filterByStatus($request->query("status", "all"))) | ||||
|             ->paginate(); | ||||
|  | ||||
|         return inertia("VacationRequest/Index", [ | ||||
|             "requests" => VacationRequestResource::collection($vacationRequests), | ||||
|             "filters" => $request->only("status"), | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     public function show(VacationRequest $vacationRequest): Response | ||||
|     { | ||||
|         return inertia("VacationRequest/Show", [ | ||||
|             "request" => new VacationRequestResource($vacationRequest), | ||||
|             "activities" => VacationRequestActivityResource::collection($vacationRequest->activities), | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     public function create(): Response | ||||
|     { | ||||
|         return inertia("VacationRequest/Create", [ | ||||
|             "vacationTypes" => VacationType::casesToSelect(), | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     public function store( | ||||
|         VacationRequestRequest $request, | ||||
|         VacationRequestValidator $vacationRequestValidator, | ||||
|         VacationRequestStateManager $stateManager, | ||||
|     ): RedirectResponse { | ||||
|         /** @var VacationRequest $vacationRequest */ | ||||
|         $vacationRequest = $request->user()->vacationRequests()->make($request->data()); | ||||
|  | ||||
|         $vacationRequestValidator->validate($vacationRequest); | ||||
|  | ||||
|         $vacationRequest->save(); | ||||
|         $stateManager->markAsCreated($vacationRequest); | ||||
|  | ||||
|         return redirect() | ||||
|             ->route("vacation.requests.index"); | ||||
|     } | ||||
|  | ||||
|     public function reject( | ||||
|         VacationRequest $vacationRequest, | ||||
|         VacationRequestStateManager $stateManager, | ||||
|     ): RedirectResponse { | ||||
|         $stateManager->reject($vacationRequest); | ||||
|  | ||||
|         return redirect()->back(); | ||||
|     } | ||||
|  | ||||
|     public function cancel( | ||||
|         VacationRequest $vacationRequest, | ||||
|         VacationRequestStateManager $stateManager, | ||||
|     ): RedirectResponse { | ||||
|         $stateManager->cancel($vacationRequest); | ||||
|  | ||||
|         return redirect()->back(); | ||||
|     } | ||||
|  | ||||
|     public function acceptAsTechnical( | ||||
|         VacationRequest $vacationRequest, | ||||
|         VacationRequestStateManager $stateManager, | ||||
|     ): RedirectResponse { | ||||
|         $stateManager->acceptAsTechnical($vacationRequest); | ||||
|  | ||||
|         return redirect()->back(); | ||||
|     } | ||||
|  | ||||
|     public function acceptAsAdministrative( | ||||
|         VacationRequest $vacationRequest, | ||||
|         VacationRequestStateManager $stateManager, | ||||
|     ): RedirectResponse { | ||||
|         $stateManager->acceptAsAdministrative($vacationRequest); | ||||
|  | ||||
|         return redirect()->back(); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user