#157 - added the request class and improved the request parameters
This commit is contained in:
@@ -28,6 +28,7 @@ use Toby\Domain\VacationTypeConfigRetriever;
|
||||
use Toby\Eloquent\Helpers\YearPeriodRetriever;
|
||||
use Toby\Eloquent\Models\User;
|
||||
use Toby\Eloquent\Models\VacationRequest;
|
||||
use Toby\Infrastructure\Http\Requests\CreateVacationRequestRequest;
|
||||
use Toby\Infrastructure\Http\Requests\VacationRequestRequest;
|
||||
use Toby\Infrastructure\Http\Resources\SimpleUserResource;
|
||||
use Toby\Infrastructure\Http\Resources\VacationRequestActivityResource;
|
||||
@@ -166,17 +167,14 @@ class VacationRequestController extends Controller
|
||||
return $pdf->stream();
|
||||
}
|
||||
|
||||
public function create(Request $request): Response
|
||||
public function create(CreateVacationRequestRequest $request): Response
|
||||
{
|
||||
$users = User::query()
|
||||
->orderByProfileField("last_name")
|
||||
->orderByProfileField("first_name")
|
||||
->get();
|
||||
|
||||
if(($selectedUserId = $request->get("user")) && is_numeric($selectedUserId)) {
|
||||
$userId = User::query()
|
||||
->find($selectedUserId)?->id;
|
||||
}
|
||||
$requestData = $request->data();
|
||||
|
||||
return inertia("VacationRequest/Create", [
|
||||
"vacationTypes" => VacationType::casesToSelect(),
|
||||
@@ -185,8 +183,8 @@ class VacationRequestController extends Controller
|
||||
"createOnBehalfOfEmployee" => $request->user()->can("createOnBehalfOfEmployee", VacationRequest::class),
|
||||
"skipFlow" => $request->user()->can("skipFlow", VacationRequest::class),
|
||||
],
|
||||
"userId" => $userId ?? null,
|
||||
"vacationStartDate" => $request->get("start_date"),
|
||||
"vacationUserId" => $requestData['user'],
|
||||
"vacationFromDate" => $requestData['from_date'],
|
||||
]);
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Toby\Infrastructure\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Toby\Eloquent\Models\VacationRequest;
|
||||
|
||||
class CreateVacationRequestRequest extends FormRequest
|
||||
{
|
||||
protected $redirectRoute = "vacation.requests.create";
|
||||
|
||||
public function authorize(): bool
|
||||
{
|
||||
return is_null($this->get("user")) ||
|
||||
(int)$this->get("user") === $this->user()->id ||
|
||||
$this->user()->can("createOnBehalfOfEmployee", VacationRequest::class);
|
||||
}
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
"user" => ["nullable", "exists:users,id"],
|
||||
"from_date" => ["nullable", "date_format:Y-m-d"],
|
||||
];
|
||||
}
|
||||
|
||||
public function data(): array
|
||||
{
|
||||
return [
|
||||
"user" => (int)$this->get('user'),
|
||||
"from_date" => $this->get('from_date'),
|
||||
];
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user