#28 - holidays management (#30)

* #28 - holidays management

* #28 - fix

* #28 - fix

* #28 - fix

* #28 - fix

* #28 - fix

* #28 - fix

* #28 - cr fix
This commit is contained in:
Adrian Hopek
2022-01-25 09:02:48 +01:00
committed by GitHub
parent 6854c7a9f8
commit 026bfe485f
30 changed files with 938 additions and 23 deletions

View File

@@ -0,0 +1,65 @@
<?php
declare(strict_types=1);
namespace Toby\Http\Controllers;
use Illuminate\Http\RedirectResponse;
use Inertia\Response;
use Toby\Http\Requests\HolidayRequest;
use Toby\Http\Resources\HolidayFormDataResource;
use Toby\Http\Resources\HolidayResource;
use Toby\Models\Holiday;
class HolidayController extends Controller
{
public function index(): Response
{
$holidays = Holiday::query()
->orderBy("date")
->get();
return inertia("Holidays/Index", [
"holidays" => HolidayResource::collection($holidays),
]);
}
public function create(): Response
{
return inertia("Holidays/Create");
}
public function store(HolidayRequest $request): RedirectResponse
{
Holiday::query()->create($request->data());
return redirect()
->route("holidays.index")
->with("success", __("Holiday has been created"));
}
public function edit(Holiday $holiday): Response
{
return inertia("Holidays/Edit", [
"holiday" => new HolidayFormDataResource($holiday),
]);
}
public function update(HolidayRequest $request, Holiday $holiday): RedirectResponse
{
$holiday->update($request->data());
return redirect()
->route("holidays.index")
->with("success", __("Holiday has been updated"));
}
public function destroy(Holiday $holiday): RedirectResponse
{
$holiday->delete();
return redirect()
->route("holidays.index")
->with("success", __("Holiday has been deleted"));
}
}

View File

@@ -0,0 +1,37 @@
<?php
declare(strict_types=1);
namespace Toby\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Carbon;
use Illuminate\Validation\Rule;
use Toby\Models\YearPeriod;
use Toby\Rules\YearPeriodExists;
class HolidayRequest extends FormRequest
{
public function rules(): array
{
return [
"name" => ["required", "min:3", "max:150"],
"date" => ["required",
"date_format:Y-m-d",
Rule::unique("holidays", "date")->ignore($this->holiday),
new YearPeriodExists(),
],
];
}
public function data(): array
{
$date = $this->get("date");
return [
"name" => $this->get("name"),
"date" => $date,
"year_period_id" => YearPeriod::findByYear(Carbon::create($date)->year)->id,
];
}
}

View File

@@ -18,7 +18,7 @@ class UserRequest extends FormRequest
"lastName" => ["required", "min:3", "max:80"],
"email" => ["required", "email", Rule::unique("users", "email")->ignore($this->user)],
"employmentForm" => ["required", new Enum(EmploymentForm::class)],
"employmentDate" => ["required", "date"],
"employmentDate" => ["required", "date_format:Y-m-d"],
];
}

View File

@@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
namespace Toby\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class HolidayFormDataResource extends JsonResource
{
public static $wrap = null;
public function toArray($request): array
{
return [
"id" => $this->id,
"name" => $this->name,
"date" => $this->date->toDateString(),
];
}
}

View File

@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace Toby\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class HolidayResource extends JsonResource
{
public static $wrap = null;
public function toArray($request): array
{
return [
"id" => $this->id,
"name" => $this->name,
"displayDate" => $this->date->toDisplayString(),
"dayOfWeek" => $this->date->dayName,
];
}
}