#20 - wip
This commit is contained in:
		
							
								
								
									
										31
									
								
								app/Http/Controllers/VacationRequestController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								app/Http/Controllers/VacationRequestController.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| <?php | ||||
|  | ||||
| declare(strict_types=1); | ||||
|  | ||||
| namespace Toby\Http\Controllers; | ||||
|  | ||||
| use Illuminate\Http\Request; | ||||
| use Inertia\Response; | ||||
| use Toby\Enums\VacationType; | ||||
| use Toby\Http\Resources\VacationRequestResource; | ||||
|  | ||||
| class VacationRequestController extends Controller | ||||
| { | ||||
|     public function index(Request $request): Response | ||||
|     { | ||||
|         $requests = $request->user() | ||||
|             ->vacationRequests() | ||||
|             ->paginate(); | ||||
|  | ||||
|         return inertia("VacationRequest/Index", [ | ||||
|             "requests" => VacationRequestResource::collection($requests), | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     public function create(): Response | ||||
|     { | ||||
|         return inertia("VacationRequest/Create", [ | ||||
|             "vacationTypes" => VacationType::casesToSelect(), | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
| @@ -23,6 +23,7 @@ use Illuminate\Routing\Middleware\ValidateSignature; | ||||
| use Illuminate\Session\Middleware\AuthenticateSession; | ||||
| use Illuminate\Session\Middleware\StartSession; | ||||
| use Illuminate\View\Middleware\ShareErrorsFromSession; | ||||
| use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful; | ||||
| use Toby\Http\Middleware\Authenticate; | ||||
| use Toby\Http\Middleware\HandleInertiaRequests; | ||||
| use Toby\Http\Middleware\RedirectIfAuthenticated; | ||||
| @@ -52,6 +53,7 @@ class Kernel extends HttpKernel | ||||
|             HandleInertiaRequests::class, | ||||
|         ], | ||||
|         "api" => [ | ||||
|             EnsureFrontendRequestsAreStateful::class, | ||||
|             "throttle:api", | ||||
|             SubstituteBindings::class, | ||||
|         ], | ||||
|   | ||||
							
								
								
									
										33
									
								
								app/Http/Requests/VacationRequestRequest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								app/Http/Requests/VacationRequestRequest.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| <?php | ||||
|  | ||||
| declare(strict_types=1); | ||||
|  | ||||
| namespace Toby\Http\Requests; | ||||
|  | ||||
| use Illuminate\Foundation\Http\FormRequest; | ||||
| use Illuminate\Validation\Rules\Enum; | ||||
| use Toby\Enums\VacationType; | ||||
| use Toby\Rules\YearPeriodExists; | ||||
|  | ||||
| class VacationRequestRequest extends FormRequest | ||||
| { | ||||
|     public function rules(): array | ||||
|     { | ||||
|         return [ | ||||
|             "type" => ["required", new Enum(VacationType::class)], | ||||
|             "from" => ["required", "date_format:Y-m-d", new YearPeriodExists()], | ||||
|             "to" => ["required", "date_format:Y-m-d", new YearPeriodExists()], | ||||
|             "comment" => ["nullable"], | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     public function data(): array | ||||
|     { | ||||
|         return [ | ||||
|             "type" => $this->get("type"), | ||||
|             "from" => $this->get("from"), | ||||
|             "to" => $this->get("to"), | ||||
|             "comment" => $this->get("comment"), | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
| @@ -15,6 +15,7 @@ class HolidayResource extends JsonResource | ||||
|         return [ | ||||
|             "id" => $this->id, | ||||
|             "name" => $this->name, | ||||
|             "date" => $this->date->toDateString(), | ||||
|             "displayDate" => $this->date->toDisplayString(), | ||||
|             "dayOfWeek" => $this->date->dayName, | ||||
|         ]; | ||||
|   | ||||
| @@ -18,7 +18,7 @@ class UserFormDataResource extends JsonResource | ||||
|             "lastName" => $this->last_name, | ||||
|             "email" => $this->email, | ||||
|             "employmentForm" => $this->employment_form, | ||||
|             "employmentDate" => $this->employment_date, | ||||
|             "employmentDate" => $this->employment_date->toDateString(), | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										24
									
								
								app/Http/Resources/VacationRequestResource.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								app/Http/Resources/VacationRequestResource.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| <?php | ||||
|  | ||||
| declare(strict_types=1); | ||||
|  | ||||
| namespace Toby\Http\Resources; | ||||
|  | ||||
| use Illuminate\Http\Resources\Json\JsonResource; | ||||
|  | ||||
| class VacationRequestResource extends JsonResource | ||||
| { | ||||
|     public static $wrap = null; | ||||
|  | ||||
|     public function toArray($request): array | ||||
|     { | ||||
|         return [ | ||||
|             "id" => $this->id, | ||||
|             "user" => new UserResource($this->user), | ||||
|             "type" => $this->type->label(), | ||||
|             "from" => $this->from->toDisplayString(), | ||||
|             "to" => $this->to->toDisplayString(), | ||||
|             "commment" => $this->comment, | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user