#157 - added the request class and improved the request parameters
This commit is contained in:
parent
d4c5e55409
commit
04d036a1ef
@ -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'),
|
||||
];
|
||||
}
|
||||
}
|
@ -89,7 +89,7 @@
|
||||
<InertiaLink
|
||||
v-if="day.isFuture"
|
||||
href="/vacation/requests/create"
|
||||
:data="{ 'start_date': day.date.toISODate() }"
|
||||
:data="{ 'from_date': day.date.toISODate() }"
|
||||
class="py-1.5 w-full font-medium bg-white hover:bg-blumilk-25 border-b-4 border-transparent focus:outline-blumilk-500"
|
||||
>
|
||||
<time
|
||||
|
@ -173,6 +173,6 @@ function unsetActiveDay() {
|
||||
}
|
||||
|
||||
function linkParameters(user, day) {
|
||||
return props.can.createOnBehalfOfEmployee ? { user: user.id, start_date: day.date } : { start_date: day.date }
|
||||
return props.can.createOnBehalfOfEmployee ? { user: user.id, from_date: day.date } : { from_date: day.date }
|
||||
}
|
||||
</script>
|
||||
|
@ -343,16 +343,16 @@ const props = defineProps({
|
||||
users: Object,
|
||||
holidays: Object,
|
||||
can: Object,
|
||||
userId: [Number, null],
|
||||
vacationStartDate: [String, null],
|
||||
vacationUserId: [Number, null],
|
||||
vacationFromDate: [String, null],
|
||||
})
|
||||
|
||||
const form = useForm({
|
||||
user: props.can.createOnBehalfOfEmployee
|
||||
? props.users.data.find(user => user.id === (props.userId ?? props.auth.user.id)) ?? props.users.data[0]
|
||||
? props.users.data.find(user => user.id === (props.vacationUserId ?? props.auth.user.id)) ?? props.users.data[0]
|
||||
: props.auth.user,
|
||||
from: props.vacationStartDate,
|
||||
to: props.vacationStartDate,
|
||||
from: props.vacationFromDate,
|
||||
to: props.vacationFromDate,
|
||||
vacationType: null,
|
||||
comment: null,
|
||||
flowSkipped: false,
|
||||
|
Loading…
x
Reference in New Issue
Block a user