#157 - added support for the user id parameter

This commit is contained in:
Kamil Niemczycki 2022-06-03 16:54:57 +02:00
parent 48ef40e8ff
commit 5f02e23f51
3 changed files with 32 additions and 11 deletions

View File

@ -173,6 +173,11 @@ class VacationRequestController extends Controller
->orderByProfileField("first_name") ->orderByProfileField("first_name")
->get(); ->get();
if(($selectedUserId = $request->get("user")) && is_numeric($selectedUserId)) {
$userId = User::query()
->find($selectedUserId)?->id;
}
return inertia("VacationRequest/Create", [ return inertia("VacationRequest/Create", [
"vacationTypes" => VacationType::casesToSelect(), "vacationTypes" => VacationType::casesToSelect(),
"users" => SimpleUserResource::collection($users), "users" => SimpleUserResource::collection($users),
@ -180,6 +185,7 @@ class VacationRequestController extends Controller
"createOnBehalfOfEmployee" => $request->user()->can("createOnBehalfOfEmployee", VacationRequest::class), "createOnBehalfOfEmployee" => $request->user()->can("createOnBehalfOfEmployee", VacationRequest::class),
"skipFlow" => $request->user()->can("skipFlow", VacationRequest::class), "skipFlow" => $request->user()->can("skipFlow", VacationRequest::class),
], ],
"userId" => $userId ?? null,
"vacationStartDate" => $request->get("start_date"), "vacationStartDate" => $request->get("start_date"),
]); ]);
} }

View File

@ -110,18 +110,32 @@
> >
<VacationTypeCalendarIcon :type="day.vacationTypes[user.id]" /> <VacationTypeCalendarIcon :type="day.vacationTypes[user.id]" />
</div> </div>
<InertiaLink <template
v-else-if="isActiveBtn(user.id + '+' + day.date) && !day.isWeekend && !day.isHoliday && day.isFuture && (auth.user.id === user.id || can.createOnBehalfOfEmployee)" v-else-if="isActiveBtn(user.id + '+' + day.date) && !day.isWeekend && !day.isHoliday && day.isFuture && (auth.user.id === user.id || can.createOnBehalfOfEmployee)"
>
<InertiaLink
v-if="can.createOnBehalfOfEmployee"
href="/vacation/requests/create"
:data="{ 'user': user.id, 'start_date': day.date }"
>
<div class="flex justify-center items-center">
<VacationTypeCalendarIcon
type="create"
/>
</div>
</InertiaLink>
<InertiaLink
v-else
href="/vacation/requests/create" href="/vacation/requests/create"
:data="{ 'start_date': day.date }" :data="{ 'start_date': day.date }"
> >
<div class="flex justify-center items-center"> <div class="flex justify-center items-center">
<VacationTypeCalendarIcon <VacationTypeCalendarIcon
type="create" type="create"
class="text-blumilk-700"
/> />
</div> </div>
</InertiaLink> </InertiaLink>
</template>
</td> </td>
</tr> </tr>
</tbody> </tbody>

View File

@ -343,12 +343,13 @@ const props = defineProps({
users: Object, users: Object,
holidays: Object, holidays: Object,
can: Object, can: Object,
userId: [Number, null],
vacationStartDate: [String, null], vacationStartDate: [String, null],
}) })
const form = useForm({ const form = useForm({
user: props.can.createOnBehalfOfEmployee user: props.can.createOnBehalfOfEmployee
? props.users.data.find(user => user.id === props.auth.user.id) ?? props.users.data[0] ? props.users.data.find(user => user.id === (props.userId ?? props.auth.user.id)) ?? props.users.data[0]
: props.auth.user, : props.auth.user,
from: props.vacationStartDate, from: props.vacationStartDate,
to: null, to: null,