diff --git a/app/Domain/TimesheetPerUserSheet.php b/app/Domain/TimesheetPerUserSheet.php index 22e5ddc..8e0fa6d 100644 --- a/app/Domain/TimesheetPerUserSheet.php +++ b/app/Domain/TimesheetPerUserSheet.php @@ -24,8 +24,8 @@ use PhpOffice\PhpSpreadsheet\Style\Border; use PhpOffice\PhpSpreadsheet\Style\Fill; use PhpOffice\PhpSpreadsheet\Style\NumberFormat; use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; -use Toby\Domain\Enums\VacationRequestState; use Toby\Domain\Enums\VacationType; +use Toby\Domain\States\VacationRequest\Approved; use Toby\Eloquent\Models\Holiday; use Toby\Eloquent\Models\User; use Toby\Eloquent\Models\Vacation; @@ -189,7 +189,7 @@ class TimesheetPerUserSheet implements WithTitle, WithHeadings, WithEvents, With return $user->vacations() ->with("vacationRequest") ->whereBetween("date", [$period->start, $period->end]) - ->whereRelation("vacationRequest", "state", VacationRequestState::Approved->value) + ->whereRelation("vacationRequest", "state", Approved::$name) ->get() ->groupBy( [ diff --git a/app/Domain/VacationRequestStatesRetriever.php b/app/Domain/VacationRequestStatesRetriever.php index ebe66fa..f4caeb8 100644 --- a/app/Domain/VacationRequestStatesRetriever.php +++ b/app/Domain/VacationRequestStatesRetriever.php @@ -48,7 +48,7 @@ class VacationRequestStatesRetriever ]; } - public static function filterByStatus(string $filter): array + public static function filterByStatusGroup(string $filter): array { return match ($filter) { "pending" => self::pendingStates(), diff --git a/app/Infrastructure/Http/Controllers/VacationRequestController.php b/app/Infrastructure/Http/Controllers/VacationRequestController.php index b82c42d..10cb697 100644 --- a/app/Infrastructure/Http/Controllers/VacationRequestController.php +++ b/app/Infrastructure/Http/Controllers/VacationRequestController.php @@ -40,7 +40,7 @@ class VacationRequestController extends Controller ->with("vacations") ->where("year_period_id", $yearPeriodRetriever->selected()->id) ->latest() - ->states(VacationRequestStatesRetriever::filterByStatus($status)) + ->states(VacationRequestStatesRetriever::filterByStatusGroup($status)) ->paginate(); return inertia("VacationRequest/Index", [ @@ -53,7 +53,7 @@ class VacationRequestController extends Controller public function indexForApprovers( Request $request, - YearPeriodRetriever $yearPeriodRetriever + YearPeriodRetriever $yearPeriodRetriever, ): RedirectResponse|Response { if ($request->user()->cannot("listAll", VacationRequest::class)) { return redirect()->route("vacation.requests.index"); @@ -67,7 +67,7 @@ class VacationRequestController extends Controller ->with(["user", "vacations"]) ->where("year_period_id", $yearPeriod->id) ->when($user !== null, fn(Builder $query) => $query->where("user_id", $user)) - ->when($status !== null, fn (Builder $query) => $query->states(VacationRequestStatesRetriever::filterByStatus($status))) + ->when($status !== null, fn(Builder $query) => $query->states([$status])) ->latest() ->paginate(); diff --git a/docker/dev/php/Dockerfile b/docker/dev/php/Dockerfile index da0c855..d068a6c 100644 --- a/docker/dev/php/Dockerfile +++ b/docker/dev/php/Dockerfile @@ -9,14 +9,16 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \ && docker-php-ext-enable xdebug \ ;fi -RUN pecl install redis \ - && apk --no-cache add \ +RUN apk add --no-cache pcre-dev $PHPIZE_DEPS \ postgresql-dev \ zip \ libzip-dev \ + libpng-dev \ + && pecl install redis \ && docker-php-ext-install \ pdo_pgsql \ zip \ + gd \ && docker-php-ext-configure \ zip \ && docker-php-ext-enable \ diff --git a/resources/js/Pages/VacationRequest/IndexForApprovers.vue b/resources/js/Pages/VacationRequest/IndexForApprovers.vue index 737e8d5..dbf4fe9 100644 --- a/resources/js/Pages/VacationRequest/IndexForApprovers.vue +++ b/resources/js/Pages/VacationRequest/IndexForApprovers.vue @@ -18,8 +18,8 @@
-
-
+
+
@@ -71,7 +71,7 @@
@@ -81,7 +81,7 @@ @@ -91,16 +91,14 @@
- + {{ user.name }}
- @@ -112,7 +110,7 @@
-
+
- + {{ form.status.text }} @@ -148,7 +146,7 @@ class="absolute z-10 mt-1 w-full max-w-lg bg-white shadow-lg max-h-60 rounded-md py-1 text-base ring-1 ring-black ring-opacity-5 overflow-auto focus:outline-none sm:text-sm" > @@ -156,11 +154,11 @@ :class="[active ? 'text-white bg-blumilk-600' : 'text-gray-900', 'cursor-default select-none relative py-2 pl-3 pr-9']" >
- Wszyscy pracownicy + Wszystkie statusy
@@ -168,28 +166,19 @@
  • -
    - - - {{ user.name }} - -
    + {{ status.text }} @@ -387,6 +376,7 @@ import {watch, reactive} from 'vue' import {debounce} from 'lodash' import {Inertia} from '@inertiajs/inertia' import {Listbox, ListboxButton, ListboxLabel, ListboxOption, ListboxOptions} from '@headlessui/vue' +import {useStatusInfo} from '@/Composables/statusInfo' export default { name: 'VacationRequestIndex', @@ -425,21 +415,23 @@ export default { }, }, setup(props) { + const {getStatues, findStatus} = useStatusInfo() + const form = reactive({ user: props.users.data.find(user => user.id === props.filters.user) ?? null, - status: props.filters.status, + status: findStatus(props.filters.status) ?? null, }) - const statuses = useStatusInfo() + const statuses = getStatues() watch(form, debounce(() => { - Inertia.get('/vacation-requests', {user: form.user?.id, status: form.status}, { + Inertia.get('/vacation-requests', {user: form.user?.id, status: form.status?.value}, { preserveState: true, replace: true, }) }, 300)) - return {form} + return {form, statuses} }, } diff --git a/resources/js/Shared/Activity.vue b/resources/js/Shared/Activity.vue index 050889c..d183714 100644 --- a/resources/js/Shared/Activity.vue +++ b/resources/js/Shared/Activity.vue @@ -48,7 +48,9 @@ export default { }, }, setup(props) { - const statusInfo = computed(() => useStatusInfo(props.activity.state)) + const { findStatus } = useStatusInfo() + + const statusInfo = computed(() => findStatus(props.activity.state)) return { statusInfo, diff --git a/resources/js/Shared/Status.vue b/resources/js/Shared/Status.vue index 6588c7f..0b8ed58 100644 --- a/resources/js/Shared/Status.vue +++ b/resources/js/Shared/Status.vue @@ -25,7 +25,9 @@ export default { }, }, setup(props) { - const statusInfo = computed(() => useStatusInfo(props.status)) + const { findStatus } = useStatusInfo() + + const statusInfo = computed(() => findStatus(props.status)) return { statusInfo,