From 6fdd2ca0497d77bfe0b42cfeb54f173f33b8fc57 Mon Sep 17 00:00:00 2001 From: Kamil Niemczycki Date: Thu, 2 Jun 2022 12:40:35 +0200 Subject: [PATCH 01/20] #157 - added support for the date parameter --- .../Http/Controllers/VacationRequestController.php | 1 + resources/js/Pages/VacationRequest/Create.vue | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/Infrastructure/Http/Controllers/VacationRequestController.php b/app/Infrastructure/Http/Controllers/VacationRequestController.php index 7d8b543..2afd336 100644 --- a/app/Infrastructure/Http/Controllers/VacationRequestController.php +++ b/app/Infrastructure/Http/Controllers/VacationRequestController.php @@ -180,6 +180,7 @@ class VacationRequestController extends Controller "createOnBehalfOfEmployee" => $request->user()->can("createOnBehalfOfEmployee", VacationRequest::class), "skipFlow" => $request->user()->can("skipFlow", VacationRequest::class), ], + "vacationStartDate" => $request->get("start_date"), ]); } diff --git a/resources/js/Pages/VacationRequest/Create.vue b/resources/js/Pages/VacationRequest/Create.vue index 3118556..b253720 100644 --- a/resources/js/Pages/VacationRequest/Create.vue +++ b/resources/js/Pages/VacationRequest/Create.vue @@ -343,13 +343,14 @@ const props = defineProps({ users: Object, holidays: Object, can: Object, + vacationStartDate: [String, null], }) const form = useForm({ user: props.can.createOnBehalfOfEmployee ? props.users.data.find(user => user.id === props.auth.user.id) ?? props.users.data[0] : props.auth.user, - from: null, + from: props.vacationStartDate, to: null, vacationType: null, comment: null, @@ -399,6 +400,7 @@ function createForm() { } function onFromChange(selectedDates, dateStr) { + console.log(form.from) if (form.to === null) { form.to = dateStr -- 2.50.1 From 34a5827aebb011cc23a67b9363b6d304502c726c Mon Sep 17 00:00:00 2001 From: Kamil Niemczycki Date: Thu, 2 Jun 2022 17:31:50 +0200 Subject: [PATCH 02/20] #157 - prepared clikable days --- resources/js/Pages/AnnualSummary.vue | 53 +++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/resources/js/Pages/AnnualSummary.vue b/resources/js/Pages/AnnualSummary.vue index 46f434b..902d101 100644 --- a/resources/js/Pages/AnnualSummary.vue +++ b/resources/js/Pages/AnnualSummary.vue @@ -39,7 +39,7 @@ offset-distance="0" >
- +
+ + + + -- 2.50.1 From c154c51ef46d8c27f449cc64e2a9fcc44e797957 Mon Sep 17 00:00:00 2001 From: Kamil Niemczycki Date: Fri, 3 Jun 2022 13:18:27 +0200 Subject: [PATCH 05/20] #157 - prepared clikable days for calendar of holidays --- app/Domain/CalendarGenerator.php | 1 + resources/js/Composables/vacationTypeInfo.js | 8 +++++ resources/js/Pages/Calendar.vue | 33 ++++++++++++++++++-- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/app/Domain/CalendarGenerator.php b/app/Domain/CalendarGenerator.php index b1c6c0f..f2c69f3 100644 --- a/app/Domain/CalendarGenerator.php +++ b/app/Domain/CalendarGenerator.php @@ -42,6 +42,7 @@ class CalendarGenerator "isToday" => $day->isToday(), "isWeekend" => $day->isWeekend(), "isHoliday" => $holidays->contains($day), + "isFuture" => $day->isToday() || $day >= Carbon::now(), "vacations" => $vacationsForDay->pluck("user_id"), "vacationTypes" => $vacationsForDay->pluck("vacationRequest.type", "user_id"), ]; diff --git a/resources/js/Composables/vacationTypeInfo.js b/resources/js/Composables/vacationTypeInfo.js index 3bd73b9..75adc75 100644 --- a/resources/js/Composables/vacationTypeInfo.js +++ b/resources/js/Composables/vacationTypeInfo.js @@ -9,6 +9,7 @@ import CalendarCheckIcon from 'vue-material-design-icons/CalendarCheck.vue' import MedicalBagIcon from 'vue-material-design-icons/MedicalBag.vue' import CalendarRemoveIcon from 'vue-material-design-icons/CalendarRemove.vue' import HomeCityIcon from 'vue-material-design-icons/HomeCity.vue' +import BookPlusIcon from 'vue-material-design-icons/BookPlus.vue' const types = [ { @@ -88,6 +89,13 @@ const types = [ color: 'text-lime-500', border: 'border-lime-500', }, + { + text: 'Złóż wniosek', + value: 'create', + icon: BookPlusIcon, + color: 'text-blumilk-700', + border: 'border-lime-500', + }, ] export default function useVacationTypeInfo() { diff --git a/resources/js/Pages/Calendar.vue b/resources/js/Pages/Calendar.vue index b913c2c..50a30d2 100644 --- a/resources/js/Pages/Calendar.vue +++ b/resources/js/Pages/Calendar.vue @@ -100,7 +100,9 @@ v-for="day in calendar" :key="day.dayOfMonth" class="border border-gray-300" - :class="{ 'bg-blumilk-25': day.isToday, 'bg-red-100': day.isWeekend || day.isHoliday}" + :class="{ 'bg-blumilk-25': day.isToday, 'bg-red-100': day.isWeekend || day.isHoliday }" + @mouseover="setActiveBtn(user.id.toString() + '' + day.date)" + @mouseleave="unsetActiveBtn" >
+ +
+ +
+
@@ -118,7 +132,7 @@ -- 2.50.1 From 48ef40e8ff66ac1b46e09824edd24d396fc0bb13 Mon Sep 17 00:00:00 2001 From: Kamil Niemczycki Date: Fri, 3 Jun 2022 14:04:16 +0200 Subject: [PATCH 06/20] #157 - added a privilege check --- .../Http/Controllers/VacationCalendarController.php | 1 + resources/js/Pages/Calendar.vue | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/Infrastructure/Http/Controllers/VacationCalendarController.php b/app/Infrastructure/Http/Controllers/VacationCalendarController.php index 20d1678..2673f6f 100644 --- a/app/Infrastructure/Http/Controllers/VacationCalendarController.php +++ b/app/Infrastructure/Http/Controllers/VacationCalendarController.php @@ -44,6 +44,7 @@ class VacationCalendarController extends Controller "users" => SimpleUserResource::collection($users), "can" => [ "generateTimesheet" => $request->user()->can("generateTimesheet"), + "createOnBehalfOfEmployee" => $request->user()->can("createOnBehalfOfEmployee"), ], ]); } diff --git a/resources/js/Pages/Calendar.vue b/resources/js/Pages/Calendar.vue index 50a30d2..f8db8b8 100644 --- a/resources/js/Pages/Calendar.vue +++ b/resources/js/Pages/Calendar.vue @@ -101,7 +101,7 @@ :key="day.dayOfMonth" class="border border-gray-300" :class="{ 'bg-blumilk-25': day.isToday, 'bg-red-100': day.isWeekend || day.isHoliday }" - @mouseover="setActiveBtn(user.id.toString() + '' + day.date)" + @mouseover="setActiveBtn(user.id + '+' + day.date)" @mouseleave="unsetActiveBtn" >
@@ -146,6 +146,8 @@ const props = defineProps({ can: Object, }) +console.log(props.auth.user) + let activeElement = ref(undefined) const { getMonths, findMonth } = useMonthInfo() -- 2.50.1 From 5f02e23f511a4381199f6b9d9e38f6cc4da638c1 Mon Sep 17 00:00:00 2001 From: Kamil Niemczycki Date: Fri, 3 Jun 2022 16:54:57 +0200 Subject: [PATCH 07/20] #157 - added support for the user id parameter --- .../Controllers/VacationRequestController.php | 6 ++++ resources/js/Pages/Calendar.vue | 34 +++++++++++++------ resources/js/Pages/VacationRequest/Create.vue | 3 +- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/app/Infrastructure/Http/Controllers/VacationRequestController.php b/app/Infrastructure/Http/Controllers/VacationRequestController.php index 2afd336..450f41a 100644 --- a/app/Infrastructure/Http/Controllers/VacationRequestController.php +++ b/app/Infrastructure/Http/Controllers/VacationRequestController.php @@ -173,6 +173,11 @@ class VacationRequestController extends Controller ->orderByProfileField("first_name") ->get(); + if(($selectedUserId = $request->get("user")) && is_numeric($selectedUserId)) { + $userId = User::query() + ->find($selectedUserId)?->id; + } + return inertia("VacationRequest/Create", [ "vacationTypes" => VacationType::casesToSelect(), "users" => SimpleUserResource::collection($users), @@ -180,6 +185,7 @@ 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"), ]); } diff --git a/resources/js/Pages/Calendar.vue b/resources/js/Pages/Calendar.vue index f8db8b8..ea791ae 100644 --- a/resources/js/Pages/Calendar.vue +++ b/resources/js/Pages/Calendar.vue @@ -110,18 +110,32 @@ >
- -
- -
-
+ +
+ +
+
+ +
+ +
+
+ diff --git a/resources/js/Pages/VacationRequest/Create.vue b/resources/js/Pages/VacationRequest/Create.vue index b6eaf2d..4749121 100644 --- a/resources/js/Pages/VacationRequest/Create.vue +++ b/resources/js/Pages/VacationRequest/Create.vue @@ -343,12 +343,13 @@ const props = defineProps({ users: Object, holidays: Object, can: Object, + userId: [Number, null], vacationStartDate: [String, null], }) const form = useForm({ 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, from: props.vacationStartDate, to: null, -- 2.50.1 From ea5e626e8a852f6d53b2f619be50928db36acfcd Mon Sep 17 00:00:00 2001 From: Kamil Niemczycki Date: Fri, 3 Jun 2022 17:41:27 +0200 Subject: [PATCH 08/20] improved loading of selected date --- resources/js/Pages/VacationRequest/Create.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/js/Pages/VacationRequest/Create.vue b/resources/js/Pages/VacationRequest/Create.vue index 4749121..091e3d1 100644 --- a/resources/js/Pages/VacationRequest/Create.vue +++ b/resources/js/Pages/VacationRequest/Create.vue @@ -352,12 +352,14 @@ const form = useForm({ ? props.users.data.find(user => user.id === (props.userId ?? props.auth.user.id)) ?? props.users.data[0] : props.auth.user, from: props.vacationStartDate, - to: null, + to: props.vacationStartDate, vacationType: null, comment: null, flowSkipped: false, }) +refreshEstimatedDays(form.from, form.to) + const estimatedDays = ref([]) const vacationTypes = ref([]) -- 2.50.1 From d4c5e55409a0466032d6f5406336879686cae585 Mon Sep 17 00:00:00 2001 From: Kamil Niemczycki Date: Mon, 6 Jun 2022 08:31:01 +0200 Subject: [PATCH 09/20] updated calendar --- resources/js/Pages/Calendar.vue | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/resources/js/Pages/Calendar.vue b/resources/js/Pages/Calendar.vue index ea791ae..9881f36 100644 --- a/resources/js/Pages/Calendar.vue +++ b/resources/js/Pages/Calendar.vue @@ -101,8 +101,8 @@ :key="day.dayOfMonth" class="border border-gray-300" :class="{ 'bg-blumilk-25': day.isToday, 'bg-red-100': day.isWeekend || day.isHoliday }" - @mouseover="setActiveBtn(user.id + '+' + day.date)" - @mouseleave="unsetActiveBtn" + @mouseover="setActiveDay(user.id + '+' + day.date)" + @mouseleave="unsetActiveDay" >
= DateTime.now().toISODate().toString() -} - function isInCurrentMonth(date, currentMonth) { return currentMonth.hasSame(date, 'month') } @@ -215,12 +195,3 @@ function getVacationInfo(day) { return day.isVacation ? props.vacations[day.date.toISODate()] : props.pendingVacations[day.date.toISODate()] } - - diff --git a/resources/js/Pages/Calendar.vue b/resources/js/Pages/Calendar.vue index 4f8ba54..00dfaf1 100644 --- a/resources/js/Pages/Calendar.vue +++ b/resources/js/Pages/Calendar.vue @@ -111,7 +111,7 @@