diff --git a/app/Enums/VacationType.php b/app/Enums/VacationType.php index 2e1724d4..31d378d3 100644 --- a/app/Enums/VacationType.php +++ b/app/Enums/VacationType.php @@ -19,6 +19,7 @@ enum VacationType: string case Training = "training_vacation"; case Childcare = "childcare_vacation"; case Volunteering = "volunteering_vacation"; + case BloodDonation = "blood_donation_vacation"; case Absence = "absence"; public static function casesToSelect(): array diff --git a/config/vacation_types.php b/config/vacation_types.php index 04a976f1..64d45a9e 100644 --- a/config/vacation_types.php +++ b/config/vacation_types.php @@ -75,6 +75,23 @@ VacationTypeConfigRetriever::KEY_IS_VACATION => true, VacationTypeConfigRetriever::KEY_DURING_NON_WORKDAYS => false, ], + VacationType::BloodDonation->value => [ + VacationTypeConfigRetriever::KEY_TECHNICAL_APPROVAL => false, + VacationTypeConfigRetriever::KEY_ADMINISTRATIVE_APPROVAL => true, + VacationTypeConfigRetriever::KEY_BILLABLE => true, + VacationTypeConfigRetriever::KEY_HAS_LIMIT => false, + VacationTypeConfigRetriever::KEY_AVAILABLE_FOR => [ + EmploymentForm::EmploymentContract, + ], + VacationTypeConfigRetriever::KEY_REQUEST_ALLOWED_FOR => [ + Role::Employee, + Role::Administrator, + Role::AdministrativeApprover, + Role::TechnicalApprover, + ], + VacationTypeConfigRetriever::KEY_IS_VACATION => true, + VacationTypeConfigRetriever::KEY_DURING_NON_WORKDAYS => false, + ], VacationType::Unpaid->value => [ VacationTypeConfigRetriever::KEY_TECHNICAL_APPROVAL => true, VacationTypeConfigRetriever::KEY_ADMINISTRATIVE_APPROVAL => true, diff --git a/lang/pl.json b/lang/pl.json index 65e04d46..d9706600 100644 --- a/lang/pl.json +++ b/lang/pl.json @@ -20,6 +20,7 @@ "absence": "Nieobecność", "remote_work": "Praca zdalna", "delegation": "Delegacja", + "blood_donation_vacation": "Oddanie krwi", "employee": "Pracownik", "administrator": "Administrator", "technical_approver": "Techniczny akceptujący", diff --git a/resources/js/Composables/vacationTypeInfo.js b/resources/js/Composables/vacationTypeInfo.js index d2b90635..43873924 100644 --- a/resources/js/Composables/vacationTypeInfo.js +++ b/resources/js/Composables/vacationTypeInfo.js @@ -11,6 +11,7 @@ import CalendarRemoveIcon from 'vue-material-design-icons/CalendarRemove.vue' import HomeCityIcon from 'vue-material-design-icons/HomeCity.vue' import PlusIcon from 'vue-material-design-icons/Plus.vue' import PlaneTrainIcon from 'vue-material-design-icons/PlaneTrain.vue' +import WaterPlusIcon from 'vue-material-design-icons/WaterPlus.vue' const types = [ { @@ -76,6 +77,13 @@ const types = [ color: 'text-rose-500', border: 'border-rose-500', }, + { + text: 'Oddanie krwi', + value: 'blood_donation_vacation', + icon: WaterPlusIcon, + color: 'text-rose-500', + border: 'border-rose-500', + }, { text: 'Nieobecność', value: 'absence', diff --git a/tests/Feature/VacationRequestTest.php b/tests/Feature/VacationRequestTest.php index a3801351..5907d428 100644 --- a/tests/Feature/VacationRequestTest.php +++ b/tests/Feature/VacationRequestTest.php @@ -861,6 +861,7 @@ public function testCorrectVacationTypesAreAvailableForEmployee(): void ["label" => "Urlop szkoleniowy", "value" => "training_vacation"], ["label" => "Opieka nad dzieckiem (art. 188 kp)", "value" => "childcare_vacation"], ["label" => "Wolontariat", "value" => "volunteering_vacation"], + ["label" => "Oddanie krwi", "value" => "blood_donation_vacation"], ]); } @@ -887,6 +888,7 @@ public function testCorrectVacationTypesAreAvailableForTechnicalApprover(): void ["label" => "Urlop szkoleniowy", "value" => "training_vacation"], ["label" => "Opieka nad dzieckiem (art. 188 kp)", "value" => "childcare_vacation"], ["label" => "Wolontariat", "value" => "volunteering_vacation"], + ["label" => "Oddanie krwi", "value" => "blood_donation_vacation"], ]); } @@ -914,6 +916,7 @@ public function testCorrectVacationTypesAreAvailableForAdministrativeApprover(): ["label" => "Urlop szkoleniowy", "value" => "training_vacation"], ["label" => "Opieka nad dzieckiem (art. 188 kp)", "value" => "childcare_vacation"], ["label" => "Wolontariat", "value" => "volunteering_vacation"], + ["label" => "Oddanie krwi", "value" => "blood_donation_vacation"], ]); } @@ -941,6 +944,7 @@ public function testCorrectVacationTypesAreAvailableForAdmin(): void ["label" => "Urlop szkoleniowy", "value" => "training_vacation"], ["label" => "Opieka nad dzieckiem (art. 188 kp)", "value" => "childcare_vacation"], ["label" => "Wolontariat", "value" => "volunteering_vacation"], + ["label" => "Oddanie krwi", "value" => "blood_donation_vacation"], ]); } @@ -1024,6 +1028,7 @@ public function testEmployeeWithPermissionToCreateOnBehalfSeesAllVacationTypesFo ["label" => "Urlop szkoleniowy", "value" => "training_vacation"], ["label" => "Opieka nad dzieckiem (art. 188 kp)", "value" => "childcare_vacation"], ["label" => "Wolontariat", "value" => "volunteering_vacation"], + ["label" => "Oddanie krwi", "value" => "blood_donation_vacation"], ]); } }