This commit is contained in:
Adrian Hopek
2022-01-26 10:56:25 +01:00
parent 026bfe485f
commit f3559930c2
28 changed files with 1015 additions and 31 deletions

View 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(),
]);
}
}

View File

@@ -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,
],

View 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"),
];
}
}

View File

@@ -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,
];

View File

@@ -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(),
];
}
}

View 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,
];
}
}