#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'), | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
| @@ -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, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user