{"version":3,"file":"js/app.dcd4f37fa7180d72.js?version=1.0.4.1743459043635","mappings":"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","sources":["webpack://kit4planning/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://kit4planning/./src/App.vue","webpack://kit4planning/./src/components/layout/Header.vue","webpack://kit4planning/./src/services/user.auth.service.js","webpack://kit4planning/./src/store/auth.module.js","webpack://kit4planning/./src/components/auth/Login.vue","webpack://kit4planning/./src/components/auth/login/UserNameLogin.vue","webpack://kit4planning/./src/components/auth/login/UserNameLogin.vue?bbfd","webpack://kit4planning/./src/components/auth/Login.vue?0656","webpack://kit4planning/./src/components/auth/Activation.vue","webpack://kit4planning/./src/components/auth/common/CheckKey.vue","webpack://kit4planning/./src/components/auth/common/CheckKey.vue?684c","webpack://kit4planning/./src/components/auth/Activation.vue?07e6","webpack://kit4planning/./src/components/auth/Profile.vue","webpack://kit4planning/./src/components/user/common/UserStatus.vue","webpack://kit4planning/./src/components/user/common/UserStatus.vue?ba0c","webpack://kit4planning/./src/components/common/CustomMessage.vue","webpack://kit4planning/./src/components/common/CustomMessage.vue?2751","webpack://kit4planning/./src/components/auth/Profile.vue?386a","webpack://kit4planning/./src/components/auth/ForgottenPassword.vue","webpack://kit4planning/./src/components/auth/forgotten-password/PasswordModification.vue","webpack://kit4planning/./src/components/auth/forgotten-password/PasswordModification.vue?d0e5","webpack://kit4planning/./src/components/auth/ForgottenPassword.vue?89e7","webpack://kit4planning/./src/components/event/Events.vue","webpack://kit4planning/./src/components/event/events/EventsList.vue","webpack://kit4planning/./src/services/helper.service.js","webpack://kit4planning/./src/components/event/events/EventsList.vue?5c2a","webpack://kit4planning/./src/components/event/events/EventFilter.vue","webpack://kit4planning/./src/components/common/CustomSelect.vue","webpack://kit4planning/./src/components/common/CustomSelect.vue?6f35","webpack://kit4planning/./src/components/event/events/EventFilter.vue?9ae8","webpack://kit4planning/./src/components/event/Events.vue?2f67","webpack://kit4planning/./src/components/event/Event.vue","webpack://kit4planning/./src/components/event/event/EventValidateForm.vue","webpack://kit4planning/./src/components/common/TimePicker.vue","webpack://kit4planning/./src/components/common/TimePicker.vue?e3ee","webpack://kit4planning/./src/components/event/event/EventValidateForm.vue?9d79","webpack://kit4planning/./src/components/event/event/EventRevocationForm.vue","webpack://kit4planning/./src/components/event/event/EventRevocationForm.vue?7815","webpack://kit4planning/./src/components/event/event/EventAction.vue","webpack://kit4planning/./src/components/event/event/EventAction.vue?4327","webpack://kit4planning/./src/components/event/Event.vue?0de7","webpack://kit4planning/./src/components/event/EventCreate.vue","webpack://kit4planning/./src/components/event/event-create/stepper/Stepper.vue","webpack://kit4planning/./src/components/event/event-create/stepper/Stepper.vue?2c92","webpack://kit4planning/./src/components/event/event-create/step-0/EventCreateWorkshopChooser.vue","webpack://kit4planning/./src/components/event/event-create/step-0/SimpleWorkshopElementList.vue","webpack://kit4planning/./src/components/event/event-create/step-0/SimpleWorkshopElementList.vue?12be","webpack://kit4planning/./src/components/event/event-create/step-0/EventCreateWorkshopChooser.vue?2e79","webpack://kit4planning/./src/components/event/event-create/step-1/EventCreateDateChooser.vue","webpack://kit4planning/./src/components/event/event-create/step-1/date-chooser/EventCreateDateChooserTimeSlots.vue","webpack://kit4planning/./src/components/event/event-create/step-1/date-chooser/EventCreateDateChooserTimeSlots.vue?d3d4","webpack://kit4planning/./src/components/event/event-create/step-1/date-chooser/EventCreateDateChooserDayWidget.vue","webpack://kit4planning/./src/components/event/event-create/step-1/date-chooser/EventCreateDateChooserDayWidget.vue?2eee","webpack://kit4planning/./src/components/event/event-create/step-1/EventCreateDateChooser.vue?7177","webpack://kit4planning/./src/components/event/event-create/step-2/EventCreateVehicle.vue","webpack://kit4planning/./src/components/common/RegistrationNumberInput.vue","webpack://kit4planning/./src/services/registration-number.js","webpack://kit4planning/./src/components/common/RegistrationNumberInput.vue?c3a1","webpack://kit4planning/./src/components/event/event-create/step-2/EventCreateVehicle.vue?20c0","webpack://kit4planning/./src/components/event/event-create/step-3/PrestationsChooser.vue","webpack://kit4planning/./src/components/event/event-create/step-3/PrestationsChooser.vue?6c22","webpack://kit4planning/./src/components/event/event-create/step-4/EventCreateInfo.vue","webpack://kit4planning/./src/components/common/Switch.vue","webpack://kit4planning/./src/components/common/Switch.vue?4dad","webpack://kit4planning/./src/components/event/event-create/step-4/EventCreateInfo.vue?57f1","webpack://kit4planning/./src/components/event/event-create/step-5/EventCreateClient.vue","webpack://kit4planning/./src/components/common/PhoneInput.vue","webpack://kit4planning/./src/components/common/PhoneInput.vue?1664","webpack://kit4planning/./src/components/event/event-create/step-5/EventCreateClient.vue?7adb","webpack://kit4planning/./src/components/event/event-create/step-6/EventCreateConfirmation.vue","webpack://kit4planning/./src/components/event/event-create/step-6/EventCreateConfirmation.vue?53c5","webpack://kit4planning/./src/components/event/EventCreate.vue?23d6","webpack://kit4planning/./src/components/event/EventMove.vue","webpack://kit4planning/./src/components/event/event-move/EventMoveDateChooser.vue","webpack://kit4planning/./src/components/event/event-move/date-chooser/EventMoveDateChooserTimeSlots.vue","webpack://kit4planning/./src/components/event/event-move/date-chooser/EventMoveDateChooserTimeSlots.vue?869c","webpack://kit4planning/./src/components/event/event-move/date-chooser/EventMoveDateChooserDayWidget.vue","webpack://kit4planning/./src/components/event/event-move/date-chooser/EventMoveDateChooserDayWidget.vue?c8e2","webpack://kit4planning/./src/components/event/event-move/EventMoveDateChooser.vue?1595","webpack://kit4planning/./src/components/event/event-move/EventMoveConfirmation.vue","webpack://kit4planning/./src/components/event/event-move/EventMoveConfirmation.vue?c7b8","webpack://kit4planning/./src/components/event/EventMove.vue?e2ee","webpack://kit4planning/./src/components/user/Users.vue","webpack://kit4planning/./src/components/user/users/UserList.vue","webpack://kit4planning/./src/beans/UserListConfig.js","webpack://kit4planning/./src/components/user/users/UserListElement.vue","webpack://kit4planning/./src/components/user/common/UserRole.vue","webpack://kit4planning/./src/components/user/common/UserRole.vue?1aae","webpack://kit4planning/./src/components/user/users/UserListElement.vue?b508","webpack://kit4planning/./src/components/user/users/UserSettingsModal.vue","webpack://kit4planning/./src/components/user/users/UserSettings.vue","webpack://kit4planning/./src/components/common/NavItem.vue","webpack://kit4planning/./src/components/common/NavItem.vue?c8a3","webpack://kit4planning/./src/components/user/users/user-settings/UserInfo.vue","webpack://kit4planning/./src/components/user/users/user-settings/UserInfoUpdate.vue","webpack://kit4planning/./src/components/user/users/user-settings/UserInfoUpdate.vue?3a90","webpack://kit4planning/./src/components/user/users/user-settings/UserInfo.vue?f0a5","webpack://kit4planning/./src/components/user/users/user-settings/UserPrivileges.vue","webpack://kit4planning/./src/components/user/users/user-settings/UserPrivileges.vue?8f94","webpack://kit4planning/./src/components/user/users/user-settings/UserConfigurationInfo.vue","webpack://kit4planning/./src/components/user/users/user-settings/UserConfigurationInfo.vue?d562","webpack://kit4planning/./src/components/user/users/user-settings/UserCompanies.vue","webpack://kit4planning/./src/components/company/common/CompanyStatus.vue","webpack://kit4planning/./src/components/company/common/CompanyStatus.vue?5799","webpack://kit4planning/./src/components/company/companies/CompanyListElement.vue","webpack://kit4planning/./src/components/company/companies/CompanyListElement.vue?aa9b","webpack://kit4planning/./src/components/common/EditableSelect.vue","webpack://kit4planning/./src/components/common/EditableSelect.vue?53c9","webpack://kit4planning/./src/components/user/users/user-settings/UserCompaniesDeleteConfirmation.vue","webpack://kit4planning/./src/components/user/users/user-settings/UserCompaniesDeleteConfirmation.vue?e2e3","webpack://kit4planning/./src/components/user/users/user-settings/UserCompanies.vue?a7ad","webpack://kit4planning/./src/components/user/users/UserSettings.vue?8aee","webpack://kit4planning/./src/components/user/users/UserSettingsModal.vue?1153","webpack://kit4planning/./src/components/user/users/UserList.vue?da9b","webpack://kit4planning/./src/components/pagination/Pagination.vue","webpack://kit4planning/./src/components/pagination/Paginate.vue","webpack://kit4planning/./src/components/pagination/Paginate.vue?fb1d","webpack://kit4planning/./src/components/pagination/Pagination.vue?b474","webpack://kit4planning/./src/components/user/users/UserCreate.vue","webpack://kit4planning/./src/components/user/users/UserCreateForm.vue","webpack://kit4planning/./src/components/user/users/UserCreateForm.vue?bf4b","webpack://kit4planning/./src/components/user/users/UserCreate.vue?1d25","webpack://kit4planning/./src/components/user/users/UserFilter.vue","webpack://kit4planning/./src/components/user/users/UserFilter.vue?6276","webpack://kit4planning/./src/components/user/Users.vue?1663","webpack://kit4planning/./src/components/user/UserCalendars.vue","webpack://kit4planning/./src/components/user/user-calendars/UserAbsenceForm.vue","webpack://kit4planning/./src/components/user/user-calendars/UserAbsenceForm.vue?f833","webpack://kit4planning/./src/components/user/user-calendars/UserCalendarCell.vue","webpack://kit4planning/./src/components/user/user-calendars/UserCalendarCell.vue?01fb","webpack://kit4planning/./src/components/common/CalendarsHeader.vue","webpack://kit4planning/./src/components/common/CalendarsHeader.vue?645a","webpack://kit4planning/./src/components/user/UserCalendars.vue?f2d6","webpack://kit4planning/./src/components/user/UserAbsences.vue","webpack://kit4planning/./src/components/user/user-absences/UserAbsenceList.vue","webpack://kit4planning/./src/components/user/user-absences/UserAbsenceListElement.vue","webpack://kit4planning/./src/components/user/user-absences/UserAbsenceListElement.vue?dfa2","webpack://kit4planning/./src/components/user/user-absences/UserAbsenceList.vue?c3c6","webpack://kit4planning/./src/components/user/UserAbsences.vue?2a5b","webpack://kit4planning/./src/components/workshop/Workshops.vue","webpack://kit4planning/./src/components/workshop/workshops/WorkshopList.vue","webpack://kit4planning/./src/beans/WorkshopListConfig.js","webpack://kit4planning/./src/components/workshop/common/WorkshopStatus.vue","webpack://kit4planning/./src/components/workshop/common/WorkshopStatus.vue?35bf","webpack://kit4planning/./src/components/workshop/workshops/WorkshopListElement.vue","webpack://kit4planning/./src/components/workshop/workshop-closure/WorkshopClosureModal.vue","webpack://kit4planning/./src/components/workshop/workshop-closure/WorkshopClosures.vue","webpack://kit4planning/./src/components/workshop/workshop-closure/WorkshopClosureList.vue","webpack://kit4planning/./src/components/workshop/workshop-closure/WorkshopClosureListElement.vue","webpack://kit4planning/./src/components/workshop/workshop-closure/WorkshopClosureCancelConfirmation.vue","webpack://kit4planning/./src/components/workshop/workshop-closure/WorkshopClosureCancelConfirmation.vue?905b","webpack://kit4planning/./src/components/workshop/workshop-closure/WorkshopClosureListElement.vue?27d2","webpack://kit4planning/./src/components/workshop/workshop-closure/WorkshopClosureList.vue?96f7","webpack://kit4planning/./src/components/workshop/workshop-closure/WorkshopClosures.vue?cd5e","webpack://kit4planning/./src/components/workshop/workshop-closure/WorkshopClosureModal.vue?ee25","webpack://kit4planning/./src/components/workshop/workshops/WorkshopListElement.vue?385d","webpack://kit4planning/./src/components/workshop/workshops/WorkshopList.vue?f717","webpack://kit4planning/./src/components/workshop/workshops/WorkshopCreate.vue","webpack://kit4planning/./src/components/workshop/workshops/WorkshopCreateForm.vue","webpack://kit4planning/./src/components/common/MultiTagSelect.vue","webpack://kit4planning/./src/components/common/MultiTagSelect.vue?7820","webpack://kit4planning/./src/components/workshop/workshops/WorkshopCreateForm.vue?39d1","webpack://kit4planning/./src/components/workshop/workshops/WorkshopCreate.vue?0b55","webpack://kit4planning/./src/components/workshop/Workshops.vue?49a7","webpack://kit4planning/./src/components/workshop/Workshop.vue","webpack://kit4planning/./src/components/workshop/workshop/WorkshopUpdate.vue","webpack://kit4planning/./src/components/workshop/workshop/WorkshopUpdate.vue?c313","webpack://kit4planning/./src/components/workshop/workshop/WorkshopConfiguration.vue","webpack://kit4planning/./src/components/workshop/workshop/WorkshopConfigurationCreate.vue","webpack://kit4planning/./src/components/workshop/workshop/WorkshopConfigurationCreate.vue?9c9a","webpack://kit4planning/./src/components/workshop/workshop/WorkshopConfigurationUpdate.vue","webpack://kit4planning/./src/components/workshop/workshop/WorkshopConfigurationUpdate.vue?6eb9","webpack://kit4planning/./src/components/workshop/workshop/WorkshopConfiguration.vue?59fa","webpack://kit4planning/./src/components/workshop/workshop/WorkshopRegularWeek.vue","webpack://kit4planning/./src/components/common/TimeInput.vue","webpack://kit4planning/./src/components/common/TimeInput.vue?278b","webpack://kit4planning/./src/components/workshop/workshop/WorkshopRegularWeek.vue?b5e2","webpack://kit4planning/./src/components/workshop/workshop/WorkshopRegularWeekAvailability.vue","webpack://kit4planning/./src/components/workshop/workshop/WorkshopRegularWeekAvailability.vue?3c19","webpack://kit4planning/./src/components/workshop/workshop/WorkshopPrestationCategory.vue","webpack://kit4planning/./src/components/workshop/workshop/WorkshopPrestationCategory.vue?97d3","webpack://kit4planning/./src/components/workshop/workshop/WorkshopRegularWeekUsers.vue","webpack://kit4planning/./src/components/workshop/workshop/WorkshopRegularWeekUsers.vue?fb5a","webpack://kit4planning/./src/components/workshop/Workshop.vue?cb08","webpack://kit4planning/./src/components/workshop/WorkshopPlannings.vue","webpack://kit4planning/./src/components/workshop/WorkshopPlannings.vue?7735","webpack://kit4planning/./src/components/workshop/WorkshopCalendars.vue","webpack://kit4planning/./src/components/workshop/workshop-calendars/WorkshopClosureForm.vue","webpack://kit4planning/./src/components/workshop/workshop-calendars/WorkshopClosureForm.vue?8169","webpack://kit4planning/./src/components/workshop/workshop-calendars/WorkshopCalendarMonth.vue","webpack://kit4planning/./src/components/workshop/workshop-calendars/workshop-calendars-month/WorkshopCalendarCell.vue","webpack://kit4planning/./src/components/workshop/workshop-calendars/common/WorkshopCalendarInfo.vue","webpack://kit4planning/./src/components/workshop/workshop-calendars/common/WorkshopCalendarProgressBar.vue","webpack://kit4planning/./src/components/workshop/workshop-calendars/common/WorkshopCalendarProgressBar.vue?f30f","webpack://kit4planning/./src/components/workshop/workshop-calendars/common/WorkshopCalendarInfo.vue?23b3","webpack://kit4planning/./src/components/workshop/workshop-calendars/workshop-calendars-month/WorkshopCalendarCell.vue?f7f9","webpack://kit4planning/./src/components/workshop/workshop-calendars/WorkshopCalendarMonth.vue?77bd","webpack://kit4planning/./src/components/workshop/workshop-calendars/WorkshopCalendarWeek.vue","webpack://kit4planning/./src/components/workshop/workshop-calendars/workshop-calendar-week/WorkshopCalendarWeeklyDay.vue","webpack://kit4planning/./src/components/workshop/workshop-calendars/workshop-calendar-week/WorkshopCalendarWeeklyDay.vue?1b1a","webpack://kit4planning/./src/components/workshop/workshop-calendars/WorkshopCalendarWeek.vue?2073","webpack://kit4planning/./src/components/workshop/workshop-calendars/WorkshopCalendarDay.vue","webpack://kit4planning/./src/components/workshop/workshop-calendars/WorkshopCalendarDay.vue?51eb","webpack://kit4planning/./src/components/workshop/WorkshopCalendars.vue?396f","webpack://kit4planning/./src/components/workshop/WorkshopTeam.vue","webpack://kit4planning/./src/components/workshop/workshop-team/UserConfigurationList.vue","webpack://kit4planning/./src/components/workshop/workshop-team/UserConfigurationUpdate.vue","webpack://kit4planning/./src/components/workshop/workshop-team/UserConfigurationUpdateForm.vue","webpack://kit4planning/./src/components/workshop/workshop-team/UserConfigurationUpdateForm.vue?b67b","webpack://kit4planning/./src/components/workshop/workshop-team/UserConfigurationUpdate.vue?2d1c","webpack://kit4planning/./src/components/workshop/workshop-team/UserConfigurationListElement.vue","webpack://kit4planning/./src/components/workshop/workshop-team/UserConfigurationDetachConfirmation.vue","webpack://kit4planning/./src/components/workshop/workshop-team/UserConfigurationDetachConfirmation.vue?b617","webpack://kit4planning/./src/components/workshop/workshop-team/UserConfigurationListElement.vue?3169","webpack://kit4planning/./src/components/workshop/workshop-team/UserConfigurationList.vue?9370","webpack://kit4planning/./src/components/workshop/WorkshopTeam.vue?bed4","webpack://kit4planning/./src/components/reporting/Reporting.vue","webpack://kit4planning/./src/components/reporting/reporting/ReportingWidget.vue","webpack://kit4planning/./src/components/reporting/reporting/ReportingWidget.vue?37ba","webpack://kit4planning/./src/components/reporting/reporting/ReportingFilter.vue","webpack://kit4planning/./src/beans/GlobalVaribales.js","webpack://kit4planning/./src/components/reporting/reporting/ReportingFilter.vue?4804","webpack://kit4planning/./src/components/reporting/reporting/ReportingBusyScheduleChart.vue","webpack://kit4planning/./src/components/reporting/reporting/ReportingBusyScheduleChart.vue?50a2","webpack://kit4planning/./src/components/reporting/Reporting.vue?e013","webpack://kit4planning/./src/components/company/Companies.vue","webpack://kit4planning/./src/components/company/companies/CompanyList.vue","webpack://kit4planning/./src/beans/CompanyListConfig.js","webpack://kit4planning/./src/components/company/companies/CompanySettingsModal.vue","webpack://kit4planning/./src/components/company/companies/CompanySettings.vue","webpack://kit4planning/./src/components/company/companies/company-settings/CompanyInfo.vue","webpack://kit4planning/./src/components/company/companies/company-settings/CompanyInfoUpdate.vue","webpack://kit4planning/./src/components/company/companies/company-settings/CompanyInfoUpdate.vue?726a","webpack://kit4planning/./src/components/company/companies/company-settings/CompanyInfo.vue?94f3","webpack://kit4planning/./src/components/company/companies/company-settings/CompanyDisabling.vue","webpack://kit4planning/./src/components/company/companies/company-settings/company-disabling/CompanyDisablingForm.vue","webpack://kit4planning/./src/components/company/companies/company-settings/company-disabling/CompanyDisablingConfirmation.vue","webpack://kit4planning/./src/components/company/companies/company-settings/company-disabling/CompanyDisablingConfirmation.vue?cb62","webpack://kit4planning/./src/components/company/companies/company-settings/company-disabling/CompanyDisablingForm.vue?c786","webpack://kit4planning/./src/components/company/companies/company-settings/CompanyDisabling.vue?acbc","webpack://kit4planning/./src/components/company/companies/company-settings/CompanyHistory.vue","webpack://kit4planning/./src/components/company/companies/company-settings/CompanyHistory.vue?a3cd","webpack://kit4planning/./src/components/company/companies/CompanySettings.vue?0e31","webpack://kit4planning/./src/components/company/companies/CompanySettingsModal.vue?3fc3","webpack://kit4planning/./src/components/company/companies/CompanyList.vue?565c","webpack://kit4planning/./src/components/company/companies/CompanyCreate.vue","webpack://kit4planning/./src/components/company/companies/CompanyCreateForm.vue","webpack://kit4planning/./src/components/company/companies/CompanyCreateForm.vue?be13","webpack://kit4planning/./src/components/company/companies/CompanyCreate.vue?4d7b","webpack://kit4planning/./src/components/company/Companies.vue?a1f8","webpack://kit4planning/./src/components/client/Clients.vue","webpack://kit4planning/./src/components/client/ClientDataTable.vue","webpack://kit4planning/./src/beans/ClientTableConfig.js","webpack://kit4planning/./src/components/client/ClientDataTable.vue?7fd3","webpack://kit4planning/./src/components/client/Clients.vue?9bce","webpack://kit4planning/./src/components/client/Client.vue","webpack://kit4planning/./src/components/client/client/ClientBox.vue","webpack://kit4planning/./src/components/client/client/ClientBox.vue?5250","webpack://kit4planning/./src/components/client/Client.vue?3a4b","webpack://kit4planning/./src/components/common/NotFound.vue","webpack://kit4planning/./src/components/common/NotFound.vue?2f42","webpack://kit4planning/./src/router/routes.js","webpack://kit4planning/./src/services/user.service.js","webpack://kit4planning/./src/components/layout/Header.vue?9cc9","webpack://kit4planning/./src/components/layout/MobileNotSupported.vue","webpack://kit4planning/./src/components/layout/MobileNotSupported.vue?350b","webpack://kit4planning/./src/components/layout/Footer.vue","webpack://kit4planning/./src/components/layout/Footer.vue?3a0c","webpack://kit4planning/./src/App.vue?7ccd","webpack://kit4planning/./src/store/store.js","webpack://kit4planning/./src/services/auth.token.service.js","webpack://kit4planning/./src/services/register.service.worker.js","webpack://kit4planning/./src/main.js","webpack://kit4planning/webpack/bootstrap","webpack://kit4planning/webpack/runtime/chunk loaded","webpack://kit4planning/webpack/runtime/compat get default export","webpack://kit4planning/webpack/runtime/define property getters","webpack://kit4planning/webpack/runtime/global","webpack://kit4planning/webpack/runtime/hasOwnProperty shorthand","webpack://kit4planning/webpack/runtime/make namespace object","webpack://kit4planning/webpack/runtime/node module decorator","webpack://kit4planning/webpack/runtime/jsonp chunk loading","webpack://kit4planning/webpack/startup"],"sourcesContent":["var map = {\n\t\"./af\": 5177,\n\t\"./af.js\": 5177,\n\t\"./ar\": 1509,\n\t\"./ar-dz\": 1488,\n\t\"./ar-dz.js\": 1488,\n\t\"./ar-kw\": 8676,\n\t\"./ar-kw.js\": 8676,\n\t\"./ar-ly\": 2353,\n\t\"./ar-ly.js\": 2353,\n\t\"./ar-ma\": 4496,\n\t\"./ar-ma.js\": 4496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 2682,\n\t\"./ar-sa.js\": 2682,\n\t\"./ar-tn\": 9756,\n\t\"./ar-tn.js\": 9756,\n\t\"./ar.js\": 1509,\n\t\"./az\": 5533,\n\t\"./az.js\": 5533,\n\t\"./be\": 8959,\n\t\"./be.js\": 8959,\n\t\"./bg\": 7777,\n\t\"./bg.js\": 7777,\n\t\"./bm\": 4903,\n\t\"./bm.js\": 4903,\n\t\"./bn\": 1290,\n\t\"./bn-bd\": 7357,\n\t\"./bn-bd.js\": 7357,\n\t\"./bn.js\": 1290,\n\t\"./bo\": 1545,\n\t\"./bo.js\": 1545,\n\t\"./br\": 1470,\n\t\"./br.js\": 1470,\n\t\"./bs\": 4429,\n\t\"./bs.js\": 4429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 6464,\n\t\"./cs.js\": 6464,\n\t\"./cv\": 3635,\n\t\"./cv.js\": 3635,\n\t\"./cy\": 4226,\n\t\"./cy.js\": 4226,\n\t\"./da\": 3601,\n\t\"./da.js\": 3601,\n\t\"./de\": 7853,\n\t\"./de-at\": 6111,\n\t\"./de-at.js\": 6111,\n\t\"./de-ch\": 4697,\n\t\"./de-ch.js\": 4697,\n\t\"./de.js\": 7853,\n\t\"./dv\": 708,\n\t\"./dv.js\": 708,\n\t\"./el\": 4691,\n\t\"./el.js\": 4691,\n\t\"./en-au\": 3872,\n\t\"./en-au.js\": 3872,\n\t\"./en-ca\": 8298,\n\t\"./en-ca.js\": 8298,\n\t\"./en-gb\": 6195,\n\t\"./en-gb.js\": 6195,\n\t\"./en-ie\": 6584,\n\t\"./en-ie.js\": 6584,\n\t\"./en-il\": 5543,\n\t\"./en-il.js\": 5543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 9402,\n\t\"./en-nz.js\": 9402,\n\t\"./en-sg\": 3004,\n\t\"./en-sg.js\": 3004,\n\t\"./eo\": 2934,\n\t\"./eo.js\": 2934,\n\t\"./es\": 7650,\n\t\"./es-do\": 838,\n\t\"./es-do.js\": 838,\n\t\"./es-mx\": 7730,\n\t\"./es-mx.js\": 7730,\n\t\"./es-us\": 6575,\n\t\"./es-us.js\": 6575,\n\t\"./es.js\": 7650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 527,\n\t\"./fi.js\": 527,\n\t\"./fil\": 5995,\n\t\"./fil.js\": 5995,\n\t\"./fo\": 2477,\n\t\"./fo.js\": 2477,\n\t\"./fr\": 5498,\n\t\"./fr-ca\": 6435,\n\t\"./fr-ca.js\": 6435,\n\t\"./fr-ch\": 7892,\n\t\"./fr-ch.js\": 7892,\n\t\"./fr.js\": 5498,\n\t\"./fy\": 7071,\n\t\"./fy.js\": 7071,\n\t\"./ga\": 1734,\n\t\"./ga.js\": 1734,\n\t\"./gd\": 217,\n\t\"./gd.js\": 217,\n\t\"./gl\": 7329,\n\t\"./gl.js\": 7329,\n\t\"./gom-deva\": 2124,\n\t\"./gom-deva.js\": 2124,\n\t\"./gom-latn\": 3383,\n\t\"./gom-latn.js\": 3383,\n\t\"./gu\": 5050,\n\t\"./gu.js\": 5050,\n\t\"./he\": 1713,\n\t\"./he.js\": 1713,\n\t\"./hi\": 3861,\n\t\"./hi.js\": 3861,\n\t\"./hr\": 6308,\n\t\"./hr.js\": 6308,\n\t\"./hu\": 609,\n\t\"./hu.js\": 609,\n\t\"./hy-am\": 7160,\n\t\"./hy-am.js\": 7160,\n\t\"./id\": 4063,\n\t\"./id.js\": 4063,\n\t\"./is\": 9374,\n\t\"./is.js\": 9374,\n\t\"./it\": 8383,\n\t\"./it-ch\": 1827,\n\t\"./it-ch.js\": 1827,\n\t\"./it.js\": 8383,\n\t\"./ja\": 3827,\n\t\"./ja.js\": 3827,\n\t\"./jv\": 9722,\n\t\"./jv.js\": 9722,\n\t\"./ka\": 1794,\n\t\"./ka.js\": 1794,\n\t\"./kk\": 7088,\n\t\"./kk.js\": 7088,\n\t\"./km\": 6870,\n\t\"./km.js\": 6870,\n\t\"./kn\": 4451,\n\t\"./kn.js\": 4451,\n\t\"./ko\": 3164,\n\t\"./ko.js\": 3164,\n\t\"./ku\": 8174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 8174,\n\t\"./ky\": 8474,\n\t\"./ky.js\": 8474,\n\t\"./lb\": 9680,\n\t\"./lb.js\": 9680,\n\t\"./lo\": 5867,\n\t\"./lo.js\": 5867,\n\t\"./lt\": 5766,\n\t\"./lt.js\": 5766,\n\t\"./lv\": 9532,\n\t\"./lv.js\": 9532,\n\t\"./me\": 8076,\n\t\"./me.js\": 8076,\n\t\"./mi\": 1848,\n\t\"./mi.js\": 1848,\n\t\"./mk\": 306,\n\t\"./mk.js\": 306,\n\t\"./ml\": 3739,\n\t\"./ml.js\": 3739,\n\t\"./mn\": 9053,\n\t\"./mn.js\": 9053,\n\t\"./mr\": 6169,\n\t\"./mr.js\": 6169,\n\t\"./ms\": 3386,\n\t\"./ms-my\": 2297,\n\t\"./ms-my.js\": 2297,\n\t\"./ms.js\": 3386,\n\t\"./mt\": 7075,\n\t\"./mt.js\": 7075,\n\t\"./my\": 2264,\n\t\"./my.js\": 2264,\n\t\"./nb\": 2274,\n\t\"./nb.js\": 2274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 2572,\n\t\"./nl-be\": 3784,\n\t\"./nl-be.js\": 3784,\n\t\"./nl.js\": 2572,\n\t\"./nn\": 4566,\n\t\"./nn.js\": 4566,\n\t\"./oc-lnc\": 9330,\n\t\"./oc-lnc.js\": 9330,\n\t\"./pa-in\": 9849,\n\t\"./pa-in.js\": 9849,\n\t\"./pl\": 4418,\n\t\"./pl.js\": 4418,\n\t\"./pt\": 9834,\n\t\"./pt-br\": 684,\n\t\"./pt-br.js\": 684,\n\t\"./pt.js\": 9834,\n\t\"./ro\": 4457,\n\t\"./ro.js\": 4457,\n\t\"./ru\": 2271,\n\t\"./ru.js\": 2271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 3478,\n\t\"./se.js\": 3478,\n\t\"./si\": 7538,\n\t\"./si.js\": 7538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 6637,\n\t\"./sl.js\": 6637,\n\t\"./sq\": 6794,\n\t\"./sq.js\": 6794,\n\t\"./sr\": 5719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 5719,\n\t\"./ss\": 6000,\n\t\"./ss.js\": 6000,\n\t\"./sv\": 1011,\n\t\"./sv.js\": 1011,\n\t\"./sw\": 748,\n\t\"./sw.js\": 748,\n\t\"./ta\": 1025,\n\t\"./ta.js\": 1025,\n\t\"./te\": 1885,\n\t\"./te.js\": 1885,\n\t\"./tet\": 8861,\n\t\"./tet.js\": 8861,\n\t\"./tg\": 6571,\n\t\"./tg.js\": 6571,\n\t\"./th\": 5802,\n\t\"./th.js\": 5802,\n\t\"./tk\": 9527,\n\t\"./tk.js\": 9527,\n\t\"./tl-ph\": 9231,\n\t\"./tl-ph.js\": 9231,\n\t\"./tlh\": 1052,\n\t\"./tlh.js\": 1052,\n\t\"./tr\": 5096,\n\t\"./tr.js\": 5096,\n\t\"./tzl\": 9846,\n\t\"./tzl.js\": 9846,\n\t\"./tzm\": 1765,\n\t\"./tzm-latn\": 7711,\n\t\"./tzm-latn.js\": 7711,\n\t\"./tzm.js\": 1765,\n\t\"./ug-cn\": 8414,\n\t\"./ug-cn.js\": 8414,\n\t\"./uk\": 6618,\n\t\"./uk.js\": 6618,\n\t\"./ur\": 158,\n\t\"./ur.js\": 158,\n\t\"./uz\": 7609,\n\t\"./uz-latn\": 2475,\n\t\"./uz-latn.js\": 2475,\n\t\"./uz.js\": 7609,\n\t\"./vi\": 1135,\n\t\"./vi.js\": 1135,\n\t\"./x-pseudo\": 4051,\n\t\"./x-pseudo.js\": 4051,\n\t\"./yo\": 2218,\n\t\"./yo.js\": 2218,\n\t\"./zh-cn\": 2648,\n\t\"./zh-cn.js\": 2648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 1541,\n\t\"./zh-mo.js\": 1541,\n\t\"./zh-tw\": 304,\n\t\"./zh-tw.js\": 304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5358;","<template>\n  \n  <Header v-if=\"isMobile == false\" />\n    \n  <!-- showing installation possibility if not already installed and if browser support pwa  -->\n  <div v-if=\"shown\" class=\" fs-15\">\n    <div class=\" text-center bg-light p-2\">\n    <span class=\"fw-600\"> Installez l'application ? </span>\n\n    <button @click=\"installPWA()\" class=\"btn btn-sm btn-round btn-custom outline m-2\" >\n      Installer\n    </button>\n\n    <button @click=\"dismissPrompt()\" class=\"btn btn-sm btn-round btn-custom outline m-2\">\n      Annuler\n    </button>\n\n    </div>\n  </div>\n\n  <main class=\"main-content\" >\n\n    <MobileNotSupported v-if=\"isMobile == true\" />\n    \n    <router-view v-else />\n\n  </main>\n  \n  <!-- footer -->\n  <Footer v-if=\"currentUser &&  isMobile == false\"/>\n\n</template>\n\n<script>\nimport Header from \"./components/layout/Header.vue\";\nimport MobileNotSupported from \"./components/layout/MobileNotSupported.vue\"\nimport Footer from './components/layout/Footer.vue';\n\nimport { computed } from 'vue'\n\nexport default {\n  \n  name: \"App\",\n\n  components: {\n    Header,\n    MobileNotSupported,\n    Footer\n  },\n\n  data(){\n    return{\n      shown: false,\n      isMobile: false,\n      isTablet: false,\n      isDesktop: false,\n    }\n  },\n\n  provide() {\n    return {\n      isMobile :computed( () => (this.isMobile)),\n      isTablet : computed( () => (this.isTablet)),\n      isDesktop : computed( () => (this.isDesktop)),\n    }\n  },\n\n  mounted() {\n    \n    // install\n    window.addEventListener('beforeinstallprompt', (e) => {\n      e.preventDefault();\n      this.installEvent = e,\n       this.shown = true;\n    });\n\n    this.$store.dispatch('loadingMetadata');\n    this.onScreenResize();\n    this.screenDevice();\n    \n  },\n\n  unmounted() {\n\n    window.removeEventListener(\"resize\", () => { this.screenDevice();});\n    \n  },\n\n  computed: {\n    currentUser() {\n      return this.$store.state.auth.user;\n    },\n  },\n\n  methods: {\n\n    onScreenResize() {\n      window.addEventListener(\"resize\", () => { this.screenDevice();});\n      \n    },\n\n    screenDevice() {\n      this.isMobile = window.matchMedia(\"only screen and (max-width: 767px)\").matches ;\n      this.isTablet = window.matchMedia(\"only screen and (min-width: 768px) and (max-width: 992px)\").matches;\n      this.isDesktop = window.matchMedia(\"only screen and (min-width: 992px)\").matches;\n    },\n\n    dismissPrompt() {\n      this.shown = false\n    },\n\n    installPWA() {\n      this.installEvent.prompt()\n      this.installEvent.userChoice.then((choice) => {\n        this.dismissPrompt() // Hide the prompt once the user's clicked\n        if (choice.outcome === 'accepted') {\n\n          // the user chose to install\n        } else {\n          // the user declined\n        }\n      })\n    },\n\n   },\n\n};\n</script>\n\n<style>\n\n\n</style>\n","<template>\n\n  <header class=\"topbar\" v-if=\"currentUser\">\n\n    <!-- topbar-left -->\n    <div class=\"topbar-left\">\n\n      <div class=\"topbar-brand\">\n        <img v-if=\"logo\" :src=\"`/images/`+logo\" alt=\"kit4planning manager\" height=\"40\" loading=\"lazy\" />\n      </div>\n\n      <div class=\"topbar-divider d-none d-xl-block\"></div>\n\n      <nav class=\"topbar-navigation\" v-if=\"currentUser.privileges !== undefined && currentUser.companyCode != undefined && currentUser.companyCode != '' \">\n        \n        <ul class=\"menu m-0\">\n\n          <li class=\"menu-item\" v-if=\"hasPrivilege('DISPLAY_EVENTS')\">\n            <router-link class=\"menu-link\" :to=\"{ name: 'events' }\">\n              <span class=\"title\">Événements</span>\n            </router-link>\n          </li>\n\n          <li class=\"menu-item\" >\n            <router-link class=\"menu-link\" :to=\"{ name: 'clients' }\">\n              <span class=\"title\">Clients</span>\n            </router-link>\n          </li>\n\n          <!-- mon atelier -->\n          <li class=\"menu-item\" v-if=\"hasPrivilege('DISPLAY_MY_WORKSHOP') && this.currentUser.workshopCode !== undefined\">\n            <a class=\"menu-link\" href=\"#\">   \n              <span class=\"title\">Mon atelier</span>\n              <span class=\"arrow\"></span>\n            </a>\n            <ul class=\"menu-submenu\">\n              <li class=\"menu-item\">\n                <router-link class=\"menu-link\" :to=\"{name: 'workshop-calendars', path: '/workshop-calendars/', params: {companyCode: currentUser.companyCode, workshopCode: currentUser.workshopCode}}\" >\n                  <span class=\"title\">Planning</span>\n                </router-link>\n              </li>\n              \n              <li v-if=\"hasPrivilege('DISPLAY_WORKSHOP_TEAM')\" class=\"menu-item\">\n                <router-link class=\"menu-link\" :to=\"{name: 'workshop-team', path: '/workshop-team/', params: {companyCode: currentUser.companyCode, workshopCode: currentUser.workshopCode}}\" >\n                  <span class=\"title\">Gérer mon équipe</span>\n                </router-link>\n              </li>\n              <li class=\"menu-item\">\n                <router-link class=\"menu-link\" :to=\"{name: 'workshop', path: '/workshop/', params: {workshopCode: currentUser.workshopCode}}\" >\n                  <span class=\"title\">Paramétrages</span>\n                </router-link>\n              </li>\n            </ul>\n          </li>\n\n          <!-- ateliers -->\n          <li class=\"menu-item\" v-if=\"hasPrivilege('DISPLAY_WORKSHOPS')\">\n            <router-link class=\"menu-link\" to=\"/app/workshops\">\n              <span class=\"title\">Ateliers</span>\n            </router-link>\n          </li>\n\n          <li class=\"menu-item\" v-if=\"hasPrivilege('DISPLAY_USERS')\">\n            <router-link class=\"menu-link\" to=\"/app/users\">\n              <span class=\"title\">Utilisateurs</span>\n            </router-link>\n          </li>\n\n          \n          <li class=\"menu-item\" v-if=\"hasPrivilege('DISPLAY_REPORTING')\">\n            <router-link class=\"menu-link\" to=\"/app/reporting\">\n              <span class=\"title\">Reporting</span>\n            </router-link>\n          </li>\n\n        </ul>\n\n      </nav>\n      \n    </div>\n\n    <!-- topbar-right -->\n    <div class=\"topbar-right\">\n      \n      <ul class=\"topbar-btns\">\n        \n        <!-- account -->\n        <li class=\"dropdown\">\n          \n          <a class=\"topbar-btn dropdown-toggle text-muted fs-15\" href=\"#\" id=\"dropdownMenuProfile\" role=\"button\" \n            data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n            <span class=\"profile-avatar\" v-bind:style=\"{ background: currentUser.iconColor }\">\n              {{ currentUser.firstName.substring(0, 1).toUpperCase() }}{{ currentUser.lastName.substring(0, 1).toUpperCase() }}\n            </span> Compte\n          </a>\n          \n          <ul class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"dropdownMenuProfile\">\n            <li>\n              <router-link to=\"/app/profile\" class=\"dropdown-item\" href=\"#\" v-if=\"currentUser.companyCode\">\n                <i class=\"mdi mdi-account-outline\"/> Profile\n              </router-link>\n            </li>\n            <li v-if=\"currentUser.privileges !== undefined && hasPrivilege('DISPLAY_MY_PLANNING') && this.currentUser.workshopCode !== undefined\" >\n              <router-link class=\"dropdown-item\" :to=\"{ name: 'user-calendars' ,\n               params:{ companyCode: this.currentUser.companyCode, workshopCode: this.currentUser.workshopCode, userCode: this.currentUser.userCode } }\">\n              <i class=\"mdi mdi-calendar-month\" /> Mon planning\n              </router-link>\n            </li>\n\n            <li v-if=\"currentUser.privileges !== undefined && hasPrivilege('DISPLAY_MY_ABSENCE')\" >\n              <router-link class=\"dropdown-item\" :to=\"{ name: 'user-absences', params:{userCode: this.currentUser.userCode}}\">\n              <i class=\"mdi mdi-calendar-account-outline\" /> Mes absences\n              </router-link>\n            </li>\n\n            <li v-if=\"displayCompanyHeader()\">\n              <router-link class=\"dropdown-item\" to=\"/app/companies\"> \n                <i class=\"mdi mdi-briefcase-edit-outline\"/> Entreprises\n              </router-link>\n            </li>\n            <li>\n              <div class=\"dropdown-divider\"></div>\n            </li>\n            <li>\n              <a class=\"dropdown-item\" href=\"#\" v-on:click.prevent=\"logOut\">\n                <i class=\"mdi mdi-power\"/>Déconnexion\n              </a>\n            </li>\n          </ul>\n\n        </li>\n      \n      </ul>\n        \n      <div class=\"topbar-divider\"></div>\n\n      <a class=\"btn btn-xs btn-round mr-2\" v-if=\"currentUser.companyName != undefined\"\n         v-tippy=\"{ content: `<small>Changer l'entreprise sélectionnée</small>` , placement:'left' }\" @click=\"redirectToCompanies()\">\n        {{currentUser.companyName}}\n      </a>\n        \n      \n\n    </div>\n\n  </header>\n\n</template>\n\n\n<script>\n\nimport { hasPrivilege, hasNotPrivilege} from \"../../services/user.service.js\";\n\nexport default {\n  \n  name: \"Header\",\n\n  computed: {\n    currentUser() {\n      return this.$store.state.auth.user;\n    },\n    logo() {\n      return this.$store.state.metadata.logo;\n    },\n  },\n\n  methods: {\n\n    hasPrivilege:  hasPrivilege,\n    hasNotPrivilege: hasNotPrivilege,\n\n    redirectToCompanies(){\n      this.$router.push({path: '/app/companies'});\n    },\n\n    logOut() {\n      this.$store.dispatch(\"auth/logout\");\n      this.$router.push(\"/login\");\n    },\n\n    displayCompanyHeader(){\n\n      if(!this.currentUser.privileges)\n        return false;\n\n      if(hasNotPrivilege('DISPLAY_COMPANIES') && hasNotPrivilege('DISPLAY_MY_COMPANIES'))\n        return false;\n\n      // case when director with only one company \n      if(!this.currentUser.companiesCode && this.currentUser.companyCode && hasPrivilege('DISPLAY_MY_COMPANIES'))\n        return false;\n\n      // case when director with multiple company\n      if(!this.currentUser.companiesCode && !this.currentUser.companyCode && hasPrivilege('DISPLAY_MY_COMPANIES'))\n        return false;\n\n      return true;\n    },\n    \n  },\n};\n</script>\n\n<style scoped>\n\n</style>","import axios from 'axios';\n\nclass AuthService {\n\n  login(user) {\n    return axios\n      .post('/api/auth/signin', {\n        username: user.username,\n        password: user.password\n      })\n      .then(response => {\n        if (response.data.token) {\n          localStorage.setItem('kit4planning.user', JSON.stringify(response.data));\n        }\n        return response.data;\n      });\n  }\n\n  activate(user) {\n    return axios\n      .post('/api/auth/activate', {\n        username: user.username,\n        activationKey: user.activationKey,\n        password: user.password,\n        passwordConfirmation: user.passwordConfirmation\n      });\n  }\n\n  logout() {\n    localStorage.removeItem('kit4planning.user');\n  }\n\n  setUserPassword(user){\n    return axios\n    .post('/api/auth/set-user-password', {\n      login: user.login,\n      resetPasswordKey: user.forgottenPasswordKey,\n      password: user.password,\n      passwordConfirmation: user.passwordConfirmation\n    })\n    .then(response => {\n      if (response.data.token) {\n        localStorage.setItem('kit4planning.user', JSON.stringify(response.data));\n      }\n      return response.data;\n    });\n  }\n\n  blockUser(login){\n    return axios\n    .get('/api/auth/block-user/'+login).then(response=>{\n      return response;\n    });\n  }\n\n}\n\nexport default new AuthService();\n","import AuthService from '../services/user.auth.service';\n\nconst user = JSON.parse(localStorage.getItem('kit4planning.user'));\nconst initialState = user\n  ? { status: { loggedIn: true }, user }\n  : { status: { loggedIn: false }, user: null };\n\nexport const auth = {\n\n  namespaced: true,\n  state: initialState,\n\n  actions: {\n\n    login({ commit }, user) {\n      return AuthService.login(user).then(\n        user => {\n          commit('loginSuccess', user);\n          return Promise.resolve(user);\n        },\n        error => {\n          commit('loginFailure');\n          return Promise.reject(error);\n        }\n      );\n    },\n\n    activate({ commit }, user) {\n      return AuthService.activate(user).then(\n        response => {\n          commit('activationSuccess');\n          return Promise.resolve(response);\n        },\n        error => {\n          return Promise.reject(error);\n        }\n      );\n    },\n\n    logout({ commit }) {\n      AuthService.logout();\n      commit('logout');\n    },\n    \n    setUserPassword({ commit }, user) {\n      return AuthService.setUserPassword(user).then(\n        user => {\n          commit('loginSuccess', user);\n          return Promise.resolve(user);\n        },\n        error => {\n          commit('setUserPasswordFailure');\n          return Promise.reject(error);\n        }\n      );\n    },\n\n    blockUser({ commit }, login) {\n      return AuthService.blockUser(login).then(\n        login => {\n          commit('blockingUser', login);\n          return Promise.resolve(login);\n        },\n        error => {\n          commit('blockingUser');\n          return Promise.reject(error);\n        }\n      );\n    },\n\n  },\n  mutations: {\n    loginSuccess(state, user) {\n      state.status.loggedIn = true;\n      state.user = user;\n    },\n    loginFailure(state) {\n      state.status.loggedIn = false;\n      state.user = null;\n    },\n    setUserPasswordFailure(state){\n      state.status.loggedIn = false;\n      state.user = null;\n    },\n    activationSuccess(state){\n      state.status.loggedIn = false;\n    },\n    logout(state) {\n      state.status.loggedIn = false;\n      state.user = null;\n    },\n    blockingUserSuccess(state){\n      state.status.loggedIn = false;\n      state.user = null;\n    }\n  }\n};\n","<template>\n  \n  <div class=\"card card-container shadow-none\">\n\n    <!-- logo -->\n    <div class=\"text-center mb-5\">\n      <img v-if=\"logo\" :src=\"`/images/`+logo\" class=\"logo-img-card\" alt=\"kit4planning manager\" />\n    </div>\n\n    <!-- label -->\n    <div class=\"text-center mb-1\">\n      <h5>Connectez-vous à votre compte.</h5>\n    </div>\n\n    <div class=\"box rounded-box shadow-2 form-type-material position-relative\" v-auto-animate>\n      <Form @submit=\"handleLogin\" :validation-schema=\"schema\"  v-slot=\"{ errors }\">\n\n        <!-- login user name -->\n        <div v-if=\"userNameSetted == false\">\n            <UserNameLogin v-on:user-name-checked=\"userNameHandler\" />\n        </div>\n\n        <!--  show userName and update -->\n        <div v-if=\"userNameSetted == true\" class=\"showing-user-name\">\n          <Field name=\"userName\" type=\"text\" class=\"form-control\" :class=\"{ 'is-invalid': errors.userName }\" required v-model.trim=\"userName\" hidden/> \n          <div class=\"d-flex align-items-center fw-600 fs-13 cursor-pointer m-1\">{{userName}}</div>\n          <span class=\"d-flex align-items-center fw-600 fs-13 cursor-pointer\" @click=\"userIsBlocked = false, clearUserName()\">Modifier</span>\t\t\t\n        </div>\n\n        <!-- password -->\n          <div class=\"form-group mb-2 flexbox\" v-show=\"userNameSetted == true\">\n            <div class=\" w-106\">\n                <Field name=\"password\" @focus=\" nonValidePassword = false\" :type=\"`${type}`\" \n              class=\"form-control w-106\" :class=\"{ 'is-invalid': errors.password }\" required/>\n              <label class=\"required\" for=\"password\">Mot de passe</label>\n              <ErrorMessage name=\"password\" class=\"invalid-feedback\" />\n            </div>\n            <!-- show and hide password -->\n            <span :class=\"type == 'text' ? 'mdi mdi-eye-outline fs-20 cursor-pointer' : 'mdi mdi-eye-off-outline fs-20 cursor-pointer'\" @click=\"showPassword()\"></span>\n          </div>\n\n\n        <div v-if=\"loginAttempts > 0 && loginAttempts < 3 && nonValidePassword == true\" class=\"invalid-feedback d-block\">\n           Mot de passe incorrecte\n        </div>\n\n        <!-- clear password -->\n        <div class=\"d-flex justify-content-between\" v-if =\"userNameSetted == true\">\n          <div></div>\n          <u class=\"fs-13 cursor-pointer\" @click=\"forgottenPassword()\"> Mot de passe oublié </u>\n        </div>\n\n        <!-- submit -->\n        <div class=\"text-center\" v-if=\"userNameSetted == true\">\n          <button class=\"btn btn-round btn-custom\" :disabled=\"loginAttempts >= 3 || loading ==true\">\n            <span v-show=\"loading\" class=\"spinner-border spinner-border-sm me-2\" role=\"status\"></span>\n            <span>Se connecter</span>\n          </button>\n        </div>\n\n        <!-- 3 faild attempts of login -->\n        <div v-if=\"loginAttempts>0 && loginAttempts < 3\" class=\"bg-light fs-14 alert m-2 text-center fw-600\">\n\n            <span> Il vous reste {{3-loginAttempts}} tentatives de connexion, sinon votre compte sera bloqué </span>\n        </div>\n\n        <!-- user blocked -->\n        <div v-else-if=\"loginAttempts >=3 && userIsBlocked == true \" class=\"bg-light text-red fs-15  m-2 text-center \" >\n          <span>Vote compte est bloqué, veuillez réinisialiser votre mot de passe </span>\n        </div>\n\n        </Form>\n      </div>\n    </div>\n    \n</template>\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport { loggedInRedirection } from \"../../services/user.service.js\";\nimport UserNameLogin from \"./login/UserNameLogin.vue\"\nimport * as yup from \"yup\";\n\nexport default {\n  name: \"Login\",\n\n  components: {\n      Form,\n      Field,\n      ErrorMessage,\n      UserNameLogin\n  },\n  data() {\n    const schema = yup.object().shape({\n      userName : yup.string().required(\"Login est obligatoire\"),\n      password: yup.string().required(\"Le mot de passe est obligatoire\")\n    });\n    return {\n      loading: false,\n      message: \"\",\n      schema,\n      loginAttempts:0,\n      userName:'',\n      password:'',\n      userIsBlocked: false,\n      userNameSetted:false,\n      nonValidePassword:true,\n      type:\"password\"\n    };\n  },\n\n  created() {\n    loggedInRedirection();\n    if(this.$store.state.auth.user)\n      this.$router.push({name :\"events\"});\n  },\n\n  computed: {\n    logo() {\n      return this.$store.state.metadata.logo;\n    },\n  },\n\n  watch:{\n    loginAttempts(newValue, oldValue){\n      if(oldValue != newValue && oldValue == 2)\n        this.blockUser();\n    }\n  },\n        \n  methods: {\n\n    userNameHandler(userName){\n      this.userName = userName;\n      this.userNameSetted = true;\n      this.loginAttempts = 0;\n    },\n\n    clearUserName(){\n      this.userName = '';\n      this.userNameSetted = false;\n      this.loginAttempts = 0;        \n    },\n\n    handleLogin(user) {\n      this.loading = true;\n      user.username = this.userName;\n      this.$store.dispatch(\"auth/login\", user).then(\n        () => {\n          document.body.classList.add('bg-light');\n          loggedInRedirection();\n        },\n        (error) => {\n          this.loading = false;\n          this.loginAttempts +=1;\n          this.nonValidePassword = true;\n            this.message =\n            (error.response.data && \n              error.response && \n              error.response.data.message) || error.response.data||\n              error.response.data.toString();\n        }\n      );\n    },\n    \n    // block user\n    blockUser(){\n      this.$store.dispatch(\"auth/blockUser\", this.userName).then(() => {\n          this.userIsBlocked = true;\n          },\n        (error) => {\n          this.message = error.response\n          this.message =\n              (error.response &&\n                error.response.data &&\n                error.response.data.message) ||\n                error.message ||\n                error.toString();\n        });\n    },\n\n    forgottenPassword(){\n      this.$router.push({name:\"forgotten-password\"});\n    },\n\n    showPassword(){\n      if(this.type == \"password\"){\n        this.type = \"text\";\n      }\n      else if( this.type == \"text\"){\n        this.type = \"password\";\n      }\n    }\n\n},\n    };\n</script>\n\n<style scoped>\n.card-container.card {\n  width: 400px;\n  margin: 10% auto;\n  border: none;\n}\n\n\n.showing-user-name{\n  display: inline-flex;\n  justify-content: space-between;\n  border-bottom: 1px solid #EEEEEE;\n  margin-bottom: 20px;\n  border-radius: 0px;\n  box-sizing: border-box;\n  max-width: 100%;\n  flex-wrap: nowrap;\n  width: 100%;\n}\n\n</style>","<template>\n  <Form @submit=\"validateLogin\" :validation-schema=\"schema\"  v-slot=\"{ errors }\">\n\n    <!-- userName -->\n    <div class=\"form-group mb-1\">\n      <Field name=\"userName\" type=\"text\" class=\"form-control\" :class=\"{ 'is-invalid': errors.userName }\" \n      required v-model=\"userName\" @input=\"initMessage\"/>\n      <label class=\"required\" for=\"userName\">Login</label>\n      <ErrorMessage name=\"userName\" class=\"invalid-feedback\" />\n    </div> \n    \n     <!-- error message  -->\n     <div v-if=\"message && userName\" class=\"invalid-feedback d-block\">\n        {{message }}\n    </div>\n\n    <!-- forgotten password process -->\n    <div class=\"d-flex justify-content-between\">\n      <div></div>\n      <u class=\"fs-13 cursor-pointer\" @click=\"forgottenPassword()\"> Mot de passe oublié </u>\n    </div>\n\n    <!-- submit  -->\n    <div class=\"text-center pt-2\">\n      <button class=\"btn btn-round btn-custom\" :disabled=\"loading\">\n        <span v-show=\"loading\" class=\"spinner-border spinner-border-sm me-2\" role=\"status\"></span>\n        <span>Continuer</span>\n      </button>\n    </div>\n\n  </Form>\n</template>\n\n<script>\n\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as yup from \"yup\";\n\nexport default {\n\n  name:\"UserNameLogin\",\n\n  emits:[\"user-name-checked\"],\n\n  setup(){\n    const schema =  yup.object().shape({\n       userName: yup.string().required(\"Login est obligatoire\")\n       });\n\n    return{schema}\n  },\n\n  components: {\n      Form,\n      Field,\n      ErrorMessage,\n  },\n\n   data() {\n     return{\n       userName:'',\n       loading: false,\n       message:\"\",\n     }\n   },\n   methods:{\n\n    validateLogin(){\n      this.loading = true;\n      this.message = '';\n\n      let loginReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n        }\n      };\n\n      fetch(\"/api/auth/user-status/\"+this.userName, loginReq)\n        .then( async response => {\n          this.loading = false;\n          if (response.ok){\n            let userStatus = await response.text();\n\n            if(userStatus == 'ENABLED'){\n              this.$emit(\"user-name-checked\", this.userName);\n              return;\n            }\n\n            if(userStatus == 'INITIAL'){\n              this.message = \"Votre compte n'est pas activé\";\n              return;\n            }\n\n            // user status login BLOCKED\n            if(userStatus == 'BLOCKED'){\n              this.message = \"Votre compte est bloqué, veuillez le réinitialiser en cliquant sur mot de passe oublié\";\n              return;\n            }\n\n            if(userStatus == 'DELETED'){\n              this.message = \"Ce compte est introuvable\";  \n              return;\n            }\n\n            if(userStatus == 'DISABLED'){\n              this.message = \"Votre compte est désactivé\";  \n              return;\n            }\n            \n          } \n          this.message = \"Ce compte est introuvable\"; \n\n        })\n    },\n        \n    forgottenPassword(){\n      this.$router.push({name:\"forgotten-password\"});\n    },\n\n    initMessage(){\n      if(!this.userName){\n        this.message=\"\";\n        return;\n      }\n    }\n\n\n   }\n\n}\n</script>\n\n<style scoped>\n\n</style>","import { render } from \"./UserNameLogin.vue?vue&type=template&id=59a6f7f9\"\nimport script from \"./UserNameLogin.vue?vue&type=script&lang=js\"\nexport * from \"./UserNameLogin.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./Login.vue?vue&type=template&id=6078b62c&scoped=true\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\n\nimport \"./Login.vue?vue&type=style&index=0&id=6078b62c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6078b62c\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"card card-container shadow-none\" >\n\n    <!-- logo -->\n    <div class=\"text-center mb-5\">\n      <img v-if=\"logo\" :src=\"`/images/`+logo\" class=\"logo-img-card\" alt=\"kit4planning manager\"/>\n    </div>\n\n    <!-- label -->\n    <div class=\"text-center mb-1\">\n      <h5>Activez votre compte.</h5>\n    </div>\n\n\n    <!-- checking the key with user is not activated yet -->\n    <div v-if=\"username != '' && activationKey == '' && userStatus == 'INITIAL'\">\n      <CheckKey :login=\"username\" @key=\"keyHolder\" :activationKey=\"true\" :forgottenPasswordKey=\"false\" />\n    </div>\n\n    <!-- setting the password if user is not activated yet -->\n    <div class=\"box rounded-box shadow-2 form-type-material\" v-else-if=\"username != '' && activationKey != '' && userStatus == 'INITIAL'\">\n      <!-- if  -->\n      <div v-if=\" successful== false\">\n        <Form @submit=\"handleActivation\" :validation-schema=\"schema\" v-slot=\"{ errors }\">\n\n          <!-- password -->\n          <div class=\"form-group mb-2 flexbox\">\n            <div class=\" w-106\">\n              <Field name=\"password\" :type=\"`${passwordType}`\"  class=\"form-control w-106\"  :class=\"{ 'is-invalid': errors.password }\" required  v-model=\"password\"/>\n              <label class=\"required\" for=\"password\">Mot de passe</label>\n              <ErrorMessage name=\"password\" class=\"invalid-feedback\" />\n            </div>\n            <!-- show and hide password -->\n            <span :class=\"passwordType == 'text' ? 'mdi mdi-eye-outline fs-20 cursor-pointer' : 'mdi mdi-eye-off-outline fs-20 cursor-pointer'\" @click=\"showPassword()\"></span>\n          </div>\n\n            <!-- conditions -->\n            <ul class=\"mb-1 ps-4 list-unstyled\">\n              <!-- lower/Upper case -->\n              <li :class=\"[lowUpperCase == 'true' ? 'text-green' : '', lowUpperCase == 'false' ? 'text-danger' : '', lowUpperCase == '' ? 'text-default' : '', ]\">\n                <span class=\"d-flex align-items-center\"> \n                  <i class=\"badge badge-point bg-default m-1\" v-if=\"lowUpperCase == '' \" />\n                  <i class=\"mdi mdi-check m-1\" v-else-if=\"lowUpperCase == 'true' \"/>\n                  <i class=\"mdi mdi-close m-2\" v-else-if=\"lowUpperCase == 'false' \"/>\n                  Minuscule &amp; majuscule\n                </span>\n              </li>\n              \n              <!-- oneNumber -->\n              <li :class=\"[oneNnumber == 'true' ? 'text-green' : '', oneNnumber == 'false' ? 'text-danger' : '', oneNnumber == '' ? 'text-default' : '', ]\">\n                <span class=\"d-flex align-items-center\">\n                  <i class=\"badge badge-point bg-default m-1\" v-if=\"oneNnumber == '' \" /> \n                  <i class=\"mdi mdi-check m-1\" v-else-if=\"oneNnumber == 'true' \" />\n                  <i class=\"mdi mdi-close m-2\" v-else-if=\"oneNnumber == 'false' \"/>\n                    Nombre (0-9) \n                </span> \n              </li>\n\n              <!-- oneSpecialChar -->\n              <li :class=\"[oneSpecialChar == 'true' ? 'text-green' : '', oneSpecialChar == 'false' ? 'text-danger' : '', oneSpecialChar == '' ? 'text-default' : '', ]\">\n                <span class=\"d-flex align-items-center\">\n                  <i class=\"badge badge-point bg-default m-1\" v-if=\"oneSpecialChar == ''\"/>\n                  <i class=\"mdi mdi-check m-1\" v-else-if=\"oneSpecialChar == 'true'\" />\n                  <i class=\"mdi mdi-close m-2\" v-else-if=\"oneSpecialChar == 'false' \"/>\n                  Caractère spécial (!@#$%^&*-_)\n                </span>\n              </li>\n\n              <!-- eightCharacter -->\n              <li :class=\"[eightCharacter == 'true' ? 'text-green' : '', eightCharacter == 'false' ? 'text-danger' : '', eightCharacter == '' ? 'text-default' : '', ]\">\n                  <span class=\"d-flex align-items-center\">\n                    <i class=\"badge badge-point bg-default m-1\" v-if=\"eightCharacter == '' \"/>\n                    <i class=\"mdi mdi-check m-2\" v-else-if=\"eightCharacter == 'true' \" />\n                    <i class=\"mdi mdi-close m-2\" v-else-if=\"eightCharacter == 'false' \"/>\n                    Au moins 8 caractères\n                  </span>\n              </li>\n\n            </ul>\n\n            <!-- password confirmation  -->\n            <div class=\"form-group mb-2 flexbox\">\n              <div class=\" w-106\">\n                <Field name=\"passwordConfirmation\" :type=\"`${confirmationPasswordType}`\"  @paste.prevent class=\"form-control w-106\"  :class=\"{ 'is-invalid': errors.passwordConfirmation }\" required />\n                <label class=\"required\" for=\"passwordConfirmation\">Confirmation mot de passe</label>\n                <ErrorMessage name=\"passwordConfirmation\" class=\"invalid-feedback\" />\n              </div>\n              <!-- show and hide password -->\n              <span :class=\"confirmationPasswordType == 'text' ? 'mdi mdi-eye-outline fs-20 cursor-pointer' : 'mdi mdi-eye-off-outline fs-20 cursor-pointer'\" @click=\"showConfirmationPassword()\"></span>\n            </div>\n\n            <!-- submit -->\n            <div class=\"text-center\">\n              <button class=\"btn btn-round btn-custom\" :disabled=\"loading\">\n                <span v-show=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\"></span>\n                <span>Continuer</span>\n              </button>\n            </div>\n\n        </Form>\n      </div>\n      <!-- error message -->\n      <div v-if=\"message\" class=\"m-3 text-center\">\n        <div  class=\"alert\" :class=\"successful ? 'alert-success' : 'alert alert-danger'\"\n          role=\"alert\">\n          {{ message }}\n        </div>\n      </div>\n    </div>\n\n    <!-- user already activated //Votre compte est déjà activé -->\n    <div v-else-if=\"userStatus == 'ENABLED'\" class=\"box rounded-box shadow-2 form-type-material\">\n      <div class=\"alert alert-success fs-15 text-center mb-0 fw-600\">\n        {{ errorMessage }}\n      </div>\n    </div>\n\n    <!-- if login is not valid // compte introuvable  -->\n    <div v-else class=\"box rounded-box shadow-2 form-type-material\">\n      <div class=\"bg-light alert invalid-feedback d-block fw-600 fs-14 text-center fs-16\">\n        {{ errorMessage }}\n      </div>\n    </div>\n\n     <!-- if user is disabled //votre compte est désactivé-->\n     <!-- <div v-else-if=\"userStatus == 'DISABLED' \" class=\"box rounded-box shadow-2 form-type-material\">\n      <div class=\"bg-light alert invalid-feedback d-block fw-600 fs-14 text-center fs-16\">\n        {{ errorMessage }}      \n      </div>\n    </div> -->\n\n  </div>\n\n</template>\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as yup from \"yup\";\nimport { loggedInRedirection } from \"../../services/user.service.js\";\nimport CheckKey from \"./common/CheckKey.vue\";\nexport default {\n\n  name: \"Activation\",\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    CheckKey\n  },\n\n  data() {\n    \n    const schema = yup.object().shape({\n      password: yup\n        .string()\n        .required(\"Le mot de passe est obligatoire!\")\n        .matches(\"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-!@#$%^_&*]).{8,}$\", \"Mot de passe ne respecte pas les critères\"),\n      passwordConfirmation: yup\n        .string()\n        .required(\"La confirmation de mot de passe est obligatoire\")\n        .test('passwords-match', 'Les mots de passe doivent être identiques', function(value){\n          return this.parent.password === value\n        }),\n    });\n    return {\n      successful: false,\n      loading: false,\n      message: \"\",\n      schema,\n      activationKey:'',\n      username:'',\n      lowUpperCase:'',\n      oneNnumber:'',\n      oneSpecialChar:'',\n      eightCharacter:'',\n      password:'',\n      userStatus:'',\n      passwordType:\"password\",\n      confirmationPasswordType:\"password\",\n      errorMessage : ''\n    };\n  },\n\n  created() {\n    this.username = this.$route.query.u;\n    loggedInRedirection();\n    this.validateLogin();\n    if(this.$store.state.auth.user)\n      this.$router.push({name :\"events\"});\n\n  },\n\n  computed: {\n    logo() {\n      return this.$store.state.metadata.logo;\n    },\n  },\n\n  watch:{\n\n    password(newValue , oldValue){\n      if(newValue != oldValue){\n\n        //If password contains both lower and uppercase characters\n        if(this.password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))\n          this.lowUpperCase = 'true';\n        else this.lowUpperCase = '';\n\n        //If it has numbers and characters\n        if( this.password.match(/([0-9])/))\n          this.oneNnumber = \"true\";\n        else  this.oneNnumber = \"\";\n\n        //If it has one special character\n        if(this.password.match(/([!,%,&,@,#,$,^,*,?,_,~,-])/))\n          this.oneSpecialChar= \"true\";\n        else \n          this.oneSpecialChar= \"\";\n\n        if (this.password.length > 7) \n          this.eightCharacter = 'true';\n        else this.eightCharacter = '';\n\n      }\n    }\n  },\n\n  methods: {\n\n    showPassword(){\n      if(this.passwordType == \"password\"){\n        this.passwordType = \"text\";\n      }\n      else if( this.passwordType == \"text\"){\n        this.passwordType = \"password\";\n      }\n    },\n    showConfirmationPassword(){\n      if(this.confirmationPasswordType == \"password\"){\n        this.confirmationPasswordType = \"text\";\n      } \n      else if( this.confirmationPasswordType == \"text\"){\n        this.confirmationPasswordType = \"password\";\n      }\n    },\n\n    handleActivation(user) {\n      this.message = \"\";\n      this.successful = false;\n      this.loading = true;\n\n      user.activationKey = this.activationKey;\n      user.username = this.username;\n\n      this.$store.dispatch(\"auth/activate\", user).then(\n          (response) => {\n            this.message = response.data;\n            this.successful = true;\n            this.loading = false;\n          },\n          (error) => {\n            this.message =\n              (error.response &&\n              error.response.data &&\n              error.response.data.message) ||\n              error.message ||\n              error.toString();\n            this.successful = false;\n            this.loading = false;\n          }\n      );\n    },\n\n    validateLogin(){\n      this.loading = true;\n      this.errorMessage = '';\n      let loginReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n        }\n      };\n\n      fetch(\"/api/auth/user-status/\"+this.username, loginReq)\n        .then( async response => {\n          this.loading = false;\n          if (response.ok){\n            this.userStatus = await response.text();\n            \n            if(this.userStatus == 'ENABLED'){\n              this.errorMessage = \"Votre compte est déjà activé \";  \n              return;\n            }\n\n            if(this.userStatus == 'DELETED'){\n              this.errorMessage = \"Ce compte est introuvable\";  \n              return;\n            }\n\n            if(this.userStatus == 'DISABLED'){\n              this.errorMessage = \"Votre compte est désactivé\";  \n              return;\n            }\n\n          }\n          this.errorMessage = \"Ce compte est introuvable\"; \n        })\n    },\n\n    keyHolder(key){\n      this.activationKey = key;\n    }\n  },\n};\n</script>\n<style scoped>\n.card-container.card {\n  width: 400px;\n  margin: 10% auto;\n  border: none;\n}\n\n</style>","<template>\n  <div class=\"box rounded-box shadow-2 position-relative\">\n    <Form v-on:submit=\"checkKey\" :validation-schema=\"schema\" v-slot=\"{ errors, validate }\">\n      <!-- label -->\n      <div class=\"text-center fw-600 fs-19 m-3\"> Code de vérification </div>\n\n      <!-- keys -->\n      <div class=\"row mb-4\">\n          <div class=\"col\">\n            <Field type=\"text\" autofocus @paste=\"onPaste\" @input=\"setNextFocus('key2',$event)\" ref=\"key1\" class=\"form-control text-center fs-18 fw-600\" name=\"key1\" :class=\"{ 'is-invalid': errors.key1 }\" required v-model=\"key1\" v-maska data-maska=\"#\" />\n          </div>\n\n          <div class=\"col\">\n            <Field type=\"text\" @paste=\"onPaste\" @input=\"setNextFocus('key3',$event)\" ref=\"key2\" class=\"form-control text-center fs-18 fw-600\" name=\"key2\" :class=\"{ 'is-invalid': errors.key2 }\" required v-model=\"key2\" v-maska data-maska=\"#\" />\n          </div>\n\n          <div class=\"col\">\n            <Field type=\"text\" @paste=\"onPaste\" @input=\"setNextFocus('key4',$event)\" ref=\"key3\" class=\"form-control text-center fs-18 fw-600\" name=\"key3\" :class=\"{ 'is-invalid': errors.key3 }\" required v-model=\"key3\"  v-maska data-maska=\"#\"  />\n          </div>\n\n          <div class=\"col\">\n            <Field type=\"text\" @paste=\"onPaste\" @input=\"setNextFocus('key5',$event)\" ref=\"key4\"  class=\"form-control text-center fs-18 fw-600\" name=\"key4\" :class=\"{ 'is-invalid': errors.key4 }\" required v-model=\"key4\" v-maska data-maska=\"#\"  />\n          </div>\n\n          <div class=\"col\">\n            <Field type=\"text\" @paste=\"onPaste\" ref=\"key5\" class=\"form-control text-center fs-18 fw-600\" @input=\"validate\" name=\"key5\" :class=\"{ 'is-invalid': errors.key5 }\" required v-model=\"key5\" v-maska data-maska=\"#\"  />\n          </div>\n      </div>\n\n        <!-- error message  -->\n      <div v-if=\"message || errors.length \" class=\"m-3 text-center \">\n        <div class=\"invalid-feedback d-block fs-16 \" role=\"alert\">\n          Code erroné\n        </div>\n      </div>  \n\n      <!-- timer & period expired and send code  not in activation process -->\n      <div class=\"text-center \" v-if=\"timer && forgottenPasswordKey == true && activationKey == false\">\n        <!-- timer -->\n        <span class=\"badge badge-pill badge-box text-default fs-18 m-2 fw-600\" :class=\"interval<300 ?'bg-red ' :'' \" v-if=\"expired ==false\">{{timer}}</span>\n        <div v-else-if=\"expired == true\" class=\"float-start fs-14  alert-danger m-2 p-1\">\n            La période de vérification est expiré, veuillez renvoyer un autre code en cliquant sur le lien ci-dessus\n        </div>\n        <u v-if=\"expired == true\" @click=\"sendCode()\" class=\"cursor-pointer\">\n          Envoyer un nouveau code\n        </u>\n\n      </div>    \n\n      <!-- submit -->\n      <div class=\"text-center\" v-if=\"forgottenPasswordKey == false && activationKey == true\">\n        <button class=\"btn btn-round btn-custom ps-4 pe-4\" :disabled='loading== true'>Vérifier</button>\n      </div>\n\n      <div class=\"text-center\" v-if=\"forgottenPasswordKey == true && activationKey == false\">\n        <button class=\"btn btn-round btn-custom ps-4 pe-4\" :disabled='loading== true' v-if=\"expired == false\">Vérifier</button>\n      </div>\n\n    </Form>\n\n  </div>\n</template>\n\n<script>\n\nimport { Form, Field } from \"vee-validate\";\nimport * as yup from \"yup\";\nimport { vMaska } from \"maska\";\n\n\nexport default {\n\n  name:\"CheckKey\",\n\n  emits:[\"key\"],\n\n  directives: {maska: vMaska},\n\n  setup(){\n    const schema =  yup.object().shape({\n       key1: yup.number('').min(0).max(9).required(''),\n       key2: yup.number('').min(0).max(9).required(''),\n       key3: yup.number('').min(0).max(9).required(''),\n       key4: yup.number('').min(0).max(9).required(''),\n       key5: yup.number('').min(0).max(9).required('')\n    });\n\n    return{schema}\n  },\n\n  components: {\n    Form,\n    Field,\n  },\n\n  data() {\n     return{\n       key1:'',\n       key2:'',\n       key3:'',\n       key4:'',\n       key5:'',\n       loading:false,\n       message:'',\n       interval:15*60,\n       timer:'',\n       expired:false     \n      }\n  },\n\n  props:{\n    login:{\n      type: String,\n      require: true\n    },\n    activationKey:{\n      type:Boolean\n    },\n    forgottenPasswordKey:{\n      type:Boolean\n    }\n  },\n\n  watch: {\n\n    interval: {\n      handler(value) {\n        if (value > 0) {\n          setTimeout(() => {\n            var time = this.interval--;\n            this.secondToMinute(time);\n          }, 1000);\n        }else{\n          this.expired = true;\n        }\n      },\n      immediate: true \n    }\n\n  },\n\n  methods:{\n\n    onPaste($event) {\n      this.message='';\n      var key = $event.clipboardData.getData('text');\n      //console.log(\"Key -------->\", key);\n\n      if(key.length == 5){\n        if(isNaN(key[0]) == false) this.key1 = key[0];\n        if(isNaN(key[1]) == false) this.key2 = key[1];\n        if(isNaN(key[2]) == false) this.key3 = key[2];\n        if(isNaN(key[3]) == false) this.key4 = key[3];\n        if(isNaN(key[4]) == false) this.key5 = key[4];\n      }\n      //console.log(\"result -------->\", this.key1+this.key2+this.key3+this.key4+this.key5);\n\n    },\n\n    secondToMinute(seconds){\n        var minutes = parseInt(seconds / 60); \n        minutes = minutes< 10 ? '0'+ minutes:''+ minutes\n        var second = parseInt(seconds % 60);\n        second = second< 10 ? '0'+ second:''+ second\n        this.timer = minutes+\":\" + second\n        \n    },\n\n    checkKey(){\n\n      this.loading = true;\n      var key = this.key1+this.key2+this.key3+this.key4+this.key5;\n\n      const loginWithoutSpaces = this.login.trim();\n      let verificationKeyReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n        },\n        body:JSON.stringify({\n          login : loginWithoutSpaces,\n          key : key\n        })\n      };\n      var url='' ;\n      if(this.forgottenPasswordKey == true && this.activationKey == false)\n       url=  \"/api/auth/forgotten-password-key-verification\";\n      if(this.forgottenPasswordKey == false && this.activationKey == true)\n       url=  \"/api/auth/activation-key-verification\";\n\n      fetch(url, verificationKeyReq).then( async response => {\n        this.loading = false;\n        if (response.ok){\n          await response.text();  \n          this.$emit(\"key\", key); \n          this.message ='';         \n          return;\n        }\n        this.message = \"error\";\n        })        \n    },\n\n    sendCode(){\n      document.location.reload(true);\n    },\n\n    setNextFocus(inputKey, $event){\n      this.message='';\n      var value = $event.target.value;\n      if([\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"].indexOf(value)>-1){\n        this.$refs[inputKey].$el.focus();\n        this.$refs[inputKey].$el.select();\n      } else \n        $event.preventDefault(); \n    }\n\n  }\n}\n</script>\n\n<style scoped>\n  .form-control.is-invalid, \n  .was-validated .form-control:invalid {\n    border-color: #f96868;\n    background: none;\n    padding-right: 12px;\n  }\n</style>","import { render } from \"./CheckKey.vue?vue&type=template&id=9a11c272&scoped=true\"\nimport script from \"./CheckKey.vue?vue&type=script&lang=js\"\nexport * from \"./CheckKey.vue?vue&type=script&lang=js\"\n\nimport \"./CheckKey.vue?vue&type=style&index=0&id=9a11c272&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9a11c272\"]])\n\nexport default __exports__","import { render } from \"./Activation.vue?vue&type=template&id=7c5c432d&scoped=true\"\nimport script from \"./Activation.vue?vue&type=script&lang=js\"\nexport * from \"./Activation.vue?vue&type=script&lang=js\"\n\nimport \"./Activation.vue?vue&type=style&index=0&id=7c5c432d&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7c5c432d\"]])\n\nexport default __exports__","<template>\n  <div class=\"container\">\n\n    <div class=\"my-3\">\n\n      <div class=\"card\">\n        <!-- Header -->\n        <header class=\"card-header p-0\" v-if=\"user.userFirstName\">\n          <div class=\"card-title align-items-center felxbox\">\n            <span class=\"avatar\" v-bind:style=\"{ background: user.iconColor }\">\n                {{ user.userFirstName.substring(0, 1).toUpperCase() }}{{ user.userLastName.substring(0, 1).toUpperCase() }}\n            </span>\n\n            <span class=\" ms-3 \">\n              <span class=\"text-capitalize fs-17\">{{user.userFirstName}} {{user.userLastName}} </span>\n              <small class=\"minus-separator fst-italic\">{{user.roleValue}}</small> \n            </span>\n\n            <div class=\"text-center float-end\">\n              <UserStatus :status=\"user.userStatus\" :size=\"14\" />\n            </div>\n          </div>\n        </header>\n\n        <div class=\"row form-type-material p-3 w-100\" >\n\n          <!-- userLastName -->\n          <div class=\"col-md-6\" v-if=\"this.user.userLastName\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{this.user.userLastName}}</span>  \n              <label class=\"\"> Nom:</label>  \n            </div>\n          </div>\n\n          <!-- userFirstName -->\n          <div class=\"col-md-6\" v-if=\"this.user.userFirstName\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{this.user.userFirstName}}</span>  \n              <label class=\"\"> Prénom:</label>  \n            </div>\n          </div>\n\n          <!-- email -->\n          <div class=\"col-md-6\" v-if=\"this.user.email\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{this.user.email}}</span>  \n              <label class=\"\"> Email:</label>  \n            </div>\n          </div>\n          \n          <!-- login -->\n          <div class=\"col-md-6\" v-if=\"this.user.login\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{this.user.login}}</span>  \n              <label class=\"\"> Login:</label>  \n            </div>\n          </div>\n\n          <!-- mobile -->\n          <div class=\"col-md-6\" v-if=\"this.user.mobile\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{this.user.mobile}}</span>  \n              <label class=\"\"> Portable:</label>  \n            </div>\n          </div>\n\n          <!-- phone -->\n          <div class=\"col-md-6\" v-if=\"this.user.phone\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{this.user.phone}}</span>  \n              <label class=\"\"> Téléphone:</label>  \n            </div>\n          </div>\n\n          <!-- workshop -->\n          <div class=\"col-md-6\" v-if=\"this.user.simpleWorkshop && this.user.simpleWorkshop.workshopName\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{this.user.simpleWorkshop.workshopName}}</span>  \n              <label class=\"\"> Atelier:</label>  \n            </div>\n          </div>\n\n          <!-- superior -->\n          <div class=\"col-md-6\" v-if=\"this.user.superior\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{this.user.superior.userFirstName}} {{this.user.superior.userLastName}}</span>  \n              <label class=\"\"> Supérieur:</label>  \n            </div>\n          </div>\n          \n          <!-- userCode -->\n          <div class=\"col-md-6 d-none\" v-if=\"this.user.userCode\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{this.user.userCode}}</span>  \n              <label class=\"\"> code:</label>  \n            </div>\n          </div>\n\n          <!-- privileges -->\n          <div class=\"col-md-6 d-none\" v-if=\"this.user.userCode\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\" v-if=\"currentUser\">{{currentUser.privileges}}</span>  \n              <label class=\"\"> privileges:</label>  \n            </div>\n          </div>\n\n        </div>\n\n        <!-- error message -->\n        <CustomMessage v-if=\"message\" :cssClass=\"'p-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n      </div>\n    </div>\n\n\n  </div>\n</template>\n\n<script>\nimport UserStatus from \"../user/common/UserStatus.vue\"\nimport CustomMessage from '../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"Profile\",\n\n  components:{\n    UserStatus,\n    CustomMessage\n  },\n\n  data(){\n   return{\n     roleName:\"\",\n     user:{},\n     message: \"\",\n   }\n  },\n\n  computed: {\n    currentUser() {\n      return this.$store.state.auth.user;\n    },\n  },\n\n  created() {\n    if (!this.currentUser) \n      this.$router.push(\"/login\");\n    this.loadUser();\n  },\n\n  methods:{\n\n    loadUser() {\n\n      let loadUserReq = {\n        method: \"GET\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()}\n      };\n\n      var url = \"/api/user/\"+this.$store.state.auth.user.companyCode+\"/\"+this.$store.state.auth.user.userCode;\n      if(this.$store.state.auth.user.role == 'SUPER_USER')\n        url = \"/api/user/\"+this.$store.state.auth.user.userCode;\n\n      fetch(url, loadUserReq)\n       .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok){\n            this.user = await response.json();\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch( (response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadUser.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    },\n  }\n};\n</script>\n\n<style scoped>\n.avatar {\n  background: rgb(0, 32, 63) none repeat scroll 0% 0%;\n  position: relative;\n  line-height: 36px;\n  text-align: center;\n  border-radius: 100%;\n  color: white;\n  text-transform: uppercase;\n  width: 36px;\n  height: 36px;\n  display: inline-block;\n}\n\n</style>\n\n","<template>\n\n  <span v-if=\"status!=null\" class=\"badge badge-pill badge-box\" :class='`fs-${size}`' \n  v-tippy=\"{ content: `<small>${status.description}</small>` , placement:`${placement}` }\" >\n      {{ status.value }}\n  </span>\n\n</template>\n\n<script>\nexport default {\n\n  name:\"UserStatus\",\n\n  props: {\n    status: {\n      required: true,\n      type: Object,\n      default(){\n        return null;\n      }\n    },\n    placement: {\n      type: String,\n      default(){\n        return \"top\";\n      }\n    },\n    size: {\n      type: Number,\n      default(){\n        return 12;\n      }\n    },\n  }\n\n}\n</script>\n\n<style>\n\n</style>","import { render } from \"./UserStatus.vue?vue&type=template&id=75f72c43\"\nimport script from \"./UserStatus.vue?vue&type=script&lang=js\"\nexport * from \"./UserStatus.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n    \n  <div :class=\"cssClass\">\n    <div :class=\"alertClass\" role=\"alert\">\n\t\t\t<div class=\"d-flex\">\n       <span> {{ message }} </span>\n       <button v-if=\"closable\" type=\"button\" class=\"btn-close\" @click=\"closeMessage\"></button> \n\t\t\t</div>\n    </div>\n  </div>\n\n</template>\n\n<script>\nexport default {\n  \n  name: 'CustomMessage',\n\n  emits : ['close'],\n\n  props: {\n    message: {  type : String, required: true },\n    type:  { type : String, required: true },\n    closable: {type : Boolean, required: false, default: () => true},\n    cssClass: {type : String, required: false,}\n  },\n\n\tcomputed: {\n\n    alertClass() {\n      switch (this.type) {\n        case 'error':\n          return 'alert alert-danger alert-dismissible fade show';\n        case 'warning':\n          return 'alert alert-warning alert-dismissible fade show';\n        case 'success':\n          return 'alert alert-success alert-dismissible fade show';\n        default:\n          return 'alert alert-info alert-dismissible fade show';\n      }\n    }\n  },\n\n  methods: {\n    closeMessage() {\n      this.$emit('close');\n    },\n  },\n\n}\n\n</script>\n\n<style scoped>\n\n .btn-close{\n  opacity: .5;\n  font-size: 10px;\n}\n.btn-close:hover{\n  opacity: 1;\n}\n</style>","import { render } from \"./CustomMessage.vue?vue&type=template&id=36afcea8&scoped=true\"\nimport script from \"./CustomMessage.vue?vue&type=script&lang=js\"\nexport * from \"./CustomMessage.vue?vue&type=script&lang=js\"\n\nimport \"./CustomMessage.vue?vue&type=style&index=0&id=36afcea8&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-36afcea8\"]])\n\nexport default __exports__","import { render } from \"./Profile.vue?vue&type=template&id=899c700a&scoped=true\"\nimport script from \"./Profile.vue?vue&type=script&lang=js\"\nexport * from \"./Profile.vue?vue&type=script&lang=js\"\n\nimport \"./Profile.vue?vue&type=style&index=0&id=899c700a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-899c700a\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"card card-container shadow-none\" v-auto-animate>\n\n    <div class=\"text-center mb-5\">\n      <img v-if=\"logo\" :src=\"`/images/`+logo\" class=\"logo-img-card\" alt=\"kit4planning manager\" />\n    </div>\n\n    <div class=\"text-center mb-1\">\n      <h5>Réinitialisez le mot de passe de votre compte</h5>\n\n      <span v-if=\"successful == true && forgottenPasswordKey==''\">\n        nous vous avons envoyé un code de vérification par e-mail\n      </span>\n    </div>\n    \n    <!-- First step sending request of forgotten password -->\n    <div v-if=\"successful == false\" class=\"box rounded-box shadow-2 form-type-material position-relative\">\n      <Form v-on:submit=\"validateLogin\" :validation-schema=\"forgottenPasswordSchema\" v-slot=\"{ errors }\">\n        <!-- login -->\n        <div class=\"form-group\">\n          <Field type=\"text\" class=\"form-control\" name=\"login\" :class=\"{ 'is-invalid': errors.login }\" required v-model.trim=\"login\" @input=\"initMessage\"/>\n          <label class=\"required\" for=\"login\">Login</label>\n          <ErrorMessage name=\"login\" class=\"invalid-feedback \" />\n        </div>\n\n        <!-- submit -->\n        <div class=\"text-center p-\">\n          <button class=\"btn btn-round btn-custom ps-4 pe-4\" :disabled='loading== true'>Initialiser</button>\n        </div>\n\n        <!-- error message  -->\n        <div v-if=\"message\" class=\"m-3 text-center\">\n          <div class=\"invalid-feedback  d-block\" role=\"alert\">\n            {{message }}\n          </div>\n        </div>\n\n      </Form>\n    </div>\n\n    <!-- verification sent key after submiting forgotten password request -->\n    <div v-else-if=\"successful == true && forgottenPasswordKey=='' \">\n      <CheckKey :login=\"login\" @key=\"passwordKeyHolder\" :activationKey=\"false\" :forgottenPasswordKey=\"true\" />\n    </div>\n\n    <!-- After sending forgotten password request and verification received key than update password -->\n    <div v-else-if=\"successful == true && forgottenPasswordKey != ''\">\n      <PasswordModification :login=\"login\" :forgottenPasswordKey=\"forgottenPasswordKey\" />\n    </div>\n\n  </div>\n\n</template>\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport { loggedInRedirection } from \"../../services/user.service.js\";\nimport CheckKey from \"./common/CheckKey.vue\";\nimport PasswordModification from \"./forgotten-password/PasswordModification.vue\";\n\nexport default {\n\n  name:\"ForgottenPassword\",\n\n  setup(){\n\n   const  forgottenPasswordSchema = Yup.object().shape({\n        login :Yup.string().required('Login est obligatoire'),\n        })\n    return {forgottenPasswordSchema}\n  },\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    CheckKey,\n    PasswordModification\n  },\n\n  computed: {\n    logo() {\n      return this.$store.state.metadata.logo;\n    },\n  },\n\n  data(){\n    return {\n      login:'',\n      message:'',\n      numberOfRequest:0,\n      successful:false,\n      loading :false,\n      forgottenPasswordKey:'',\n    }\n  },\n\n  created(){\n    this.numberOfRequest =0;\n    loggedInRedirection();\n    if(this.$store.state.auth.user)\n      this.$router.push({name :\"events\"});\n  },\n\n  methods:{\n\n    validateLogin(){\n      this.loading = true;\n\n      let loginReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n        }\n      };\n\n      fetch(\"/api/auth/user-status/\"+this.login, loginReq)\n        .then( async response => {\n          this.loading = false;\n          if (response.ok){\n\n            let userStatus = await response.text();\n\n            if(userStatus == 'INITIAL'){\n              this.message = \"Votre compte n'est pas activé\";\n              return;\n            }\n\n            if(userStatus == 'DELETED'){\n              this.message = \"Ce compte est introuvable\";  \n              return;\n            }\n\n            if(userStatus == 'DISABLED'){\n              this.message = \"Votre compte est désactivé\";  \n              return;\n            }\n\n            this.forgottenPassword();\n            return;\n          }\n           \n          this.message = \"Ce compte est introuvable\";\n        })\n    },\n\n    forgottenPassword() {\n      this.loading = true;\n\n      let forgottenPasswordReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n        }\n      };\n\n      fetch(\"/api/auth/forgotten-password/\"+this.login, forgottenPasswordReq)\n        .then( async response => {\n          this.loading = false;\n          if (response.ok){\n            await response.text();\n            this.successful =true;\n            this.numberOfRequest = this.numberOfRequest + 1;\n            return;\n          }\n          this.message = \"Ce compte est introuvable\";\n        })\n    },\n\n    passwordKeyHolder(key){\n      this.forgottenPasswordKey = key;\n    },\n\n    initMessage(){\n      if(!this.login){\n        this.message=\"\";\n        return;\n      }\n    }\n\n  }\n\n}\n</script>\n\n<style scoped>\n\n.card-container.card {\n  width: 400px;\n  margin: 10% auto;\n  border: none;\n}\n\n\n</style>","<template>\n\n  <div class=\"box rounded-box shadow-2 form-type-material\">\n    <Form @submit=\"setPasswordHandler\" :validation-schema=\"schema\" v-slot=\"{ errors }\">\n\n      <!-- password -->\n      <div class=\"form-group mb-2 flexbox\">\n        <div class=\" w-106\">\n          <Field name=\"password\" :type=\"`${passwordType}`\"  class=\"form-control w-106\"  :class=\"{ 'is-invalid': errors.password }\" required  v-model=\"password\"/>\n          <label class=\"required\" for=\"password\">Mot de passe</label>\n          <ErrorMessage name=\"password\" class=\"invalid-feedback\" />\n        </div>\n        <!-- show and hide password -->\n        <span :class=\"passwordType == 'text' ? 'mdi mdi-eye-outline fs-20 cursor-pointer' : 'mdi mdi-eye-off-outline fs-20 cursor-pointer'\" @click=\"showPassword()\"></span>\n      </div>\n\n       <!--condition  -->\n      <ul class=\"mb-1 ps-4 list-unstyled\">\n        <li :class=\"[lowUpperCase == 'true' ? 'text-green' : '', lowUpperCase == 'false' ? 'text-danger' : '', lowUpperCase == '' ? 'text-default' : '', ]\">\n          <span class=\"d-flex align-items-center\"> \n            <i class=\"badge badge-point bg-default m-1\" v-if=\"lowUpperCase == '' \" />\n            <i class=\"mdi mdi-check m-1\" v-else-if=\"lowUpperCase == 'true' \"/>\n            <i class=\"mdi mdi-close m-2\" v-else-if=\"lowUpperCase == 'false' \"/>\n            Minuscule &amp; majuscule\n          </span>\n        </li>\n\n        <li :class=\"[oneNnumber == 'true' ? 'text-green' : '', oneNnumber == 'false' ? 'text-danger' : '', oneNnumber == '' ? 'text-default' : '', ]\">\n          <span class=\"d-flex align-items-center\">\n            <i class=\"badge badge-point bg-default m-1\" v-if=\"oneNnumber == '' \" /> \n            <i class=\"mdi mdi-check m-1\" v-else-if=\"oneNnumber == 'true' \" />\n            <i class=\"mdi mdi-close m-2\" v-else-if=\"oneNnumber == 'false' \"/>\n              Nombre (0-9) \n          </span> \n        </li>\n\n        <li :class=\"[oneSpecialChar == 'true' ? 'text-green' : '', oneSpecialChar == 'false' ? 'text-danger' : '', oneSpecialChar == '' ? 'text-default' : '', ]\">\n          <span class=\"d-flex align-items-center\">\n            <i class=\"badge badge-point bg-default m-1\" v-if=\"oneSpecialChar == ''\"/>\n            <i class=\"mdi mdi-check m-1\" v-else-if=\"oneSpecialChar == 'true'\" />\n            <i class=\"mdi mdi-close m-2\" v-else-if=\"oneSpecialChar == 'false' \"/>\n            Caractère spécial (!@#$%^&*-_)\n          </span>\n        </li>\n\n        <li :class=\"[eightCharacter == 'true' ? 'text-green' : '', eightCharacter == 'false' ? 'text-danger' : '', eightCharacter == '' ? 'text-default' : '', ]\">\n            <span class=\"d-flex align-items-center\">\n              <i class=\"badge badge-point bg-default m-1\" v-if=\"eightCharacter == '' \"/>\n              <i class=\"mdi mdi-check m-1\" v-else-if=\"eightCharacter == 'true' \" />\n              <i class=\"mdi mdi-close m-2\" v-else-if=\"eightCharacter == 'false' \"/>\n              Au moins 8 caractères\n            </span>\n        </li>\n\n      </ul>\n\n      <!-- confirmation password -->\n      <div class=\"form-group mb-2 flexbox\">\n        <div class=\" w-106\">\n          <Field name=\"passwordConfirmation\" :type=\"`${confirmationPasswordType}`\"  @paste.prevent class=\"form-control w-106\"  :class=\"{ 'is-invalid': errors.passwordConfirmation }\" required />\n          <label class=\"required\" for=\"passwordConfirmation\">Confirmation mot de passe</label>\n          <ErrorMessage name=\"passwordConfirmation\" class=\"invalid-feedback\" />\n        </div>\n        <!-- show and hide password -->\n        <span :class=\"confirmationPasswordType == 'text' ? 'mdi mdi-eye-outline fs-20 cursor-pointer' : 'mdi mdi-eye-off-outline fs-20 cursor-pointer'\" @click=\"showConfirmationPassword()\"></span>\n      </div>\n\n      <!-- submit -->\n      <div class=\"text-center\">\n        <button class=\"btn btn-round btn-custom\" :disabled=\"loading\">\n          <span v-show=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\"></span>\n          <span class=\"ms-1\">Continuer</span>\n        </button>\n      </div>\n      \n      <!-- error messsage -->\n      <div v-if=\"message\" class=\"m-3 text-center\">\n        <div  class=\"alert\" :class=\"successful ? 'alert-success' : 'alert-danger'\"\n          role=\"alert\">\n          {{ message }}\n        </div>\n      </div>\n      \n    </Form>\n  </div>\n\n</template>\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as yup from \"yup\";\nimport { loggedInRedirection } from \"../../../services/user.service.js\";\n\n\nexport default {\n\n  name: \"PasswordModification\",\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n  },\n\n  data() {\n    const schema = yup.object().shape({\n      password: yup\n        .string()\n        .matches(\"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-!@#$%^_&*]).{8,}$\", \"Mot de passe ne respecte pas les critères\")\n        .required(\"Mot passe est obligatoire\"),\n      passwordConfirmation: yup\n        .string()\n        .required(\"Confirmation de mot de passe est obligatoire\")\n        .test('passwords-match', 'Les mots de passe doivent être identiques', function(value){\n          return this.parent.password === value\n        }),\n    });\n    return {\n      successful: false,\n      loading: false,\n      message: \"\",\n      schema,\n      lowUpperCase:'',\n      oneNnumber:'',\n      oneSpecialChar:'',\n      eightCharacter:'',\n      password:'',\n      passwordType:\"password\",\n      confirmationPasswordType:\"password\"\n    };\n  },\n\n  props:{\n\n    login:{\n      type: String,\n    },\n    forgottenPasswordKey:{\n      type: String,\n      required : true\n    }\n  },\n  \n  computed: {\n    logo() {\n      return this.$store.state.metadata.logo;\n    },\n  },\n\n  watch:{\n\n    password(newValue, oldValue){\n      if(newValue != oldValue){\n\n        //If password contains both lower and uppercase characters\n        if(this.password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))\n          this.lowUpperCase = 'true';\n        else this.lowUpperCase = '';\n\n        //If it has numbers and characters\n        if( this.password.match(/([0-9])/))\n          this.oneNnumber = \"true\";\n        else  this.oneNnumber = \"\";\n\n        //If it has one special character\n        if(this.password.match(/([!,%,&,@,#,$,^,*,?,_,~,-])/))\n          this.oneSpecialChar= \"true\";\n        else \n          this.oneSpecialChar= \"\";\n\n        if (this.password.length > 7) \n          this.eightCharacter = 'true';\n        else this.eightCharacter = '';\n\n      }\n    }\n  },\n\n  methods: {\n\n      showPassword(){\n        if(this.passwordType == \"password\"){\n          this.passwordType = \"text\";\n        }\n        else if( this.passwordType == \"text\"){\n          this.passwordType = \"password\";\n        }\n      },\n      showConfirmationPassword(){\n        if(this.confirmationPasswordType == \"password\")\n          this.confirmationPasswordType = \"text\";\n        \n        else if( this.confirmationPasswordType == \"text\")\n          this.confirmationPasswordType = \"password\";\n        \n      },\n    setPasswordHandler(user) {\n      this.message = \"\";\n      this.successful = false;\n      this.loading = true;\n\n      user.forgottenPasswordKey = this.forgottenPasswordKey;\n      user.login = this.login.trim();\n\n      this.$store.dispatch('auth/setUserPassword', user).then(() => {\n          document.body.classList.add('bg-light');\n          loggedInRedirection();\n        },\n        (error) => {\n          this.loading = false;\n          this.message =\n                (error.response &&\n                  error.response.data &&\n                  error.response.data.message) ||\n                  error.message ||\n                  error.toString();\n        }\n      );\n    }\n  },\n};\n</script>\n<style scoped>\n\n</style>","import { render } from \"./PasswordModification.vue?vue&type=template&id=2889a05a\"\nimport script from \"./PasswordModification.vue?vue&type=script&lang=js\"\nexport * from \"./PasswordModification.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./ForgottenPassword.vue?vue&type=template&id=708f5e20&scoped=true\"\nimport script from \"./ForgottenPassword.vue?vue&type=script&lang=js\"\nexport * from \"./ForgottenPassword.vue?vue&type=script&lang=js\"\n\nimport \"./ForgottenPassword.vue?vue&type=style&index=0&id=708f5e20&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-708f5e20\"]])\n\nexport default __exports__","<template>\n  <div class=\"container-fluid\">\n    \n    <div class=\"d-flex my-3\">\n\n      <!-- toggle filter -->\n      <div class=\"pe-5\" v-if=\"displayFilter == false\">\n        <a class=\"hamburger\" :class=\"displayFilter ? 'is-open' : 'is-closed' \" @click=\"displayFilter = true\" v-tippy=\"{ content: 'Afficher le filtre' , placement:'right' }\">\n          <span class=\"hamb-top\"></span>\n          <span class=\"hamb-middle\"></span>\n          <span class=\"hamb-bottom\"></span>\n        </a>\n      </div>\n\n      <!-- filter -->\n      <div class=\"col-md-3 col-xl-2 pe-3\" v-if=\"displayFilter\">\n        <EventFilter v-on:event-filter-updated=\"onFilterUpdated\" :disableSubmit=\"loading\" v-on:filter-closed=\"clearFilter\"/>\n      </div>\n\n      <div class=\"col\">\n\n        <!-- custom message -->\n        <CustomMessage v-if=\"message \" :message=\"message\" :type=\"this.canUserCreateEvent ? 'error' : 'warning'\" @close=\"this.message = ''\"/>\n\n        <!-- create event -->\n        <div class=\"fab fab-fixed\" v-if=\"hasPrivilege('CREATE_EVENT')\" \n          v-tippy=\"{ content: '<span class=fs-12>Ajouter un événement</span>' , placement:'top' }\" >\n          <a class=\"btn btn-float\" @click=\"redirectToCreateEvent()\"  >\n            <i class=\"mdi mdi-plus\" />\n          </a>\n        </div>\n\n        <div class=\"card bg-white\">\n\n          <ul class=\"nav nav-tabs\" role=\"tablist\">\n\n            <li class=\"nav-item\">\n              <a @click=\"dataRequest.type = 'COMING_EVENTS', fetchComingEvents()\"\n                  :class=\"[ dataRequest.type === 'COMING_EVENTS' ? 'active' : '' ]\"\n                  class=\"nav-link\">\n                À venir\n              </a>\n            </li>\n            \n            <li class=\"nav-item\">\n              <a @click=\"(dataRequest.type = 'TODAY_EVENTS'), fetchTodayEvents()\"\n                  :class=\"[ dataRequest.type === 'TODAY_EVENTS' ? 'active' : '' ]\"\n                  class=\"nav-link\">\n                Aujourd'hui\n              </a>\n            </li>\n\n            <li class=\"nav-item\">\n              <a @click=\"(dataRequest.type = 'DATE_RANGE_EVENTS'), initData()\"\n                  :class=\"[dataRequest.type === 'DATE_RANGE_EVENTS' ? 'active' : '']\"\n                  class=\"nav-link\">\n                Par période\n              </a>\n            </li>\n\n            <li class=\"nav-item\">\n              <a @click=\"(dataRequest.type = 'GONE_EVENTS'), fetchGoneEvents()\"\n                  :class=\"[dataRequest.type === 'GONE_EVENTS' ? 'active' : '']\"\n                  class=\"nav-link\"\n                  role=\"tab\"\n                  aria-controls=\"description\"\n                  aria-selected=\"true\">\n                Passé\n              </a>\n            </li>\n\n          </ul>\n\n          <div class=\"card-body p-0\" role=\"tabpanel\">\n\n            <!-- date range -->\n            <div v-if=\"dataRequest.type == 'DATE_RANGE_EVENTS'\">\n              <Form class=\"form-type-material\" @submit=\"fetchDateRangeEvents\" :validation-schema=\"schema\" v-slot=\"{ errors }\">\n\n                <div class=\"row my-3\" :class=\"events.length == 0 && dataRequest.type == 'DATE_RANGE_EVENTS'? 'min-height-300' :'' \">\n\n                  <div class=\"col-1\"></div>\n                  \n                  <!-- event start date -->\n                  <div class=\"col-auto form-group\">\n                    <Datepicker name=\"eventStartDate\" class=\"form-control\" :class=\"{ 'is-invalid': errors.eventStartDate }\"\n                      v-model=\"eventStartDate\"\n                      :inputFormat=\"'dd/MM/yyyy'\"\n                      :style=\"datePickerStyle\" \n                      :typeable=\"true\" \n                      :placeholder=\"'jj/mm/aaaa'\" \n                      :upperLimit='upperLimit'\n                      :language=\"'fr'\"\n                      v-maska data-maska=\"##/##/####\"\n                      v-on:blur=\"eventStartDateChanged($event.target.value)\"\n                    />\n                    <Field name=\"eventStartDate\" :class=\"{ 'is-invalid': errors.eventStartDate }\"  v-model=\"eventStartDate\" hidden type=\"text\"   /> \n                    <label class=\"do-float\">Date de début : </label>\n                    <div class=\"invalid-feedback text-center\"> {{ errors.eventStartDate }} </div>\n                  </div>\n                  \n                  <!-- event end date -->\n                  <div class=\"col-auto form-group\">\n                    <Datepicker name=\"eventEndDate\" class=\"form-control\" :class=\"{ 'is-invalid': errors.eventEndDate }\" \n                      v-model=\"eventEndDate\" \n                      :inputFormat=\"'dd/MM/yyyy'\"\n                      :lowerLimit='lowerLimit'\n                      :style=\"datePickerStyle\" \n                      :typeable=\"true\" \n                      :placeholder=\"'jj/mm/aaaa'\"\n                      v-maska data-maska=\"##/##/####\"\n                      v-on:blur=\"eventEndDateChanged($event.target.value)\"\n                    />\n                    <Field name=\"eventEndDate\" :class=\"{ 'is-invalid': errors.eventEndDate }\"  v-model=\"eventEndDate\" hidden type=\"text\"   /> \n                    <label class=\"do-float\">Date de fin : </label>\n                    <div class=\"invalid-feedback text-center\"> {{ errors.eventEndDate }} </div>\n                  </div>\n\n                  <div class=\"col-auto\" id=\"submit\">\n                    <button type=\"submit\" class=\"btn btn-round btn-custom btn-sm mt-3\">Rechercher</button>\n                  </div>\n                  \n                  <div class=\"text-center empty-message\" v-if=\"dataResponse.totalRecords==0\">\n                      <div>\n                        <i class=\"mdi mdi-calendar-alert fs-50\"/> \n                        <div class=\"text-muted fs-14\">Aucun événement trouvé</div>\n                      </div> \n                  </div>\n\n                </div>\n\n              </Form>\n            </div>\n            \n            <!-- events display -->\n            <EventsList v-bind:events=\"events\" v-bind:dataResponse=\"dataResponse\" v-on:load-event=\"loadEvents\" />\n\n            <!-- empty message display -->\n            <div class=\"text-center empty-message\"  v-if=\"dataResponse.totalRecords == 0 && dataRequest.type == 'COMING_EVENTS' \">\n              <i class=\"mdi mdi-calendar-alert fs-50\"/> \n              <div class=\"text-muted fs-14\">Aucun événement à venir</div> \n            </div>\n\n            <div class=\"text-center empty-message\" v-if=\"dataResponse.totalRecords == 0 && dataRequest.type == 'TODAY_EVENTS' \">\n              <i class=\"mdi mdi-calendar-alert fs-50\"/> \n              <div class=\"text-muted fs-14\">Aucun événement aujourd'hui</div> \n            </div>\n\n            <div class=\"text-center empty-message\" v-if=\" dataResponse.totalRecords == 0 && dataRequest.type == 'GONE_EVENTS' \">\n              <i class=\"mdi mdi-calendar-alert fs-50\"/> \n              <div class=\"text-muted fs-14\">Aucun événement passé</div> \n            </div>\n\n          </div>\n          \n          <!-- pagination -->\n          <footer class=\"card-footer text-center\" v-if=\"dataResponse.totalRecords > 0\">\n            \n            <div v-if=\"loading\"  role=\"status\">CHARGEMENT .....</div>\n            <div v-else class=\"fs-12\">\n              <span class=\"flex-grow fw-light\">\n                De 1 à\n                <span v-if=\"dataResponse.endRecords < dataResponse.totalRecords\"> {{ dataResponse.endRecords }} </span>\n                <span v-else> {{ dataResponse.totalRecords }} </span>\n                sur\n                {{ dataResponse.totalRecords }}\n              </span>\n            </div>\n            \n          </footer>          \n        </div>\n\n      </div>\n\n    </div>\n\n  </div>\n</template>\n\n\n<script>\nimport { hasPrivilege } from \"../../services/user.service.js\";\nimport EventsList from \"./events/EventsList.vue\";\nimport EventFilter from \"./events/EventFilter.vue\";\nimport { Form, Field } from \"vee-validate\";\nimport * as moment from \"moment\";\nimport * as Yup from \"yup\";\nimport { useRoute } from \"vue-router\";\nimport Datepicker from \"vue3-datepicker\";\nimport { vMaska } from \"maska\";\nimport CustomMessage from '../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"Events\",\n\n  directives: { maska: vMaska },\n\n  components: {\n    EventsList,\n    EventFilter,\n    Form,\n    Field,\n    Datepicker,\n    CustomMessage\n  },\n\n  setup() {\n\n    const schema = Yup.object().shape({\n      eventStartDate: Yup.date(\"Date de début est obligatoire\").nullable(false).typeError(\"Date de début est obligatoire\"),\n      eventEndDate: Yup.date(\"Date de fin est obligatoire\").typeError(\"Date de fin est obligatoire\").nullable(false)\n        .when(\"eventStartDate\", (eventStartDate, schema) =>\n          moment(eventStartDate).isValid()\n            ? schema.min(eventStartDate, \"Date non valide\")\n            : schema\n        ),\n    });\n\n    const datePickerStyle = {\n        \"--vdp-selected-bg-color\":'#00203f',\n      \"--vdp-selected-color\": \"#ffffff\",  \n      \"--vdp-hover-bg-color\": \"#00203f\",\n      \"--vdp-current-date-outline-color\": \"#666666\",\n      \"--vdp-current-date-font-weight\": \"500\"\n    };\n\n    return { schema, datePickerStyle };\n\n  },\n  \n\n  data() {\n    return {\n      upperLimit: null,\n      lowerLimit: null,\n      loading: false,\n      eventStartDate: null,\n      eventEndDate: null,\n      dataRequest: {\n        companyCode: this.$store.state.auth.user.companyCode,\n        workshopCode: this.$store.state.auth.user.workshopCode,\n        eventEndDate: \"\",\n        eventStartDate: moment().startOf(\"day\").format(\"DD/MM/YYYY HH:mm\"),\n        type: \"COMING_EVENTS\",\n        sortField: \"eventDate\",\n        sortDirection: \"ASC\",\n        serverSide: true,\n        pageLength: 10,\n        pageStart: 0,\n      },\n      firstAvailability: null,\n      dataResponse: {},\n      events: [],\n      observer: null,\n      displayFilter: false,\n      message: \"\",\n      canUserCreateEvent: true\n    };\n  },\n\n  created() {\n    var startDate = moment(useRoute().params.startDate, \"DDMMYYYY\");\n    var endDate = moment(useRoute().params.endDate, \"DDMMYYYY\");\n\n    if(!startDate || !startDate.isValid()) startDate = \"\";\n\n    if(!endDate || !endDate.isValid()) endDate = \"\";\n\n    if(this.dataRequest.workshopCode && this.dataRequest.companyCode && hasPrivilege(\"CREATE_EVENT\"))\n      this.loadFirstAvailability();\n\n    // startDate validation\n    if(startDate){\n      this.dataRequest.eventStartDate = startDate;\n      this.eventStartDate = startDate.toDate()\n    }\n\n    // endDate validation\n    if(endDate){\n      this.dataRequest.eventEndDate = endDate;\n      this.eventEndDate = endDate.toDate();\n    }\n\n    // start and end date are valid we fetch date Range\n    if(startDate && endDate) {\n      this.dataRequest.type = \"DATE_RANGE_EVENTS\";\n      this.fetchDateRangeEvents(this.dataRequest);\n    }\n\n    // default case no start and end date\n    else if(!startDate && !endDate) {\n      this.dataRequest.eventStartDate = moment().startOf(\"day\").format(\"DD/MM/YYYY HH:mm\");\n      this.dataRequest.type = \"COMING_EVENTS\";\n      this.fetchComingEvents();\n    }\n\n    // only start date how is valid\n    else if(!startDate && endDate) {\n      this.dataRequest.type = \"GONE_EVENTS\";\n      this.fetchGoneEvents(this.dataRequest);\n    } // today fetch\n    else if(startDate.isSame(moment().startOf(\"day\"), \"D\")) {\n      this.dataRequest.type = \"TODAY_EVENTS\";\n      this.fetchTodayEvents(this.dataRequest);\n    }\n  },\n\n  computed: {\n    currentUser() {\n      return this.$store.state.auth.user;\n    },\n        \n  },\n  \n  methods: {\n\n    hasPrivilege: hasPrivilege,\n\n    eventStartDateChanged(eventStartDate){\n      if(eventStartDate){\n        this.lowerLimit = this.eventStartDate;\n        if(moment(this.eventEndDate).isBefore(this.eventStartDate))\n          this.eventEndDate = this.eventStartDate;\n      }else {\n        this.lowerLimit = null;\n        this.eventStartDate = null;\n      }\n    },\n\n    eventEndDateChanged(eventEndDate){\n      if(eventEndDate) {\n        this.upperLimit = this.eventEndDate;\n        if(moment(this.eventEndDate).isBefore(this.eventStartDate))\n          this.eventStartDate = this.eventEndDate;\n      }else {\n        this.eventEndDate = null;\n        this.upperLimit = null;\n      }\n    },\n\n    clearFilter(){\n      this.dataRequest.workshopCode = null;\n      if(this.$store.state.auth.user.workshopCode)\n        this.dataRequest.workshopCode = this.$store.state.auth.user.workshopCode;\n        \n      this.displayFilter = false;\n      this.dataRequest.eventOrigins = null;\n      this.dataRequest.eventStatus = null;\n      this.dataResponse.totalRecords = null;\n      this.dataResponse.pageLength = 0;\n      this.dataRequest.pageStart = 0;\n      this.events = [];\n      this.loadEvents();\n    },\n\n     /**\n     * when filter changed \n     */\n    onFilterUpdated(filter){\n\n      filter.companyCode =this.$store.state.auth.user.companyCode;\n      this.dataRequest.workshopCode = filter.workshopCode;\n\n      if(filter.eventOrigins && filter.eventOrigins.length > 0)\n        this.dataRequest.eventOrigins = filter.eventOrigins;\n      else\n        this.dataRequest.eventOrigins = null;\n\n      if(filter.eventStatus && filter.eventStatus.length > 0)\n        this.dataRequest.eventStatus = filter.eventStatus;\n      else \n        this.dataRequest.eventStatus = null;\n      \n      this.dataResponse.totalRecords = 0;\n      this.dataResponse.pageLength = 0;\n      this.dataRequest.pageStart = 0;\n      this.events = [];\n      this.loadEvents();\n    },\n\n    initData() {\n      this.dataResponse.totalRecords = null;\n      this.dataResponse.pageLength = 0;\n      this.dataRequest.pageStart = 0;\n      this.events = [];\n    },\n\n    fetchComingEvents() {\n      this.initData();\n      // start of today\n      this.dataRequest.eventStartDate = moment().startOf(\"day\").format(\"DD/MM/YYYY HH:mm\");\n      this.dataRequest.eventEndDate = null;\n      this.dataRequest.sortDirection = \"ASC\";\n      this.loadEvents();\n    },\n\n    fetchTodayEvents() {\n      this.initData();\n      // start of today\n      this.dataRequest.eventStartDate = moment().startOf(\"day\").format(\"DD/MM/YYYY HH:mm\");\n      this.dataRequest.eventEndDate = moment().endOf(\"day\").format(\"DD/MM/YYYY HH:mm\");\n      this.dataRequest.sortDirection = \"Asc\";\n      this.loadEvents();\n    },\n\n    fetchDateRangeEvents(values) {\n      this.initData();\n      this.dataRequest.eventStartDate = moment(values.eventStartDate).startOf(\"day\").format(\"DD/MM/YYYY HH:mm\");\n      this.dataRequest.eventEndDate = moment(values.eventEndDate).endOf(\"day\").format(\"DD/MM/YYYY HH:mm\");\n      this.dataRequest.sortDirection = \"Asc\";\n      this.loadEvents();\n    },\n\n    fetchGoneEvents() {\n      this.initData();\n      this.dataRequest.eventStartDate = null;\n      this.dataRequest.eventEndDate = moment().startOf(\"day\").format(\"DD/MM/YYYY HH:mm\");\n      this.dataRequest.sortDirection = \"Desc\";\n      this.loadEvents();\n    },\n\n    loadEvents() {\n      \n      this.dataRequest.pageStart = this.dataRequest.pageStart + 1;\n      this.loading = true;\n      let request = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(this.dataRequest),\n      };\n\n      fetch(\"/api/event/search\", request)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if(response.ok) {\n            const data = await response.json();\n            this.dataResponse.totalRecords =  data.totalRecords ;\n            this.dataResponse.totalPages =  data.totalPages ;\n            this.dataResponse.pageStart = data.pageStart ;\n            this.dataResponse.pageLength = data.pageLength ;\n            this.dataResponse.endRecords = this.dataRequest.pageStart * this.dataRequest.pageLength;\n            this.events.push(...data.events); \n            this.loading = false;\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if(response.status == 401){\n            this.dataRequest.pageStart = 0;\n            this.$authTokenService.refreshToken(this.loadEvents.bind(this));\n            return;\n          } \n          this.loading = false;\n          this.message = this.$authTokenService.handleErrorResponse(response);\n      });\n    },\n\n    loadFirstAvailability() {\n\n      const firstAvailabilityObject = {\n        workshopCode: this.dataRequest.workshopCode,\n        companyCode: this.dataRequest.companyCode,\n      };\n\n      const firstAvailability = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(firstAvailabilityObject),\n      };\n\n      fetch(\"/api/workshop-calendar/first-availability\", firstAvailability)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if(response.status == 204){\n            // no content\n            this.firstAvailability = null;\n            return;\n          }\n          if(response.ok) {\n            this.firstAvailability = await response.json();\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if(response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadFirstAvailability.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    redirectToCreateEvent() {\n\n      if(this.currentUser.workshopCode && !this.firstAvailability){\n        this.canUserCreateEvent = false;\n        this.message = \"Votre atelier ne dispose d'aucune disponibilité\";\n        return;\n      }\n      // user not having workshopCode\n      if(!this.currentUser.workshopCode){\n        this.$router.push({ name: \"event-create\" });\n      }\n\n      // user having workshopCode & there are firstAvailability \n      if(this.currentUser.workshopCode && this.firstAvailability)\n        this.$router.push({\n          name: \"event-create\",\n          params: {\n            workshopCode: this.currentUser.workshopCode,\n            workshopCalendarId: this.firstAvailability.workshopCalendarId,\n          },\n        });\n\n    },\n\n  },\n};\n</script>\n\n<style lang=\"css\" scoped>\n\n.empty-message {\n  padding: 50px 0;\n}\n\n/*-------------------------------*/\n/*       Hamburger-Cross         */\n/*-------------------------------*/\n.hamburger {\n  position: fixed;\n  top: 90px;  \n  z-index: 999;\n  display: block;\n  width: 32px;\n  height: 32px;\n  background: transparent;\n  border: none;\n}\n.hamburger:hover,\n.hamburger:focus,\n.hamburger:active {\n  outline: none;\n}\n.hamburger.is-closed:before {\n  content: '';\n  display: block;\n  width: 100px;\n  font-size: 14px;\n  color: #fff;\n  line-height: 32px;\n  text-align: center;\n  opacity: 0;\n  -webkit-transform: translate3d(0,0,0);\n  -webkit-transition: all .35s ease-in-out;\n}\n.hamburger.is-closed:hover:before {\n  opacity: 1;\n  display: block;\n  -webkit-transform: translate3d(-100px,0,0);\n  -webkit-transition: all .35s ease-in-out;\n}\n\n.hamburger.is-closed .hamb-top,\n.hamburger.is-closed .hamb-middle,\n.hamburger.is-closed .hamb-bottom,\n.hamburger.is-open .hamb-top,\n.hamburger.is-open .hamb-middle,\n.hamburger.is-open .hamb-bottom {\n  position: absolute;\n  left: 0;\n  height: 4px;\n  width: 100%;\n}\n.hamburger.is-closed .hamb-top,\n.hamburger.is-closed .hamb-middle,\n.hamburger.is-closed .hamb-bottom {\n  background-color: #00203f;\n}\n.hamburger.is-closed .hamb-top { \n  top: 5px; \n  -webkit-transition: all .35s ease-in-out;\n}\n.hamburger.is-closed .hamb-middle {\n  top: 50%;\n  margin-top: -2px;\n}\n.hamburger.is-closed .hamb-bottom {\n  bottom: 5px;  \n  -webkit-transition: all .35s ease-in-out;\n}\n\n.hamburger.is-closed:hover .hamb-top {\n  top: 0;\n  -webkit-transition: all .35s ease-in-out;\n}\n.hamburger.is-closed:hover .hamb-bottom {\n  bottom: 0;\n  -webkit-transition: all .35s ease-in-out;\n}\n.hamburger.is-open .hamb-top,\n.hamburger.is-open .hamb-middle,\n.hamburger.is-open .hamb-bottom {\n  background-color: #00203f;\n}\n.hamburger.is-open .hamb-top,\n.hamburger.is-open .hamb-bottom {\n  top: 50%;\n  margin-top: -2px;  \n}\n.hamburger.is-open .hamb-top { \n  -webkit-transform: rotate(45deg);\n  -webkit-transition: -webkit-transform .2s cubic-bezier(.73,1,.28,.08);\n}\n.hamburger.is-open .hamb-middle { display: none; }\n.hamburger.is-open .hamb-bottom {\n  -webkit-transform: rotate(-45deg);\n  -webkit-transition: -webkit-transform .2s cubic-bezier(.73,1,.28,.08);\n}\n.hamburger.is-open:before {\n  content: '';\n  display: block;\n  width: 100px;\n  font-size: 14px;\n  color: #fff;\n  line-height: 32px;\n  text-align: center;\n  opacity: 0;\n  -webkit-transform: translate3d(0,0,0);\n  -webkit-transition: all .35s ease-in-out;\n}\n.hamburger.is-open:hover:before {\n  opacity: 1;\n  display: block;\n  -webkit-transform: translate3d(-100px,0,0);\n  -webkit-transition: all .35s ease-in-out;\n}\n</style>","<template>\n\n  <div class=\"media-event-container\" ref=\"mediaEventContainer\">\n    <div v-for=\"(event, index) in events\" :key=\"index\" v-auto-animate>\n\n      <!-- day top-bar -->\n      <div class=\"card-bar\" v-if=\"index == 0 && event\">\n        \n        <span class=\"text-capitalize fs-14 fw-600\">{{formatDate(event.eventDate, 'DD/MM/YYYY')}}\n          <i class=\"mdi mdi-circle me-1 text-gray \" v-if=\"isToday(event.eventDate, 'DD/MM/YYYY') == true\" />\n        </span> \n        \n      </div>\n\n      <div class=\"card-bar\" v-else-if=\"isSameWithPreviousDate(index) == false\">\n        <span class=\"text-capitalize fs-14 fw-600\">{{formatDate(event.eventDate, 'DD/MM/YYYY')}}\n          <i class=\"mdi mdi-circle me-1 text-gray \" v-if=\"isToday(event.eventDate, 'DD/MM/YYYY') == true\" />\n        </span> \n        \n      </div>\n\n      <!-- event -->\n      <div :id=\"index\" class=\"flexbox ps-3 p-2 pe-3 media-event align-items-center text-lighter\" ref=\"eventItem\" v-on:click=\"displayEventPage(event.eventCode)\"\n          :class=\"[event && event.eventStatusName === 'CREATED' ? 'border-left-orange' : '']\">\n        \n        \n        <div class=\"col-3\">\n          <ul class=\"list-unstyled\">\n            <li class=\"fs-17\">\n              <span class=\"me-2 d-none\">{{event.index+1}}</span> \n              <span>  {{formatTime(event.eventTime, 'HH:mm')}} </span>\n            </li>\n            <li v-show=\"currentUser != undefined\">\n              <span class=\"text-uppercase\"> {{event.workshop.workshopName}} </span>\n            </li>\n          </ul>\n        </div>\n\n        <div class=\"col-3\">\n          <ul class=\"list-unstyled\">\n            <li><span class=\"text-uppercase fs-17\"> {{event.client.clientName}} {{event.client.clientFirstName}} </span> </li>\n            <li>\n              <span class=\"\">{{event.vehicle.mark}} - {{event.vehicle.model}}</span>\n              <small class=\"fst-italic minus-separator\">{{event.vehicle.registrationNumber}}</small>\n            </li>\n          </ul>\n        </div>\n\n        <div class=\"col-1 text-center\" v-tippy=\"{ content: formatTooltipContent(event.prestations) , placement:'top' }\">\n          <span class=\"badge badge-pill bg-gray\" v-if=\"event.eventStatusName=='CREATED'\">{{localFormatTime(event.eventDuration)}}</span>\n          <span class=\"badge badge-pill bg-gray\" v-else>{{localFormatTime(event.eventCharge)}}</span>\n        </div>\n\n        <div class=\"col-1 text-center\">\n          <span class=\"text-gray fs-25\" v-if=\"event.originName == 'WEB_INTERFACE'\" v-tippy=\"{ content: 'Interface web' , placement:'top' }\">\n            <i class=\"mdi mdi-web\" />\n          </span>\n          <span class=\"text-gray fs-28\" v-else-if=\"event.originName == 'MANAGER'\" v-tippy=\"{ content: 'Interface manager' , placement:'top' }\" >\n            <i class=\"mdi mdi-face-agent\" />\n          </span>\n        </div>\n\n        <div class=\"col-1 text-center\">\n          <span v-if=\"event.eventStatusName=='CREATED'\" class=\"badge badge-pill bg-orange\">{{event.eventStatusValue}}</span>\n          <span v-if=\"event.eventStatusName=='VALIDATED'\" class=\"badge badge-pill bg-blue\">{{event.eventStatusValue}}</span>\n          <span v-if=\"event.eventStatusName=='REVOCATED'\" class=\"badge badge-pill bg-red\">{{event.eventStatusValue}}</span>\n        </div>\n        \n      </div>\n\n    </div>\n  </div>\n\n</template>\n\n<script>\nimport * as moment from \"moment\";\nimport HelperService from \"../../../services/helper.service.js\";\n\nexport default {\n\n  name: \"EventsList\",\n\n  emits:['load-event'],\n\n  setup() {\n    moment.locale('fr');\n  },\n\n  props: {\n    events: {\n      type: Array,\n      note:\"Array of events group by date\",\n      default() {\n        return [];\n      },\n    },\n    dataResponse: {\n      type: Object,\n    }\n  },\n\n  beforeUnmount() {\n    if (this.observer) {\n      var eventList = this.$refs.eventItem;\n      if(eventList && eventList.length > 0)\n        var lastEvent = this.$refs.eventItem[this.$refs.eventItem.length - 1];\n        if(lastEvent)\n          this.observer.unobserve(lastEvent);\n    }\n  },\n\n  created(){\n    this.moment = moment;\n  },\n\n  updated(){\n\n    const rootElement = this.$refs.mediaEventContainer;\n    this.observer = new IntersectionObserver(\n      entries => {\n        const lastEvent = entries[0];\n        if(!lastEvent.isIntersecting) return;\n        if(lastEvent.isIntersecting && this.dataResponse.endRecords < this.dataResponse.totalRecords) {          \n         this.observer.unobserve(lastEvent.target);\n          this.$emit('load-event');\n        }\n      }, \n      {\n        root: rootElement,\n        threshold:1\n      }\n    );\n\n    var eventList = this.$refs.eventItem;\n    if(eventList && eventList.length > 0){\n      var lastEvent = this.$refs.eventItem[this.$refs.eventItem.length - 1];\n      if(lastEvent){\n        this.observer.observe(lastEvent);\n      }\n    }\n\n  },\n\n  computed: {\n    currentUser() {\n      return this.$store.state.auth.user;\n    },\n  },\n\n  methods: {\n\n    localFormatTime : HelperService.formatTime,\n\n    formatDate(value, pattern){\n      return moment(value, pattern).format('dddd, DD MMMM YYYY');\n    },\n\n    isSameWithPreviousDate(index){\n      if(index>1 && this.events[index].eventDate ===  this.events[index-1].eventDate)\n        return true;\n      else return false;\n    },\n\n    isToday(value, pattern){\n      var now = moment();\n      return moment(value, pattern).isSame(now);\n    },\n\n    formatTime(value, pattern){\n      return moment(value, pattern).format('HH[h]mm');\n    },\n\n    displayEventPage(eventCode){\n      this.$router.push({ name: 'event', params: { eventCode: eventCode } })\n    },\n\n    formatTooltipContent(prestations){\n      var element = '<ul class=\"list-unstyled\">';\n      for (let index = 0; index < prestations.length; index++) {\n         element += '<li>' + prestations[index] + '</li>';\n      }\n      element += '</ul>';\n      return element;\n    }\n\n  },\n\n};\n</script>\n\n<style lang=\"css\" scoped>\n.card-bar {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  width: 100%;\n  padding: 10px 10px;\n  background-color: #fcfdfe;\n  border-bottom: 1px solid #f2f2f2;\n}\n.list-unstyled {\n  margin: 0 !important;\n}\n\n.media-event {\n  cursor: pointer;\n  border-bottom: 1px solid #f2f2f2;\n}\n.media-event:hover {\n  background-color: #f9fafb;\n}\n\n.bg-green-lighter{\n  background-color: #baf0eb;\n}\n\n.media-event-container {\n  max-height: 800px;\n  overflow-y: scroll;\n  padding-bottom: 1px;\n}\n</style>","\nclass HelperService {\n\n  formatTime(minute) {\n\n    if(minute<=0)\n      return '0 h';\n\n    var result = \"0\";\n    var hours = parseInt(minute / 60); \n    var minutes = parseInt(minute % 60);\n\n    if(Math.abs(hours) >= 1)\n      result = Number(result) + hours + \" h \";\n\n    if(minutes>0 && minutes<10)\n      result = result + \"0\" + Math.abs(minutes) + \" \";\n\n    if(minutes>10)\n      result = result + Math.abs(minutes) + \" \";\n    \n     if(minutes>0 && hours==0)\n      result = minutes + \" min\";\n\n    if(minutes==0 && hours==0)\n      result=\"0 h\";\n      \n    return result;\n  }\n\n}\n\nexport default new HelperService();","import { render } from \"./EventsList.vue?vue&type=template&id=90667f8c&scoped=true\"\nimport script from \"./EventsList.vue?vue&type=script&lang=js\"\nexport * from \"./EventsList.vue?vue&type=script&lang=js\"\n\nimport \"./EventsList.vue?vue&type=style&index=0&id=90667f8c&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-90667f8c\"]])\n\nexport default __exports__","<template>\n  <div class=\"card shadow-1 form-type-material \" v-auto-animate>\n  \n    <div class=\"card-header\">\n        Filtres\n       <div class=\"float-end\"> <i class=\"mdi mdi-close fs-22 cursor-pointer\" @click=\"$emit('filter-closed')\" v-tippy=\"{ content: 'Fermer' , placement:'top' }\"/></div>\n    </div>  \n\n    <div class=\"card-body \">\n      <Form :validation-schema=\"filterSchema\" v-slot=\"{ errors }\" >\n\n        <!-- workshop-->\n        <div class=\"nav-item form-group\" v-if=\"workshops && workshops.length > 1 && !this.$store.state.auth.user.workshopCode\">\n          <Field name=\"workshopCode\" v-model=\"workshopCode\"  v-slot=\"{handleChange, value}\">\n            <CustomSelect \n              :modelValue=\"value\"\n              @value-updated=\"(value)=> {handleChange(value); createFilter()}\"\n              :options=\"workshops\"\n              name=\"workshopCode\"\n              :error=\"errors.workshopCode\"\n              classStyle=\"form-control\"\n              :clearable=\"true\"\n              />\n          </Field>\n          <label class=\"floating-label\" for=\"workshopCode\">Atelier</label>\n          <ErrorMessage name=\"workshopCode\" class=\"d-flex invalid-feedback\" />\n        </div>\n\n        <div class=\"\">\n          <div class=\"opacity-50\">Status</div>\n          <div class=\"pt-1\" v-for=\"status in eventStatuses\" :key=\"status\">\n            <div class=\"text-capitalize d-flex align-items-center mb-1\">\n              <input type=\"checkbox\" class=\"form-checkbox\" name=\"status\" :checked=\"selectedStatuses.indexOf(status.name) >-1\" :value=\"status.value\" @click=\"addToSelectedStatus(status.name)\"/> \n              <span :class=\"'ms-2 badge badge-pill '+status.style\">{{status.value}} </span>\n            </div>\n          </div>\n        </div>\n\n        <div class=\"\">\n          <hr />\n          <div class=\"opacity-50\">Provenance</div>\n          <div v-for=\"origin in eventOrigins\" :key=\"origin\">\n            <div class=\"d-flex align-items-center text-gray\">\n              <input type=\"checkbox\" class=\"form-checkbox\" name=\"origin\" :checked=\"selectedOrigins.indexOf(origin.name) >-1\" :value=\"origin.value\" @click=\"addToSelectedOrigin(origin.name)\"/> \n              <span class=\"ms-2 fs-17 text-lighter\"><i :class=\"origin.icon\" /></span>\n              <span>{{origin.value}}</span>  \n            </div>\n          </div>\n        </div>\n\n      </Form>\n      <!-- error message -->\n      <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n    </div>\n\n  </div>\n</template>\n\n<script>\n\nimport CustomSelect from '../../common/CustomSelect.vue';\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name:\"EventFilter\",\n\n  emits:[\"event-filter-updated\", \"filter-closed\"],\n\n  props:{\n\n    disableSubmit:{\n      type:Boolean,\n      required:false,\n      default:() => false\n    },\n  },\n\n  components: {\n    CustomSelect,\n    Form,\n    Field,\n    ErrorMessage,\n    CustomMessage\n  },\n\n  setup(){\n    const filterSchema = Yup.object().shape({ workshopCode: Yup.string()});\n    return{filterSchema}\n  },\n\n  data(){\n    return {\n      companyCode: this.$store.state.auth.user.companyCode,\n      workshops:[],\n      workshopCode:\"\",\n      eventStatuses:[{name:'CREATED', value:\"Nouveau\", style:\"bg-orange\"}, {name:'VALIDATED', value:\"Validé\", style:\"bg-blue\"}, {name:'REVOCATED', value:\"Annulé\", style:\"bg-red\"}],\n      eventOrigins:[{name:'WEB_INTERFACE', value:\"Interface web\" , icon:\"mdi mdi-web me-1 fs-17\"}, {name:'MANAGER', value:\"Interface manager\",icon:\"mdi mdi-face-agent  me-1 fs-17\"}],\n      selectedOrigins: [],\n      selectedStatuses: [],\n      message: \"\",\n    }\n  },\n\n  created(){\n    this.loadWorkshops();\n  },\n\n  methods:{\n\n    addToSelectedStatus(Status){\n      if(this.selectedStatuses.indexOf(Status) == -1)\n        this.selectedStatuses.push(Status);\n      else this.removeStatusOnce(Status);\n       this.createFilter();\n    },\n\n    removeStatusOnce(status){\n      var index = this.selectedStatuses.indexOf(status);\n      if(index > -1) \n        this.selectedStatuses.splice(index, 1);\n    },\n\n    addToSelectedOrigin(origin){\n      if(this.selectedOrigins.indexOf(origin) == -1)\n        this.selectedOrigins.push(origin);\n      else this.removeOriginOnce(origin);\n      this.createFilter();\n    },\n\n    removeOriginOnce(origin){\n      var index = this.selectedOrigins.indexOf(origin);\n      if(index > -1) \n        this.selectedOrigins.splice(index, 1);\n    },\n\n    createFilter(){\n\n      var filterRequest = {};\n\n      // workshop code\n      if(this.$store.state.auth.user.workshopCode)\n        filterRequest.workshopCode = this.$store.state.auth.user.workshopCode\n      else if(this.workshopCode)\n        filterRequest.workshopCode = this.workshopCode;\n\n      if(this.selectedOrigins.length>0)\n        filterRequest.eventOrigins = this.selectedOrigins;\n\n      if(this.selectedStatuses.length > 0)\n        filterRequest.eventStatus = this.selectedStatuses;\n\n      this.$emit(\"event-filter-updated\", filterRequest);\n    },\n\n    loadWorkshops() {\n\n      let workshopsReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n          Authorization: this.$authTokenService.authToken()\n        },\n      };\n\n      fetch(\"/api/workshop/workshops/enabled/\"+this.companyCode, workshopsReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if(response.ok){\n            const results = await response.json();\n            this.workshops = results.map(workshop => {                                     \n              return {\n                text: workshop.workshopName,                              \n                value: workshop.workshopCode                               \n              };\n            });\n            return;\n          } else {\n            return Promise.reject(response);\n          }\n        }).catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadWorkshops.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n      });\n      \n    },\n\n  }\n\n\n\n}\n</script>\n\n<style scoped>\n\ninput[type=\"checkbox\"] {\n  filter: grayscale(1) !important;\n  cursor: pointer;\n}\n.card-header{\n  padding: 16px 16px;\n  color: #8b95a5;\n}\n</style>","<template> \n  <div class=\"custom-select\"  :class=\"[ {'has-value': selectedValue}, {'is-invalid': error && !selectedValue}, classStyle ]\" >\n\n    <div class=\"dropdown cursor-pointer\" >   \n      \n      <button class=\"btn dropdown-toggle btn-default\" type=\"button\" id=\"dropdownMenuProfile\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"\n        :class=\"[selectedValue && clearable == true? 'hide-content':'']\">\n        <span>{{selectedOptionText}}</span>\n      </button>\n      \n      <span  v-if=\"selectedValue && clearable == true\" class=\"mdi mdi-close close-icon fs-16 cursor-pointer\" @click=\"selectOption('')\"></span>\n      \n      <ul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuProfile\" ref=\"DropdownMenu\">\n        <li class=\"dropdown-item\" v-for=\"option in options\" :key=\"option.value\" @click=\"selectOption(option.value)\">\n          <a> {{option.text}} </a>\n        </li>\n      </ul>\n\n    </div>\n\n  </div>\n  <label v-if=\"label\" class=\"floating-label\" for=\"country\">{{label}}</label>\n  <span  v-if=\"displayError && error\" class=\"error\">{{error}}</span>\n\n</template>\n\n<script>\n\nexport default {\n  \n  name: 'CustomSelect',\n\n  $_veeValidate: {\n    name() {\n      return this.label;\n    },\n    value() {\n      return this.selectedValue;\n    }\n  },\n\n  props: {\n    label: { required: false },\n    name:  { required: true },\n    options: { type: Array, required: true },\n    modelValue: { required: true },\n    classStyle: { required: false },\n    error: { required: true },\n    displayError: { type: Boolean, required: false, default(){ return false; } },\n    clearable: {required: false, default: () => false},\n    autoSelected: { type:Boolean, default: () => false },\n  },\n\n  emits:['value-updated'],\n\n  data() {\n    return {\n      selectedValue: this.modelValue,\n    };\n  },\n\n  computed: {\n    selectedOptionText() {\n      if(this.options && this.options.length > 0){\n        const selectedOption = this.options.find(option => option && option.value === this.selectedValue);\n        return selectedOption ? selectedOption.text : '';\n      }\n      return '';\n    }\n  },\n\n  updated(){\n\n    if(this.modelValue && !this.selectedValue){\n      this.selectedValue = this.modelValue;\n      return;\n    }\n\n    // auto select if only one option is present\n    if(this.options.length == 1 && this.options[0] !== ''){\n      if(this.autoSelected == true && !this.selectedValue){\n        this.selectedValue = this.options[0].value;\n        this.$emit('value-updated', this.selectedValue);\n        return;\n      }\n    }\n    \n    // If there are multiple options, the first option is an empty string, and modelValue doesn't exist,\n    // set selectedValue to an empty string\n    if(this.options.length > 1 && this.options[0]=== '' &&  !this.modelValue){\n      this.selectedValue = \"\";\n      return;\n    }\n\n    // we set out selected value to empty when we have option and model value not exist\n    if(this.options.length > 0 && !this.modelValue){\n      this.selectedValue = \"\";\n      return;\n    }\n\n     // if there are no options and we have a selected value then we need to refresh the selected value\n     if(this.options.length === 0 && this.selectedValue){\n      this.selectedValue = \"\";\n      return;\n    }\n\n    \n  },\n\n\n  methods: {\n\n    selectOption(value) {\n      if(value)\n        this.$refs.DropdownMenu.classList.remove(\"show\");\n      this.selectedValue = value;\n      this.$emit('value-updated', value);\n    },\n\n  },\n  \n}\n</script>\n\n<style scoped>\n\n/* custom-select */\n\n.custom-select {\n\tborder: none;\n\tborder-bottom: 1px solid #D6D6D6;\n\tfont-weight: 400;\n\twidth: 100% !important;\n\tborder-radius: 0;\n\tpadding:  0px;\n  height: 36px;\n}\n\n.custom-select.is-invalid {\n  border-color: #f96868;\n}\n\n.custom-select~.label {\n  left:16px\n}\n\n.custom-select .dropdown-toggle {\n  display: flex;\n  position: relative;\n  width: 100%;\n  text-align: left;\n  white-space: nowrap;\n  justify-content : space-between;\n  align-items: center;\n  border: none;\n  border-radius: 0px;\n  height: 30px;\n  padding: 2px 0px;\n  color: #212529;\n}\n\n.custom-select .dropdown .dropdown-toggle::after {\n  margin-right: 4px;\n}\n\n.custom-select .dropdown .dropdown-toggle.hide-content::after {\n  display: none;\n}\n.custom-select .close-icon {\n  position: absolute;\n  right: 0px;\n  top: 3px;\n  color: #00203f;\n}\n\n.custom-select .dropdown-toggle,\n.custom-select .dropdown-toggle:hover{\n\tbackground-color: transparent !important;\n\toutline: none !important;\n\t-webkit-box-shadow: none !important;\n\tbox-shadow: none !important;\n}\n\n.custom-select .dropdown-menu {\n\tmin-height: 19px;\n\tpadding: 0px;\n\tborder-radius: 0px;\n\tmax-height: 200px;\n\toverflow-y: auto;\n\tmin-height: 92px;\n\tmin-width: 100%;\n\ttransform: translate3d(0px, 30px, 0px) !important;\n}\n\n.custom-select .dropdown-menu li{\n\tpadding-left: 0px;\n}\n\n.custom-select .dropdown-menu li a {\n  font-weight: 400;\n  line-height: 18px;\n  padding: 3px 3px 3px 10px;\n  min-height: 19px;\n  box-sizing: content-box;\n}\n\n.custom-select.has-value~.floating-label {\n\tfont-size: 11px;\n  font-weight: 400;\n  top: -4px;\n}\n\n.error {\n  color: #f96868;\n  font-size: 13px;\n  font-weight: 300;\n  margin: 0;\n}\n\n\n</style>\n","import { render } from \"./CustomSelect.vue?vue&type=template&id=6f6eaac6&scoped=true\"\nimport script from \"./CustomSelect.vue?vue&type=script&lang=js\"\nexport * from \"./CustomSelect.vue?vue&type=script&lang=js\"\n\nimport \"./CustomSelect.vue?vue&type=style&index=0&id=6f6eaac6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6f6eaac6\"]])\n\nexport default __exports__","import { render } from \"./EventFilter.vue?vue&type=template&id=00c7d9fa&scoped=true\"\nimport script from \"./EventFilter.vue?vue&type=script&lang=js\"\nexport * from \"./EventFilter.vue?vue&type=script&lang=js\"\n\nimport \"./EventFilter.vue?vue&type=style&index=0&id=00c7d9fa&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-00c7d9fa\"]])\n\nexport default __exports__","import { render } from \"./Events.vue?vue&type=template&id=f2c3130e&scoped=true\"\nimport script from \"./Events.vue?vue&type=script&lang=js\"\nexport * from \"./Events.vue?vue&type=script&lang=js\"\n\nimport \"./Events.vue?vue&type=style&index=0&id=f2c3130e&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f2c3130e\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"container\">\n\n    <div class=\"row my-3\" v-if=\"event!=''\" v-auto-animate>\n\n      <div :class=\"event.eventStatusName=='REVOCATED' ? 'col-lg-12 col-xl-12' : 'col-lg-8 col-xl-9'\">\n\n          <!-- event -->\n          <div class=\"card shadow-1\">\n              \n            <header class=\"card-header p-0\">\n              <div class=\"card-title flexbox align-items-center\" :class=\"event.eventStatusName =='CREATED' ? 'border-left-orange' : ''\">\n                <div class=\"text-capitalize fs-17\">\n                  {{formatDateText(event.eventDate, 'DD/MM/YYYY')}}\n                  <i class=\"mdi mdi-clock-outline ms-1 me-1\" />\n                  {{formatTime(event.eventTime, 'HH:mm')}}\n                  <!-- passedEventBeforeTenDays -->\n                  <!-- passedEventBeforeTenDays == false && event.eventStatusName != 'REVOCATED' \" -->\n                  <span class=\"btn btn-float btn-float-xs btn-custom shadow-none ms-3\" @click=\"updateEventDate()\" \n                    v-if=\"displayMoveEvent(event)\"> \n                    <i class=\"mdi mdi-clock-edit-outline fs-18\"/>\n                  </span>\n                </div>\n                <div class=\"fs-15\">\n                  <span class=\"badge badge-pill bg-gray\" v-if=\"event.eventStatusName=='CREATED'\">{{minuteToHour(event.eventDuration)}}</span>\n                  <span class=\"badge badge-pill bg-gray\" v-else>{{minuteToHour(event.eventCharge)}}</span>\n                </div>\n              </div>\n            </header>\n\n            <div class=\"card-body\">\n              \n              <div class=\"flexbox\">\n\n                <!-- workshop -->\n                <div class=\"col-4\">\n                  <ul class=\"list-unstyled\">\n                    <li class=\"mb-2\">\n                      <span class=\"text-uppercase fs-15\">{{event.workshop.workshopName}}</span>\n                    </li>\n                    <li class=\"text-break\">\n                      <i class=\"mdi mdi-map-marker-outline \" /> {{event.workshop.workshopAddress}}\n                    </li>\n                  </ul>\n                </div>\n\n                <!-- client -->\n                <div class=\"col-4 cursor-pointer \" @click=\"redirectToClientPage\">\n                  <ul class=\"list-unstyled\">\n                    <li class=\"mb-2\">\n                      <span class=\"text-uppercase fs-15\" \n                        v-tippy=\"{ content: '<span>Consultez la fiche client</span>' , placement:'left' }\"> \n                        {{event.client.clientName}}\n                        <i v-if=\"event.client.clientSocietyName\">- ({{event.client.clientSocietyName}}) </i>\n                      </span> \n                    </li>\n                    <li> \n                      <span class=\"\">\n                        <i class=\"mdi mdi-cellphone \" /> {{event.client.mobile}}\n                      </span> \n                    </li>\n                    <li>\n                      <span class=\"\">\n                        <i class=\"mdi mdi-email-outline \" /> {{event.client.email}} \n                      </span>\n                    </li>\n                  </ul>\n                </div>\n\n                <!-- vehicle -->\n                <div class=\"col-4\">\n                  <ul class=\"list-unstyled\">\n                    <li class=\"mb-2\">\n                      <span class=\"text-uppercase fs-15\"> \n                        {{event.vehicle.mark}} - {{event.vehicle.model}}\n                        </span>\n                    </li>\n                    <li>\n                      <span class=\"\"> \n                        {{event.vehicle.registrationNumber}}\n                      </span> \n                    </li>\n                    <li>\n                      <span class=\"\"> \n                        {{event.vehicle.kilometers}} km\n                      </span>\n                    </li>\n                      <li v-if=\"event.vehicle.vin\" v-tippy=\"{ content: `<small>Numéro d'identification du véhicule(VIN)</small>` , placement:'left' }\">\n                      <span class=\"\" > \n                        {{event.vehicle.vin}}\n                      </span>\n                    </li>\n\n                    <li v-if=\"event.vehicle.inServiceDate\" v-tippy=\"{ content: `<small>Date de mise en circulation</small>` , placement:'left' }\">\n                      <span class=\"\" > \n                        {{event.vehicle.inServiceDate}}\n                      </span>\n                    </li>\n                  </ul>\n                </div>\n\n              </div>\n\n              <hr/>\n\n              <div class=\"\" v-auto-animate>\n\n                <!-- creation date -->\n                <dl class=\"flexbox m-0\">\n                  <dt class=\"col-3 col-md-2 fs-12\">Pris le :</dt>\n                  <dd class=\"col-9 col-md-10\">\n                    {{ formatDate(event.creationDate, 'DD/MM/YYYY HH:mm') }} <i class=\"mdi mdi-clock-outline\" />\n                    {{ formatTime(event.creationDate, 'DD/MM/YYYY HH:mm') }}\n                  </dd>\n                </dl>\n\n                <!-- statut -->\n                <dl class=\"flexbox m-0\">\n                  <dt class=\"col-3 col-md-2 fs-12\">Statut :</dt>\n                  <dd class=\"col-9 col-md-10\">\n                    <span v-if=\"event.eventStatusName=='CREATED'\" class=\"badge badge-pill bg-orange\">{{event.eventStatusValue}}</span>\n                    <span v-if=\"event.eventStatusName=='VALIDATED'\" class=\"badge badge-pill bg-blue\">{{event.eventStatusValue}}</span>\n                    <span v-if=\"event.eventStatusName=='REVOCATED'\" class=\"badge badge-pill bg-red\">{{event.eventStatusValue}}</span>\n                  </dd>\n                </dl>\n\n                <dl class=\"flexbox m-0\">\n                  <dt class=\"col-3 col-md-2 fs-12\">Provenance :</dt>\n                  <dd class=\"col-9 col-md-10\">\n                    <span v-if=\"event.originName == 'WEB_INTERFACE'\"><i class=\"mdi mdi-web me-1 fs-14\" /></span>\n                    <span v-if=\"event.originName == 'MANAGER'\"><i class=\"mdi mdi-face-agent me-1 fs-17\" /></span>\n                    <span class=\"text-uppercase\">{{event.originValue}}</span>\n                  </dd>\n                </dl>\n\n                <dl class=\"flexbox m-0\" v-if=\"event.user != undefined\">\n                  <dt class=\"col-3 col-md-2 fs-12\">Créateur :</dt>\n                  <dd class=\"col-9 col-md-10\">\n                    <span class=\"text-capitalize\">{{event.user.userFirstName}} {{event.user.userLastName}}</span>\n                    <small class=\"minus-separator fst-italic\">{{event.user.roleValue}}</small> \n                  </dd>\n                </dl>\n\n                <dl class=\"flexbox m-0\" v-if=\"event.eventCharge\">\n                  <dt class=\"col-3 col-md-2 fs-12\">Charge de travail initiale :</dt>\n                  <dd class=\"col-9 col-md-10\"><p class=\"m-0\">{{minuteToHour(event.eventDuration)}}</p></dd>\n                </dl>\n\n                <dl class=\"flexbox m-0\" v-if=\"event.vehicleLoaner\">\n                  <dt class=\"col-3 col-md-2 fs-12\">Véhicule de courtoisie :</dt>\n                  <dd class=\"col-9 col-md-10\"><i class=\"mdi mdi-checkbox-marked-outline fs-17\" /></dd>\n                </dl>\n\n                <dl class=\"flexbox m-0\">\n                  <dt class=\"col-3 col-md-2 fs-12\">Prestations :</dt>\n                  <dd class=\"col-9 col-md-10 m-0\">\n                    <ul class=\"list-unstyled\">\n                      <li v-for=\"prestation in event.prestations\" :key=\"prestation\">{{ prestation }}</li>\n                    </ul>\n                  </dd>\n                </dl>\n\n                <dl class=\"flexbox m-0\" v-if=\"event.eventComment !==''\">\n                  <dt class=\"col-3 col-md-2 fs-12\">Commentaire :</dt>\n                  <dd class=\"col-9 col-md-10\"><p class=\"m-0\">{{ event.eventComment }}</p></dd>\n                </dl>\n\n              </div>\n\n            </div>\n\n            <!-- error message -->\n            <CustomMessage v-if=\"message\" :cssClass=\"'p-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n          </div>\n      \n        <!-- event-action -->\n        <EventAction v-for=\"eventAction in eventActions\" :key=\"eventAction\" v-bind:action=\"eventAction\" />\n\n      </div>\n\n      <div class=\"col-lg-4 col-xl-3\" v-if=\"event.eventStatusName!='REVOCATED'\">\n        \n        <!-- #f2f2f2 -->\n        <div class=\"card\">\n          \n          <ul class=\"nav nav-tabs\" role=\"tablist\">\n\n            <li class=\"nav-item col-6\" v-if=\"validationActionEnabled(event)\">\n              <a id=\"event-validation-tab\" class=\"nav-link\" :class=\"validationActionEnabled(event) ? 'active' : ''\"\n                  data-bs-toggle=\"tab\" data-bs-target=\"#event-validation\" role=\"tab\" aria-controls=\"event-validation\" aria-selected=\"true\">\n                Validation\n              </a>\n            </li>\n\n            <li class=\"nav-item col-6\" v-if=\"revocationActionEnabled(event)\">\n              <a id=\"event-revocation-tab\" class=\"nav-link\" :class=\"validationActionEnabled(event) ? '' : 'active'\"\n                  data-bs-toggle=\"tab\" data-bs-target=\"#event-revocation\" role=\"tab\" aria-controls=\"event-revocation\" aria-selected=\"true\">\n                Annulation\n              </a>\n            </li>\n\n          </ul>\n\n          <div class=\"tab-content\">\n\n            <!-- event validation form -->\n            <div v-if=\"validationActionEnabled(event)\" id=\"event-validation\" class=\"tab-pane fade\" :class=\"validationActionEnabled(event) ? 'active show' : ''\"\n                role=\"tabpanel\" aria-labelledby=\"event-validation\">\n              <EventValidateForm v-bind:eventCode=\"event.eventCode\" v-bind:duration=\"event.eventDuration\" v-bind:workshopCode=\"event.workshopCode\"\n                v-on:event-action-validated=\"loadEvent(eventCode)\"/>\n            </div>\n\n            <!-- event revocation form -->\n            <div v-if=\"revocationActionEnabled(event)\" id=\"event-revocation\" class=\"tab-pane fade\" :class=\"validationActionEnabled(event) ? '' : 'active show'\"\n                role=\"tabpanel\" aria-labelledby=\"event-revocation\">\n              <EventRevocationForm v-bind:eventCode=\"event.eventCode\" v-bind:workshopCode=\"event.workshopCode\"\n                v-on:event-action-revocated=\"loadEvent(eventCode)\" />\n            </div>\n\n          </div>\n        \n        </div>\n\n      </div>\n\n      <!-- loader -->\n      <div v-show=\"loading\" class=\"loading reveal\">\n        <span class=\"spinner-border\" role=\"status\"></span>\n      </div>\n\n    </div>\n\n  </div>\n\n</template>\n\n<script>\n\nimport { useRoute } from \"vue-router\";\nimport * as moment from \"moment\";\nimport EventValidateForm from \"./event/EventValidateForm.vue\";\nimport EventRevocationForm from \"./event/EventRevocationForm.vue\";\nimport EventAction from \"./event/EventAction.vue\";\nimport HelperService from \"../../services/helper.service.js\";\nimport CustomMessage from '../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"Event\",\n\n  setup() {\n    moment.locale('fr');\n  },\n\n  data() {\n    const data = {\n      eventCode : \"\",\n      event: \"\",\n      eventActions : [],\n      loading: false,\n      message: \"\",\n    }\n    return data;\n  },\n\n  components: {\n    EventValidateForm,\n    EventRevocationForm,\n    EventAction,\n    CustomMessage\n  },\n\n  created() {\n    this.eventCode = useRoute().params.eventCode;\n    this.loadEvent(this.eventCode);\n  },\n\n  computed:{\n    // we can move a recent event (10 days in the past)\n    passedEventBeforeTenDays(){\n      let beforeNow = moment().subtract(11,\"days\");\n      var beforeToday =  moment(this.event.eventDate, \"DD/MM/YYYY\").isBefore(beforeNow);\n      return beforeToday;\n    },\n    \n  },\n\n\n  methods: {\n\n    minuteToHour : HelperService.formatTime,\n\n    redirectToClientPage(){\n      this.$router.push({name:\"client\", params:{clientCode : this.event.client.clientCode} });\n    },\n\n    updateEventDate(){\n      this.$router.push({name:\"event-move\", params:{workshopCode : this.event.workshopCode, eventCode: this.event.eventCode} });\n    },\n\n    formatDateText(value, pattern){\n      return moment(value, pattern).format('dddd, DD MMMM YYYY');\n    },\n\n    formatDate(value, pattern){\n      return moment(value, pattern).format('DD/MM/YYYY');\n    },\n\n    formatTime(value, pattern){\n      return moment(value, pattern).format('HH[h]mm');\n    },\n\n    validationActionEnabled(event){\n      if(event.eventDuration && event.eventStatusName=='CREATED')\n        return true;\n      return false;\n    },\n\n    revocationActionEnabled(event){\n      if(event.eventStatusName!='REVOCATED')\n        return true;\n      return false;\n    },\n\n    loadEvent(eventCode) {\n      this.loading = true;\n      let loadEventReq = {\n        method: \"GET\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()}\n      };\n      fetch(\"/api/event/get-event/\"+this.$store.state.auth.user.companyCode+\"/\"+eventCode, loadEventReq)\n        .then( async response => {\n          this.loading = false;\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok){\n            this.event = await response.json();\n            this.loadEventAction(eventCode);\n            return;\n          } \n          return Promise.reject(response);\n        })\n        .catch( (response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadEvent.bind(this, eventCode));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    loadEventAction(eventCode) {\n      this.loading = true;\n      let loadEventReq = {\n        method: \"GET\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()}\n      };\n      fetch(\"/api/event/actions/\"+this.$store.state.auth.user.companyCode+\"/\"+eventCode, loadEventReq)\n        .then( async response => {\n          this.loading = false;\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if(response.ok){\n            this.eventActions = await response.json();\n            return;\n          }\n          return Promise.reject(response); \n        })\n        .catch( (response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadEventAction.bind(this, eventCode));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    displayMoveEvent(event){\n\n      if(this.$store.state.auth.user.companyStatus == 'DISABLED')\n        return false;\n\n      if(this.passedEventBeforeTenDays)\n        return false;\n\n      if(event.eventStatusName == 'REVOCATED')\n        return false;\n\n      return true;\n    },\n\n  },\n\n};\n\n</script>\n\n<style lang=\"css\" scoped>\n\n</style>","<template>\n\n  <Form v-on:submit=\"handleEventActionValidate\" :validation-schema=\"eventValidateFormSchema\" v-slot=\"{ errors }\">\n           \n    <div class=\"card-body \">\n\n      <!-- Charge de travail -->\n      <div class=\"do-float form-type-material form-group\">\n        <label class=\"\"> Charge de travail:</label>\n      </div>\n      <Field type=\"number\" class=\"form-control\" name=\"eventCharge\" :class=\"{ 'is-invalid': errors.eventCharge }\" hidden required v-model=\"eventCharge\" />\n      <TimePicker  :inputMinute=\"eventCharge\" v-on:minute-updated=\"updateEventCharge\" :limit=\"480\" />\n      <ErrorMessage name=\"eventCharge\" class=\"d-flex invalid-feedback\" />\n\n      <!-- eventAffectedUser -->\n      <div class=\"form-type-material form-group\">\n        <Field name=\"eventAffectedUserCode\" v-model=\"eventAffectedUserCode\" v-slot=\"{handleChange, value}\">\n          <CustomSelect \n            :modelValue=\"value\"\n            @value-updated=\"(value)=> {handleChange(value);}\"\n            :options=\"usersForAttribution\"\n            :error=\"errors.eventAffectedUserCode\"\n            name=\"eventAffectedUserCode\"\n            classStyle=\"form-control\"\n            :clearable=\"true\"\n            />\n        </Field>\n        <label class=\"floating-label\" for=\"eventAffectedUserCode\">Attribuer à:</label>\n        <ErrorMessage name=\"eventAffectedUserCode\" class=\"d-flex invalid-feedback\" />\n      </div>\n\n      <!-- comment -->\n      <div class=\"form-group form-type-material\">\n        <Field name=\"comment\" as=\"textarea\" class=\"form-control\" rows=\"5\" required maxlength=\"1000\" />\n        <label for=\"comment\">Commentaire:</label>\n      </div>\n\n    </div>\n\n    <!-- submit -->\n    <footer class=\"card-footer text-center p-2\">\n      <button type=\"submit\" class=\"btn btn-custom btn-round\" :disabled=\"disableSubmit\" >Valider</button>\n    </footer>\n\n    <div v-show=\"loading\" class=\"card-loading reveal\">\n      <span  class=\"spinner-border\" role=\"status\"></span>\n    </div>\n\n  </Form>  \n\n  <!-- error message -->\n  <CustomMessage v-if=\"message\" :cssClass=\"'p-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n    \n\n</template>\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport TimePicker from \"../../common/TimePicker.vue\";\nimport CustomSelect from '../../common/CustomSelect.vue';\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"EventValidateForm\",\n\n  emits:[\"event-action-validated\"],\n\n  props: ['duration', 'workshopCode', 'eventCode'],\n  \n  components:{\n    Form,\n    Field,\n    ErrorMessage,\n    TimePicker,\n    CustomSelect,\n    CustomMessage\n  },\n\n  setup() {\n\n    const eventValidateFormSchema = Yup.object().shape({\n      eventCharge: Yup.number().required(\"La charge de travail est obligatoire\").min(1,\"La charge de travail est obligatoire\").max(480, \"Valeur invalide\"),\n      eventAffectedUserCode: Yup.string(),\n    });\n\n    return { eventValidateFormSchema }\n  },\n\n  data() {\n    return {\n      eventCharge : this.duration,\n      usersForAttribution: [],\n      companyCode: this.$store.state.auth.user.companyCode,\n      loading: false,\n      eventAffectedUserCode:\"\",\n      disableSubmit:false,\n      message: \"\",\n    }\n  },\n\n  mounted(){\n    this.loadUsersForAttribution();\n  },\n\n  methods: {\n\n    updateEventCharge(minutes){\n      this.eventCharge = minutes;\n    },\n\n    loadUsersForAttribution(){\n\n      let usersForAttributionReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        }\n      };\n      fetch(\"/api/user/users-for-attribution/\"+this.companyCode+\"/\"+this.workshopCode, usersForAttributionReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok){\n            const results = await response.json();\n            this.usersForAttribution = this.buildUserResponse(results);\n            return;\n          }\n          return Promise.reject(response);\n       \n        })\n        .catch((response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadUsersForAttribution.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n\n        });\n    },\n\n    handleEventActionValidate(values){\n\n      this.loading = true;\n      this.disableSubmit = true;\n      values.companyCode = this.companyCode;\n      values.workshopCode = this.workshopCode;\n      values.eventCode = this.eventCode;\n      values.userCode = this.$store.state.auth.user.userCode;\n\n      let eventActionValidateReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(values),\n      };\n\n      fetch(\"/api/event/action/validate\", eventActionValidateReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            this.disableSubmit = false;\n            return; \n          }\n          if (response.ok){\n             this.loading = false;\n            this.disableSubmit = false;\n            this.$emit(\"event-action-validated\");\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.handleEventActionValidate.bind(this, values));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          this.loading = false;\n          this.disableSubmit = false;\n        });\n\n    },\n\n    buildUserResponse(users){\n      return users.map(user => {                                     \n        return {\n          text: user.userFirstName+ \" \" + user.userLastName+ \" [\"+user.roleValue+\"]\",                            \n          value: user.userCode                               \n        };\n      });\n    }\n\n  },\n\n};\n\n</script>\n\n<style lang=\"css\" scoped>\n\n</style>","<template>\n<div class=\"time-picker\">\n <Form  :validation-schema=\"availibaleChargeSchema\" v-slot=\"{ errors }\" >\n  <table class=\"\">\n    <tbody>\n\n      <tr class=\"\">\n\n        <td class=\"col-2 \">\n            <span class=\"mdi mdi-chevron-up text-muted fs-20 cursor-pointer\" @click=\"incrementHour()\" :class=\"this.limit !=0 &&this.hours*60 >= limit ? 'opacity-25':'' \"></span>\n        </td>\n\n        <td class=\"col-1\">&nbsp;</td>\n\n        <td class=\"col-2\">\n            <span class=\"mdi mdi-chevron-up text-muted fs-20 cursor-pointer\" @click=\"incrementMinute()\" :class=\"this.limit !=0 &&this.hours*60 >= limit ? 'opacity-25':'' \"></span>\n        </td>\n        <td class=\"col-1\" > </td>\n      </tr>\n\n      <tr class=\"\">\n\n        <td class=\"col-4\">\n              <Field name=\"hours\" type=\"tel\" v-model.lazy=\"hours\"  class=\"form-control text-center  \" :class=\"{ 'is-invalid': errors.hours }\" v-maska data-maska=\"###\"/>\n              <ErrorMessage name=\"hours\" class=\"  invalid-feedback\" />\n        </td>\n\n        <td class=\"col-1 fs-20\">:</td>\n\n        <td class=\"col-4\">\n             <Field name=\"minutes\" type=\"tel\" v-model.lazy=\"minutes\" class=\"form-control text-center\" :class=\"{ 'is-invalid': errors.minutes }\" v-maska data-maska=\"###\" />\n             <ErrorMessage name=\"minutes\" class=\"invalid-feedback\" />\n        </td>\n        <td class=\"col-1 fs-18\"  v-show=\"helpToolTip != '' \"> \n          <i class=\"text-lighter mdi mdi-alert-circle-outline\"\n            v-tippy=\"{ content: `<i>${helpToolTip}</i>` , placement:'top' }\"\n         /> \n         </td>\n\n      </tr>\n\n      <tr class=\"\">\n\n        <td class=\"col-2\">\n            <span class=\"mdi mdi-chevron-down text-muted fs-20 cursor-pointer\" @click=\"decrementHour()\"></span>\n        </td>\n\n        <td class=\"col-1\"></td>\n\n        <td class=\" col-2\">\n            <span class=\"mdi mdi-chevron-down text-muted fs-20 cursor-pointer\" @click=\"decrementMinute()\"></span>\n        </td>\n        <td class=\"col-1\" > </td>\n      </tr>\n\n    </tbody>\n  </table>\n  </Form>\n  </div>\n</template>\n\n<script>\n\n\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport { vMaska } from \"maska\";\n\nexport default {\n\n     name:\"TimePicker\",\n\n     directives: {maska: vMaska},\n\n     emits: ['minute-updated'],\n\n     setup(){\n        const availibaleChargeSchema = Yup.object().shape({\n           hours:Yup.number(\" \").min(0, \" \").max(1000, \" \").typeError(\" \"),\n           minutes:Yup.number(\" \").min(0, \" \").max(1000, \" \").typeError(\" \")\n           });\n        return {availibaleChargeSchema};\n     },\n\n    data(){\n   \n        return{\n        hours:0,\n        minutes:0,\n\n        }\n    },\n\n    methods:{\n        incrementMinute(){\n          \n          if(this.limit == 0 || this.hours*60 < this.limit){\n            if(parseInt(this.minutes)>59 || parseInt(this.minutes)+15>60){\n               this.hours =parseInt(this.hours)+ 1;\n               this.minutes =0;\n            }else {\n            this.minutes=parseInt(this.minutes)+15;\n            }\n          }\n        },\n\n         decrementMinute(){\n          if(this.minutes>0)\n              this.minutes=parseInt(this.minutes)-15;\n        },\n\n        incrementHour(){\n          if(this.limit == 0 || this.hours*60 < this.limit)\n            this.hours = parseInt(this.hours)+1;\n        },\n\n        decrementHour(){\n          if(this.hours > 0)\n              this.hours=parseInt(this.hours)-1;\n          },\n\n        minutesToHour(){\n            this.hours = parseInt( this.inputMinute / 60); \n            this.minutes = parseInt(this.inputMinute % 60);\n          },\n\n    },\n\n    watch:{\n      hours(newHour, oldHour) {\n        if(newHour!=oldHour){\n          this.$emit('minute-updated', this.hoursTomin);\n        }\n      },\n      minutes(newMin, oldMin) {\n        if(newMin!=oldMin)\n         this.$emit('minute-updated', this.hoursTomin);\n      }\n    },\n\n    computed:{\n      hoursTomin(){\n          const res=parseInt(this.minutes)+parseInt(this.hours*60);\n          return res;\n        }\n\n    },\n \n    created(){\n      this.minutesToHour();\n    },\n\n     components: {\n        Form,\n        Field,\n        ErrorMessage\n      },\n\n    props: {\n      inputMinute: {\n          type: Number,\n          default(){\n            return 0;\n            }\n      },\n\n      helpToolTip:{\n        type:String,\n        default(){\n          return '';\n        }\n      },\n      limit:{\n        type: Number,\n        default(){\n          return 0;\n        }\n      }\n\n    }\n    \n};\n</script>\n\n<style scoped>\n.time-picker{\n  padding-left: 20%;\n  padding-right: 20%;\n  text-align: center;\n}\n/* Remove arrow of type number in Chrome, Safari, Edge, Opera */\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n  -webkit-appearance: none;\n  margin: 0;\n}\n\n/* Remove arrow of type number in Firefox */\ninput[type=\"number\"] {\n  -moz-appearance: textfield;\n}\n.badge-line-H-1 {\n  line-height: 1;\n}\n\n</style>\n\n\n","import { render } from \"./TimePicker.vue?vue&type=template&id=97c1df66&scoped=true\"\nimport script from \"./TimePicker.vue?vue&type=script&lang=js\"\nexport * from \"./TimePicker.vue?vue&type=script&lang=js\"\n\nimport \"./TimePicker.vue?vue&type=style&index=0&id=97c1df66&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-97c1df66\"]])\n\nexport default __exports__","import { render } from \"./EventValidateForm.vue?vue&type=template&id=4464b470\"\nimport script from \"./EventValidateForm.vue?vue&type=script&lang=js\"\nexport * from \"./EventValidateForm.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n  <Form v-on:submit=\"handleEventRevocationForm\" class=\"form-type-material\" :validation-schema=\"eventRevocationFormSchema\" v-slot=\"{ errors }\">\n           \n    <div class=\"card-body\">\n\n      <div class=\"form-group\">\n        <Field name=\"comment\" as=\"textarea\" class=\"form-control\" rows=\"5\" :class=\"{ 'is-invalid': errors.comment }\" required maxlength=\"1000\" />\n        <label class=\"required\" for=\"comment\">Commentaire:</label>\n        <ErrorMessage name=\"comment\" class=\"invalid-feedback\" />\n      </div>\n\n    </div>\n\n    <footer class=\"card-footer text-center p-2\">\n      <button type=\"submit\" class=\"btn btn-custom btn-round\" :disabled=\"disableSubmit\">Annuler</button>\n    </footer>\n\n    <div v-show=\"loading\" class=\"card-loading reveal\">\n      <span  class=\"spinner-border\" role=\"status\"></span>\n    </div>\n\n  </Form>  \n\n  <!-- error message -->\n  <CustomMessage v-if=\"message\" :cssClass=\"'p-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n</template>\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport CustomMessage from '../../common/CustomMessage.vue';\n\n\nexport default {\n\n  name: \"EventRevocationForm\",\n  \n  emits:[\"event-action-revocated\"],\n\n  props: ['workshopCode', 'eventCode'],\n\n  components:{\n    Form,\n    Field,\n    ErrorMessage,\n    CustomMessage\n  },\n\n  setup() {\n    const eventRevocationFormSchema = Yup.object().shape({\n      comment: Yup.string().required(\"Le commentaire est obligatoire\"),\n    });\n\n    return { \n      eventRevocationFormSchema\n    }\n  },\n\n  data() {\n    return {\n      companyCode: this.$store.state.auth.user.companyCode,\n      loading: false,\n      disableSubmit: false,\n      message: \"\",\n    }\n  },\n\n  methods: {\n\n    handleEventRevocationForm(values){\n\n      this.disableSubmit = true;\n      this.loading = true;\n\n      values.companyCode = this.companyCode;\n      values.workshopCode = this.workshopCode;\n      values.eventCode = this.eventCode;\n      values.userCode = this.$store.state.auth.user.userCode;\n\n      let eventActionRevocateReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(values),\n      };\n\n      fetch(\"/api/event/action/revocate\", eventActionRevocateReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            this.disableSubmit = false;\n            return; \n          }\n          this.loading = false;\n          if (response.ok){\n            this.disableSubmit = false;\n            this.$emit(\"event-action-revocated\");\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.handleEventRevocationForm.bind(this, values));\n            return;\n          }         \n          this.message = this.$authTokenService.handleErrorResponse(response);\n          this.disableSubmit = false;\n        });\n\n    },\n\n  },\n\n};\n\n</script>\n\n<style lang=\"css\" scoped>\n\n</style>","import { render } from \"./EventRevocationForm.vue?vue&type=template&id=a409d73e\"\nimport script from \"./EventRevocationForm.vue?vue&type=script&lang=js\"\nexport * from \"./EventRevocationForm.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  \n  <div class=\"card shadow-1\" v-if=\"action\">\n            \n    <header class=\"card-header d-flex\">\n      <div class=\"card-title flexbox align-items-center p-0\" data-event-action-code=\"action.eventActionCode\">\n          <span class=\"avatar\" v-bind:style=\"{ background: action.user.iconColor }\">\n            {{ action.user.userFirstName.substring(0, 1).toUpperCase() }}{{ action.user.userLastName.substring(0, 1).toUpperCase() }}\n          </span>\n          <div class=\"ms-3\">\n            <span class=\"text-capitalize fs-14\">{{action.user.userFirstName}} {{action.user.userLastName}} </span>\n            <small class=\"minus-separator fst-italic\">{{action.user.roleValue}}</small> \n            <div class=\"\">\n              <small>\n                {{formatDate(action.creationDate, 'DD/MM/YYYY HH:mm')}}\n                <i class=\"mdi mdi-clock-outline ms-1 me-1\" />\n                {{localFormatTime(action.creationDate, 'DD/MM/YYYY HH:mm')}}\n              </small>\n            </div>\n          </div>\n      </div>\n    </header>\n\n    <div class=\"card-body\">\n\n        <!-- action -->\n        <dl class=\"flexbox m-0\">\n          <dt class=\"col-3 col-md-2 fs-12\">Action :</dt>\n          <dd class=\"col-9 col-md-10\">\n            <span v-if=\"action.actionTypeName == 'EVENT_VALIDATED' \" class=\"\"><i class=\"mdi mdi-circle me-1 text-blue\"></i>{{action.actionTypeValue}}</span>\n            <span v-if=\"action.actionTypeName == 'EVENT_DATE_MOVED'  \" class=\"\"><i class=\"mdi mdi-circle me-1 text-gray\"></i>{{action.actionTypeValue}}</span>\n            <span v-if=\"action.actionTypeName == 'EVENT_REVOCATED'\" class=\"\"><i class=\"mdi mdi-circle me-1 text-red\"></i>{{action.actionTypeValue}}</span>\n          </dd>\n        </dl>\n\n        <dl class=\"flexbox m-0\" v-if=\"action.actionTypeName == 'EVENT_DATE_MOVED'\">\n          <dt class=\"col-5 col-md-2 fs-12\">La date précédente:</dt>\n          <dd class=\"col-8 col-md-10\">\n            <span class=\"text-capitalize\">\n              {{formatDate(action.eventPreviousDate, 'DD/MM/YYYY HH:mm')}}\n                <i class=\"mdi mdi-clock-outline ms-1 me-1\" />\n                {{localFormatTime(action.eventPreviousDate, 'DD/MM/YYYY HH:mm')}}</span>\n          </dd>\n        </dl>\n\n        <dl class=\"flexbox m-0\" v-if=\"action.eventAffectedUser!=null && action.actionTypeName != 'EVENT_DATE_MOVED'\">\n          <dt class=\"col-3 col-md-2 fs-12\">Attribué à :</dt>\n          <dd class=\"col-9 col-md-10\">\n            <span class=\"text-capitalize\">{{action.eventAffectedUser.userFirstName}} {{action.eventAffectedUser.userLastName}}</span>\n            <small class=\"minus-separator fst-italic\">{{action.eventAffectedUser.roleValue}}</small> \n          </dd>\n        </dl>\n        \n        <!-- event eventCharge -->\n        <dl class=\"flexbox m-0\" v-if=\"action.eventCharge!=null\">\n          <dt class=\"col-3 col-md-2 fs-12\">Charge de travail :</dt>\n          <dd class=\"col-9 col-md-10\">{{formatTime(action.eventCharge)}}</dd>\n        </dl>\n\n        <!-- comment -->\n        <dl class=\"flexbox m-0\" v-if=\"action.comment !=='' && action.actionTypeName != 'EVENT_DATE_MOVED' \">\n          <dt class=\"col-3 col-md-2 fs-12\">Commentaire :</dt>\n          <dd class=\"col-9 col-md-10\"><p class=\"m-0\">{{ action.comment }}</p></dd>\n        </dl>\n        \n    </div>\n  \n  </div>\n\n</template>\n\n<script>\nimport * as moment from \"moment\";\nimport helperService from \"../../../services/helper.service.js\";\nexport default {\n\n  name: \"EventAction\",\n\n  props: ['action'],\n\n  setup() {\n    moment.locale('fr');\n  },\n\n  created() {\n    //console.log(this.action);\n  },\n\n  methods: {\n\n    formatTime : helperService.formatTime,\n\n    formatDate(value, pattern){\n      return moment(value, pattern).format('DD/MM/YYYY');\n    },\n\n    localFormatTime(value, pattern){\n      return moment(value, pattern).format('HH[h]mm');\n    },\n\n  },\n\n};\n\n</script>\n\n<style lang=\"css\" scoped>\n\n.avatar {\n  background: rgb(0, 32, 63) none repeat scroll 0% 0%;\n  position: relative;\n  line-height: 36px;\n  text-align: center;\n  border-radius: 100%;\n  color: white;\n  text-transform: uppercase;\n  width: 36px;\n  height: 36px;\n}\n\n\n</style>","import { render } from \"./EventAction.vue?vue&type=template&id=d8696e8c&scoped=true\"\nimport script from \"./EventAction.vue?vue&type=script&lang=js\"\nexport * from \"./EventAction.vue?vue&type=script&lang=js\"\n\nimport \"./EventAction.vue?vue&type=style&index=0&id=d8696e8c&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d8696e8c\"]])\n\nexport default __exports__","import { render } from \"./Event.vue?vue&type=template&id=399a38fa\"\nimport script from \"./Event.vue?vue&type=script&lang=js\"\nexport * from \"./Event.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"container\">\n\n    <header class=\"header-bar justify-content-between my-3 shadow-1 flexbox\" v-if=\"event.workshop && event.workshop.workshopName\" v-auto-animate>\n\n        <!-- workshop -->\n        <div class=\"col-4\">\n          <div class=\"fs-20 fw-600\"> {{event.workshop.workshopName}}</div>\n          <div class=\" mt-2 text-lighter\"> \n            <i class=\"mdi mdi-map-marker-outline\"/> \n            <span class=\"\"> {{event.workshop.workshopAddress}}</span>\n          </div>\n\n          <div class=\"float-end\" >\n            <a class=\"btn btn-xs btn-pure\" v-if=\"canChangeWorkshop == true\" >\n              <span v-if=\"event.workshop.workshopCode && eventCreated == false\" @click=\"changeWorkshop()\"> \n                <i class=\"mdi mdi-chevron-right cusrsor-pointer\"/>  modifier\n              </span>\n            </a>\n          </div>\n        </div>\n          \n        <!-- date -->\n        <div class=\"col-4\">\n\n          <div class=\"d-flex fs-15 text-capitalize\">\n            <i class=\"mdi mdi-calendar-month-outline fs-24 text-lighter\"/>\n            <span class=\"ms-1\">Date: </span>\n            <span class=\"ms-1 fw-600\" v-if=\"this.selectedTimeSlotObject && this.selectedTimeSlotObject.date\">\n              {{dateFormat(this.selectedTimeSlotObject.date)}}\n            </span>\n          </div>\n\n          <div class=\"d-flex mt-2 fs-15 text-capitalize\">\n            <i class=\"mdi mdi-clock-time-eight-outline fs-24 text-lighter\"/>\n            <span class=\"ms-1\">Heure: </span>\n            <span class=\"ms-1 fw-600\" v-if=\"selectedTimeSlotObject\">\n              {{selectedTimeSlotObject.startTime}}\n            </span>\n          </div>\n\n          <div class=\"float-end\">\n            <a class=\"btn btn-xs btn-pure\" @click=\"changeTimeSlot()\" >\n              <span v-if=\"selectedTimeSlotObject && selectedTimeSlotObject.startTime && eventCreated == false \">  \n                <i class=\"mdi mdi-chevron-right cusrsor-pointer\"/>  modifier  \n              </span>\n            </a>\n          </div>\n\n        </div>\n\n    </header>\n\n\n\n    <!-- body -->\n    <div :class=\"currentPosition > 0 ?  'card card-body' : '' \">\n      <!-- wizard -->\n      <div v-show=\"currentPosition > 1 && event.workshop && event.workshop.workshopName\">\n        <Stepper  :position=\"(currentPosition-2)\" v-on:position-changed=\"positionChanged\" :eventCreated=\"eventCreated\" />\n      </div> \n      <keep-alive>\n        <component :is=\"currentComponent\" :event=\"event\" v-on:step-changed=\"stepChangedHandler\"/>\n      </keep-alive>\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n  </div>\n\n</template>\n\n<script>\nimport { useRoute } from \"vue-router\";\nimport moment from \"moment\";\n\nimport Stepper from \"./event-create/stepper/Stepper.vue\";\n\nimport EventCreateWorkshopChooser from \"./event-create/step-0/EventCreateWorkshopChooser.vue\";\nimport CreateEventDateChooser from \"./event-create/step-1/EventCreateDateChooser.vue\";\nimport CreateEventVehicle from\"./event-create/step-2/EventCreateVehicle.vue\";\nimport PrestationsChooser from \"./event-create/step-3/PrestationsChooser.vue\";\nimport CreateEventInfo from \"./event-create/step-4/EventCreateInfo.vue\";\nimport CreateEventClient from \"./event-create/step-5/EventCreateClient.vue\";\nimport CreateEventConfirmation from \"./event-create/step-6/EventCreateConfirmation.vue\";\nimport CustomMessage from '../common/CustomMessage.vue';\n\n\nexport default {\n  name: \"EventCreate\",\n\n  components: {\n    Stepper,\n    EventCreateWorkshopChooser,\n    CreateEventDateChooser,\n    CreateEventVehicle,\n    PrestationsChooser,\n    CreateEventInfo,\n    CreateEventClient,\n    CreateEventConfirmation,\n    CustomMessage\n  },\n\n  setup() {\n    moment.locale(\"fr\");\n  },\n\n  data() {\n    return {\n      event: {\n        companyCode: this.$store.state.auth.user.companyCode,\n        workshopCode: \"\",\n        clientCode: \"\",\n      },\n      currentComponent: \"\",\n      workshopCalendarId: \"\",\n      canChangeWorkshop: null,\n      selectedTimeSlotObject: {},\n      eventCreated: false,\n      currentPosition: 0,\n      message:\"\"\n    };\n  },\n\n  created() {\n    this.moment = moment;\n\n    this.event.workshopCode = useRoute().params.workshopCode;\n    this.workshopCalendarId = useRoute().params.workshopCalendarId;\n    this.event.clientCode = useRoute().params.clientCode;\n\n    if(this.event.clientCode)\n      this.loadClient();\n\n    if (this.$store.state.auth.user.workshopCode) {\n      this.canChangeWorkshop = false;\n      this.event.workshopCode = this.$store.state.auth.user.workshopCode;\n    } else if (!this.$store.state.auth.user.workshopCode)\n      this.canChangeWorkshop = true;\n\n    if (this.event.workshopCode && this.workshopCalendarId) {\n      this.loadWorkshopCalendar();\n      this.loadWorkshop();\n    }\n\n    if (!this.event.workshopCode) {\n      this.currentComponent = \"EventCreateWorkshopChooser\";\n      this.currentPosition = 0;\n    }\n  },\n\n  methods: {\n    positionChanged(index) {\n      this.currentPosition = index;\n      switch (index) {\n        case 2:\n          this.currentComponent = \"CreateEventVehicle\";\n          this.currentPosition = 2;\n          break;\n        case 3:\n          this.currentComponent = \"PrestationsChooser\";\n          this.currentPosition = 3;\n          break;\n        case 4:\n          this.currentComponent = \"CreateEventInfo\";\n          this.currentPosition = 4;\n          break;\n        case 5:\n          this.currentComponent = \"CreateEventClient\";\n          this.currentPosition = 5;\n          break;\n      }\n    },\n\n    changeWorkshop() {\n      this.event.workshop = {};\n      this.createEventObject = {};\n      this.selectedTimeSlotObject = {};\n      this.currentComponent = \"EventCreateWorkshopChooser\";\n      this.currentPosition = 0;\n    },\n\n    changeTimeSlot() {\n      this.selectedTimeSlotObject = {};\n      this.currentComponent = \"CreateEventDateChooser\";\n      this.currentPosition = 1;\n    },\n\n    stepChangedHandler(index, object) {\n      //console.log(\"object.Date -->\", index, \" <--->\" , object);\n\n      if (index == 0 && object.workshopCalendarId && object.workshopCode) {\n        this.event.workshopCode = object.workshopCode;\n        this.workshopCalendarId = object.workshopCalendarId;\n        this.loadWorkshop();\n        this.loadWorkshopCalendar();\n      }\n\n      if (index == 1 && object.startTime) {\n        this.selectedTimeSlotObject = object;\n        this.currentComponent = \"CreateEventVehicle\";\n        this.currentPosition = 2;\n      }\n\n      // vehicle\n      if (index == 2 && object.registrationNumber) {\n        this.event.vehicle = object;\n        this.event.vehicle.companyCode = this.event.companyCode;\n        this.currentComponent = \"PrestationsChooser\";\n        this.currentPosition = 3;\n      }\n\n      // prestations\n      if (index == 3 && Array.isArray(object)) {\n        this.event.prestations = object;\n        this.currentComponent = \"CreateEventInfo\";\n        this.currentPosition = 4;\n      }\n\n      // Info\n      if (index == 4 && object.eventComment != undefined) {\n        this.event.eventComment = object.eventComment;\n        (this.event.vehicleLoaner = object.vehicleLoaner),\n          (this.currentComponent = \"CreateEventClient\");\n        this.currentPosition = 5;\n      }\n\n      // client\n      if (index == 5 && object.clientName) {\n        this.event.client = object;\n        this.event.client.companyCode = this.event.companyCode;\n        if (this.event.clientCode && this.eventCreated == false) {\n          this.event.vehicle.clientCode = this.event.clientCode;\n          this.event.client.clientCode = this.event.clientCode;\n          this.updateClient();\n        } else if (!this.event.clientCode && this.eventCreated == false) {\n          this.createEvent();\n        }\n      }\n    },\n\n    createEvent() {\n      const timeSlot = moment(this.selectedTimeSlotObject.startTime, \"HH:mm\");\n      const hours = timeSlot.hours();\n      const minutes = timeSlot.minutes();\n      const eventDate = moment(this.selectedTimeSlotObject.date, \"DD/MM/YYYY\").local(\"fr\").hours(hours).minutes(minutes).format(\"YYYY-MM-DD HH:mm\");\n\n      let eventCreateReq = {\n        userCode: this.$store.state.auth.user.userCode,\n        eventDate: eventDate,\n        companyCode: this.event.companyCode,\n        workshopCode: this.event.workshopCode,\n        client: this.event.client,\n        vehicle: this.event.vehicle,\n        prestations: this.event.prestations,\n        eventComment: this.event.eventComment,\n        vehicleLoaner: this.event.vehicleLoaner,\n      };\n\n      // inServiceDate should be in Date();\n      const inServiceDateFormatted = moment(this.event.vehicle.inServiceDate);\n      if (inServiceDateFormatted.isValid()) \n        eventCreateReq.vehicle.inServiceDate = inServiceDateFormatted.format(\"DD/MM/YYYY\");\n      else eventCreateReq.vehicle.inServiceDate = null;\n\n      let eventCreateReqBody = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(eventCreateReq),\n      };\n      // correct problem related to proxy links sharing \n      this.event.vehicle.inServiceDate = inServiceDateFormatted.toDate();\n\n      fetch(\"/api/event/create/\", eventCreateReqBody)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok) {\n            this.event.eventCode = await response.text();\n            this.currentComponent = \"CreateEventConfirmation\";\n            this.currentPosition = 6;\n            this.eventCreated = true;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.createEvent.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    loadWorkshopCalendar() {\n      let loadWorkshopCalendarReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n      };\n\n      fetch(\"/api/workshop-calendar/calendar/\" +this.event.companyCode+\"/\"+this.workshopCalendarId, loadWorkshopCalendarReq )\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok) {\n            let workshopCalendar = await response.json();\n            this.event.date = workshopCalendar.date;\n            this.selectedTimeSlotObject.date = workshopCalendar.date;\n            this.currentComponent = \"CreateEventDateChooser\";\n            this.currentPosition = 1;\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadWorkshopCalendar.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    loadWorkshop() {\n      let loadWorkshopReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n      };\n\n      fetch(\"/api/workshop/\" +this.event.companyCode +\"/\" +this.event.workshopCode,loadWorkshopReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok) {\n            this.event.workshop = await response.json();\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadWorkshop.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    dateFormat(date) {\n      return moment(date, \"DD/MM/YYYY\").local(\"fr\").format(\"dddd DD/MM/YYYY\");\n    },\n\n    updateClient() {\n      let updateClientReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(this.event.client),\n      };\n\n      fetch(\"/api/client/update\", updateClientReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok) {\n            this.createEvent();\n            return;\n          } \n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.updateClient.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    // load client\n    loadClient() {\n      this.loading = true;\n      let loadClientReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n      };\n\n      fetch(\"/api/client/get-client/\"+this.event.companyCode+ \"/\" + this.event.clientCode, loadClientReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok) {\n            this.event.client = await response.json();\n            this.loading = false;\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadClient.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n  },\n}; \n</script>\n\n<style>\n\n</style>","<template>\n\n  <div class=\"step-process\">\n    <ul>\n      <!-- wizard -->\n      <li v-for=\"(section,index) in sections\" class=\"step-process-li\" :class=\"[index < position ? 'complete':'', index== position ? 'active':'inactive']\" :key=\"section\" >\n        <div :class=\"index <= this.position && eventCreated == false ? 'cursor-pointer': 'pointer-not-allowed' \" class=\"step-process-item\" @click=\"selectedSection(section)\" >\n          <div class=\"step-process-index\">\n             <i class=\"mdi mdi-check fs-18\" />\n          </div>\n          <div class=\"step-process-text\">\n            <span>{{index+1}}</span>\n            <!-- step title -->\n            <span>- {{section}}</span>\n          </div>\n        </div>\n      </li>\n\n    </ul>\n  </div>\n\n</template>\n\n<script>\n\n\nexport default {\n  \n  name: \"Stepper\",\n\n  emits:['position-changed'],\n\n  props: {\n    \n    position: {\n      type: Number,\n    },\n\n    eventCreated:{\n      type : Boolean\n    }\n  },\n\n  data(){\n      return{\n        sections:['véhicule','prestations','infos', 'client']\n      }\n  },\n\n  methods:{\n\n    selectedSection(section){\n      //console.log(\"Index\", section);\n      switch(section){\n        case \"véhicule\": \n          this.$emit(\"position-changed\", 2);\n          break;\n        case \"prestations\" : \n          this.$emit(\"position-changed\", 3);\n          break;\n        case 'infos': \n          this.$emit(\"position-changed\", 4);\n          break;\n        case 'client' : \n          this.$emit(\"position-changed\", 5);\n          break;\n      }\n    }\n\n  },\n\n};\n\n</script>\n\n<style>\n/*\n * step-process\n */\n.step-process {\n  margin: 25px auto 25px auto;\n  text-align: center;\n  font-size: 0;\n  width: 80%;\n}\n.step-process ul {\n  padding: 0;\n  list-style: none;\n}\n.step-process .step-process-li {\n  display: inline-block;\n  vertical-align: top;\n  width: 25%;\n  padding-top: 20px;\n}\n.step-process .step-process-li .step-process-item {\n  position: relative;\n}\n.step-process .step-process-index {\n  width: 32px;\n  height: 32px;\n  border-radius: 100%;\n  border: 3px solid #cccccc;\n  background-color: #ffffff;\n  color: #ffffff;\n  line-height: 28px;\n  margin: 0 auto;\n  position: relative;\n  z-index: 2;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.step-process .step-process-index .step-process-index-icon {\n  font-weight: bold;\n  font-size: large;\n}\n.step-process .step-process-text {\n  margin-top: 3px;\n  display: inline-block;\n  font-size: 14px;\n  text-transform: uppercase;\n  color: #cccccc;\n}\n.step-process .step-process-item::before,\n.step-process .step-process-item::after {\n  content: \"\";\n  width: 50%;\n  display: block;\n  position: absolute;\n  z-index: 1;\n  top: 14px;\n  border-bottom: 3px solid #cccccc;\n  border-bottom-color: rgb(204, 204, 204);\n}\n.step-process .step-process-item::before {\n  left: 0;\n}\n.step-process .step-process-item::after {\n  right: 0;\n}\n.step-process .step-process-li:first-child .step-process-item::before {\n  border-color: transparent;\n}\n.step-process .step-process-li.complete:last-child .step-process-item::after,\n.step-process .step-process-li:last-child .step-process-item::after {\n  border-color: transparent;\n}\n.step-process .step-process-li.active .step-process-index {\n  border: 3px solid #00203f;\n}\n.step-process .step-process-li.complete .step-process-index {\n  border: 2px solid #00203f;\n  background-color: #00203f;\n}\n.step-process .step-process-li.complete .step-process-item::after,\n.step-process\n  .step-process-li.complete\n  + .step-process-li\n  .step-process-item::before {\n  border-color: #00203f;\n}\n.step-process .step-process-li.active .step-process-text {\n  color: #00203f;\n}\n.step-process .step-process-li.complete .step-process-text {\n  color: #00203f;\n  font-weight: 500;\n}\n.step-process .step-process-li.hovered {\n  cursor: pointer;\n}\n.step-process .step-process-li.hovered:hover {\n  background-color: rgba(0, 0, 0, 0.06);\n}\n\n</style>","import { render } from \"./Stepper.vue?vue&type=template&id=24aee733\"\nimport script from \"./Stepper.vue?vue&type=script&lang=js\"\nexport * from \"./Stepper.vue?vue&type=script&lang=js\"\n\nimport \"./Stepper.vue?vue&type=style&index=0&id=24aee733&lang=css\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <header class=\"header-bar justify-content-between my-3 min-height-50\">\n    <div class=\"fs-18 fw-500\"> Choix de l'atelier</div>\n  </header>\n\n  <div class=\"card position-relative \">\n    <div v-if=\"workshops && workshops.length >0\" class=\"media-list media-list-sm media-list-bordered media-list-divided\" >\n      <SimpleWorkshopElementList :workshop=\"workshopItem\" v-on:workshop-selected=\"selectWorkshop\"  v-on:error-occurred=\"showErrorMessage\" v-for=\"workshopItem in workshops\" :key=\"workshopItem\"  class=\"media flexbox\"  />\n    </div>\n    <div v-else-if=\"workshops && workshops.length == 0\" class=\"text-center min-height-200 mt-4\">\n      <div class=\"min-height-200 d-flex align-items-center\"> \n        <div class=\"text-center w-100 \">\n          <i class=\"mdi mdi-alert-outline fs-50\"/> \n          <br/> \n          <span class=\"text-muted fs-14\"> \n            Aucun atelier\n          </span> \n        </div>\n      </div>\n  </div>\n    \n    <!-- Loader -->\n    <div v-show=\"loading\" class=\"loading reveal\">\n      <span class=\"spinner-border\" role=\"status\"></span>\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'p-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n  </div>\n</template>\n\n<script>\nimport SimpleWorkshopElementList from \"./SimpleWorkshopElementList.vue\";\nimport CustomMessage from '../../../common/CustomMessage.vue';\n\nexport default {\n\n  name:\"EventCreateWorkshopChooser\",\n\n  emits:['step-changed'],\n\n  props:{\n    event:{\n      type:Object,\n      return:{}\n    }\n  },\n\n  components:{\n    SimpleWorkshopElementList,\n    CustomMessage\n  },\n\n  data(){\n    return{\n      companyCode: this.$store.state.auth.user.companyCode,\n      loading:false,\n      workshops:null,\n      message: \"\",\n    }\n  },\n\n  activated(){\n    this.loadWorkshops();\n  },\n\n  methods: {\n\n    selectWorkshop(tinyWorkshop){\n      if(tinyWorkshop && tinyWorkshop.workshopCalendarId )\n        this.$emit(\"step-changed\",0 , tinyWorkshop );\n    },\n\n    // load workshops without first availibilties\n    loadWorkshops(){\n\n      this.loading = true;\n      let workshopsReq = {\n        method: \"GET\",\n        headers: {\"Content-Type\": \"application/json\", \n        Authorization: this.$authTokenService.authToken()},\n      };\n\n      fetch(\"/api/workshop/workshops/activated/\"+this.companyCode, workshopsReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok){\n            this.workshops = await response.json();\n            this.loading=false;\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadWorkshops.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    },\n\n    showErrorMessage(message){\n      this.message = message;\n    }\n\n  }\n\n}\n</script>\n\n<style scoped>\n\n</style>","<template>\n  <div @click=\"selectWorkshop()\" :class=\"firstAvailibility ? 'cursor-pointer':'pointer-not-allowed'\">\n\n    <div class=\"col-8 me-3 text-truncate\">\n\n    <span class=\"fs-17\" v-tippy=\"{ content: `<small>Nom d'atelier</small>` , placement:'left'}\">\n      {{ workshop.workshopName }}\n    </span>\n\n    <div class=\"text-lighter fs-14\">\n      <small v-tippy=\"{ content: `<small>Adresse</small>` , placement:'left'}\">\n        <i class=\"mdi mdi-map-marker-outline\" />{{ workshop.workshopAddress}}\n      </small>\n    </div>\n    </div>\n\n    <div class=\"col-3 float-end\" v-if=\"firstAvailibility && firstAvailibility.date\">\n       <div class=\"fs-13 text-lighter\" >Prochaine disponibilité </div>\n       <div class=\"text-capitalize fs-15 text-green\">\n          {{formatDate(firstAvailibility.date, \"dddd DD MMMM YYYY\")}}\n          <i class=\"mdi mdi-clock-outline\"/>\n          <span class=\"ms-2\">{{firstAvailibility.hour}}</span> \n        </div>\n    </div>\n\n    <div class=\"col-3 float-end\" v-else-if=\"firstAvailibility == null\">\n      <div class=\"fs-13 text-lighter\" >Prochaine disponibilité </div>\n      <div class=\"text-capitalize fs-15 text-red\">\n        Aucune\n      </div>\n    </div> \n\n  </div>\n\n</template>\n\n<script>\nimport moment from \"moment\";\n\nexport default {\n\n  name:\"SimpleWorkshopElementList\",\n\n  emits:[\"workshop-selected\", \"error-occurred\"],\n\n  props:{\n\n    workshop:{\n    type:Object,\n      default(){\n        return null;\n      },\n    },\n    \n  },\n\n  setup(){\n\n    moment.locale('fr');\n  \n  },\n\n  created(){\n    this.loadFirstAvailibility()\n  },\n\n  data(){\n    return {\n      firstAvailibility: null,\n      companyCode:this.$store.state.auth.user.companyCode,\n      message: \"\"\n    }\n  },\n\n  methods:{\n\n    selectWorkshop(){\n\n      let tinyWorkshop = {\n        workshopCode : this.workshop.workshopCode,\n        workshopCalendarId : this.firstAvailibility.workshopCalendarId\n      };\n      this.$emit(\"workshop-selected\", tinyWorkshop);\n    },\n\n    formatDate(value, pattern){\n      return moment(value, 'DD/MM/YYYY').local('fr').format(pattern);\n    },\n\n    loadFirstAvailibility(){\n      let firstAvailibilityObject = {\n        workshopCode: this.workshop.workshopCode,\n        companyCode: this.companyCode \n      };\n          \n      let firstAvailibility = {\n        method: \"POST\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()},\n        body: JSON.stringify(firstAvailibilityObject),\n      };\n\n      fetch(\"/api/workshop-calendar/first-availability\", firstAvailibility)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            this.$emit(\"error-occurred\", this.message);\n            return;\n          }\n          if(response.status == 204){\n            // no content\n            this.firstAvailability = null;\n            return;\n          }\n          if (response.ok){\n            this.firstAvailibility = await response.json();\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if(response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadFirstAvailibility.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          this.$emit(\"error-occurred\", this.message);\n        });\n    },\n  }\n\n}\n</script>\n\n<style scoped>\n\n</style>","import { render } from \"./SimpleWorkshopElementList.vue?vue&type=template&id=348d4748\"\nimport script from \"./SimpleWorkshopElementList.vue?vue&type=script&lang=js\"\nexport * from \"./SimpleWorkshopElementList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./EventCreateWorkshopChooser.vue?vue&type=template&id=d5294bda\"\nimport script from \"./EventCreateWorkshopChooser.vue?vue&type=script&lang=js\"\nexport * from \"./EventCreateWorkshopChooser.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  \n  <div class=\"calendar\" v-auto-animate>\n\n    <div class=\"calendar-header\">\n\n      <!-- Prev week -->\n      <div class=\"arrow float-start\">\n        <a class=\"btn d-flex\" v-on:click=\"getPreviousCalendars()\" :class=\"previousEnabled() == false ? 'disabled':'' \" >\n            <i class=\"mdi mdi-chevron-left fs-30\"/>\n        </a>\n      </div>\n\n      <!-- next week -->\n      <div class=\"arrow float-end \" v-if=\"disableNextWeekNavigation == false\">\n        <a class=\"btn d-flex\" v-on:click=\"getNextCalendars()\" >\n          <i class=\"mdi mdi-chevron-right fs-30\"/>\n        </a>\n      </div>\n\n    </div>\n\n    <ul class=\"calendar-days\">\n      \n      <li v-for=\"day in week\" :key=\"day\" class=\"calendar-day\">\n        \n        <!-- day and date -->\n        <div class=\"calendar-day-header\">\n          <span class=\"day-name\">{{day.day}}</span>\n          <span class=\"day-number\">{{formatDate(day.date, 'DD MMMM')}}</span>\n        </div>\n\n        <!-- widget -->\n        <div class=\"calendar-day-widget\" :class=\"[day.workshopClosure? 'bg-orange-lighter':'']\" v-auto-animate>\n          <EventCreateDateChooserDayWidget :day=\"day\"/>\n        </div>\n        \n        <!-- timeSlot column chooser -->\n        <div :style=\"this.displayAll == true ? `'max-height:${heightOfDisplayAll} %; overflow: auto;'`  :  'overflow: auto; max-height: 370px;'\">\n          <EventCreateDateChooserTimeSlots :timeSlots=\"day.timeSlots\" v-on:time-slot-selected=\"onTimeSlotSelected\" :date=\"day.date\" :maxTimeSlots='maxLengthOfTimeSlots()'/>\n        </div>\n\n      </li>\n\n    </ul>\n\n    <div v-if=\"displayAll == false && !isEmptyTimeSlots\" class=\"more-hours text-center\" @click=\"displayAllTimeSlots()\" >\n      <a class=\"btn fs-20\" v-tippy=\"{ content: 'Afficher toutes les disponibilités' , placement:'top'}\">\n        <i class=\"mdi mdi-chevron-down fs-32\"/>\n      </a>\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n  </div>\n\n</template>\n\n<script>\nimport moment from \"moment\";\nimport EventCreateDateChooserTimeSlots from \"./date-chooser/EventCreateDateChooserTimeSlots.vue\";\nimport EventCreateDateChooserDayWidget from \"./date-chooser/EventCreateDateChooserDayWidget.vue\";\nimport CustomMessage from '../../../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"CreateEventDateChooser\",\n\n  emits:['step-changed'],\n\n  components:{\n    EventCreateDateChooserTimeSlots,\n    EventCreateDateChooserDayWidget,\n    CustomMessage\n  },\n\n  props:{\n    event:{\n      type:Object,\n      return:{}\n    }\n  },\n\n  setup(){\n     moment.locale('fr');\n     let workshopCalendars = {};\n\n     return {workshopCalendars} \n  },\n\n  data() {\n    return {\n      heightOfDisplayAll : '',\n      daysName: [\n        \"Lundi\",\n        \"Mardi\",\n        \"Mercredi\",\n        \"Jeudi\",\n        \"Vendredi\",\n        \"Samedi\",\n        \"Dimanche\",\n      ],\n      week: [],\n      displayAll:false,\n      companyCode:this.$store.state.auth.user.companyCode,\n      startOfWeek: moment(this.event.date,'DD/MM/YYYY').startOf('week'),\n      endOfWeek : moment(this.event.date, 'DD/MM/YYYY').endOf('week'),\n      disableNextWeekNavigation:false,\n      message: \"\",\n      isEmptyTimeSlots: false\n\n    };\n  },\n\n  activated(){\n    \n    this.moment = moment;\n    // dual assignment\n    this.startOfWeek = moment(this.event.date,'DD/MM/YYYY').startOf('week'),\n    this.endOfWeek = moment(this.event.date, 'DD/MM/YYYY').endOf('week');\n    this.disableNextWeekNavigation = false;\n    this.loadAvailabilities();\n  },\n  \n  methods:{\n\n\n    displayAllTimeSlots(){\n      this.displayAll = true;\n      this.heightOfDisplayAll = (1+this.maxLengthOfTimeSlots()*0.1)*100;\n    },\n\n    maxLengthOfTimeSlots(){\n      var maxLength = 0;\n      for(const day in this.week){\n        if(maxLength <= this.week[day].timeSlots.length)\n          maxLength = this.week[day].timeSlots.length;\n      }\n      return maxLength;\n    },\n\n    previousEnabled(){\n      var today=new Date();\n      if(this.startOfWeek.isBefore(today))\n        return false;\n      return true;\n    },\n\n    onTimeSlotSelected(timeSlot){\n      this.$emit(\"step-changed\", 1, timeSlot);\n    },\n\n    formatDate(value, pattern){\n      return moment(value, 'DD/MM/YYYY').local('fr').format(pattern);\n    },\n\n    getNextCalendars(){\n      this.startOfWeek = this.startOfWeek.clone().add(1,\"weeks\");\n      this.endOfWeek= this.endOfWeek.clone().add(1,\"weeks\");\n      this.loadAvailabilities();\n    },\n\n    getPreviousCalendars(){\n      this.startOfWeek = this.startOfWeek.subtract(1,\"weeks\");\n      this.endOfWeek = this.endOfWeek.subtract(1,\"weeks\");\n      this.disableNextWeekNavigation = false;\n      this.loadAvailabilities();\n    },\n\n    loadAvailabilities(){\n\n      var loadAvailabilitiesReqBody = {\n        workshopCode:this.event.workshopCode,\n        companyCode: this.companyCode,\n        startDate:this.startOfWeek.format('DD/MM/YYYY'),\n        endDate: this.endOfWeek.format('DD/MM/YYYY')\n      };\n\n      let loadAvailabilitiesReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(loadAvailabilitiesReqBody),\n      };\n      \n      fetch(\"/api/workshop-calendar/workshop-avalibilites\", loadAvailabilitiesReq).then( async response => {\n        if(response.status == 400){\n          this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n          return;\n        }\n        if (response.ok){\n          this.workshopCalendars = await response.json();\n\n          const hasWorkshopCalendarId = this.workshopCalendars.find(item => item.workshopCalendarId);\n          if (!hasWorkshopCalendarId) {\n            this.disableNextWeekNavigation = true;\n            this.startOfWeek.subtract(1, \"week\");\n            this.endOfWeek.subtract(1, \"week\");\n            this.loadAvailabilities();\n            return;\n          }\n          this.buildEventChooser();\n          this.maxLengthOfTimeSlots();\n          return;\n        } \n        return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadAvailabilities.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n\n      });\n    },\n\n    buildEventChooser(){\n    \n      var calendarStartDate = this.startOfWeek.clone();\n      var weekDays=[];\n      while (this.endOfWeek.isAfter(calendarStartDate)) {\n       \n        const dayOfWeek = {};\n        const workshopCalendar = this.workshopCalendarByDate(calendarStartDate.format('DD/MM/YYYY'));\n\n        dayOfWeek.day = calendarStartDate.format(\"ddd\").toUpperCase();\n        dayOfWeek.date = calendarStartDate.format('DD/MM/YYYY');\n      \n        if(workshopCalendar && workshopCalendar.timeSlots)\n          dayOfWeek.timeSlots = workshopCalendar.timeSlots\n        else \n          dayOfWeek.timeSlots= []\n\n        if(workshopCalendar && workshopCalendar.workshopClosure)\n          dayOfWeek.workshopClosure = workshopCalendar.workshopClosure\n\n        if (workshopCalendar) {\n          dayOfWeek.workshopCapacity = workshopCalendar.workshopCapacity;\n          dayOfWeek.workshopCharge = workshopCalendar.workshopCharge;\n          dayOfWeek.workshopEventsSize = workshopCalendar.workshopEventsSize;\n          dayOfWeek.workshopAvailability = workshopCalendar.workshopAvailability;\n          dayOfWeek.workshopLoad = workshopCalendar.workshopLoad;\n        } \n        // if workshop calendar is not null\n        if(!workshopCalendar){\n          dayOfWeek.workshopCharge        = 0;\n          dayOfWeek.workshopEventsSize    = 0;\n          dayOfWeek.workshopAvailability  = 0;\n          dayOfWeek.workshopLoad          = 0\n        }\n        weekDays.push(dayOfWeek);\n        calendarStartDate = calendarStartDate.add(1,'days');\n      }\n      this.week = weekDays;\n      this.isEmptyTimeSlots = this.areAllTimeSlotsEmpty(this.week);\n\n    },\n\n    workshopCalendarByDate(date){\n      for(var day of this.workshopCalendars){\n        if(moment(date, 'DD/MM/YYYY').isSame(moment(day.date, 'DD/MM/YYYY'), \"D\")){\n          return day; \n        }\n      }\n        return null;\n    },\n\n    areAllTimeSlotsEmpty(week) {\n      for (let day of week) {\n        if (!Array.isArray(day.timeSlots) || day.timeSlots.length > 0) {\n          return false;\n        }\n      }\n      return true;\n    },\n  },\n\n};\n</script>\n\n<style scoped>\n\n</style>","<template>\n    \n    <ul class=\"time-slots text-center\" v-if=\"timeSlots.length > 0\">\n\n        <li class=\"time-slot\" v-for=\"i in timeSlotsIndex\" :key=\"i\">\n            <div v-if=\"timeSlots[i] != undefined \">\n\n                <a  v-if=\"timeSlots[i].startTime != '' && timeSlots[i].availability >= 1 \" @click=\"onSelectedTimeSlot(timeSlots[i])\">\n                    {{timeSlots[i].startTime}}\n                </a>\n\n                <a v-else-if=\"timeSlots[i].availability == 0 \" class=\"pointer-not-allowed opacity-25 fw-600\"> \n                    {{timeSlots[i].startTime}}\n                </a>\n\n            </div>\n            <a v-else class=\"time-slot empty-hour time-slot empty-hour pointer-not-allowed\"></a>\n        </li>\n\n    </ul>\n\n    <ul class=\"time-slots text-center\" v-else-if=\"timeSlots.length == 0\">\n        <li class=\"time-slot\" v-for=\"i in timeSlotsIndex \" :key=\"i\">\n            <a class=\"time-slot empty-hour time-slot empty-hour pointer-not-allowed\"></a>\n        </li>\n    </ul>\n\n</template>\n\n<script>\nimport moment from \"moment\";\nimport {range} from \"lodash\"\n\n\nexport default {\n    \n    name:\"EventCreateDateChooserTimeSlots\",\n    \n    emits:[\"time-slot-selected\"],\n\n    data(){\n      return {\n         selectedTimeSlot:\"\",\n         timeSlotsIndex: range(0, this.maxTimeSlots),\n        }\n    },\n\n    props:{\n        timeSlots:{\n            type: Array,\n            default(){return null}\n        },\n\n        date:{\n            type:String,\n            default(){return null}\n        },\n\n        maxTimeSlots:{\n            type :Number,\n            default(){\n                return 5;\n            }\n        }\n    },\n\n    created(){\n      this.moment = moment;\n    },\n\n    methods:{\n\n        onSelectedTimeSlot(timeSlot){\n            this.selectedTimeSlot = timeSlot;\n            this.selectedTimeSlot.date = this.date;\n            this.$emit(\"time-slot-selected\", this.selectedTimeSlot);\n        }\n\n    }\n}\n</script>\n\n<style scoped>\n\n.time-slots {\n display: inline-block;\n padding: 0px 15px;\n margin-top: 0;\n list-style: none;\n vertical-align: top;\n width: 100%;\n}\n.time-slots li {\n    margin-top: 20px;\n    height: 30px;\n}\n.time-slot {\n text-align: center;\n display: block;\n position: relative;\n}\n.time-slot a {\n width : 100%;\n padding: 5px 16px;\n cursor: pointer;\n font-size: 18px;\n}\n.time-slot:not(.empty-hour) a:hover,\n.time-slot:not(.empty-hour) a.selected {\n border: 2px solid #55CD97;\n border-radius: 5px;\n color: #FFFFFF;\n background: #55CD97;\n}\n.time-slot.empty-hour {\n padding: 6px 16px;\n}\n.time-slot.empty-hour::before {\n content: \" \";\n height: 2px;\n width: 15px;\n display: inline-block;\n margin-bottom: 8px;\n background-color: rgba(67,95,113,0.3);\n}\n.time-slot .reserved{\n    background: #f9eeee;\n}\n</style>","import { render } from \"./EventCreateDateChooserTimeSlots.vue?vue&type=template&id=6a726d26&scoped=true\"\nimport script from \"./EventCreateDateChooserTimeSlots.vue?vue&type=script&lang=js\"\nexport * from \"./EventCreateDateChooserTimeSlots.vue?vue&type=script&lang=js\"\n\nimport \"./EventCreateDateChooserTimeSlots.vue?vue&type=style&index=0&id=6a726d26&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6a726d26\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"widget\" v-if=\"day.workshopCapacity > 0\" :include=\"['load']\">\n\n    <!-- prgress bar -->\n    <div class=\"progress-line\">\n      <!--  class in the list conditionally of load value -->\n      <div class=\"progress-bar\" :class=\"[\n            day.workshopLoad < 0.6 ? 'bg-green' : '',\n            day.workshopLoad >= 0.6 && day.workshopLoad < 0.9 ? 'bg-orange' : '',\n            day.workshopLoad >= 0.9 ? 'bg-red' : ''\n          ]\"\n        role=\"progressbar\" :style=\"{width: day.workshopLoad*100+'%', height: 4+'px' }\" :aria-valuenow='`${day.workshopLoad *100}`' aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n    </div>\n\n    <!-- availability -->\n    <div class=\"text-lighter\">\n      <span class=\"float-start fs-11\" v-tippy=\"{ content: `<small>Taux de charge</small>` , placement:'left'}\"> \n        %{{(day.workshopLoad * 100).toFixed(2)}} \n      </span>\n      <span class=\"float-end me-1 fs-11\" v-tippy=\"{ content: `<small>Disponibilité</small>` , placement:'right'}\">\n        {{formatTime(day.workshopAvailability)}}\n      </span>\n    </div>\n\n  </div>\n\n  <div class=\"widget\" v-if=\"day.workshopCapacity == 0 || day.workshopCapacity == undefined\">\n  \n    <div class=\"text-lighter text-center\">\n\n      <div v-if=\"this.day.workshopClosure\">\n        <p class=\"fs-9\" v-tippy=\"{ content: '<small>Fermeture exceptionnelle</small>' , placement:'top' }\"> {{this.day.workshopClosure.workshopClosureReasonValue}}  </p>\n      </div>\n      <div v-else-if=\"day.workshopCapacity == 0\" >\n        <p class=\"fs-9\" v-tippy=\"{ content: '<small>Atelier fermé</small>' , placement:'top' }\"> indisponible </p>  \n      </div>\n      <div v-else >\n        <p class=\"fs-9\" v-tippy=\"{ content: '<small>Hors période de planning</small>' , placement:'top' }\"> <i class=\"mdi mdi-dots-horizontal text-muted\" /> </p>\n      </div> \n         \n    </div>\n   \n  </div>\n\n</template>\n\n<script>\n\nimport helperService from \"@/services/helper.service.js\";\n\nexport default {\n\n  name: \"EventCreateDateChooserDayWidget\",\n\n  props: {\n    day: {\n      type: Object,\n      required: true,\n    },\n  },\n\n  activated(){\n    //console.log(\"workshopCapacity\", this.day.workshopCapacity, \"charge\", this.day.workshopLoad);\n  },\n\n  methods:{\n    formatTime : helperService.formatTime,\n  },\n\n};\n</script>\n\n<style scoped>\n.widget {\n  display: grid;\n}\n.widget .fs-9 {\n  line-height: 21px;\n}\n.widget .progress-line {\n  height: auto;\n  border-radius: 2px;\n  margin-bottom: 5px;\n  background-color: #f5f6f7;\n  display: flex;\n  height: 4px;\n}\n.widget .progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  transition: width .6s ease;\n}\n\n</style>","import { render } from \"./EventCreateDateChooserDayWidget.vue?vue&type=template&id=5008b044&scoped=true\"\nimport script from \"./EventCreateDateChooserDayWidget.vue?vue&type=script&lang=js\"\nexport * from \"./EventCreateDateChooserDayWidget.vue?vue&type=script&lang=js\"\n\nimport \"./EventCreateDateChooserDayWidget.vue?vue&type=style&index=0&id=5008b044&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5008b044\"]])\n\nexport default __exports__","import { render } from \"./EventCreateDateChooser.vue?vue&type=template&id=3c9db504\"\nimport script from \"./EventCreateDateChooser.vue?vue&type=script&lang=js\"\nexport * from \"./EventCreateDateChooser.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <!-- Form -->\n  <Form v-on:submit=\"submitVehicleForm\" :validation-schema=\"vehicleSchema\" v-slot=\"{ errors }\" class=\"text-center\">\n\n    <div class=\"mx-auto form-type-material\" :class=\"[isTablet ? ['w-50'] : 'w-25']\">\n\n      <!-- registrationNumber -->\n      <div class=\"form-group\">\n          <Field name=\"registrationNumber\" type=\"text\" v-model=\"vehicle.registrationNumber\" >\n            <RegistrationNumberInput\n              :modelValue='vehicle.registrationNumber'\n              @value-updated=\"handleRegistrationNumberChange\"\n              :vehicleCategory=\"this.event.workshop.category\"\n              :initialCountry=\"this.event.workshop.country\"\n              :required=\"true\" \n              :error=\"errors.registrationNumber\" />\n          </Field>\n      </div>\n\n      <!-- mark -->\n      <div class=\"form-group\">\n        <Field name=\"mark\" v-model=\"vehicle.mark\" v-slot=\"{ handleChange}\">\n          <CustomSelect \n            :modelValue=\"vehicle.mark\"\n            @value-updated=\"(value) => {handleChange(value); selectMark(value)}\"\n            :options=\"marks\"\n            name=\"mark\"\n            :error=\"errors.mark\"\n            classStyle=\"form-control\"\n            />\n        </Field>\n        <label class=\"floating-label required\" for=\"mark\">Marque</label>\n        <ErrorMessage name=\"mark\" class=\"d-flex invalid-feedback\" />\n      </div>\n\n      <!-- model -->\n      <div class=\"form-group\">\n        <Field name=\"model\" v-model=\"vehicle.model\" v-slot=\"{ handleChange}\">\n          <CustomSelect \n            :modelValue=\"vehicle.model\"\n            @value-updated=\"(value) => {handleChange(value); selectModel(value)}\"\n            :options=\"models\"\n            name=\"model\"\n            :error=\"errors.model\"\n            classStyle=\"form-control\"\n            />\n        </Field>\n        <label class=\"floating-label required\" for=\"model\">Modèle</label>\n        <ErrorMessage name=\"model\" class=\"d-flex invalid-feedback\" />\n      </div>\n\n      <!-- energy -->\n      <div class=\"form-group\">\n        <Field name=\"energy\" v-model=\"vehicle.energy\" v-slot=\"{ handleChange}\">\n          <CustomSelect \n            :modelValue=\"vehicle.energy\"\n            @value-updated=\"(value) => {handleChange(value); this.vehicle.energy = value}\"\n            :options=\"energies\"\n            name=\"energy\"\n            :error=\"errors.energy\"\n            classStyle=\"form-control\"\n            />\n        </Field>\n        <label class=\"floating-label required\" for=\"energy\">Energie</label>\n        <ErrorMessage name=\"energy\" class=\"d-flex invalid-feedback\" />\n      </div>\n\n      <!-- inServiceDate -->\n      <div class=\"form-group\">\n        <Field type=\"text\" class=\"form-control\" name=\"inServiceDate\" :class=\"{ 'is-invalid': errors.inServiceDate }\" v-model=\"vehicle.inServiceDate\" hidden required />\n        <Datepicker name=\"inServiceDate\" class=\"form-control\"  v-model=\"vehicle.inServiceDate\" :upperLimit='upperLimit' :inputFormat=\"'dd/MM/yyyy'\"\n          :style=\"datePickerStyle\" :typeable=\"true\" :placeholder=\"''\" v-maska data-maska=\"##/##/####\" />\n        <ErrorMessage name=\"inServiceDate\" class=\"d-flex invalid-feedback\" />\n        <span :class=\"vehicle.inServiceDate? 'do-float':''\">\n          <label for=\"inServiceDate\" class=\"\">Mise en circulation</label>\n        </span>\n      </div>\n\n      <!-- VIN -->\n      <Field type=\"text\" class=\"form-control\" name=\"vinIsValid\" :class=\"{ 'is-invalid': errors.vinIsValid }\" v-model=\"vinIsValid\" hidden required />\n      <div class=\"form-group\">\n        <Field type=\"text\" class=\"form-control text-transform-uppercase\" name=\"vin\" v-model=\"vehicle.vin\" v-maska data-maska=\"*****************\" :class=\"{ 'is-invalid': errors.vin }\"  required\n        v-on:change=\"vinValidation()\" \n        v-on:keypress.enter=\"vinValidation()\" />\n        <label for=\"vin\">Numéro d'identification du véhicule (VIN)</label>\n        <ErrorMessage name=\"vin\" class=\"d-flex invalid-feedback\" />\n      </div>\n\n      <!-- kilometers -->\n      <div class=\"form-group\">\n        <Field type=\"text\" class=\"form-control\" name=\"kilometers\" :class=\"{ 'is-invalid': errors.kilometers }\" v-maska data-maska=\"#########\" required\n          v-model=\"vehicle.kilometers\" />\n        <label for=\"kilometers\">Kilométrage</label>\n        <ErrorMessage name=\"kilometers\" class=\"d-flex invalid-feedback\" />\n      </div>\n\n      <!-- submit -->\n      <div class=\"text-center pt-3\">\n        <button type=\"submit\" class=\"btn btn-round btn-custom\">Suivant</button>\n      </div>\n\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n  </Form>\n</template>\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport { vMaska } from \"maska\";\nimport Datepicker from 'vue3-datepicker';\nimport moment from \"moment\";\nimport RegistrationNumberInput from \"../../../common/RegistrationNumberInput.vue\";\nimport CustomSelect from '../../../common/CustomSelect.vue';\nimport CustomMessage from '../../../common/CustomMessage.vue';\n\nexport default {\n  name: \"CreateEventVehicle\",\n\n  inject: ['isTablet'],\n\n  directives: {maska: vMaska},\n\n  emits: [\"step-changed\"],\n\n  props: {\n    event: {\n      type: Object,\n      return: {},\n    },\n  },\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    Datepicker,\n    RegistrationNumberInput,\n    CustomSelect,\n    CustomMessage\n  },\n\n  setup() {\n    const vehicleSchema = Yup.object().shape({\n      mark: Yup.string().required(\"Le champ marque est obligatoire\"),\n      energy: Yup.string().required(\"Le champ energie est obligatoire\"),\n      model: Yup.string().required(\"Le champ modèle est obligatoire\"),\n      kilometers: Yup.string(),\n      inServiceDate: Yup.date()\n        .nullable(true)\n        .typeError(\"Valeur invalide\")\n        .min(moment(\"01/01/1900\", \"DD/MM/YYYY\"), \"Valeur invalide\")\n        .max(moment(), \"Valeur invalide\"),\n      registrationNumber: Yup.string().required(\"Le champ d'immatriculation est obligatoire\"),\n      vinIsValid: Yup.boolean(),\n      vin: Yup.string().when(\"vinIsValid\", {\n        is: false,\n        then: Yup.string().required().max(1, \"Vin doit contenir 17 caractères chiffres et lettres\"),\n      }),\n    });\n    const datePickerStyle = {\n      \"--vdp-selected-bg-color\": \"#00203f\",\n      \"--vdp-selected-color\": \"#ffffff\",\n      \"--vdp-hover-bg-color\": \"#00203f\",\n    };\n\n    return { vehicleSchema, datePickerStyle };\n  },\n\n  data() {\n    return {\n      vehicle: {\n        registrationNumber:'',\n        inServiceDate:null\n      },\n      models: [],\n      marks: [],\n      energies: [],\n      upperLimit: new Date(),\n      vinIsValid: true,\n      message: \"\",\n    };\n  },\n\n  activated() {\n    if (this.event.workshop.marks)\n      this.marks = this.buildResult(this.event.workshop.marks);   \n    else if (!this.event.workshop.marks) this.marks = [];\n    if (this.event.workshop.marks.length == 1) {\n      this.vehicle.mark = this.event.workshop.marks[0];\n      this.loadModels();\n    }\n    if (this.event.vehicle && !this.event.vehicle.inServiceDate) {\n      this.vehicle.inServiceDate = null;\n    } else if (this.event.vehicle && this.event.vehicle.inServiceDate) {\n      this.vehicle.inServiceDate = moment(this.vehicle.inServiceDate).toDate();\n    }\n  },\n\n  methods: {\n\n    handleRegistrationNumberChange(registrationNumber){\n      if(this.vehicle.registrationNumber != registrationNumber )\n        this.vehicle.registrationNumber = registrationNumber;\n    },\n\n    vinValidation() {\n      if (this.vehicle) {\n        const vinMatch = this.vehicle.vin.toUpperCase().match(/^[A-Z0-9]+$/);\n        if (this.vehicle.vin) {\n          if (this.vehicle.vin.length != 17 || vinMatch == null) {\n            this.vinIsValid = false;\n          } else if (\n            this.vehicle.vin &&\n            this.vehicle.vin.length == 17 &&\n            vinMatch != null\n          ) {\n            this.vinIsValid = true;\n            this.vehicle.vin = this.vehicle.vin.toUpperCase();\n          }\n        }\n        if (!this.vehicle.vin) this.vinIsValid = true;\n      }\n    },\n\n    selectMark(mark) {\n      this.vehicle.mark = mark;\n      this.loadModels();\n    },\n\n    selectModel(model) {\n      this.vehicle.model = model;\n      this.loadEnergies();\n    },\n\n    submitVehicleForm() {\n      this.$emit(\"step-changed\", 2, this.vehicle);\n    },\n\n    loadModels() {\n      let bodyReq = {\n        vehicleCategory: this.event.workshop.category,\n        marque: this.vehicle.mark,\n      };\n\n      let loadModelsReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(bodyReq),\n      };\n\n      fetch(\"/api/vehicle/models\", loadModelsReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok) {\n            const results = await response.json();\n            this.models = this.buildResult(results);\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadModels.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    loadEnergies() {\n      let bodyReq = {\n        vehicleCategory: this.event.workshop.category,\n        marque: this.vehicle.mark,\n        modele: this.vehicle.model,\n      };\n\n      let loadEnergiesReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(bodyReq),\n      };\n\n      fetch(\"/api/vehicle/energies\", loadEnergiesReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok) {\n            const results = await response.json();\n            this.energies = this.buildResult(results);\n            return;\n          }\n          return Promise.reject(response)\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadEnergies.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    buildResult(results){\n      return results.map(value => {                                     \n        return {\n          text: value,                              \n          value: value                               \n        };\n      });\n    }\n\n  },\n};\n</script>\n\n<style scoped>\n\n</style>","<template>\n\n  <div  class=\"flexbox registration-number-input\">\n\n    <!-- country -->\n    <div :class=\"displayCountryName == true ? 'col-3 me-3': 'me-3 col-2 text-center'\">\n      \n      <div class=\"dropdown form-group  cursor-pointer\" :class=\"[{'pointer-not-allowed' : updatableCountry == false}]\">\n\n        <button class=\"btn dropdown-toggle form-control btn-default\" :class=\"[{ 'hide-caret' : updatableCountry == false }]\"\n            type=\"button\" id=\"dropdownMenuProfile\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n          <input type=\"text\" name=\"country\" hidden required v-model=\"country\" />\n          <label class=\" floating-label\" for=\"country\" :class=\"[{'required':required}]\">Pays</label>\n          <span :class=\"displayCountryName ?  'float-start fs-13':''\" v-if=\"country\">\n            <span :class=\"'fi fi-'+selectedIso.toLowerCase()\"/>\n            <span v-if=\"displayCountryName\" class=\"ms-1\"> {{country}} </span>\n          </span>\n        </button>\n        \n        <ul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuProfile\" >\n          <li class=\"dropdown-item\" v-for=\"countryItem in countries\" :key=\"countryItem\" @click=\"selectCountry(countryItem)\">\n            <span :class=\"'fi fi-'+countryItem.iso2.toLowerCase()\"/>  {{countryItem.name}}\n          </li>\n        </ul>\n      </div>\n\n    </div>\n\n    <!-- registration number -->\n    <div class=\"col\">\n\n      <input type=\"text\" name=\"isValidRegistrationNumber\" v-model=\"isValidRegistrationNumber\" hidden required/>\n      <div class=\"input-group\" :class=\"country ? '':'pointer-not-allowed' \">\n        \n        <input v-if=\"country == 'France'\"  type=\"text\" class=\"form-control\" \n          name=\"registrationNumber\" \n          v-maska:[options]  \n          v-model=\"registrationNumber\" \n          v-on:input=\"getRegistrationNumberMask(registrationNumber)\"  \n          v-on:paste=\"onPaste\"\n          :class=\"[errorMessage ? 'is-invalid': '']\"\n          required v-on:blur=\"registrationNumberValidation()\" @keyup.enter=\"registrationNumberValidation()\"/>\n\n        <input v-else type=\"text\" class=\"form-control\"  v-model=\"registrationNumber\" name=\"registrationNumber\" :class=\"[errorMessage ? 'is-invalid': '']\"\n          required  @blur=\"registrationNumberValidation()\" />\n\n        <label for=\"registrationNumber\" :class=\"[isValidRegistrationNumber == false? '':'do-float', required? 'required': '']\">Immatriculation</label>\n        <span  v-if=\"registrationNumber && required == false\" class=\"mdi mdi-close close-icon  clear\" @click=\"clearRegistrationNumber()\"></span>\n      </div>\n\n    </div>\n  </div>\n  <div v-if=\"errorMessage || isValidRegistrationNumber == false\" class=\"flexbox registration-number-input invalid-feedback\"> {{ errorMessage }}</div>\n\n</template>\n\n<script>\nimport RegistrationNumber  from \"../../services/registration-number.js\";\nimport { vMaska } from \"maska\";\n\nexport default {\n\n  name: \"RegistrationNumberInput\",\n\n  emits:['value-updated'],\n\n  $_veeValidate: {\n    value() { \n      return this.registrationNumber; \n    }\n  },\n\n  directives: {maska: vMaska,},\n\n  props:{\n    modelValue: { required: true },\n    displayCountryName:{type:Boolean, default(){return true}},\n    vehicleCategory: { required: true, type:String },\n    initialCountry: { type:String, default(){ return \"\";}, },\n    updatableCountry: { type: Boolean, default(){ return true } },\n    required: { type:Boolean, default: () => false },\n    error: { type:String, default(){ return '' } },\n  },\n\n  setup(){\n\n    const countries = [\n      {name:'France',     iso2:'FR'},\n      {name:'Monaco',     iso2:'MC'},\n      {name:'Belgique',   iso2:'BE'},\n      {name:'Suisse',     iso2:'CH'},\n      {name:'Andorre',    iso2:'AD'},\n      {name:'Italie',     iso2:'IT'},\n      {name:'Espagne',    iso2:'ES'},\n      {name:'Luxembourg', iso2:'LU'},\n      {name:'Pays-Bas',   iso2:'NL'},\n      {name:'Allemagne',  iso2:'DE'}, \n      {name:'Autriche',   iso2:'AT'}\n    ];\n\n    const NEW_IMMAT_MASK = \"@@-###-@@\";\n    const OLD_IMMAT_MASK = \"### *@@ ##\";\n      \n    return {countries, NEW_IMMAT_MASK, OLD_IMMAT_MASK}\n  },\n\n  data(){\n    return {\n      registrationNumber: this.modelValue,\n      country: this.initialCountry,\n      isValidRegistrationNumber: true,\n      errorMessage: '',\n      selectedIso:'',\n      options: {\n        mask: \"\",\n        eager: true\n      },\n    }\n  },\n\n  updated(){\n    if(!this.registrationNumber && this.error && !this.isValidRegistrationNumber )\n      this.errorMessage = this.error;\n  },\n\n  watch:{\n\n    initialCountry(newValue, oldValue){\n      if(newValue != oldValue){\n        this.country = newValue;\n        this.updateSelectedIso();\n      }\n    },\n\n    error(newValue, oldValue){\n      if(newValue != oldValue)\n        this.errorMessage = newValue;\n    },\n\n  },\n\n  created(){\n    this.updateSelectedIso();\n  },\n\n  methods:{\n\n    getRegistrationNumberMask(immat){\n      if(immat)\n        this.registrationNumber = immat.toUpperCase();\n\n      // new immat : stands with letter\n      var isNewImmatFormat = false;\n      if(this.vehicleCategory ==\"AUTO\")\n        isNewImmatFormat = immat.match(\"^[A-Z].*$\") != null;\n      else\n        isNewImmatFormat = immat.match(\"^[A-Z]{2}[0-9]{3}[A-Z]{2}$\") != null;\n\n      // old immat : stands with digit\n      var isOldImmatFormat = immat.match(\"^[0-9].*$\") != null;\n\n      // check mask\n      if(isNewImmatFormat){\n        this.options.mask = this.NEW_IMMAT_MASK;\n        return;\n      } else if(isOldImmatFormat == true){\n        this.options.mask = this.OLD_IMMAT_MASK;\n        return;\n      }\n\n      this.options.mask=\"\";\n      return this.options;\n    }, \n\n    onPaste(event) {\n      event.preventDefault();\n      const pastedText = event.clipboardData.getData('text');\n      this.getRegistrationNumberMask(pastedText);\n    },\n     \n    updateSelectedIso(){\n      for(const country in this.countries)\n        if(this.countries[country].name === this.initialCountry )\n         this.selectedIso = this.countries[country].iso2;\n    },\n\n    clearRegistrationNumber(){\n      this.registrationNumber = \"\";\n      this.isValidRegistrationNumber = true;\n      this.errorMessage = \"\";\n      this.$emit(\"value-updated\", \"\");\n    },\n\n    selectCountry(countryItem){\n      this.country = countryItem.name; \n      this.selectedIso = countryItem.iso2;\n      this.registrationNumber = '';\n      if(this.required == false){\n        this.errorMessage = \"\";\n        this.isValidRegistrationNumber = true;\n      }\n    },\n\n    registrationNumberValidation(){\n        var data = this.countries.filter(countryItem => countryItem.name == this.country);\n        var countryIso2 = data[0].iso2;\n        const registrationNumberValidator = RegistrationNumber.isValidRegistrationNumber(this.registrationNumber, countryIso2, this.vehicleCategory);\n        this.isValidRegistrationNumber = registrationNumberValidator.registrationNumberIsValid;\n\n        // emit value\n        if(registrationNumberValidator.registrationNumberIsValid == true){\n          this.registrationNumber = registrationNumberValidator.registrationNumber.replace(/-+$/, '');\n          this.errorMessage = \"\";\n          this.$emit(\"value-updated\",this.registrationNumber );\n\n        }else if(registrationNumberValidator.registrationNumberIsValid == false && this.registrationNumber){\n          this.isValidRegistrationNumber = false;\n          this.errorMessage = \"Immatriculation non valide\";\n        }else if(!this.registrationNumber && this.required == false){\n          this.isValidRegistrationNumber = true;\n          this.errorMessage = \"\";\n          this.$emit(\"value-updated\", \"\");\n        }\n\n        if(!this.registrationNumber && this.required == true){\n          this.errorMessage = \"Immatriculation est obligatoire\";\n          this.$emit(\"value-updated\", \"\");\n        }\n\n       // console.log(\" registrationNumberValidator\", registrationNumberValidator);\n\n    }\n\n  },\n\n}\n</script>\n\n<style scoped>\n\n.registration-number-input .btn-default {\n  display: flex;\n  align-items: center;\n  height: 36px;\n}\n\n.registration-number-input .clear{\n  right: 4px;\n  position: absolute;\n  cursor: pointer;\n  font-size:16px ;\n  z-index: 9999;\n}\n.registration-number-input .dropdown .dropdown-toggle::after {\n  position: absolute;\n  right: 0px;\n}\n.registration-number-input .dropdown .dropdown-toggle.hide-caret::after {\n  display: none;\n}\n\n.registration-number-input .form-type-material .dropdown .floating-label {\n  top: 10px !important;\n}\n\n.registration-number-input .form-type-material input:valid~.floating-label {\n  top: -8px !important;\n  font-size: 10px !important;\n  font-weight: 400 !important;\n}\n\n.registration-number-input.invalid-feedback {\n  top: 69%;\n  position: absolute;\n}\n</style>","\n\nclass RegistrationNumber {\n\n  NEW_IMMAT_MASK = \"@@-###-@@\";\n  OLD_IMMAT_MASK = \"### *@@ ##\";\n  registrationNumberIsValid = true;\n\n  // clean - in registrationNumberCleaned \n  cleanRegistrationNumber(registrationNumber) {\n\n    var registrationNumberCleaned = \"\";\n    for (const letter in registrationNumber)\n      if (registrationNumber[letter] != '-' && registrationNumber[letter] != ' ' )\n        registrationNumberCleaned += registrationNumber[letter];\n\n    return registrationNumberCleaned.toUpperCase();\n  }\n\n  // formattage \"AA-###-AA\" exe :AA989AA\n  formmaterNewRegistrationNumber(registrationNumber) {\n\n    var formmatedRegistrationNumber = registrationNumber.substring(0, 2) + \"-\" +\n      registrationNumber.substring(2, 5) + \"-\"\n      + registrationNumber.substring(5, 7);\n\n    return formmatedRegistrationNumber.toUpperCase();\n  }\n\n  // formattage ### AAA ## exe: 992AA828\n  formmaterOldRegistrationNumber(registrationNumber) {\n\n    var formmatedRegistrationNumber = registrationNumber.substring(0, 3) + \" \" +\n      registrationNumber.substring(3, 5) + \" \"\n      + registrationNumber.substring(5, 8);\n    //console.log(\"Old RegistrationNumberMask formatting\", formmatedRegistrationNumber);\n    return formmatedRegistrationNumber.toUpperCase();\n  }\n\n  getRegistrationNumberMask(registrationNumber, type) {\n\n    var mask = \"\"\n    // new immat : stands with letter\n    var isNewRegistrationNumberFormat = false;\n    if (type == \"AUTO\")\n      isNewRegistrationNumberFormat = registrationNumber.toUpperCase().match(\"^[A-Z].*$\") != null;\n\n    else if (type == \"MOTO\")\n      isNewRegistrationNumberFormat = registrationNumber.toUpperCase().match(\"^[A-Z]{2}[0-9]{3}[A-Z]{2}$\") != null;\n\n    // old immat : stands with digit\n    var isOldRegistrationNumberFormat = registrationNumber.toUpperCase().match(\"^[0-9].*$\") != null;\n\n    // check mask\n    if (isNewRegistrationNumberFormat)\n      mask = this.NEW_IMMAT_MASK;\n    else if (isOldRegistrationNumberFormat == true)\n      mask = this.OLD_IMMAT_MASK;\n    else mask = this.NEW_IMMAT_MASK;\n\n    return mask\n  }\n\n  isFni(registrationNumber) {\n\n    //DEBUT : Ancien format : (FNI Fichier national des immatriculations)\n    var fniFlag = true;\n    var find = ' ';\n    var re = new RegExp(find, 'g');\n    var fni = registrationNumber.replace(re, '');\n    //Composé d'un maximum de 8 caractères (autres que les espaces)\n    if (fni.length > 8) {\n      fniFlag = false;\n    }\n    //Composé uniquement de lettres et de chiffres (de A à Z et de 0 à 9).\n    if (fni.match(\"^[0-9A-Z]*$\") == null) {\n      fniFlag = false;\n    }\n    //Doit être composé d’au moins une lettre et un chiffre\n    if (fni.match(\"[0-9]+\") == null || fni.match(\"[A-Z]+\") == null) {\n      fniFlag = false;\n    }\n    //FIN : Ancien format : (FNI Fichier national des immatriculations)\n    return fniFlag;\n  }\n\n  isSiv(registrationNumber) {\n\n    //DEBUT : Nouveau format,(SIV = Système d'immatriculation des véhicules) depuis octobre 2009 il concerne tous les roulants, sauf cyclomoteurs (<= 50 cm3) :\n    var sivFlag = true;\n    var find = ' ';\n    var re = new RegExp(find, 'g');\n    var siv = registrationNumber.replace(re, '');\n    //La longueur du champ numéro d’immatriculation est de 9 caractères\n    if (siv.length != 9) {\n      sivFlag = false;\n    }\n    //Le format à respecté est : 2 lettres, un tiret, 3 chiffres, un tiret et 2 lettres (exemple : AA-123-AA)\n    if (siv.match(\"^[A-Z]{2}[-]{1}[0-9]{3}[-]{1}[A-Z]{2}$\") == null) {\n      sivFlag = false;\n    }\n    //FIN : Nouveau format,(SIV = Système d'immatriculation des véhicules) depuis octobre 2009 il concerne tous les roulants, sauf cyclomoteurs (<= 50 cm3)\n    return sivFlag;\n  }\n\n  isCyclo(registrationNumber) {\n\n    //DEBUT : Nouveau format cyclomoteurs (<= 50 cm3) :\n    var cycloFlag = true;\n    var find = ' ';\n    var re = new RegExp(find, 'g');\n    var cyclo = registrationNumber.replace(re, '');\n    //La longueur du champ numéro d’immatriculation est comprise entre 4 et 6 caractères\n    if (cyclo.length < 4 || cyclo.length > 6) {\n      cycloFlag = false;\n    }\n    //Le format à respecter est : 1 ou 2 lettres, 2 ou 3 chiffres et 1 lettre (exemples : AA123A, A12A, AA12A ou A123A)\n    if (cyclo.match(\"^[A-Z]{1,2}[0-9]{2,3}[A-Z]{1}$\") == null) {\n      cycloFlag = false;\n    }\n    //FIN : Nouveau format cyclomoteurs (<= 50 cm3)\n    return cycloFlag;\n  }\n\n  // validation for france\n  isValidFrance(registrationNumber) {\n    registrationNumber = registrationNumber.toUpperCase();\n    let isValidImmat = this.isFni(registrationNumber) || this.isSiv(registrationNumber) || this.isCyclo(registrationNumber);\n    return { registrationNumber: registrationNumber, registrationNumberIsValid: isValidImmat,  country:'FR'};\n  }\n\n  /***\n  * 3 connected digits and 1 letter or digit for all cases auto and moto\n  */\n  isValidMonacoAutoAndMoto(registrationNumber) {\n\n    registrationNumber = this.cleanRegistrationNumber(registrationNumber);\n    if (registrationNumber.match(\"^(?=.?[0-9]{3})[A-Za-z0-9]{4}$\") != null) {\n      this.registrationNumberIsValid = true;\n      return { registrationNumber: registrationNumber, registrationNumberIsValid: this.registrationNumberIsValid ,  country:'MN'};\n    } else {\n      this.registrationNumberIsValid = false;\n      return { registrationNumber: '', registrationNumberIsValid: this.registrationNumberIsValid ,  country:'MN'};\n    }\n  }\n\n    /**\n  * validation of both Moto and Auto\n  *  moto: validation exe: AA 00000 --> ZZ 99999\n  *  auto: validation exe: AA 000 AA <---> ZZ 999 ZZ\n  */\n  isValidItalyAutoAndMoto(registrationNumber, type) {\n    registrationNumber = this.cleanRegistrationNumber(registrationNumber);\n    if (type == 'MOTO') {\n      if (registrationNumber.match(\"^[A-Z]{2}[0-9]{5}$\") != null) {\n\n        registrationNumber = registrationNumber.slice(0, 2) + \" \" + registrationNumber.slice(2);\n        this.registrationNumberIsValid = true;\n        return { registrationNumber: registrationNumber, registrationNumberIsValid: this.registrationNumberIsValid,   country:'IT' };\n      } else {\n        this.registrationNumberIsValid = false;\n        return { registrationNumber: '', registrationNumberIsValid: this.registrationNumberIsValid ,  country:'IT'};\n      }\n\n    } else if (type == 'AUTO') {\n\n      if (registrationNumber.match(\"^[A-Z]{2}[0-9]{3}[A-Z]{2}$\")) {\n\n        //console.log(\"Italy AUTO\", this.registrationNumber.match(\"^[A-Z]{2}[0-9]{3}[A-Z]{2}$\") );\n        registrationNumber = registrationNumber.slice(0, 2) + \" \" + registrationNumber.slice(2);\n        this.registrationNumberIsValid = true;\n        return { registrationNumber: registrationNumber, registrationNumberIsValid: this.registrationNumberIsValid, country:'IT' };\n      } else {\n        this.registrationNumberIsValid = false;\n        return { registrationNumber: '', registrationNumberIsValid: this.registrationNumberIsValid ,  country:'IT'};\n      }\n    }\n  }\n\n  // exemple 1 ABC 003 ---> 1ABC003\n  isValidBelgiumAutoAndMoto(registrationNumber, type) {\n    registrationNumber = this.cleanRegistrationNumber(registrationNumber);\n    \n    if(registrationNumber.match(\"^[0-9]?([A-Z]{3}[0-9]{3}|[0-9]{3}[A-Z]{3})$\")){\n\n      registrationNumber = registrationNumber.substring(0, 1) + \" \" +\n      registrationNumber.substring(1, 4) + \" \"\n      + registrationNumber.substring(4);\n      this.registrationNumberIsValid = true;\n\n      return { registrationNumber: registrationNumber, registrationNumberIsValid: this.registrationNumberIsValid, country:'BL', type:type };\n\n    } else {\n      this.registrationNumberIsValid = false;\n      return { registrationNumber: '', registrationNumberIsValid: this.registrationNumberIsValid ,  country:'BL', type:type};\n    }\n  }\n\n  // pattern LL NNNN LL Pattern 2:L NNNN LLL \n  isValidSpainAutoAndMoto(registrationNumber, type) {\n    registrationNumber = this.cleanRegistrationNumber(registrationNumber);\n\n    // Moto ex 9283IAO\n      if(registrationNumber.match(\"^[a-zA-Z]{1,2}\\\\d{4}[a-zA-Z]{1,2}$|^\\\\d{4}[a-zA-Z]{3}$\")){\n\n        registrationNumber = registrationNumber.substring(0, 4)+ \" \" + registrationNumber.substring(4);\n        this.registrationNumberIsValid = true;\n\n        return { registrationNumber: registrationNumber, registrationNumberIsValid: this.registrationNumberIsValid, country:'SP', type:type };\n\n      } else {\n        this.registrationNumberIsValid = false;\n        return { registrationNumber: '', registrationNumberIsValid: this.registrationNumberIsValid ,  country:'SP'};\n      }\n  }\n\n  // pattern LL NNNN \n  isValiLuxembourgAutoAndMoto(registrationNumber, type) {\n    registrationNumber = this.cleanRegistrationNumber(registrationNumber);\n    // Moto \n    if(registrationNumber.match(\"^[A-Z]{2}[0-9]{4}$\")){\n\n      registrationNumber = registrationNumber.substring(0, 2)+ \" \" + registrationNumber.substring(2);\n      this.registrationNumberIsValid = true;\n      return { registrationNumber: registrationNumber, registrationNumberIsValid: this.registrationNumberIsValid, country:'LU', type:type };\n\n    } else {\n      this.registrationNumberIsValid = false;\n      return { registrationNumber: '', registrationNumberIsValid: this.registrationNumberIsValid ,  country:'LU', type:type};\n    }\n  }\n\n  // Ex: ABC123|||12-AB-AB|||12-ABC-1\n  isValiNetherlandAutoAndMoto(registrationNumber, type) {\n      registrationNumber = this.cleanRegistrationNumber(registrationNumber);\n\n      if(registrationNumber.match(\"^[a-zA-Z]{1}[0-9]{3}[a-zA-Z]{2}$\") ||\n       registrationNumber.match(\"^[a-zA-Z]{3}[0-9]{3}$\") ||\n        registrationNumber.match(\"^[0-9]{2}[a-zA-Z]{3}[0-9]{1}$\") \n        || registrationNumber.match(\"^[0-9]{1}[a-zA-Z]{3}[0-9]{2}$\")\n      ){\n      \n        registrationNumber = registrationNumber.substring(0, 2)+ \" \" + registrationNumber.substring(2);\n        this.registrationNumberIsValid = true;\n        return { registrationNumber: registrationNumber, registrationNumberIsValid: this.registrationNumberIsValid, country:'NL' ,type:type};\n\n      } else {\n        this.registrationNumberIsValid = false;\n        return { registrationNumber: '', registrationNumberIsValid: this.registrationNumberIsValid ,  country:'NL' , type:type};\n      }\n\n    }\n  \n  // D : WOB ZK 295\n  isValiGermanyAutoAndMoto(registrationNumber) {\n\n    registrationNumber = this.cleanRegistrationNumber(registrationNumber);\n\n    if(registrationNumber.match(\"^[a-zA-Z]{1,3}[a-zA-Z]{1,2}[0-9]{1,4}$\")){\n\n        registrationNumber = registrationNumber.substring(0, 3)+ \" \" \n        + registrationNumber.substring(3,5) +\" \"+ registrationNumber.substring(5);\n\n        this.registrationNumberIsValid = true;\n        return { registrationNumber: registrationNumber, registrationNumberIsValid: this.registrationNumberIsValid, country:'D' };\n\n      } else {\n        this.registrationNumberIsValid = false;\n        return { registrationNumber: '', registrationNumberIsValid: this.registrationNumberIsValid ,  country:'D'};\n      }\n\n    }\n  \n  // Austria validation\n  isValiAustriaAutoAndMoto(registrationNumber, type) {\n\n    registrationNumber = this.cleanRegistrationNumber(registrationNumber);\n    if(registrationNumber.match(\"^[a-zA-Z]{1,2}[0-9]{1,3}[a-zA-z]{2,3}$\")){\n\n      registrationNumber = registrationNumber.substring(0, 1)+ \" \" \n      + registrationNumber.substring(1,4) +\" \"+ registrationNumber.substring(4);\n\n      this.registrationNumberIsValid = true;\n      return { registrationNumber: registrationNumber, registrationNumberIsValid: this.registrationNumberIsValid, country:'A', type:type };\n\n    } else {\n      this.registrationNumberIsValid = false;\n      return { registrationNumber: '', registrationNumberIsValid: this.registrationNumberIsValid ,  country:'A', type:type };\n    }\n\n  }\n\n  // Switzerland validation\n  isValiSwitzerlandAutoAndMoto(registrationNumber, type) {\n\n    registrationNumber = this.cleanRegistrationNumber(registrationNumber);\n\n    if(registrationNumber.match(\"^[a-zA-Z]{2}[0-9]{6}$\")){\n\n      registrationNumber = registrationNumber.substring(0, 2)+ \" \" \n      + registrationNumber.substring(2);\n\n      this.registrationNumberIsValid = true;\n      return { registrationNumber: registrationNumber, registrationNumberIsValid: this.registrationNumberIsValid, country:'CH', type:type };\n\n    } else {\n      this.registrationNumberIsValid = false;\n      return { registrationNumber: '', registrationNumberIsValid: this.registrationNumberIsValid ,  country:'CH', type:type };\n    }\n  }\n\n  // Andorra validation\n  isValiAndorraAutoAndMoto(registrationNumber, type) {\n    registrationNumber = this.cleanRegistrationNumber(registrationNumber);\n\n    if(registrationNumber.match(\"^[a-zA-Z]{1}[0-9]{4}$\")){\n\n      registrationNumber = registrationNumber.substring(0, 1)+ \" \" \n      + registrationNumber.substring(1);\n\n      this.registrationNumberIsValid = true;\n      return { registrationNumber: registrationNumber, registrationNumberIsValid: this.registrationNumberIsValid, country:'CH' , type: type};\n\n    } else {\n      this.registrationNumberIsValid = false;\n      return { registrationNumber: '', registrationNumberIsValid: this.registrationNumberIsValid ,  country:'CH', type: type};\n    }\n\n  }\n\n  // validation by country\n  isValidRegistrationNumber(registrationNumber, country, type) {\n\n    //console.log(\"Registartion service .js\", registrationNumber, country, type)\n\n    //registrationNumber = this.cleanRegistrationNumber(registrationNumber.toUpperCase());\n\n    switch (country) {\n      // france\n      case 'FR':\n        return this.isValidFrance(registrationNumber);\n\n      // italy\n      case 'IT':\n        return this.isValidItalyAutoAndMoto(registrationNumber, type);\n\n      // monaco\n      case 'MC':\n        return this.isValidMonacoAutoAndMoto(registrationNumber, type);\n\n      // belgium\n      case 'BE':\n        return this.isValidBelgiumAutoAndMoto(registrationNumber, type);\n\n      // spain\n      case 'ES':\n        return this.isValidSpainAutoAndMoto(registrationNumber, type);\n\n      // luxemburg\n      case 'LU':\n        return this.isValiLuxembourgAutoAndMoto(registrationNumber, type);\n\n      // netherland\n      case 'NL':\n        return this.isValiNetherlandAutoAndMoto(registrationNumber, type);\n\n      // germany\n      case 'DE':\n        return this.isValiGermanyAutoAndMoto(registrationNumber, type);\n\n      // austria\n      case 'AT':\n        return this.isValiAustriaAutoAndMoto(registrationNumber, type);\n\n      // switzerland\n      case 'CH':\n        return this.isValiSwitzerlandAutoAndMoto(registrationNumber, type);\n\n      // Andorra  \n      case 'AD':\n        return this.isValiAndorraAutoAndMoto(registrationNumber, type);\n      \n      default:\n        console.error(`country ${country} not supported`);\n    }\n\n  }\n\n}\n\nexport default new RegistrationNumber();","import { render } from \"./RegistrationNumberInput.vue?vue&type=template&id=553c8d16&scoped=true\"\nimport script from \"./RegistrationNumberInput.vue?vue&type=script&lang=js\"\nexport * from \"./RegistrationNumberInput.vue?vue&type=script&lang=js\"\n\nimport \"./RegistrationNumberInput.vue?vue&type=style&index=0&id=553c8d16&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-553c8d16\"]])\n\nexport default __exports__","import { render } from \"./EventCreateVehicle.vue?vue&type=template&id=5e16db30\"\nimport script from \"./EventCreateVehicle.vue?vue&type=script&lang=js\"\nexport * from \"./EventCreateVehicle.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n  <div v-if=\"prestations.length >0 \" class=\"card-body position-relative\">\n    <!-- list of prestations -->\n    <div class=\"media-list media-list-bordered media-list-divided media-list-sm w-50 mx-auto\">\n      <div class=\"media flexbox align-items-center cursor-pointer\"  v-for=\"prestation in prestations\" :key=\"prestation.name\" @click=\"selectPrestation(prestation)\">\n        <div class=\"col-10 ms-3 d-flex align-items-center\">\n\n          <i :class=\"`fs-30 ${prestation.icon} me-4`\" />\n          <span class = \"fs-16\" v-tippy=\"{ content: `<small>Prestation</small>` , placement:'right'}\">\n            {{prestation.name}}\n          </span>\n\n        </div>\n        <div v-if=\"existPrestation(prestation.name)\">\n          <i class=\"mdi mdi-check fs-18\" />\n        </div>\n      </div>\n    </div>\n\n    <div class=\"text-center pt-3\">\n      <button type=\"submit\" class=\"btn btn-round btn-custom\" @click=\"submitPrestations()\">Suivant</button>\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n  </div>\n\n  <div v-else-if=\" prestations.length = 0 \" class=\"card-body text-center\" >\n    <div class=\"fs-22 fw-600\"> Aucune prestation associée à l'atelier</div>\n    <div class=\"mdi mdi-clipboard-alert-outline fs-60 m-5\"/>\n  </div>\n\n</template>\n\n<script>\nimport CustomMessage from '../../../common/CustomMessage.vue';\n\nexport default {\n\n  name:\"PrestationsChooser\",\n\n  emits:[\"step-changed\"],\n\n  components:{\n    CustomMessage\n  },\n\n  props:{\n    event:{\n      type:Object,\n      return:{}\n      }\n    },\n\n  data() {\n    return {\n      companyCode : this.$store.state.auth.user.companyCode,\n      message: \"\",\n      prestations : [],\n      selectedPrestations :[],\n    }\n  },\n \n  activated() {\n    this.loadEnabledPrestation();\n  },\n\n  methods:{\n\n    loadEnabledPrestation(){\n\n      let loadPrestationsReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n      };\n\n      fetch(\"/api/workshop-prestation-category/enabled/\"+this.companyCode+\"/\"+this.event.workshopCode, loadPrestationsReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok) {\n            let data = await response.json();\n            this.prestations = data;\n            return;\n          } \n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadEnabledPrestation.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    prestationName(){\n      var pristationNames =[];\n      for(const prestation in this.selectedPrestations){\n        pristationNames.push(this.selectedPrestations[prestation].name);\n      }\n      return pristationNames;\n    },\n\n    submitPrestations(){\n      if(this.selectedPrestations.length > 0)\n          this.$emit('step-changed', 3 , this.prestationName());\n      else\n        this.message = 'Veuillez choisir au moins une prestation';\n    },\n    \n    existPrestation(prestationName){\n      for(const prestation in this.selectedPrestations)\n        if(prestationName === this.selectedPrestations[prestation].name)\n          return true;\n      return false;\n    },\n\n    uncheckedPrestation(prestation){\n\n      for(const presta in this.selectedPrestations)\n        if(prestation.name === this.selectedPrestations[presta].name)\n          this.selectedPrestations.splice(presta, 1);\n    },\n\n    selectPrestation(prestation){\n      if(this.existPrestation(prestation.name) == false){\n        this.selectedPrestations.push(prestation);\n        this.message='';\n      }\n      else if(this.existPrestation(prestation.name) == true)\n        this.uncheckedPrestation(prestation);\n    },\n\n  },\n\n};\n</script>\n\n<style>\n\n</style>","import { render } from \"./PrestationsChooser.vue?vue&type=template&id=0ab02ed0\"\nimport script from \"./PrestationsChooser.vue?vue&type=script&lang=js\"\nexport * from \"./PrestationsChooser.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"p-0 position-relative w-50 mx-auto form-type-material \">\n\n    <div class=\"fs-15\">Souhaitez-vous un véhicule de courtoisie ? <Switch :checked=\"info.vehicleLoaner\" @update:checked=\"updateChecked\" :label=\"''\" class=\"ms-4\"/></div>\n\n    <div class=\"w-100 mt-3\">\n      <textarea type=\"text\" rows=\"6\" cols=\"100\"  v-model=\"info.eventComment\" maxlength=\"1000\" placeholder=\"Commentaire\"></textarea> \n      <label class=\"text-gray fs-14\"></label> \n    </div>\n\n    <div class=\"text-center pt-3\">\n      <button type=\"submit\" class=\"btn btn-custom btn-round \" @click=\"submitInfoSection\">Suivant</button>\n    </div>\n\n\n  </div>\n\n</template>\n\n<script>\nimport Switch from \"../../../common/Switch.vue\";\n\nexport default {\n\n  name:\"CreateEventInfo\",\n\n  emits:['step-changed'],\n\n  components:{\n    Switch\n  },\n  \n  data(){\n    return{\n      info:{\n        eventComment:\"\", \n        vehicleLoaner: false}\n    }\n  },\n\n  methods:{\n    updateChecked(check){\n      this.info.vehicleLoaner = check;\n    },\n\n    submitInfoSection(){\n      this.$emit('step-changed', 4 , this.info)\n    }\n  }\n\n}\n</script>\n\n<style  scoped>\n.form-type-material textarea {\n  border: none;\n  border-bottom: 1px solid #D6D6D6;\n  font-weight: 400;\n  font-size: 16px;\n  width: 100% !important;\n  border-radius: 0;\n  padding: 0px;\n}\n\n.form-type-material textarea:focus{\n  outline: none;\n  border-bottom: 2px solid #D6D6D6;\n}\n\n</style>","<template>\n  <label class=\"switch switch-default\">\n    <input v-bind=\"$attrs\" class=\"input\" type=\"checkbox\" :checked=\"checked\" @change=\"$emit('update:checked', $event.target.checked)\"/>\n    <span class=\"switch-indicator\"></span>\n    <span class=\"switch-description\">{{ label }}</span>\n  </label>\n\n</template>\n\n<script>\nexport default {\n  name: \"Switch\",\n  props: {\n    label: {\n      type: String,\n      required: true,\n    },\n    checked: {\n      type: Boolean,\n      required: true,\n    },\n  },\n};\n</script>\n\n<style scoped>\n\n.switch {\n  font-weight: 300;\n  letter-spacing: 0;\n  margin-bottom: 0;\n  line-height: 29px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n.switch.disabled {\n opacity:.5;\n cursor:not-allowed\n}\n.switch input {\n  display:none\n}\n.switch input:disabled ~ span {\n cursor:not-allowed;\n opacity:.5\n}\n.switch input:checked ~ .switch-indicator::after {\n  background:#00203f;\n  left:calc(100% - 20px);\n  box-shadow:0px 0px 3px #fcfdfe;\n}\n.switch-indicator {\n position:relative;\n display:inline-block;\n width:40px;\n height:10px;\n background:#e3e4e5;\n border-radius:20px;\n vertical-align:middle;\n transition:0.3s\n}\n.switch-indicator::after {\n content:'';\n display:block;\n position:absolute;\n left:0px;\n top:0px;\n width:20px;\n height:20px;\n transition:0.3s;\n cursor:inherit;\n background:#fff;\n border-radius:50%;\n top:-5px;\n box-shadow:0px 0px 3px #bbb\n}\n.switch-description {\n  padding-left: 6px;\n}\n/** switch-default */\n.switch-default input:checked+.switch-indicator {\n  background:#c8c8c8;\n  border-color:#c8c8c8;\n}\n.switch-default input:checked+.switch-indicator::after {\n  background:#00203f\n}\n\n/** switch-green */\n.switch-green input:checked+.switch-indicator {\n  background:#e3fcf2;\n  border-color:#e3fcf2\n}\n.switch-green input:checked+.switch-indicator::after {\n  background:#15c377\n}\n\n\n</style>","import { render } from \"./Switch.vue?vue&type=template&id=837f4bf6&scoped=true\"\nimport script from \"./Switch.vue?vue&type=script&lang=js\"\nexport * from \"./Switch.vue?vue&type=script&lang=js\"\n\nimport \"./Switch.vue?vue&type=style&index=0&id=837f4bf6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-837f4bf6\"]])\n\nexport default __exports__","import { render } from \"./EventCreateInfo.vue?vue&type=template&id=48565e51&scoped=true\"\nimport script from \"./EventCreateInfo.vue?vue&type=script&lang=js\"\nexport * from \"./EventCreateInfo.vue?vue&type=script&lang=js\"\n\nimport \"./EventCreateInfo.vue?vue&type=style&index=0&id=48565e51&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-48565e51\"]])\n\nexport default __exports__","<template>\n   <Form v-on:submit=\"submitClientSection\" :validation-schema=\"clientSchema\" v-slot=\"{ errors }\" class=\"text-center\">\n      <div class=\"mx-auto form-type-material w-34 ps-4 pe-2\" v-auto-animate>\n\n        <!-- clientName -->\n        <div class=\"form-group\">\n            <Field type=\"text\" class=\"form-control\" name=\"clientName\" :class=\"{ 'is-invalid': errors.clientName, 'focus':!clientEditable}\" :disabled=\"!clientEditable\" v-model=\"client.clientName\" required/>\n            <label class=\"required\" for=\"clientName\">Nom</label>\n            <ErrorMessage name=\"clientName\" class=\"display-flex invalid-feedback \" />\n        </div>\n\n        <!-- clientFirstName -->\n        <div class=\"form-group\">\n            <Field type=\"text\" class=\"form-control\" name=\"clientFirstName\" :class=\"{ 'is-invalid': errors.clientFirstName, 'focus':!clientEditable}\" :disabled=\"!clientEditable\" v-model=\"client.clientFirstName\" required />\n            <label class=\"required\" for=\"clientFirstName\">Prénom</label>\n            <ErrorMessage name=\"clientFirstName\" class=\"display-flex invalid-feedback \" />\n        </div>\n\n        <!-- email -->\n        <div class=\"form-group\">\n          <Field type=\"text\" class=\"form-control\" name=\"email\" :class=\"{ 'is-invalid': errors.email }\" required v-model=\"client.email\" />\n          <label class=\"required\" for=\"email\">Email</label>\n          <ErrorMessage name=\"email\" class=\"display-flex invalid-feedback \" />\n        </div>\n\n        <!-- mobile -->\n        <Field name=\"mobile\" type=\"text\" v-model=\"client.mobile\">\n          <PhoneInput \n            :modelValue=\"client.mobile\"\n            @value-updated=\"selectedPhone\" \n            :country=\"event.workshop.country\" \n            :phoneType=\"'MOBILE'\" \n            :error=\" errors.mobile\" />\n        </Field>\n\n        <!-- vehicleOwner -->\n        <div style=\"width: 110%;\"> \n          <span class=\"ps-0\">Ce véhicule appartient-il à une société ou un loueur ?</span> \n          <Switch class=\"ps-2\" :checked=\"hasVehicleOwner\" :label=\"''\" @update:checked=\"updateChecked\" /> \n          <Field type=\"text\" class=\"form-control\" name=\"vehicleOwner\" :class=\"{ 'is-invalid': errors.vehicleOwner }\" required  v-model=\"hasVehicleOwner\" hidden/>\n        </div>\n\n        <!-- clientSocietyName -->\n        <div v-if=\"hasVehicleOwner == true\">\n          <div class=\"form-group\">\n            <Field type=\"text\" class=\"form-control\" name=\"clientSocietyName\" :class=\"{ 'is-invalid': errors.clientSocietyName }\" v-model=\"client.clientSocietyName\" required/>\n            <label class=\"required\" for=\"clientSocietyName\">Nom de la société ou du loueur</label>\n            <ErrorMessage name=\"clientSocietyName\" class=\"display-flex invalid-feedback \" />\n          </div>\n        </div>\n\n        <div class=\"text-center pt-3\">\n          <button type=\"submit\" class=\"btn btn-custom btn-round \">Ajouter l'événement</button>\n        </div>\n\n      </div>\n    </Form>\n</template>\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport Switch from \"../../../common/Switch.vue\";\nimport PhoneInput from \"../../../common/PhoneInput.vue\";\nimport { parsePhoneNumber} from 'libphonenumber-js';\n\nexport default {\n\n name:\"CreateEventClient\",\n \n emits:[\"step-changed\"],\n\n  setup() {\n   const clientSchema = Yup.object().shape({\n     clientName: Yup.string().required(\"Nom est obligatoire\"),\n     clientFirstName:Yup.string().required(\"Prenom est obligatoire\"),\n     email:Yup.string().required(\"Email est obligatoire\").email(\"email invalide\"),\n     mobile: Yup.string().required(\"Portable est obligatoire\"),\n     vehicleOwner:Yup.boolean(),\n     clientSocietyName: Yup.string()\n     .when(('vehicleOwner'),\n       { is: true, then: Yup.string().required(\"Nom de la société ou du loueur est obligatoire\")}\n       ),\n     });\n\n   return { clientSchema};\n  },\n\n components: {\n  Form,\n  Field,\n  ErrorMessage,\n  Switch,\n  PhoneInput\n },\n\n  props:{\n    event:{\n      type:Object,\n      return:{}\n    }\n  },\n\n data(){\n  return{\n   client:{},\n   clientEditable:true,\n   hasVehicleOwner:false,\n   clientSocietyName: '',\n   mobile:\"\"\n  }\n },\n\n activated(){\n\n  if(this.event.client && this.event.client.clientCode){\n\n    this.client = this.event.client;\n    this.clientEditable = false;\n    \n    // selected phone number\n    const mobile = parsePhoneNumber(this.event.client.mobile);\n    this.mobile =  mobile.format('NATIONAL', {nationalPrefix: false});\n\n    // if client object dose not have vehicleOwner attribute    \n    if(!this.event.client.vehicleOwner)\n      this.client.vehicleOwner = false;\n\n    if(this.client.clientSocietyName)\n      this.client.vehicleOwner = true;\n  }\n },\n\n methods:{\n\n  selectedPhone(mobile){\n    this.mobile = mobile;\n    this.client.mobile = mobile;\n  },\n\n  updateChecked(check){\n   this.hasVehicleOwner = check;\n  },\n\n  submitClientSection(values){\n   values.vehicleOwner = this.hasVehicleOwner;\n   values.mobile = this.mobile;\n   this.$emit('step-changed', 5 , values);\n  },\n },\n\n}\n</script>\n\n<style scoped>\n.form-control:disabled{\n background-size: 0 2px, 100% 1px !important;\n}\n.display-flex{\n  display: flex !important;\n}\n.w-34 {\n  width: 34% !important;\n}\n</style>","<template>\n\n  <div class=\"row phone-input\">\n    <div class=\"col pe-0\">\n      <div class=\"dropdown form-group cursor-pointer\" :class=\"[{'pointer-not-allowed' : updatableCountry == false}]\">\n          \n        <button class=\"btn dropdown-toggle form-control btn-default\" :class=\"[{ 'hide-caret' : updatableCountry == false }]\" \n                type=\"button\" id=\"dropdownMenuProfile\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n          <input type=\"text\" name=\"callingCode\" hidden required v-model=\"callingCode\" />\n          <label class=\"floating-label\" for=\"callingCode\" :class=\"[{'required':required}, {'do-float':callingCode}]\">Pays</label>\n          <span class=\"float-start fs-12\" v-if=\"callingCode\"> <span :class=\"'fi fi-'+iso2.toLowerCase()\"/> {{callingCode}}</span>\n        </button>\n\n        <ul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuProfile\" >\n          <li class=\"dropdown-item\" v-for=\"countryItem in countries\" :key=\"countryItem\" @click=\"selectCountry(countryItem)\">\n            <span :class=\"'fi fi-'+countryItem.iso2.toLowerCase()\"/> {{countryItem.name}} ({{countryItem.callingCode}})\n          </li>\n        </ul>\n      </div>\n\n    </div>\n\n    <div class=\"col-10\">\n     \n      <input name=\"isValidPhone\" type=\"text\" required v-model=\"isValidPhone\" hidden/>\n      <div class=\"input-group\" :class=\"callingCode ? '':'pointer-not-allowed' \">\n\n        <input id=\"phone\" type=\"text\" class=\"form-control\" \n          name=\"phone\"\n          v-model=\"phone\"\n          v-maska :data-maska=\"phoneNumberMask\"\n          v-on:paste=\"onPaste\" \n          @blur=\"phoneValidation\"  \n          @keyup.enter=\"phoneValidation\"\n          :class=\"[errorMessage ?  'is-invalid': '' ]\"\n          required />\n\n        <label for=\"phone\" :class=\"[isValidPhone == false? '':'do-float', {'required':required}]\">{{phoneTypeLabel}}</label>\n      </div>\n      \n    </div>\n    <span v-if=\"errorMessage\" class=\"d-flex invalid-feedback\"> {{ errorMessage }}</span>\n\n  </div>\n\n</template>\n\n<script>\n\nimport { isPossiblePhoneNumber, isValidPhoneNumber, parsePhoneNumber} from 'libphonenumber-js/max';\nimport * as Yup from \"yup\";\nimport { vMaska } from \"maska\";\n\nexport default {\n\n  name:\"PhoneInput\",\n\n  $_veeValidate: {\n    value() {\n      return this.phone;\n    }\n  },\n\n  directives: {maska: vMaska,},\n\n  emits:['value-updated'],\n\n  props:{\n    modelValue: { required: true },\n    country: { type: String, default(){ return '' } },\n    updatableCountry: { type: Boolean, default(){ return true } },\n    phoneType: { type: String, default(){ return \"MOBILE\" } },\n    required: { type: Boolean, default(){ return true }},\n    error: { type:String, default(){ return '' } },\n  },\n\n  setup() {\n\n    const phoneShema = Yup.object().shape({\n      isValidPhone:Yup.boolean(),\n      phone: Yup.string().nullable()\n        .when(('isValidPhone'),{ \n          is: false, \n          then: Yup.string(\"Format invalide\").min(3,\"Format invalide\").max(0,\"Format invalide\"),\n        }),\n      });\n\n    const countries = [\n      {name:'France',      callingCode:'+33',  iso2:'FR', phoneMask:'## ## ## ## ##',  mobileMask:'## ## ## ## ##'},\n      {name:'Monaco',      callingCode:'+377', iso2:'MC', phoneMask:'## ## ## ##',     mobileMask:'## ## ## ## ##'},\n      {name:'Belgique',    callingCode:'+32',  iso2:'BE', phoneMask:'## ### ## ##',    mobileMask:'#### ## ## ##'},\n      {name:'Suisse',      callingCode:'+41',  iso2:'CH', phoneMask:'### ### ## ##',   mobileMask:'### ### ## ##'},\n      {name:'Andorre',     callingCode:'+376', iso2:'AD', phoneMask:'### ###',         mobileMask:'### ###'},\n      {name:'Italie',      callingCode:'+39',  iso2:'IT', phoneMask:'### ### ####',    mobileMask:'### ### ####'},\n      {name:'Espagne',     callingCode:'+34',  iso2:'ES', phoneMask:'## ### ## ##',    mobileMask:'### ## ## ##'},\n      {name:'Luxembourg',  callingCode:'+352', iso2:'LU', phoneMask:'## ## ## ##',     mobileMask:'### ### ###'},\n      {name:'Pays-Bas',    callingCode:'+31',  iso2:'NL', phoneMask:'### ### ####',     mobileMask:'## ########'},\n      {name:'Allemagne',   callingCode:'+49',  iso2:'DE', phoneMask:'## #### ####',    mobileMask:'##### #######'}, \n      {name:'Autriche',    callingCode:'+43',  iso2:'AT', phoneMask:'### #####',       mobileMask:'#### ######'}\n      ];\n\n    return { phoneShema, countries };\n  },\n\n  data(){\n    return {\n      phone: this.modelValue,\n      callingCode:'',\n      iso2 : '',\n      isValidPhone: true,\n      phoneTypeLabel:'Portable',\n      errorMessage: this.error,\n      phoneNumberMask:'',\n    };\n  },\n\n  created(){\n\n     // init country from phone number\n     if(this.modelValue){\n      var number = parsePhoneNumber(this.modelValue);\n      this.phone = number.formatNational();\n      this.callingCode = \"+\"+number.countryCallingCode;\n      this.iso2 = number.country;\n      const filtredCountries = this.countries.filter(countryItem => countryItem.iso2 == this.iso2);\n      this.selectPhoneNumberMask(filtredCountries[0]);\n\n      this.phoneValidation();\n    }\n\n    if(this.country){\n      var filtredCountries = this.countries.filter(countryItem => countryItem.name == this.country);\n      var selectedCountry = filtredCountries[0];\n      this.callingCode = selectedCountry.callingCode;\n      this.iso2 = selectedCountry.iso2;\n      this.selectPhoneNumberMask(selectedCountry);\n    }\n\n    if(this.phoneType == 'FIXED_LINE')\n      this.phoneTypeLabel = 'Téléphone';\n    else\n      this.phoneTypeLabel = 'Portable';\n\n  },\n\n  watch:{\n\n    country(newValue, oldValue){\n      if(newValue != oldValue){\n        var data  = this.countries.filter(countryItem => countryItem.name == newValue);\n        var selectedCountry = data[0];\n        this.callingCode = selectedCountry.callingCode;\n        this.iso2 = selectedCountry.iso2;\n        this.phone = '';\n        this.$emit(\"value-updated\", '');\n        this.selectPhoneNumberMask(selectedCountry);\n\n      }\n    },\n\n    error(newValue, oldValue){\n      if (newValue !== oldValue) {\n\n        // update error message only if phone is valid\n        if(this.isValidPhone)\n          this.errorMessage = newValue;\n      }\n    },\n\n  },\n\n  methods:{\n\n    selectCountry(countryItem){\n      if(countryItem.callingCode != this.callingCode){\n        this.phone = '';\n        this.$emit(\"value-updated\", '');\n      }\n      var selectedCountry = countryItem;\n      this.callingCode = selectedCountry.callingCode;\n      this.iso2 = selectedCountry.iso2;\n      this.selectPhoneNumberMask(selectedCountry);\n\n    },\n\n    phoneValidation(){\n      \n      // init phone and error message\n      if(!this.phone){\n        this.errorMessage = '';\n        this.phone = '';\n        this.isValidPhone = true;\n      } \n      \n      // check if phone is a valid number\n      if(this.phone){ \n\n        var number = parsePhoneNumber(this.phone, this.iso2 );\n\n        var isValid = isValidPhoneNumber( this.phone, this.iso2);\n        var isPhoneNumber = isPossiblePhoneNumber( this.phone, this.iso2);\n\n        if(isValid && isPhoneNumber && number.getType() == this.phoneType){\n          this.isValidPhone = true;\n          this.phone = number.formatNational();\n        } else{\n          this.isValidPhone = false;\n        }\n      }\n\n      this.phoneShema.isValid({\"isValidPhone\":this.isValidPhone, \"phone\":this.phone})\n        .then((valid) => {\n          if(valid){            \n            this.errorMessage = '';\n\n            // emit phone if exist\n            if(this.phone){\n              var number = parsePhoneNumber(this.phone, this.iso2 );\n              this.$emit(\"value-updated\", number.format('INTERNATIONAL'));\n            } else {\n              // check if parent component contain an error message\n              if(this.error)\n                this.errorMessage = this.error;\n              this.$emit(\"value-updated\", '');\n            }\n          } else {          \n            // update error message if phone is not valid \n            if(this.phoneType == 'FIXED_LINE')\n              this.errorMessage = \"Format téléphone fix invalid\";\n            else\n              this.errorMessage = \"Format téléphone mobile invalid\";\n            this.$emit(\"value-updated\", '');\n          }\n        });\n      \n    },\n\n    onPaste(event) {\n      event.preventDefault();\n      const pastedPhoneNumber = event.clipboardData.getData('text');\n      const number = parsePhoneNumber(pastedPhoneNumber, this.iso2);\n      this.phone = number.formatNational();\n    },\n\n    selectPhoneNumberMask(country){\n      if(this.phoneType == 'FIXED_LINE'){\n        this.phoneNumberMask = country.phoneMask;\n        return this.selectPhoneNumberMask;\n      }\n      this.phoneNumberMask = country.mobileMask;\n      return this.phoneNumberMask;\n    }\n\n  }\n\n}\n</script>\n\n<style scoped>\n\n.phone-input .btn-default{\n  display: flex;\n  align-items: center;\n  height: 36px;\n}\n\n.phone-input .dropdown .dropdown-toggle.hide-caret::after {\n  display: none;\n}\n\n.phone-input .dropdown .dropdown-toggle::after {\n  position: absolute;\n  right: 3px;\n}\n\n/* floating-label */\n.phone-input~.floating-label {\n  top: 12px !important;\n}\n\n.phone-input .invalid-feedback{\n  position:relative;\n  bottom: 20px;\n}\n\n</style>","import { render } from \"./PhoneInput.vue?vue&type=template&id=6c418f12&scoped=true\"\nimport script from \"./PhoneInput.vue?vue&type=script&lang=js\"\nexport * from \"./PhoneInput.vue?vue&type=script&lang=js\"\n\nimport \"./PhoneInput.vue?vue&type=style&index=0&id=6c418f12&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6c418f12\"]])\n\nexport default __exports__","import { render } from \"./EventCreateClient.vue?vue&type=template&id=62c8ec0c&scoped=true\"\nimport script from \"./EventCreateClient.vue?vue&type=script&lang=js\"\nexport * from \"./EventCreateClient.vue?vue&type=script&lang=js\"\n\nimport \"./EventCreateClient.vue?vue&type=style&index=0&id=62c8ec0c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62c8ec0c\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"mx-auto w-50 text-center fs-17 mt-5\">\n    <p>Événement créé avec succès</p>\n    <div class=\"mt-5 mb-5\">\n      <i class=\"mdi mdi-calendar-check-outline fs-60\" />\n    </div>\n    <button type=\"submit\" class=\"btn btn-round btn-custom mb-2\" @click=\"displayEventPage()\" >Consulter l'événement</button>\n  </div>\n\n</template>\n\n<script>\nexport default {\n  name: \"CreateEventConfirmation\",\n\n  props: {\n    event: {\n      type: Object,\n      return: {},\n    },\n  },\n\n  methods: {\n    displayEventPage() {\n      if (this.event.eventCode != \"\")\n        this.$router.push({ name: \"event\", params: { eventCode: this.event.eventCode } });\n    },\n  },\n};\n</script>\n\n<style>\n</style>","import { render } from \"./EventCreateConfirmation.vue?vue&type=template&id=e44fa350\"\nimport script from \"./EventCreateConfirmation.vue?vue&type=script&lang=js\"\nexport * from \"./EventCreateConfirmation.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./EventCreate.vue?vue&type=template&id=ef4cf828\"\nimport script from \"./EventCreate.vue?vue&type=script&lang=js\"\nexport * from \"./EventCreate.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"container\">\n\n    <header class=\"header-bar justify-content-between my-3 shadow-1\" v-if=\"workshop.workshopName != undefined\">\n      <!-- workshop -->\n      <div class=\"col-4\">\n        <div class=\"fs-20 fw-600\"> {{workshop.workshopName}}</div>\n        <div class=\" mt-2 text-lighter\"> \n          <i class=\"mdi mdi-map-marker-outline\"/> \n          <span class=\"\"> {{workshop.workshopAddress}}</span>\n        </div>\n      </div>\n      <!-- date -->\n      <div class=\"col-4\">\n\n        <div class=\"d-flex fs-15 text-capitalize\">\n          <i class=\"mdi mdi-calendar-month-outline fs-24 text-lighter\"/>\n          <span class=\"ms-1\">Date: </span>\n          <span class=\"ms-1 fw-600 text-orange font-italic\" v-if=\"event.eventDate != undefined\">\n            {{event.eventDate}}\n          </span>\n        </div>\n\n        <div class=\"d-flex mt-2 fs-15 text-capitalize\">\n          <i class=\"mdi mdi-clock-time-eight-outline fs-24 text-lighter\"/>\n          <span class=\"ms-1\">Heure: </span>\n          <span class=\"ms-1 fw-600 text-orange font-italic\" v-if=\"event != undefined\">\n            {{event.eventTime}}\n          </span>\n        </div>\n\n      </div>\n\n    </header>\n\n    <div class=\"card card-body\">\n      \n      <EventMoveDateChooser :startDate=\"selectedTimeSlotObject.date\" \n        :workshopCode=\"workshopCode\" v-on:time-slot-selected=\"onTimeSlotSelected\" >\n      </EventMoveDateChooser>\n      \n      <!-- pop up confirmation -->\n      <EventMoveConfirmation\n        :show=\"showModal\" \n        :selectedDay=\"selectedTimeSlotObject.date\" \n        :selectedTime=\"selectedTimeSlotObject.startTime\"\n        v-on:close=\"showModal = false\" \n        v-on:event-date-updated=\"updateEventDate\">\n      </EventMoveConfirmation>\n\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n  </div>\n\n</template>\n \n<script>\nimport { useRoute } from \"vue-router\";\nimport moment from \"moment\";\nimport EventMoveDateChooser from \"./event-move/EventMoveDateChooser.vue\"; \nimport EventMoveConfirmation from \"./event-move/EventMoveConfirmation.vue\";\nimport CustomMessage from '../common/CustomMessage.vue';\n\nexport default {\n\n  name:\"EventMove\",\n\n  components:{\n    EventMoveDateChooser,\n    EventMoveConfirmation,\n    CustomMessage\n  },\n\n  setup() {\n    moment.locale('fr');\n    let workshopCode = useRoute().params.workshopCode;\n    let eventCode =useRoute().params.eventCode;\n    return { workshopCode, eventCode }\n  },\n\n  data(){\n    return {\n      selectedTimeSlotObject: {},\n      workshop: {},\n      companyCode: this.$store.state.auth.user.companyCode,\n      showModal: false,\n      event: \"\",\n      message: \"\",\n    }\n  },\n\n  created() {\n    this.loadWorkshop();\n    this.loadFirstAvailibility();\n    this.loadEvent();\n    let now = moment();\n    if(moment(this.event.eventDate,\"DD/MM/YYYY\").isBefore(now)){\n      this.selectedTimeSlotObject.date =  now.endOf('week').format('DD/MM/YYYY');\n    }\n  },\n\n  methods:{\n\n    onTimeSlotSelected(timeSlot){\n      this.selectedTimeSlotObject = timeSlot;\n      this.showModal =true;\n    },\n\n    loadWorkshop() {\n\n      let loadWorkshopReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n      };\n\n      fetch(\"/api/workshop/\"+this.companyCode +\"/\"+this.workshopCode, loadWorkshopReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok){\n            this.workshop = await response.json();\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadWorkshop.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    loadEvent() {\n      this.loading = true;\n      let loadEventReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n          Authorization: this.$authTokenService.authToken()\n        }\n      };\n      fetch(\"/api/event/get-event/\"+this.$store.state.auth.user.companyCode+\"/\"+this.eventCode, loadEventReq)\n        .then( async response => {\n          this.loading = false;\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok){\n            this.event = await response.json();\n            return;\n          }\n          return Promise.reject(response);\n\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadEvent.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    loadFirstAvailibility(){\n\n      let firstAvalibilityObject = {\n        workshopCode: this.workshopCode,\n        companyCode: this.companyCode \n      };\n\n      let firstAvailibility = {\n        method: \"POST\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()},\n        body: JSON.stringify(firstAvalibilityObject),\n      };\n\n      fetch(\"/api/workshop-calendar/first-availability\", firstAvailibility)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok){\n            if(response.status == 200)\n              this.selectedTimeSlotObject = await response.json();\n\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadFirstAvailibility.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    },\n\n    dateFormat(date) {\n      return moment(date, \"DD/MM/YYYY\").local(\"fr\").format(\"dddd DD/MM/YYYY\");\n    },\n\n    updateEventDate(){\n\n      const timeSlot = moment(this.selectedTimeSlotObject.startTime, \"HH:mm\");\n      const hours = timeSlot.hours();\n      const minutes = timeSlot.minutes();\n      const selectedDay = this.selectedTimeSlotObject.date;\n      const eventDate = moment(selectedDay, \"DD/MM/YYYY\").local(\"fr\").hours(hours).minutes(minutes).format(\"YYYY-MM-DD HH:mm\");\n\n      let eventReqBody = {\n        eventDate : eventDate,\n        eventCode : this.eventCode,\n        companyCode :this.companyCode,\n        workshopCode : this.workshopCode,\n        userCode : this.$store.state.auth.user.userCode,\n        eventAffectedUserCode : this.eventAffectedUserCode,\n      };\n\n      let eventUpdateReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body : JSON.stringify(eventReqBody)\n      };\n\n      fetch(\"/api/event/action/move-event-date\", eventUpdateReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok) {\n            this.$router.push({name:\"event\", params:{eventCode:this.eventCode}});\n            return;\n          } \n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.updateEventDate.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    }\n\n  }\n}\n\n</script>\n\n<style>\n\n</style>","<template>\n\n  <div class=\"calendar\" v-auto-animate>\n\n    <div class=\"calendar-header\">\n\n      <!-- Prev week -->\n      <div class=\"arrow float-start\">\n        <a class=\"btn d-flex\" v-on:click=\"getPreviousCalendars()\" :class=\"previousEnabled() == false ? 'disabled':'' \" >\n          <i class=\"mdi mdi-chevron-left fs-30\"/>\n        </a>\n      </div>\n\n      <!-- next week -->\n      <div class=\"arrow float-end \">\n        <a class=\"btn d-flex\" v-on:click=\"getNextCalendars()\" v-if=\"disableNextWeekNavigation == false\" >\n          <i class=\"mdi mdi-chevron-right fs-30\"/>\n        </a>\n      </div>\n\n    </div>\n\n    <ul class=\"calendar-days\">\n      \n      <li v-for=\"day in week\" :key=\"day\" class=\"calendar-day\">\n        \n        <!-- day and date -->\n        <div class=\"calendar-day-header\">\n          <span class=\"day-name\">{{day.day}}</span>\n          <span class=\"day-number\">{{formatDate(day.date, 'DD MMMM')}}</span>\n        </div>\n\n        <!-- widget -->\n        <div class=\"calendar-day-widget\" :class=\"[day.workshopClosure? 'bg-orange-lighter':'']\" v-auto-animate>\n          <EventMoveDateChooserDayWidget :day=\"day\" />\n        </div>\n        \n        <!-- timeSlot column chooser -->\n        <div :style=\"this.displayAll == true ? `'max-height:${highetOfDisplayAll} %; overflow: auto;'`  :  'overflow: auto; max-height: 370px;'\">\n          <EventCreateDateChooserTimeSlots :timeSlots=\"day.timeSlots\" v-on:time-slot-selected=\"onTimeSlotSelected\" :date=\"day.date\" :maxTimeSlots='maxLengthOfTimeSlots()'/>\n        </div>\n\n      </li>\n\n    </ul>\n\n    <div v-if=\"displayAll == false && !isEmptyTimeSlots\" class=\"more-hours text-center\" @click=\"displayAllTimeSlots()\" >\n      <a class=\"btn fs-20\" v-tippy=\"{ content: 'Afficher toutes les disponibilités' , placement:'top'}\">\n        <i class=\"mdi mdi-chevron-down fs-32\"/>\n      </a>\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n  </div>\n\n</template>\n\n<script>\nimport moment from \"moment\";\nimport EventCreateDateChooserTimeSlots from \"./date-chooser/EventMoveDateChooserTimeSlots.vue\";\nimport EventMoveDateChooserDayWidget from \"./date-chooser/EventMoveDateChooserDayWidget.vue\";\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"EventMoveDateChooser\",\n\n  emits: [\"time-slot-selected\"],\n\n  components: {\n    EventCreateDateChooserTimeSlots,\n    EventMoveDateChooserDayWidget,\n    CustomMessage\n  },\n\n  props: {\n    startDate: {\n      type: String,\n      default() {\n        return moment().format(\"DD/MM/YYYY\");\n      },\n    },\n\n    workshopCode: {\n      type: String,\n    },\n  },\n\n  setup() {\n    moment.locale(\"fr\");\n    let workshopCalendars = {};\n\n    return { workshopCalendars };\n  },\n\n  data() {\n    return {\n      highetOfDisplayAll: \"\",\n      daysName: [\n        \"Lundi\",\n        \"Mardi\",\n        \"Mercredi\",\n        \"Jeudi\",\n        \"Vendredi\",\n        \"Samedi\",\n        \"Dimanche\",\n      ],\n      week: [],\n      displayAll: false,\n      companyCode: this.$store.state.auth.user.companyCode,\n      startOfweek: moment(this.startDate, \"DD/MM/YYYY\").clone().startOf(\"week\"),\n      endOfWeek: moment(this.startDate, \"DD/MM/YYYY\").clone().endOf(\"week\"),\n      disableNextWeekNavigation:false,\n      message: \"\",\n      isEmptyTimeSlots:false\n    };\n  },\n\n  created() {\n    this.moment = moment;\n    this.startOfweek = moment(this.startDate, \"DD/MM/YYYY\").clone().startOf(\"week\"),\n    this.endOfWeek = moment(this.startDate, \"DD/MM/YYYY\").clone().endOf(\"week\");\n    this.disableNextWeekNavigation = false;\n    this.loadAvailabilities();\n  },\n\n  methods: {\n    displayAllTimeSlots() {\n      this.displayAll = true;\n      this.highetOfDisplayAll = (1 + this.maxLengthOfTimeSlots() * 0.1) * 100;\n    },\n\n    maxLengthOfTimeSlots() {\n      var maxLength = 0;\n      for (const day in this.week) {\n        if (maxLength <= this.week[day].timeSlots.length)\n          maxLength = this.week[day].timeSlots.length;\n      }\n      return maxLength;\n    },\n\n    previousEnabled() {\n      var today = new Date();\n      if (this.startOfweek.isBefore(today)) return false;\n      return true;\n    },\n\n    onTimeSlotSelected(timeSlot) {\n      this.$emit(\"time-slot-selected\", timeSlot);\n    },\n\n    formatDate(value, pattern) {\n      return moment(value, \"DD/MM/YYYY\").local(\"fr\").format(pattern);\n    },\n\n    getNextCalendars() {\n      this.startOfweek = this.startOfweek.clone().add(1, \"weeks\");\n      this.endOfWeek = this.endOfWeek.clone().add(1, \"weeks\");\n      this.loadAvailabilities();\n    },\n\n    getPreviousCalendars() {\n      this.startOfweek = this.startOfweek.subtract(1, \"weeks\");\n      this.endOfWeek = this.endOfWeek.subtract(1, \"weeks\");\n      this.disableNextWeekNavigation = false;\n      this.loadAvailabilities();\n    },\n\n    loadAvailabilities() {\n      var loadAvailabilitiesReqBody = {\n        workshopCode: this.workshopCode,\n        companyCode: this.companyCode,\n        startDate: this.startOfweek.format(\"DD/MM/YYYY\"),\n        endDate: this.endOfWeek.format(\"DD/MM/YYYY\"),\n      };\n\n      let loadAvailabilitiesReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(loadAvailabilitiesReqBody),\n      };\n\n      fetch(\"/api/workshop-calendar/workshop-avalibilites\", loadAvailabilitiesReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.workshopCalendars = await response.json();\n            \n            const hasWorkshopCalendarId = this.workshopCalendars.find(item => item.workshopCalendarId);\n            if (!hasWorkshopCalendarId) {\n              this.disableNextWeekNavigation = true;\n              this.startOfweek = this.startOfweek.subtract(1, \"weeks\");\n              this.endOfWeek = this.endOfWeek.subtract(1, \"weeks\");\n              this.loadAvailabilities();\n              return;\n            }\n            // this.week = this.workshopCalendars;\n            this.buildEventChooser();\n            this.maxLengthOfTimeSlots();\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadAvailabilities.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    buildEventChooser() {\n      var calendarStartDate = this.startOfweek.clone();\n      var weekDays = [];\n      while (this.endOfWeek.isAfter(calendarStartDate)) {\n        var dayOfWeek = {};\n        const workshopCalendar = this.workshopCalendarByDate( calendarStartDate.format(\"DD/MM/YYYY\"));\n        \n        dayOfWeek.day = calendarStartDate.format(\"ddd\").toUpperCase();\n        dayOfWeek.date = calendarStartDate.format(\"DD/MM/YYYY\");\n\n        if(workshopCalendar && workshopCalendar.timeSlots)\n          dayOfWeek.timeSlots = workshopCalendar.timeSlots\n        else \n          dayOfWeek.timeSlots= []\n\n        if(workshopCalendar && workshopCalendar.workshopClosure)\n          dayOfWeek.workshopClosure = workshopCalendar.workshopClosure\n\n        // if workshop calendar is not null\n        if (workshopCalendar) {\n          dayOfWeek.workshopCapacity = workshopCalendar.workshopCapacity;\n          dayOfWeek.workshopCharge = workshopCalendar.workshopCharge;\n          dayOfWeek.workshopEventsSize = workshopCalendar.workshopEventsSize;\n          dayOfWeek.workshopAvailability = workshopCalendar.workshopAvailability;\n          dayOfWeek.workshopLoad = workshopCalendar.workshopLoad;\n        } else {\n          // if workshop calendar is undefined\n          dayOfWeek.workshopCharge = 0;\n          dayOfWeek.workshopEventsSize = 0;\n          dayOfWeek.workshopAvailability = 0;\n          dayOfWeek.workshopLoad = 0;\n        }\n        weekDays.push(dayOfWeek);\n        calendarStartDate = calendarStartDate.add(1, \"days\");\n      }\n      this.week = weekDays;\n      this.isEmptyTimeSlots = this.areAllTimeSlotsEmpty(this.week);\n\n    },\n\n    areAllTimeSlotsEmpty(week) {\n      for (let day of week) {\n        if (!Array.isArray(day.timeSlots) || day.timeSlots.length > 0) {\n          return false;\n        }\n      }\n      return true;\n    },\n\n    workshopCalendarByDate(date){\n      for(var day of this.workshopCalendars){\n        if(moment(date, 'DD/MM/YYYY').isSame(moment(day.date, 'DD/MM/YYYY'), \"D\")){\n          return day; \n        }\n      }\n        return null;\n    },\n  },\n};\n</script>\n\n<style scoped>\n\n</style>","<template>\n    \n    <ul class=\"time-slots text-center\" v-if=\"timeSlots.length > 0\">\n\n        <li class=\"time-slot\" v-for=\"i in timeSlotsIndex\" :key=\"i\">\n            <div v-if=\"timeSlots[i] != undefined \">\n\n                <a  v-if=\"timeSlots[i].startTime != '' && timeSlots[i].availability >= 1 \" @click=\"onSelectedTimeSlot(timeSlots[i])\">\n                    {{timeSlots[i].startTime}}\n                </a>\n\n                <a v-else-if=\"timeSlots[i].availability == 0 \" class=\"pointer-not-allowed opacity-25 fw-600\"> \n                    {{timeSlots[i].startTime}}\n                </a>\n\n            </div>\n            <a v-else class=\"time-slot empty-hour time-slot empty-hour pointer-not-allowed\"></a>\n        </li>\n\n    </ul>\n\n    <ul class=\"time-slots text-center\" v-else-if=\"timeSlots.length == 0\">\n        <li class=\"time-slot\" v-for=\"i in timeSlotsIndex \" :key=\"i\">\n            <a class=\"time-slot empty-hour time-slot empty-hour pointer-not-allowed\"></a>\n        </li>\n    </ul>\n\n</template>\n\n<script>\nimport moment from \"moment\";\nimport {range} from \"lodash\"\n\n\nexport default {\n    \n    name:\"EventCreateDateChooserTimeSlots\",\n    \n    emits:['time-slot-selected'],\n\n    data(){\n      return {\n         selectedTimeSlot:\"\",\n         timeSlotsIndex: range(0, this.maxTimeSlots),\n        }\n    },\n\n    props:{\n        timeSlots:{\n            type: Array,\n            default(){return null}\n        },\n\n        date:{\n            type:String,\n            default(){return null}\n        },\n\n        maxTimeSlots:{\n            type :Number,\n            default(){\n                return 5;\n            }\n        }\n    },\n\n    created(){\n        this.moment = moment;\n    },\n\n    methods:{\n\n        onSelectedTimeSlot(timeSlot){\n            this.selectedTimeSlot = timeSlot;\n            this.selectedTimeSlot.date = this.date;\n            this.$emit(\"time-slot-selected\", this.selectedTimeSlot);\n        }\n\n    }\n}\n</script>\n\n<style scoped>\n\n.time-slots {\n display: inline-block;\n padding: 0px 15px;\n margin-top: 0;\n list-style: none;\n vertical-align: top;\n width: 100%;\n}\n.time-slots li {\n    margin-top: 20px;\n    height: 30px;\n}\n.time-slot {\n text-align: center;\n display: block;\n position: relative;\n}\n.time-slot a {\n width : 100%;\n padding: 5px 16px;\n cursor: pointer;\n font-size: 18px;\n}\n.time-slot:not(.empty-hour) a:hover,\n.time-slot:not(.empty-hour) a.selected {\n border: 2px solid #55CD97;\n border-radius: 5px;\n color: #FFFFFF;\n background: #55CD97;\n}\n.time-slot.empty-hour {\n padding: 6px 16px;\n}\n.time-slot.empty-hour::before {\n content: \" \";\n height: 2px;\n width: 15px;\n display: inline-block;\n margin-bottom: 8px;\n background-color: rgba(67,95,113,0.3);\n}\n.time-slot .reserved{\n    background: #f9eeee;\n}\n</style>","import { render } from \"./EventMoveDateChooserTimeSlots.vue?vue&type=template&id=5ae5122d&scoped=true\"\nimport script from \"./EventMoveDateChooserTimeSlots.vue?vue&type=script&lang=js\"\nexport * from \"./EventMoveDateChooserTimeSlots.vue?vue&type=script&lang=js\"\n\nimport \"./EventMoveDateChooserTimeSlots.vue?vue&type=style&index=0&id=5ae5122d&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5ae5122d\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"widget\" v-if=\"day.workshopCapacity > 0\" :include=\"['load']\">\n\n    <!-- prgress bar -->\n    <div class=\"progress-line\">\n      <!--  class in the list conditionally of load value -->\n      <div class=\"progress-bar\" :class=\"[\n            day.workshopLoad < 0.6 ? 'bg-green' : '',\n            day.workshopLoad >= 0.6 && day.workshopLoad < 0.9 ? 'bg-orange' : '',\n            day.workshopLoad >= 0.9 ? 'bg-red' : ''\n          ]\"\n        role=\"progressbar\" :style=\"{width: day.workshopLoad*100+'%', height: 4+'px' }\" :aria-valuenow='`${day.workshopLoad *100}`' aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n    </div>\n\n    <!-- availability -->\n    <div class=\"text-lighter\">\n      <span class=\"float-start fs-11\" v-tippy=\"{ content: `<small>Taux de charge</small>` , placement:'left'}\"> \n        %{{(day.workshopLoad * 100).toFixed(2)}} \n      </span>\n      <span class=\"float-end me-1 fs-11\" v-tippy=\"{ content: `<small>Disponibilité</small>` , placement:'right'}\">\n        {{formatTime(day.workshopAvailability)}}\n      </span>\n    </div>\n\n  </div>\n\n  <div class=\"widget\" v-if=\"day.workshopCapacity == 0 || day.workshopCapacity == undefined\">\n  \n    <div class=\"text-lighter text-center\">\n\n      <div v-if=\"this.day.workshopClosure\">\n        <p class=\"fs-9\" v-tippy=\"{ content: '<small>Fermeture exceptionnelle</small>' , placement:'top' }\"> {{this.day.workshopClosure.workshopClosureReasonValue}}  </p>\n      </div>\n      <div v-else-if=\"day.workshopCapacity == 0\" >\n        <p class=\"fs-9\" v-tippy=\"{ content: '<small>Atelier fermé</small>' , placement:'top' }\"> indisponible </p>  \n      </div>\n      <div v-else>\n        <p class=\"fs-9\" v-tippy=\"{ content: '<small>Hors période de planning</small>' , placement:'top' }\"> <i class=\"mdi mdi-dots-horizontal text-muted\" /> </p>\n      </div> \n      \n    </div>\n\n  </div>\n\n</template>\n\n<script>\n\nimport helperService from \"@/services/helper.service.js\";\n\nexport default {\n\n  name: \"EventMoveDateChooserDayWidget\",\n\n  props: {\n\n    day: {\n      type: Object,\n      required: true,\n    },\n  },\n\n  activated(){\n    //console.log(\"workshopCapacity\", this.day.workshopCapacity, \"charge\", this.day.workshopLoad);\n  },\n\n  methods:{\n    formatTime : helperService.formatTime,\n  },\n\n};\n</script>\n\n<style scoped>\n.widget {\n  display: grid;\n}\n.widget .fs-9 {\n  line-height: 21px;\n}\n.widget .progress-line {\n  height: auto;\n  border-radius: 2px;\n  margin-bottom: 5px;\n  background-color: #f5f6f7;\n  display: flex;\n  height: 4px;\n}\n.widget .progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  transition: width .6s ease;\n}\n\n</style>","import { render } from \"./EventMoveDateChooserDayWidget.vue?vue&type=template&id=5a50e0d4&scoped=true\"\nimport script from \"./EventMoveDateChooserDayWidget.vue?vue&type=script&lang=js\"\nexport * from \"./EventMoveDateChooserDayWidget.vue?vue&type=script&lang=js\"\n\nimport \"./EventMoveDateChooserDayWidget.vue?vue&type=style&index=0&id=5a50e0d4&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5a50e0d4\"]])\n\nexport default __exports__","import { render } from \"./EventMoveDateChooser.vue?vue&type=template&id=0f58dabf\"\nimport script from \"./EventMoveDateChooser.vue?vue&type=script&lang=js\"\nexport * from \"./EventMoveDateChooser.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  \n  <Transition name=\"modal\">\n  \n    <div v-if=\"show\" class=\"modal-mask\">\n\n      <div class=\"modal-wrapper\">\n        \n        <div class=\"modal-container p-0\">\n          <div class=\"card mb-0\">\n\n            <div class=\"card-header\"> \n              <div class=\" fs-16 fw-600\"> \n                <i class=\"mdi mdi-calendar-edit-outline text-muted fs-17 me-1\" /> Modification de la date de l'événement\n              </div>\n            </div> \n\n            <div class=\"card-body fs-16 fw-500 mx-auto\">\n              <div> \n                <span> Le nouveau créneau de l'évènement sera </span>\n              </div>\n\n              <div class=\"fs-16 fw-600 text-capitalize\"> \n                <span> {{dateFormat(selectedDay)}} <i class=\"mdi mdi-clock-outline\"/> {{selectedTime}} </span>\n              </div> \n\n            </div> \n\n            <div class=\"card-footer text-center btn-row p-2\">\n              <button class=\"btn btn-round btn-custom w-25\" @click=\"$emit('close')\">Annuler</button>\n              <button class=\"btn btn-round btn-custom w-25\" @click=\"$emit('event-date-updated')\">Confirmer</button>\n              </div>\n          </div>\n\n        </div>\n        \n      </div>\n\n    </div>\n\n  </Transition>\n\n</template>\n\n<script>\nimport moment from \"moment\";\n\nexport default {\n\n  name:\"EventMoveConfirmation\",\n\n  emits:[\"close\", \"event-date-updated\"],\n\n  props: {\n\n    show: {\n      type: Boolean,\n      default() {\n        return false;\n      },\n    },\n\n    selectedDay: {\n      type: String,\n      default() {\n        return \"\";\n      },\n    },\n\n    selectedTime: {\n      type: String,\n      default() {\n        return \"\";\n      },\n    },\n\n  },\n\n  setup(){\n    moment.locale(\"fr\");\n  },\n\n  methods: {\n\n    dateFormat(date) {\n      return moment(date, \"DD/MM/YYYY\").local(\"fr\").format(\"dddd DD MMMM YYYY\");\n    },\n\n  },\n\n}\n</script>\n\n<style scoped>\n\n</style>","import { render } from \"./EventMoveConfirmation.vue?vue&type=template&id=01ec235e\"\nimport script from \"./EventMoveConfirmation.vue?vue&type=script&lang=js\"\nexport * from \"./EventMoveConfirmation.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./EventMove.vue?vue&type=template&id=1b262aed\"\nimport script from \"./EventMove.vue?vue&type=script&lang=js\"\nexport * from \"./EventMove.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  \n  <div class=\"container-fluid\">\n\n    <div class=\"d-flex my-3\">\n    \n      <!-- toggle filter -->\n      <div v-if=\"displayFilter == false\" class=\"pe-5\">\n        <a class=\"hamburger\" :class=\"displayFilter ? 'is-open' : 'is-closed' \" @click=\"displayFilter = true\" v-tippy=\"{ content: 'Afficher le filtre' , placement:'right' }\">\n          <span class=\"hamb-top\"></span>\n          <span class=\"hamb-middle\"></span>\n          <span class=\"hamb-bottom\"></span>\n        </a>\n      </div>\n\n      <!-- filter -->\n      <div v-if=\"displayFilter\" class=\"col-md-3 col-xl-2 pe-3\">\n        <UserFilter v-on:user-filter-updated=\"onFilterUpdated\"  v-on:filter-closed=\"clearFilter\"/>\n      </div>\n\n      <div class=\"col\">\n\n        <div v-if=\"this.$store.state.auth.user && this.$store.state.auth.user.companyStatus !== 'DISABLED' \" \n             class=\"fab fab-fixed\"  \n             v-tippy=\"{ content: `Ajouter un utlisateur` , placement:'left' }\" \n             v-on:click=\"showQuickView()\">\n          <a class=\"btn btn-float\" >\n            <i class=\"mdi mdi-plus\" />\n          </a>\n        </div>\n\n        <div v-auto-animate>\n          <UserList\n            v-bind:data-list-items=\"dataListResponse.data\"\n            v-bind:sort-field=\"dataListRequest.sortField\"\n            v-on:sort=\"order\"\n            :loading=\"loading\"\n            v-on:user-updated=\"fetchData\"\n          />\n          <Pagination\n            v-bind:initPageStart=\"dataListRequest.pageStart\"\n            v-bind:rootPageLength=\"dataListRequest.pageLength\"\n            v-bind:totalPages=\"dataListResponse.totalPages\"\n            v-bind:totalRecords=\"dataListResponse.totalRecords\"\n            v-on:pageLength=\"pageLengthHandler\"\n            v-bind:pageLengths=\"pageLengths\"\n            v-on:fetchData=\"fetchDataHandler\"\n          />\n        </div>\n\n        <!-- Loader -->\n        <div v-show=\"loading\" class=\"loading reveal\">\n          <span class=\"spinner-border\" role=\"status\"></span>\n        </div>\n\n        <!-- error message -->\n        <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n      \n      </div>\n\n      <div v-if=\"isOpen\" class=\"quickview-container\">\n        <UserCreate \n          v-on:close=\"closeQuickView\"\n          v-on:user-created=\"closeQuickView(), fetchData()\" />\n      </div>\n\n    </div>\n    \n  </div>\n  \n</template>\n\n<script>\nimport UserList from \"./users/UserList.vue\";\nimport Pagination from \"../pagination/Pagination.vue\";\nimport UserCreate from \"./users/UserCreate.vue\"\nimport CustomMessage from '../common/CustomMessage.vue';\nimport UserFilter from './users/UserFilter.vue'\n\nexport default {\n  \n  name: \"Users\",\n\n  components: {\n    UserList,\n    Pagination,\n    UserCreate,\n    CustomMessage,\n    UserFilter\n  },\n\n  data() {\n    return {\n      isOpen: false,\n      dataListRequest: {\n        companyCode: this.$store.state.auth.user.companyCode,\n        sortField: \"creationDate\", // sort field\n        serverSide: true, //server side\n        pageLength: 5, // page length\n        pageStart: 0,\n        status: ['INITIAL', 'ENABLED', 'BLOCKED'],\n        roles : []\n      },\n      loading: false,\n      pageLengths: [5, 10, 25, 50],\n      dataListResponse: {},\n      message: \"\",\n      displayFilter: true\n    };\n  },\n\n\n  methods: {\n\n    closeQuickView(){\n      this.isOpen=false;\n    },\n    \n    showQuickView(){\n      if(this.isOpen==true){\n        this.isOpen=false;\n      }\n      else {\n        this.isOpen=true;\n      }\n    },\n\n    fetchDataHandler(value) {\n      this.dataListRequest.pageStart = value;\n      this.fetchData();\n    },\n\n    // Page length handler of child value emitted\n    pageLengthHandler(value) {\n      this.dataListRequest.pageStart = 0;\n      this.dataListRequest.pageLength = value;\n      this.fetchData();\n    },\n\n    fetchData() {\n\n      this.loading = true;\n\n      this.dataListRequest.role = this.$store.state.auth.user.role;\n      \n      if(this.$store.state.auth.user.workshopCode)\n        this.dataListRequest.workshopCode = this.$store.state.auth.user.workshopCode;\n\n      let dataListReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(this.dataListRequest),\n      };\n\n      fetch(\"/api/user/users/pagination\", dataListReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.loading = false;\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.dataListResponse = await response.json();\n            this.loading = false;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          this.loading = false;\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.fetchData.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        }); \n    },\n\n    order(fieldName) {\n      this.dataListRequest.sortField = fieldName;\n      this.fetchData();\n    },\n\n    updatePageLength(length){\n      this.dataListRequest.pageLength=length;\n      this.fetchData();\n    },\n\n    onFilterUpdated(filter){\n      this.dataListRequest.pageStart = 1;\n      this.dataListRequest.workshopCode = filter.workshopCode;\n      if(this.$store.state.auth.user.workshopCode)\n        this.dataListRequest.workshopCode = this.$store.state.auth.user.workshopCode\n        \n      if(filter.roles)\n        this.dataListRequest.roles = filter.roles;\n\n      if(filter.status)\n        this.dataListRequest.status = filter.status;\n\n      this.fetchData();\n\n    },\n\n    clearFilter(){\n      this.displayFilter = false;\n      this.dataListRequest.pageStart = 1;\n      this.dataListRequest.workshopCode = null;\n      if(this.$store.state.auth.user.workshopCode)\n        this.dataListRequest.workshopCode = this.$store.state.auth.user.workshopCode;\n\n      this.dataListRequest.roles = [];\n      this.dataListRequest.status = ['INITIAL', 'ENABLED', 'BLOCKED'];\n\n      this.fetchData();\n    },\n    \n  },\n\n};\n</script>\n\n<style scoped>\n\n/*-------------------------------*/\n/*       Hamburger-Cross         */\n/*-------------------------------*/\n.hamburger {\n  position: fixed;\n  top: 90px;  \n  z-index: 999;\n  display: block;\n  width: 32px;\n  height: 32px;\n  background: transparent;\n  border: none;\n}\n.hamburger:hover,\n.hamburger:focus,\n.hamburger:active {\n  outline: none;\n}\n.hamburger.is-closed:before {\n  content: '';\n  display: block;\n  width: 100px;\n  font-size: 14px;\n  color: #fff;\n  line-height: 32px;\n  text-align: center;\n  opacity: 0;\n  -webkit-transform: translate3d(0,0,0);\n  -webkit-transition: all .35s ease-in-out;\n}\n.hamburger.is-closed:hover:before {\n  opacity: 1;\n  display: block;\n  -webkit-transform: translate3d(-100px,0,0);\n  -webkit-transition: all .35s ease-in-out;\n}\n\n.hamburger.is-closed .hamb-top,\n.hamburger.is-closed .hamb-middle,\n.hamburger.is-closed .hamb-bottom,\n.hamburger.is-open .hamb-top,\n.hamburger.is-open .hamb-middle,\n.hamburger.is-open .hamb-bottom {\n  position: absolute;\n  left: 0;\n  height: 4px;\n  width: 100%;\n}\n.hamburger.is-closed .hamb-top,\n.hamburger.is-closed .hamb-middle,\n.hamburger.is-closed .hamb-bottom {\n  background-color: #00203f;\n}\n.hamburger.is-closed .hamb-top { \n  top: 5px; \n  -webkit-transition: all .35s ease-in-out;\n}\n.hamburger.is-closed .hamb-middle {\n  top: 50%;\n  margin-top: -2px;\n}\n.hamburger.is-closed .hamb-bottom {\n  bottom: 5px;  \n  -webkit-transition: all .35s ease-in-out;\n}\n\n.hamburger.is-closed:hover .hamb-top {\n  top: 0;\n  -webkit-transition: all .35s ease-in-out;\n}\n.hamburger.is-closed:hover .hamb-bottom {\n  bottom: 0;\n  -webkit-transition: all .35s ease-in-out;\n}\n.hamburger.is-open .hamb-top,\n.hamburger.is-open .hamb-middle,\n.hamburger.is-open .hamb-bottom {\n  background-color: #00203f;\n}\n.hamburger.is-open .hamb-top,\n.hamburger.is-open .hamb-bottom {\n  top: 50%;\n  margin-top: -2px;  \n}\n.hamburger.is-open .hamb-top { \n  -webkit-transform: rotate(45deg);\n  -webkit-transition: -webkit-transform .2s cubic-bezier(.73,1,.28,.08);\n}\n.hamburger.is-open .hamb-middle { display: none; }\n.hamburger.is-open .hamb-bottom {\n  -webkit-transform: rotate(-45deg);\n  -webkit-transition: -webkit-transform .2s cubic-bezier(.73,1,.28,.08);\n}\n.hamburger.is-open:before {\n  content: '';\n  display: block;\n  width: 100px;\n  font-size: 14px;\n  color: #fff;\n  line-height: 32px;\n  text-align: center;\n  opacity: 0;\n  -webkit-transform: translate3d(0,0,0);\n  -webkit-transition: all .35s ease-in-out;\n}\n.hamburger.is-open:hover:before {\n  opacity: 1;\n  display: block;\n  -webkit-transform: translate3d(-100px,0,0);\n  -webkit-transition: all .35s ease-in-out;\n}\n\n</style>\n","<template >\n\n  <div class=\"media-list media-list-sm media-list-divided media-list-hover\" v-if=\"dataListItems != undefined && dataListItems.length> 0\">\n\n    <header class=\"flexbox align-items-center media-list-header\">\n      <div class=\"dropdown\">\n        <button class=\"btn btn-sm btn-media dropdown-toggle\" type=\"button\" id=\"dropdownMenuButton1\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n          Trier par\n        </button>\n        <ul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton1\">\n          <li v-for=\"field in listConfig.sortedFields\" :key=\"field\">\n\n            <a class=\"dropdown-item\" href=\"#\" :data-field-name=\"field.name\" v-on:click=\"$emit('sort', field.name)\" v-bind:class=\"field.name === sortField ? 'fw-bold' : ''\">\n              {{ field.title }}\n            </a>\n\n          </li>\n        </ul>\n      </div>\n    </header>\n\n    <div class=\"media-list-body bg-white\">\n\n      <div class=\"media d-flex justify-content-between align-items-center\" v-for=\"item in dataListItems\" :key=\"item.userCode\" >\n\n        <a class=\"col-6 flexbox flex-grow align-items-center pointer-not-allowed\">\n          <UserListElement v-bind:element=\"item\" />\n        </a>\n\n        <span class=\"col-2 text-center\"> \n          <span  v-if=\"item.workshop && item.workshop.workshopName\" class=\"badge badge-default text-lighter fs-14\" v-tippy=\"{ content: `<small>Nom d'atelier</small>` , placement:'top' }\">\n          <i class=\"mdi mdi-map-marker-outline\" /> {{item.workshop.workshopName}}</span>\n        </span>\n        \n        <span class=\"col-1 text-center\">\n          <UserStatus :status=\"item.userStatus\" :size=\"14\" />\n        </span>\n\n        <div class=\"col-2 text-center flexbox\">\n          <!--  update user and consulte planning and user absence -->\n          <div v-if=\"item.roleName == 'LEADER' || item.roleName == 'STAFF' \" class=\"btn-group col-9 mb-0\">\n            <button class=\"btn btn-lg\" @click=\"showUserSettingsModal(item)\">Paramétrages</button>\n            <button class=\"btn btn-lg dropdown-toggle dropdown-toggle-split\" id=\"dropdownMenuLink\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"></button>\n            \n            <div class=\"dropdown-menu dropdown-menu-right cursor-pointer\" x-placement=\"bottom-end\" aria-labelledby=\"dropdownMenuLink\" >\n              \n              <a class=\"dropdown-item\" @click=\"displayUserCalendars(item.workshopCode, item.userCode)\" >\n                <i class=\"mdi mdi-chevron-right fs-14\"/> Planning\n              </a>\n\n              <a v-if=\"hasPrivilege('DISPLAY_ABSENCE')\" class=\"dropdown-item\" @click=\"displayUserAbsences(item.userCode)\" >\n                <i class=\"mdi mdi-chevron-right fs-14\"/> Jours d'absences\n              </a>\n\n            </div>\n          </div> \n\n          <div v-else class=\"btn-group col-9 mb-0\">\n            <button class=\"btn btn-lg\" @click=\"showUserSettingsModal(item)\">Paramétrages</button>\n          </div>   \n\n        </div>\n        \n      </div>\n\n      <!-- loader -->\n      <div v-show=\"isLoading\" class=\"loading reveal\">\n        <span class=\"spinner-border\" role=\"status\"></span>\n      </div>\n\n    </div>\n\n    <Teleport to=\"body\">\n      <UserSettingsModal :show=\"isUserSettingsModalOpen\" :user=\"user\" v-on:user-updated=\"updateUser\" v-on:close=\"isUserSettingsModalOpen = false\"/>\n    </Teleport>\n  \n  </div>\n\n  <div v-else-if=\"dataListItems != undefined && dataListItems.length <= 0\" class=\"card text-center min-height-200\">\n    <div class=\"min-height-200 d-flex align-items-center\"> \n      <div class=\"text-center w-100 \">\n        <i class=\"mdi mdi-alert-outline fs-50\"/> \n        <br/> \n        <span class=\"text-muted fs-14\"> \n          Aucun utilisateur\n        </span> \n      </div>\n    </div>\n  </div>\n  \n</template>\n\n<script>\nimport { ListConfig } from \"../../../beans/UserListConfig.js\";\nimport UserListElement from \"./UserListElement.vue\";\nimport UserStatus from \"../common/UserStatus.vue\";\nimport UserSettingsModal from \"./UserSettingsModal.vue\";\nimport { hasPrivilege } from \"../../../services/user.service.js\";\n\nexport default {\n  \n  name: \"UserList\",\n  \n  emits: [\"sort\", \"user-updated\"],\n\n  data() {\n    return {\n      selectedItem: null,\n      direction: \"asc\",\n      isOpen: false,\n      companyCode:this.$store.state.auth.user.companyCode,\n      isLoading : this.loading,\n    };\n  },\n\n  components: {\n    UserListElement,\n    UserStatus,\n    UserSettingsModal\n  },\n\n  props: {\n    \n    dataListItems: {\n      type: Object,\n    },\n\n    sortField: {\n      type: String,\n    },\n\n    listConfig: {\n      type: ListConfig,\n      default() {\n        return new ListConfig();\n      },\n    },\n\n    loading: {\n      type: Boolean,\n      default() {\n        return false;\n      },\n    },\n  },\n\n  data() {\n    return {\n      selectedItem: null,\n      direction: \"asc\",\n      isOpen: false,\n      companyCode: this.$store.state.auth.user.companyCode,\n      isUserSettingsModalOpen: false,\n      user: null\n    };\n  },\n\n  methods: {\n\n    hasPrivilege: hasPrivilege,\n\n    displayUserAbsences(userCode){\n      this.$router.push({ name: 'user-absences', params:{userCode:userCode}});\n    },\n\n    updateUser() {\n      this.$emit(\"user-updated\");\n    },\n\n    displayUserCalendars(workshopCode, userCode){\n      \n      this.$router.push({\n       name: 'user-calendars',\n       params: { companyCode: this.companyCode, workshopCode: workshopCode, userCode: userCode }\n      });\n    },\n\n    showUserSettingsModal(user){\n      this.isUserSettingsModalOpen = !this.isUserSettingsModalOpen;\n      this.user = user;\n    },\n\n  },\n\n};\n</script>\n\n<style lang=\"css\" scoped>\n\n.btn-media {\n  color: #8b95a5;\n  background-color: #fff;\n  border-color: #ebebeb;\n  border-radius: 2px;\n  outline: none !important;\n  transition: 0.15s linear;\n}\n\n</style>\n","export class  ListConfig{\n    constructor(\n        fields= [\n    \n        { name: \"companyCode\", title: \"Code d'entreprise\", visible:true },\n        { name: \"userFirstName\", title: \"Prénom\" , visible:true},\n        { name: \"userLastName\", title: \"Nom\" , visible:true},\n        { name: \"workshopCode\", title: \"Code d'atelier\" , visible:true},\n        { name: \"userStatus\", title: \"Status\" , visible:true},\n        { name: \"email\", title: \"Email\" , visible:true},\n        { name: \"mobile\", title: \"Portable\" , visible:true},\n        { name: \"phone\", title: \"téléphone\" , visible:true},\n        { name: \"superior\", title: \"Supérieur\" , visible:false},\n        { name: \"iconColor\", title: \"Couleur d'icon\" , visible:false},\n        { name: \"creationDate\", title: \"Date de création\" , visible:true},\n        { name: \"photo\", title: \"Photo\" , visible:false},\n        { name: \"userCode\", title: \"Code d'utilisateur\" , visible:true}\n\n    ],\n    sortedFields= [\n        { name: \"creationDate\", title: \"Date de création\" , visible:true},\n        { name: \"userFirstName\", title: \"Prénom\" , visible:true},\n        { name: \"userLastName\", title: \"Nom\" , visible:true},\n        { name: \"userStatus\", title: \"Status\"},\n        { name: \"email\", title: \"Email\" , visible:true},\n        { name: \"mobile\", title: \"Portable\" , visible:true},\n        { name: \"superior\", title: \"Supérieur\" , visible:false},\n    ]\n        ){\n            this.fields=fields;\n            this.sortedFields=sortedFields;\n    }\n}\n ","<template >\n    \n  <div class=\"avatar ms-3 me-3\" id=\"profileImage\" v-bind:style=\"{ background: element.iconColor }\" >\n    {{element.userFirstName.substring(0, 1).concat(element.userLastName.substring(0, 1)).toUpperCase()}}\n  </div>\n\n  <div class=\"media-body flex-grow text-truncate\">\n    \n    <div class=\"d-flex align-items-center pt-1 pb-1\">\n      <div class=\"me-3 fs-17\">\n        {{ element.userFirstName + \" \" }} {{ element.userLastName }}\n      </div>\n\n      <UserRole :role=\"element.roleValue\" :size=\"12\" />\n      \n    </div>\n\n    <div class=\"\">\n      <small>\n        <span v-tippy=\"{ content: '<small>Email</small>' , placement:'top' }\" >\n          <i class=\"mdi mdi-email-outline\"/> {{ element.email.toLowerCase() }}\n        </span>\n        <span class=\"ms-1 me-1\"></span>\n        <span v-tippy=\"{ content: '<small>Portable</small>' , placement:'top' }\" >\n          <i class=\"mdi mdi-cellphone\"/> {{ element.mobile }}\n        </span>\n        <span class=\"ms-2 me-2\"></span>\n        <span v-tippy=\"{ content: '<small>Téléphone</small>' , placement:'top' }\" >\n          <i class=\"mdi mdi-phone-classic\" /> {{ element.phone }}\n        </span>\n      </small>\n    </div>\n\n    <div class=\"\">\n      <small>\n        <span v-tippy=\"{ content: '<small>Date de création</small>' , placement:'top' }\">\n          <i class=\"mdi mdi-calendar-start-outline\"/> {{ element.creationDate }}\n        </span>\n        <span class=\"ms-2 me-2\"></span>\n        <span v-tippy=\"{ content: '<small>Login</small>' , placement:'top' }\">\n          <i class=\"mdi mdi-login\"/> {{ element.login }}\n        </span>\n        <span v-if=\"element.superior\">\n          <span class=\"ms-2 me-2\"></span>\n          <span v-tippy=\"{ content: '<small>Supérieur</small>' , placement:'right' }\">\n            <i class=\"mdi mdi-account-supervisor-circle-outline fs-16\"/>  {{ element.superior.userFirstName + \" \" }} {{ element.superior.userLastName }}\n          </span>\n        </span>\n      </small>\n    </div>\n\n  </div>\n  \n</template>\n\n<script>\nimport UserRole from \"../common/UserRole.vue\";\n\nexport default {\n  \n  name: \"UserListElement\",\n\n  props: {\n    element: {\n      type: Object,\n    }\n  },\n  components:{\n    UserRole\n  },\n\n  methods:{\n  },\n\n};\n</script>\n\n<style lang=\"css\" scoped>\n.avatar {\n  width: 4rem;\n  height: 4rem;\n  border-radius: 50%;\n  font-size: 1.5rem;\n  color: #fff;\n  text-align: center;\n  line-height: 4rem;\n}\nsmall, time, .small {\n  font-weight: 400;\n  font-size: 13px;\n  color: #8b95a5;\n}\n\n</style>\n","<template>\n\n  <span v-if=\"role!=null\" class=\"badge bg-light text-dark ms-3\" :class='`fs-${size}`'\n  v-tippy=\"{ content: '<small>Rôle </small>' , placement:'top' }\"  >\n      {{ role }}\n  </span>\n\n</template>\n\n<script>\nexport default {\n\n  name:\"UserRole\",\n\n  props: {\n    role: {\n      required: true,\n      type: String,\n      default(){\n        return null;\n      }\n    },\n    placement: {\n      type: String,\n      default(){\n        return \"top\";\n      }\n    },\n    size: {\n      type: Number,\n      default(){\n        return 12;\n      }\n    },\n  }\n\n}\n</script>\n\n<style>\n\n</style>","import { render } from \"./UserRole.vue?vue&type=template&id=31a44f57\"\nimport script from \"./UserRole.vue?vue&type=script&lang=js\"\nexport * from \"./UserRole.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./UserListElement.vue?vue&type=template&id=d2eb0ff8&scoped=true\"\nimport script from \"./UserListElement.vue?vue&type=script&lang=js\"\nexport * from \"./UserListElement.vue?vue&type=script&lang=js\"\n\nimport \"./UserListElement.vue?vue&type=style&index=0&id=d2eb0ff8&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d2eb0ff8\"]])\n\nexport default __exports__","\n<template>\n  <Transition name=\"modal\">\n    <div v-if=\"show\" class=\"modal-mask-page\">\n\n      <div class=\"modal-container-page bg-light\">\n\n        <div class=\"text-end\"> <i class=\"mdi mdi-close fs-24 cursor-pointer\" v-on:click=\"$emit('close')\"/> </div>\n\n        <div class=\"w-75 mx-auto\">\n\n          <UserSettings :user=\"user\" v-on:user-updated=\"updateUser\"  />\n\n        </div>\n\n      </div>\n\n    </div>\n  </Transition>\n</template>\n\n<script>\nimport UserSettings from \"./UserSettings.vue\";\n\nexport default {\n\n  name:\"UserSettingsModal\",\n\n  emits: [\"close\", \"user-updated\"],\n\n  props: {\n    show: {\n      type: Boolean\n    },\n    user: {\n      type: Object,\n    }\n  },\n\n  components:{\n    UserSettings\n  },\n\n  methods:{\n\n    updateUser(){\n      this.$emit(\"user-updated\");\n    }\n  }\n\n}\n</script> \n\n\n<style scoped>\n\n.modal-mask-page {\n  position: absolute;\n  z-index: 9998;\n  top: 0;\n  transition: opacity 0.3s ease;\n  width: 100%;\n  height: 100%;\n}\n\n.modal-container-page {\n  min-height: 100%;\n  padding: 20px 30px;\n}\n\n</style>","<template>\n\n  <div>\n\n    <!-- header bar -->\n    <div class=\"my-3\" :class=\"isTablet ==false? 'row':''\" >\n      \n      <div class=\"header-bar justify-content-between fs-17\">\n        <div class=\"d-flex align-items-center\">\n            <span class=\"avatar\" v-bind:style=\"{ background: currentUser.iconColor }\">\n              {{ currentUser.userFirstName.substring(0, 1).toUpperCase() }}{{ currentUser.userLastName.substring(0, 1).toUpperCase() }}\n            </span>\n\n            <span class=\"ms-3\">\n              <span class=\"text-capitalize fs-17\">{{currentUser.userFirstName}} {{currentUser.userLastName}} </span>\n              <small class=\"minus-separator fst-italic\">{{currentUser.roleValue}}</small> \n            </span>\n        </div>\n        <div class=\"d-flex align-items-center\">\n\n          <button v-if=\"currentUser.userStatus.name == 'INITIAL' \" class=\"btn btn-lg me-3\" @click=\"resendActivationEmail\" :disabled=\"loading\" > \n            <span v-show=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\"></span>\n            <span> Envoyer l'email d'activation </span>\n          </button>\n\n          <UserStatus :status=\"currentUser.userStatus\" :size=\"14\" />\n        </div>\n      </div>\n\n    </div>\n\n    <!-- custom message -->\n    <CustomMessage v-if=\"message \" :cssClass=\"'row'\" :message=\"message\" :type=\"successfulSendingMail ? 'success' : 'error'\" @close=\"this.message = ''\" />\n\n    <div class=\"my-3\" :class=\"isTablet ==false? 'row':''\">\n\n        <div class=\"col-lg-3 ps-0\">\n\n          <!-- card elements  --> \n          <div class=\"card\">\n            <ul class=\"nav nav-lg flex-column\">\n              \n              <NavItem v-on:click=\"activeTab = 'userInfo'\" \n                :title=\"'Informations'\" \n                :activated=\"activeTab === 'userInfo' ? true: false\" \n                :exist=\"true\"\n                :toolTipMessage=\"`Modifier les informations de l'utilisateur`\">\n                <span class=\"mdi mdi-information-outline fs-20 me-2\"></span>\n              </NavItem>\n                \n              <NavItem \n                :title=\"'Privilèges'\" \n                v-on:click=\"activeTab = 'privileges'\" \n                :activated=\"activeTab === 'privileges' ? true : false\" \n                :exist=\"true\" \n                :toolTipMessage=\"`Modifier les privilèges de l'utilisateur `\">\n                <span class=\"mdi mdi-account-circle-outline fs-20 me-2\"></span>\n              </NavItem>\n              \n              <NavItem v-if=\"currentUser.roleName ==='LEADER' || currentUser.roleName ==='STAFF'\"\n                v-on:click=\"loadUserConfiguration\" \n                :title=\"`Configuration de l'utilisateur`\" \n                :activated=\"activeTab === 'userConfiguration' ? true : false\" \n                :exist=\"true\" \n                :toolTipMessage=\"`Voir Configuration de l'utilisateur`\" >\n   \n                <span class=\"mdi mdi-cog-outline fs-20 me-2\"></span>\n              </NavItem>\n\n              <NavItem v-if=\"currentUser.roleName == 'DIRECTOR' && hasPrivilege('ASSOCIATE_COMPANY')\"\n                v-on:click=\"activeTab = 'companies'\" \n                :title=\"'Entreprises'\" \n                :activated=\"activeTab === 'companies' ? true : false\" \n                :exist=\"true\" \n                :toolTipMessage=\"'Modifier la configuration des companies'\" >\n                <span class=\"mdi mdi-briefcase-edit-outline fs-20 me-2\"></span>\n              </NavItem>\n\n            </ul>\n          </div>\n\n        </div> \n\n        <!-- second card for compoment -->\n        <div class=\"col-lg-9 p-0\" v-auto-animate>\n\n          <UserInfo v-if=\"activeTab == 'userInfo' && currentUser != undefined\" :user=\"currentUser\" v-on:user-updated=\"loadUser\" />\n          <UserPrivileges v-if=\"activeTab == 'privileges'\" :user=\"currentUser\"/>\n          <UserConfigurationInfo v-if=\"activeTab == 'userConfiguration' && userConfiguration && regularWeeks.length>0\" :regularWeeks=\"regularWeeks\" :configuration=\"userConfiguration\" />\n          <UserCompanies v-if=\"activeTab == 'companies'\" :user=\"user\" />\n\n        </div>\n\n    </div>\n\n  </div>\n</template>\n\n<script>\n\nimport { hasPrivilege } from \"../../../services/user.service.js\";\nimport NavItem from \"../../common/NavItem.vue\";\nimport CustomMessage from '../../common/CustomMessage.vue';\nimport UserStatus from \"../common/UserStatus.vue\";\nimport UserInfo from \"./user-settings/UserInfo.vue\";\nimport UserPrivileges from \"./user-settings/UserPrivileges.vue\";\nimport UserConfigurationInfo from \"./user-settings/UserConfigurationInfo.vue\";\nimport UserCompanies from \"./user-settings/UserCompanies.vue\";\n\nexport default {\n\n  name: \"UserSettings\",\n\n  inject: ['isTablet'],\n\n  emits: [\"user-updated\"],\n\n  components: {\n    NavItem,\n    CustomMessage,\n    UserStatus,\n    UserInfo,\n    UserPrivileges,\n    UserConfigurationInfo,\n    UserCompanies\n  },\n\n  props: {\n    user: {\n      type: Object,\n    }\n  },\n\n  data() {\n    return {\n      activeTab: \"userInfo\",\n      message:\"\",\n      currentUser: this.user,\n      loading: false,\n      regularWeeks: [],\n      userConfiguration:null,\n      companyCode : this.$store.state.auth.user.companyCode,\n      successfulSendingMail: false,\n\n    };\n  },\n\n  methods: {\n\n    hasPrivilege: hasPrivilege,\n\n    loadUser() {\n\n      let loadUserReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n          Authorization: this.$authTokenService.authToken()\n        }\n      };\n\n      fetch(\"/api/user/\"+this.companyCode+\"/\"+this.currentUser.userCode, loadUserReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok){\n            this.currentUser = await response.json();\n            this.$emit(\"user-updated\");\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch( (response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadUser.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    },\n\n    resendActivationEmail(){\n\n      this.loading = true;\n\n      let resendEmailRequest = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n        }\n      };\n\n      fetch(\"/api/auth/resend-activation/\"+this.companyCode+\"/\"+this.currentUser.userCode, resendEmailRequest)\n        .then( async response => {\n          this.loading = false;\n          if (response.ok){\n            this.successfulSendingMail = true;\n            this.message = \"L'utilisateur a reçu un email pour activer son compte\";\n            setTimeout(() => (this.successfulSendingMail = false, this.message =\"\" ), 4000);\n            return;\n          }\n          return Promise.reject(response);\n\n        })\n        .catch( (response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.resendActivationEmail.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    },\n\n    loadUserConfiguration(){\n      this.activeTab = 'userConfiguration';\n      this.userConfiguration = this.currentUser.configuration;\n      this.workshopRegularWeek();\n    },\n\n    workshopRegularWeek() {\n\n      let regularWeekHeaderReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n      };\n\n      fetch(\"/api/regular-week/workshop-regular-week/\"+this.companyCode+\"/\"+this.currentUser.workshopCode, regularWeekHeaderReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if(response.ok){\n            this.regularWeeks = await response.json();\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.workshopRegularWeek.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    },\n\n  },\n\n};\n</script>\n\n<style scoped>\n\n/** tablet */\n@media (min-width:769px) and (max-width : 1280px) {\n  .card.items{\n    min-width: 160%;\n  }\n  .nav{\n    min-width: 100%;\n  }\n  .card{\n    min-width: 100%;\n  }\n}\n\n@media (min-width:640px) and (max-width : 768px) {\n   .card.items{\n    min-width: 160%;\n  } \n   .card{\n    min-width: 100%;\n  }\n}\n\n.avatar {\n  background: rgb(0, 32, 63) none repeat scroll 0% 0%;\n  position: relative;\n  line-height: 36px;\n  text-align: center;\n  border-radius: 100%;\n  color: white;\n  text-transform: uppercase;\n  width: 36px;\n  height: 36px;\n  display: inline-block;\n}\n\n</style>\n","<template>\n\n    <li class=\"nav-item text-nowrap\">\n\n        <span v-if=\"activated==true && exist==false\" class=\"nav-link m-0 d-flex active\" :class=\"exist==false ? 'border-left-orange' : '' \"\n          v-tippy=\"toolTipMessage ?{ content: '<span class='+'fs-11'+'>'+`${toolTipMessage}`+'</span>' , placement:'left' }: false\">\n          <slot></slot> \n          {{title}}\n          <i class=\"mdi mdi-alert-outline ms-auto fs-20\" :class=\"exist==false ? 'text-orange' : '' \"/>\n        </span>\n\n        <span v-if=\"activated==false && exist==false\" class=\"nav-link m-0 d-flex\" :class=\"exist==false ? 'border-left-orange' : '' \"\n          v-tippy=\"toolTipMessage ?{ content: '<span class='+'fs-11'+'>'+`${toolTipMessage}`+'</span>' , placement:'left' }: false\">\n            <slot></slot>\n            {{title}} \n            <i class=\"mdi mdi-alert-outline ms-auto fs-20\" :class=\"exist==false ? 'text-orange' : '' \"/>\n        </span>\n\n        <span v-if=\"activated==false && exist==true\" class=\"nav-link m-0 d-flex\" \n          v-tippy=\"toolTipMessage ?{ content: '<span class='+'fs-11'+'>'+`${toolTipMessage}`+'</span>' , placement:'left' }: false\" >\n          <slot></slot>\n          {{title}}\n          </span>\n\n        <span v-if=\"activated==true && exist==true\" class=\"nav-link m-0 d-flex active\"\n          v-tippy=\"toolTipMessage ? { content: '<span class='+'fs-11'+'>'+`${toolTipMessage}`+'</span>' , placement:'left' }: false\">\n          <slot></slot>\n          {{title}}\n        </span>\n\n    </li>\n\n</template>\n\n<script>\n\nexport default {\n\n  name:\"NavItem\",\n\n  props:{\n      activated:{\n        type: Boolean,\n        default(){\n          return false;\n        }\n      }, \n      exist:{\n        type: Boolean,\n        default(){\n          return false;\n        }\n      },\n      title:{\n        type: String,\n        default(){\n          return \"\";\n        }\n      },\n      toolTipMessage:{\n        type: String,\n        default(){\n          return \"\";\n        }\n      }\n  },\n\n}\n</script>\n\n<style  scoped>\n.nav.flex-column .nav-item {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  height: 29px;\n  transition: .2s linear;\n}\n.nav-lg .nav-item {\n  height: 55px !important;\n  font-size: 14px;\n}\n.nav.flex-column .nav-link {\n  flex: 1 1;\n  padding: 0;\n}\n.nav-lg .nav-link {\n  line-height: 55px;\n  font-weight: 300;\n}\n\n.nav-link {\n  color: #8b95a5;\n  padding-top: 4px;\n  padding-bottom: 4px;\n  cursor: pointer;\n}\n.nav-link.active {\n  color: #4d5259;\n  background-color: #f9fafb;\n  border-left: 2px solid #00203f;\n}\n.nav-link:hover {\n  background-color: #f9fafb;\n}\n\n</style>","import { render } from \"./NavItem.vue?vue&type=template&id=2a4955b0&scoped=true\"\nimport script from \"./NavItem.vue?vue&type=script&lang=js\"\nexport * from \"./NavItem.vue?vue&type=script&lang=js\"\n\nimport \"./NavItem.vue?vue&type=style&index=0&id=2a4955b0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2a4955b0\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"card\">\n      \n    <div class=\"card-body form-type-material p-3\">\n\n      <div v-if=\"user && enableModification == false\" class=\"row\">\n        \n        <!-- userLastName -->\n        <div class=\"col-md-12\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{user.userLastName}}</span>  \n            <label > Nom:</label>  \n          </div>\n        </div>\n\n        <!-- userFirstName -->\n        <div class=\"col-md-12\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{user.userFirstName}}</span>  \n            <label > Prénom:</label>  \n          </div>\n        </div>\n\n        <!-- email -->\n        <div class=\"col-md-12\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{user.email}}</span>  \n            <label > Email:</label>  \n          </div>\n        </div>\n        \n        <!-- login -->\n        <div class=\"col-md-12\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{user.login}}</span>  \n            <label > Login:</label>  \n          </div>\n        </div>\n\n        <!-- phone -->\n        <div class=\"col-md-12\" >\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{user.phone}}</span>  \n            <label > Téléphone:</label>  \n          </div>\n        </div>\n\n        <!-- mobile -->\n        <div class=\"col-md-12\" >\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{user.mobile}}\n              <i v-if=\"!user.mobile\" class=\"mdi mdi-minus\"></i>\n            </span>  \n            <label > Portable:</label>  \n          </div>\n        </div>\n\n        <!-- color -->\n        <div class=\"col-md-12\">\n        <div class=\"form-group do-float\">\n          <span class=\"badge fs-20 pt-2 pb-2 pe-4 mt-1\" :style=\"{ background: user.iconColor }\"> </span>\n          <label> Couleur de profile</label>  \n        </div>\n      </div>\n\n        <!-- Role -->\n        <div class=\"col-md-12\" >\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{user.roleValue}} </span>  \n            <label > Rôle:</label>  \n          </div>\n        </div>\n\n        <!-- Atelier -->\n        <div class=\"col-md-12\" >\n          <div v-if=\"user.workshop\" class=\"form-group do-float\">\n            <span class=\"form-control\">{{user.workshop.workshopName}} </span>  \n            <label > Atelier:</label>  \n          </div>\n        </div>\n\n        <!-- superior -->\n        <div class=\"col-md-12\" >\n          <div v-if=\"user.superior\"  class=\"form-group do-float\">\n            <span class=\"form-control\">\n              {{user.superior.userFirstName}} {{user.superior.userLastName}}\n            </span>   \n            <label > Supérieur:</label>  \n          </div>\n          <div v-else-if=\"user.roleName =='LEADER' || user.roleName =='STAFF'\" class=\"form-group do-float\">\n            <span class=\"form-control\">\n              <i class=\"mdi mdi-minus\"></i>\n            </span>   \n            <label > Supérieur:</label>  \n          </div>\n        </div>\n\n        <div class=\"text-center pt-3\">\n          <button type=\"submit\" class=\"btn btn-custom btn-round\" v-on:click=\"enableUpdate\" >Modifier</button>\n        </div>\n\n      </div>\n\n      <!-- user update form -->\n      <UserInfoUpdate v-else :user=\"user\" v-on:user-updated=\"updateUser\" v-on:user-update-canceled=\"cancelUpdateUser\"/>\n  \n    </div>\n\n  </div>\n  \n</template>\n\n<script>\n\nimport UserInfoUpdate from \"./UserInfoUpdate.vue\"\n\nexport default {\n\n  name: \"UserInfo\",\n\n  emits: [\"user-updated\"],\n\n  components: {\n    UserInfoUpdate\n  },\n\n  props: {\n    user: {\n      type: Object,\n    }\n  },\n\n  data(){\n   return{\n    enableModification: false,\n   }\n  },\n\n  methods:{\n    enableUpdate(){\n      this.enableModification = true;\n    },\n    \n    updateUser(){\n      this.$emit(\"user-updated\");\n      this.enableModification = false;\n    },\n    \n    cancelUpdateUser(){\n      this.enableModification = false\n    }\n  }\n};\n</script>\n\n<style scoped>\n\n</style>\n\n","<template>\n  \n  <Form ref=\"userForm\" :validation-schema=\"userSettingsUpdateSchema\" v-slot=\"{ errors}\">\n\n    <!-- nom -->\n    <div class=\"form-group\">\n      <Field id=\"userLastName\" name=\"userLastName\" type=\"text\" class=\"form-control\" v-model=\"user.userLastName\"\n        :class=\"{ 'is-invalid': errors.userLastName }\" required />\n      <label class=\"required\" for=\"userLastName\">Nom</label>\n      <ErrorMessage name=\"userLastName\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- prenom -->\n    <div class=\"form-group\">\n      <Field id=\"userFirstName\" name=\"userFirstName\" type=\"text\" class=\"form-control\" v-model=\"user.userFirstName\"\n        :class=\"{ 'is-invalid': errors.userFirstName }\" required />\n      <label class=\"required\" for=\"userFirstName\">Prénom</label>\n      <ErrorMessage name=\"userFirstName\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- e-mail -->\n    <div class=\"form-group\">\n      <Field id=\"email\" name=\"email\" type=\"text\" class=\"form-control\" v-model=\"user.email\"\n        :class=\"{ 'is-invalid': errors.email }\" required />\n      <label class=\"required\" for=\"email\">Email</label>\n      <ErrorMessage name=\"email\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- login -->    \n    <div class=\"form-group do-float\">\n      <span class=\"form-control\">{{user.login}}</span>  \n      <label class=\"required\">Login</label>\n    </div>\n\n\n    <!-- telephone -->\n    <Field name=\"phone\" type=\"text\" v-model=\"phone\">\n      <PhoneInput \n        :modelValue=\"phone\"\n        @value-updated=\"emittedPhone\" \n        :phoneType=\"'FIXED_LINE'\" \n        :country=\"selectedPhoneCountry\" \n        :error=\" errors.phone\" />\n    </Field>\n\n    <!-- portable -->\n    <Field name=\"mobile\" type=\"text\" v-model=\"mobile\">\n      <PhoneInput \n        :modelValue=\"mobile\"\n        @value-updated=\"emittedMobile\" \n        :country=\"selectedMobileCountry\" \n        :phoneType=\"'MOBILE'\" \n        :required=\"false\"\n        :error=\" errors.mobile\" />\n    </Field>\n\n    <!-- color profile -->\n    <div class=\"form-group\">\n      <div class=\"btn-group align-items-center\">\n        <span class=\"label-floated label-required\">Couleur de profile</span>\n        <span>\n          <a class=\"btn btn-sm dropdown-toggle dropdown-color ms-2\" href=\"#\" data-bs-toggle=\"dropdown\"\n            aria-expanded=\"false\" id=\"font-color\" title=\"\"  :style=\"{'background-color': iconColor}\"\n            data-color=\"iconColor\" data-original-title=\"Font Color\">\n          </a>\n          <ul id=\"fore-color\" class=\"dropdown-menu\">\n            <li style=\"padding: 2px\">\n              <a\n                class=\"btn\"\n                data-edit=\"foreColor #000000\"\n                data-color=\"#000000\"\n                v-for=\"color in colorList\"\n                :key=\"color\"\n                v-on:click=\"iconColor = rgbToHex(color[0], color[1], color[2])\"\n                :style=\"{\n                  margin: 1 + 'px',\n                  float: 'left',\n                  'background-color': `rgb(${color[0]}, ${color[1]}, ${color[2]})`,\n                  height: 15 + 'px',\n                  width: '15%',\n                  padding: '0px',\n                  clear: 'none',\n                  border: '1px' + 'solid' + 'rgba(0, 0, 0, 0.15)',\n                  'border-radius': 2 + 'px',\n                }\"\n              ></a>\n            </li>\n          </ul>\n        </span>\n      </div>\n    </div>\n\n    <!-- role -->\n    <div class=\"form-group\">\n      <Field name=\"role\" v-model=\"role\" v-slot=\"{handleChange, value}\">\n        <CustomSelect \n          :modelValue=\"value\"\n          @value-updated=\"(value)=> {handleChange(value); selectRole()}\"\n          :options=\"inferiorRoles\"\n          name=\"role\"\n          :error=\"errors.role\"\n          classStyle=\"form-control\"\n          :autoSelected=\"true\"\n          />\n      </Field>\n      <label class=\"floating-label required\" for=\"role\">Rôle:</label>\n      <ErrorMessage name=\"role\" class=\"d-flex invalid-feedback\" />\n    </div>\n\n    <!-- workshop -->\n    <Field type=\"text\" name=\"mandatoryWorkshopCode\" v-model=\"mandatoryWorkshopCode\" hidden required />\n    <div v-if=\"mandatoryWorkshopCode\" class=\"form-group\">\n      <Field name=\"workshopCode\" v-model=\"workshopCode\" v-slot=\"{handleChange, value}\">\n        <CustomSelect \n          :modelValue=\"value\"\n          @value-updated=\"(value)=> {handleChange(value); selectWorkshop()}\"\n          :options=\"workshops\"\n          :autoSelected=\"true\"\n          name=\"workshopCode\"\n          :error=\"errors.workshopCode\"\n          classStyle=\"form-control\"\n        />\n      </Field>\n      <label class=\"floating-label required\" for=\"workshopCode\">Atelier:</label>\n      <ErrorMessage name=\"workshopCode\" class=\"d-flex invalid-feedback\" />\n    </div>\n\n    <!-- superior -->\n    <div v-if=\"canChooseSuperior\" class=\"form-group\">\n      <Field name=\"superior\" v-model=\"superiorCode\"  v-slot=\"{handleChange, value}\">\n        <CustomSelect \n          :modelValue=\"value\"\n          @value-updated=\"(value)=> {handleChange(value);}\"\n          :options=\"superiors\"\n          name=\"superior\"\n          :error=\"errors.superior\"\n          classStyle=\"form-control\"\n          :clearable=\"true\"\n        />\n      </Field>\n      <label class=\"floating-label\" for=\"superior\">Supérieur:</label>\n      <ErrorMessage name=\"superior\" class=\"d-flex invalid-feedback\" />\n    </div>\n\n    <!-- buttons -->\n    <div class=\"text-center btn-row\">\n      <button type=\"button\" class=\"btn btn-custom btn-round\" @click=\"cancelUpdate\">Annuler</button>\n      <button type=\"button\" class=\"btn btn-custom btn-round\" :disabled=\"disableSubmit\" @click=\"updateUser(user)\"  >Sauvegarder</button>\n    </div>\n    \n    <!-- custom message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"successful ? 'success' : 'error'\" @close=\"this.message = ''\" />\n\n  </Form>\n\n</template>\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport PhoneInput from \"../../../common/PhoneInput.vue\";\nimport CustomMessage from '../../../common/CustomMessage.vue';\nimport CustomSelect from '../../../common/CustomSelect.vue';\n\nexport default {\n\n  name: \"UserInfoUpdate\",\n\n  emits: [\"user-update-canceled\", \"user-updated\"],\n\n  props: {\n    user: {\n      type: Object,\n      default() {},\n    },\n  },\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    PhoneInput,\n    CustomMessage,\n    CustomSelect\n  },\n\n  setup(){\n\n    const userSettingsUpdateSchema = Yup.object().shape({\n      userFirstName: Yup.string().required(\"Prénom is obligatoire\"),\n      userLastName: Yup.string().required(\"Nom is obligatoire\"),\n      email: Yup.string().required(\"Email is obligatoire\").email(\"Email invalide\"),\n      phone: Yup.string().required(\"Téléphone est obligatoire\"),\n\n      role: Yup.string().required(\"Rôle est obligatoire\"),\n      mandatoryWorkshopCode: Yup.boolean(),\n      workshopCode: Yup.string().when(\"mandatoryWorkshopCode\", {\n        is: true,\n        then: Yup.string().required(\"L'atelier est obligatoire\")\n      }),\n    });\n\n    const colorList = [[0, 0, 0], [68, 68, 68], [100, 100, 100], [136, 136, 136], [170, 170, 170], [214, 213, 213], \n        [64, 161, 248], [106, 227, 208], [136, 212, 83], [248, 225, 90], [239, 109, 87], [223, 105, 165],\n        [46, 117, 181], [73, 165, 157], [84, 173, 50], [241, 187, 65], [220, 58, 38], [188, 59, 122],\n        [26, 77, 124], [52, 121, 118], [49, 110, 29], [242, 151, 55], [167, 42, 23], [141, 40, 93]];\n\n    return { userSettingsUpdateSchema, colorList}\n\n  },\n\n  data() {\n    \n    return {\n      successful: false,\n      loading: false,\n      message: \"\",\n      mandatoryWorkshopCode: false,\n      workshops: [],\n      inferiorRoles: [],\n      superiors: [],\n      workshopCode: (this.user.workshopCode !== undefined ? this.user.workshopCode : \"\"),\n      role: this.user.roleName,\n      superiorCode: (this.user.superior ? this.user.superior.userCode : \"\"),\n      companyCode: this.$store.state.auth.user.companyCode,\n      iconColor: this.user.iconColor,\n      phone: this.user.phone,\n      mobile: this.user.mobile,\n      selectedPhoneCountry: '',\n      selectedMobileCountry: '',\n      disableSubmit: false,\n      canChooseSuperior:false,\n    };\n  },\n\n  created() {\n\n    this.loadInferiorRoles();\n    if(this.role=='LEADER' || this.role=='STAFF'){\n      this.mandatoryWorkshopCode = true;\n      this.canChooseSuperior = true;\n      this.loadWorkshops();\n    }\n    this.loadSimpleCompany();\n  },\n\n  methods: {\n\n    emittedPhone(phone){\n      this.phone = phone;\n    },\n\n    emittedMobile(mobile){\n      this.mobile = mobile;\n    },\n\n    rgbToHex(r, g, b) {\n      return (\"#\" + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b));\n    },\n\n    componentToHex(c) {\n      var hex = c.toString(16);\n      return hex.length == 1 ? \"0\" + hex : hex;\n    },\n\n    loadSimpleCompany() {\n\n      let companyReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n          Authorization: this.$authTokenService.authToken()\n        },\n      };\n\n      fetch(\"/api/company/get-simple-company/\"+this.companyCode, companyReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            const company = await response.json();\n            // init country\n            if(!this.user.phone)\n              this.selectedPhoneCountry = company.companyCountry;\n            if(!this.user.mobile)\n              this.selectedMobileCountry = company.companyCountry;\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch( response => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadSimpleCompany.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    },\n\n    loadInferiorRoles() {\n      this.message = \"\";\n      let inferiorRolesReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(this.$store.state.auth.user.role),\n      };\n      fetch(\"/api/user/inferior-roles\", inferiorRolesReq)\n        .then( async response  => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            const results = await response.json();\n            this.inferiorRoles = results.map(inferiorRole => {                                     \n              return {\n                text:  inferiorRole.roleValue,                            \n                value: inferiorRole.roleName                               \n              };\n            });\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch( (response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadInferiorRoles.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    selectRole(){\n      this.workshopCode = \"\";\n      this.superiorCode = null;\n      this.canChooseSuperior = false\n      this.mandatoryWorkshopCode = false;\n      this.workshops= [];\n      if(this.role=='LEADER' || this.role=='STAFF'){\n        this.mandatoryWorkshopCode = true;\n        this.canChooseSuperior = true;\n        this.loadWorkshops();\n      }\n    },\n\n    selectWorkshop(){\n      this.superiorCode = null;\n      this.superiors = [];\n      this.loadSuperiors();\n    },\n\n    loadWorkshops() {\n      let workshopsReq = {\n        method: \"GET\",\n        headers: {\"Content-Type\": \"application/json\", \n        Authorization: this.$authTokenService.authToken()},\n      };\n        \n      fetch(\"/api/workshop/workshops/enabled/\"+this.companyCode, workshopsReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            const results = await response.json();\n            this.workshops = results.map(workshop => {                                     \n              return {\n                text: workshop.workshopName,                              \n                value: workshop.workshopCode                               \n              };\n            });\n            this.loadSuperiors();\n            return;\n          } \n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadWorkshops.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n         \n        });\n    },\n\n    loadSuperiors() {\n      this.message = \"\";\n      this.superiors= [];\n      let selectedWorkshopCode = null;\n      if(this.role=='STAFF')\n        selectedWorkshopCode = this.workshopCode;\n      let superiorsReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify({\n          role : this.role,\n          companyCode : this.companyCode,\n          workshopCode: selectedWorkshopCode\n        })\n      };\n\n      fetch(\"/api/user/superiors\", superiorsReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            const results = await response.json();\n            this.superiors = results.map(user => {                                     \n              return {\n                text: user.userFirstName+ \" \" + user.userLastName+ \" [\"+user.roleValue+\"]\",                            \n                value: user.userCode                               \n              };\n            });\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadSuperiors.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n\n        });\n        \n    },\n\n \n    async updateUser(values) {\n    \n      const validator = await this.$refs.userForm.validate();\n      if(!validator.valid)\n        return;\n     \n      this.successful = false;\n      this.disableSubmit = true;\n      this.message = \"\";\n      this.loading = true;\n      values.iconColor = this.iconColor;\n      values.mobile = this.mobile;\n      values.phone = this.phone;\n      values.companyCode = this.companyCode;\n\n      let updateUserReqBody = this.userSettingsUpdateSchema.cast(values);\n      updateUserReqBody.role = this.role;\n      updateUserReqBody.workshopCode = this.workshopCode;\n      updateUserReqBody.superior = this.superiorCode;\n\n      let updateUserReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(updateUserReqBody),\n      };\n\n      fetch(\"/api/user/update-user\", updateUserReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            this.disableSubmit = false;\n            return;\n          }\n          if (response.ok){\n            this.disableSubmit = false;\n            this.successful = true;\n            this.message = \"L'utilisateur a été mis à jour\";\n            this.$emit(\"user-updated\");\n            return;\n          } \n          return Promise.reject(response);\n          \n        })\n        .catch( (response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.updateUser.bind(this, values));\n            return;\n          }\n          this.disableSubmit = false;\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    cancelUpdate(){\n      this.$emit('user-update-canceled');\n    }\n\n  },\n};\n</script>\n\n<style lang=\"css\" scoped>\n/* dropdown-color */\n.dropdown-color {\n  cursor: pointer;\n  transition: 0.2s linear;\n  float: left;\n  height: 15%;\n  min-width: 45px;\n  padding: 0px;\n  clear: none;\n  border-radius: 2px;\n}\n</style>\n","import { render } from \"./UserInfoUpdate.vue?vue&type=template&id=455e56a0&scoped=true\"\nimport script from \"./UserInfoUpdate.vue?vue&type=script&lang=js\"\nexport * from \"./UserInfoUpdate.vue?vue&type=script&lang=js\"\n\nimport \"./UserInfoUpdate.vue?vue&type=style&index=0&id=455e56a0&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-455e56a0\"]])\n\nexport default __exports__","import { render } from \"./UserInfo.vue?vue&type=template&id=365e85cc\"\nimport script from \"./UserInfo.vue?vue&type=script&lang=js\"\nexport * from \"./UserInfo.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n  <div class=\"card\">\n    \n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'p-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n    \n    <div class=\"my-3 w-75 mx-auto card-body p-0\">\n      <div v-for=\"(privilegeList, category) in privileges\" :key=\"category\" class=\"card\"> \n\n        <div class=\"card-header bg-gray-lighter\">\n          <span class=\"fs-15 ps-1 text-capitalize\">{{ category }}</span>\n        </div>\n\n        <div class=\"card-body media-list media-list-divided p-0\">\n          \n          <div v-for=\"privilege in privilegeList\" :key=\"privilege.name\" class=\"media d-flex flex-column\">\n\n            <div class=\"d-flex fw-600\">\n              <div>\n                <input type=\"checkbox\" :value=\"privilege.name\" :checked=\"privilege.checked\" :disabled=\"privilege.immutable\" @change=\"handlePrivilege($event, privilege)\">\n              </div>\n              <div>\n                <label class=\"ms-2\" :class=\"{ 'text-muted': privilege.immutable }\">{{ privilege.description }}</label>\n              </div>\n            </div>\n            \n            <!-- embedded privileges -->\n            <div v-for=\"embeddedPrivilege in privilege.embeddedPrivileges\" :key=\"embeddedPrivilege.name\" class=\"d-flex ms-4\">\n              <span class=\"mdi mdi-subdirectory-arrow-right\"></span>\n              <div class=\"ps-1\">\n                <input type=\"checkbox\" :value=\"embeddedPrivilege.name\" :checked=\"embeddedPrivilege.checked\" :disabled=\"embeddedPrivilege.immutable\" @change=\"handleEmbeddedPrivilege($event, embeddedPrivilege, privilege)\">\n              </div>\n              <div>\n                <label class=\"ms-2 fs-12\">{{ embeddedPrivilege.description }}</label>\n              </div>            \n            </div>\n\n          </div>\n\n        </div>\n\n      </div>\n    </div>\n\n  </div>\n  \n</template>\n\n<script>\n\nimport CustomMessage from '../../../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"UserPrivileges\",\n\n  components:{\n    CustomMessage\n  },\n\n  props: {\n    user: {\n      type: Object,\n    }\n  },\n\n  data(){\n   return{\n    privileges: {},\n    message:\"\"\n   }\n  },\n\n  created() {\n    this.loadAllPrivileges();\n  },\n\n  methods:{\n\n    loadAllPrivileges() {\n\n      let loadPrivilegesReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n          Authorization: this.$authTokenService.authToken()\n        }\n      };\n\n      fetch(\"/api/user/privileges/\"+this.$store.state.auth.user.companyCode+\"/\"+this.user.userCode+\"/\"+this.user.roleName, loadPrivilegesReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok){\n            this.privileges = await response.json();\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch( (response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadAllPrivileges.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    },\n\n\n    handlePrivilege(event, privilege) {\n      const checkedPrivilege = event.target.value;\n      if (event.target.checked) {\n        privilege.checked = true;\n        this.addPrivilege(checkedPrivilege);\n      } else {\n        privilege.checked = false;\n        this.deletePrivilege(checkedPrivilege);\n        //delete all it embedded privileges\n        this.deleteEmbeddedPrivileges(privilege.embeddedPrivileges);\n      }\n      // check excluded privilege\n      this.excludePrivileges(this.privileges);\n\n    },\n\n    handleEmbeddedPrivilege(event, embeddedPrivilege, parentPrivilege){\n      const checkedPrivilege = event.target.value;\n      if (event.target.checked) {\n        embeddedPrivilege.checked = true;\n        this.addPrivilege(checkedPrivilege);\n        if(parentPrivilege.checked === false){\n          parentPrivilege.checked = true;\n          this.addPrivilege(parentPrivilege.name);\n          // check excluded privilege\n          this.excludePrivileges(this.privileges);\n        }\n      }\n      else {\n        embeddedPrivilege.checked = false;\n        this.deletePrivilege(checkedPrivilege);\n      }\n    \n    },\n\n    addPrivilege(privilegeName) {\n\n      let addPrivilegeReq = {\n        method: \"PUT\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n      };\n\n      fetch(\"/api/user/privilege/\"+this.$store.state.auth.user.companyCode+\"/\"+this.user.userCode+\"/\"+privilegeName, addPrivilegeReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok) {\n            return;\n          } \n          return Promise.reject(response);\n          \n        })\n        .catch( (response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.addPrivilege.bind(this, privilegeName));\n            return;\n          } \n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    deletePrivilege(privilegeName) {\n\n      let deletePrivilegeReq = {\n        method: \"DELETE\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n      };\n\n      fetch(\"/api/user/privilege/\"+this.$store.state.auth.user.companyCode+\"/\"+this.user.userCode+\"/\"+privilegeName, deletePrivilegeReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok) {\n            return;\n          } \n          return Promise.reject(response);\n          \n        })\n        .catch( (response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.deletePrivilege.bind(this, privilegeName));\n            return;\n          } \n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    excludePrivileges(privileges){\n      for (let category in privileges) {\n        for (let privilege of privileges[category]) {\n          if (privilege.excludedPrivileges) {\n\n            if(privilege.checked){\n              privilege.excludedPrivileges.forEach(excludedName => {\n              const excludedPrivilege = privileges[category].find(p => p.name === excludedName);\n              if (excludedPrivilege) {\n                excludedPrivilege.immutable = true;\n                if(excludedPrivilege.checked){\n                  excludedPrivilege.checked = false;\n                  this.deletePrivilege(excludedPrivilege.name);\n                }\n                \n              }\n              });\n              return;\n            }\n\n            privilege.excludedPrivileges.forEach(excludedName => {\n              const excludedPrivilege = privileges[category].find(p => p.name === excludedName);\n              if (excludedPrivilege)\n                excludedPrivilege.immutable = false;\n              });\n            \n          }\n        }\n      }\n    },\n\n    deleteEmbeddedPrivileges(embeddedPrivileges){\n      if (!embeddedPrivileges || embeddedPrivileges.length === 0) {\n        return;\n      }\n      embeddedPrivileges.forEach((embeddedPrivilege) => {\n        if(embeddedPrivilege.checked){\n          embeddedPrivilege.checked = false;\n          this.deletePrivilege(embeddedPrivilege.name)\n        }\n      });  \n    },\n\n  }\n};\n</script>\n\n<style scoped>\n\ninput[type=\"checkbox\"] {\n  filter: grayscale(1) !important;\n  cursor: pointer;\n}\n\n</style>\n\n","import { render } from \"./UserPrivileges.vue?vue&type=template&id=25632260&scoped=true\"\nimport script from \"./UserPrivileges.vue?vue&type=script&lang=js\"\nexport * from \"./UserPrivileges.vue?vue&type=script&lang=js\"\n\nimport \"./UserPrivileges.vue?vue&type=style&index=0&id=25632260&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-25632260\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"card\">\n\n    <div class=\"card-body\">\n\n      <!-- configuration status -->\n      <div class=\"d-flex align-items-center fs-15 fw-500 py-2\">\n        <div class=\"\">Statut:</div>\n        <div class=\"col-2 text-center\"> \n          <span v-if=\"configuration.status == 'DISABLED'\" class=\"badge badge-pill bg-orange\">Non attaché</span>\n          <span v-if=\"configuration.status == 'ENABLED'\"  class=\"badge badge-pill bg-green\" >Attaché</span>\n        </div>\n      </div>\n\n      <!-- effective capacity -->\n      <div class=\"d-flex align-items-center fs-15 fw-500 py-2\">\n        <div class=\"\">La capacité effective:</div>\n        <div class=\"col-2 text-center\">\n          <div v-tippy=\"{ content: `<small>Capacité effective de l'utilisateur </small>` , placement:'top' }\"  class=\"badge badge-pill badge-box mx-auto text-muted\"> {{capacity}} %</div>\n        </div>\n      </div>\n\n      <hr class=\"mb-0\"/>\n\n      <!-- regularWeek -->\n      <div class=\"media-list media-list-md media-list-divided\">\n        \n        <div class=\"media flexbox align-items-center float-right fs-15 text-muted\" v-for=\"regularWeek in regularWeeks\" :key=\"regularWeek.dayOfWeek\" >\n\n          <!-- day -->\n          <div class=\"col-1 text-muted text-center\">\n            <span>{{ \" \" + dayInFr(regularWeek.dayOfWeek)}}</span>\n          </div>\n\n          <!-- Time slots -->\n          <div class=\"col-4 text-center\">\n            <span class=\"text-muted\" v-if=\"regularWeek.openningTimeSlots.length==0\">Indisponible</span>\n            <div v-else>\n              <div v-for=\"item in regularWeek.openningTimeSlots\" :key=\"item\">\n                <span class=\" p-2\">{{item.startTime}}</span>\n                <i class=\"mdi mdi-minus\" />\n                <span class=\"p-2\">{{item.endTime}}</span>\n              </div>\n            </div>\n          </div>\n    \n          <!-- day time space -->\n          <div class=\"col-2 fs-14 text-center\">\n            <div v-if=\"regularWeek.openningTimeSlots.length>0\">\n              <span class=\"badge badge-pill badge-box mx-auto text-muted\"> {{ formatTime(regularWeek.dayTimeSpace) }} </span>\n            </div>\n          </div>\n\n          <!-- capacity -->\n          <div class=\"col-5 fs-14\">\n            <div v-if=\"regularWeek.openningTimeSlots.length>0\"> \n              <span> Capacité :</span>\n              <span class=\"p-1 ms-1 fw-600\">{{ formatTime(regularWeek.dayTimeSpace * capacity/100) }}</span>\n            </div>\n          </div>\n\n        </div>\n\n      </div>\n\n    </div>\n\n  </div>\n\n</template>\n\n<script>\n\nimport helperService from \"../../../../services/helper.service.js\";\n\nexport default {\n\n\tname: \"UserConfigurationInfo\",\n\t\n\tprops: {\n\n\t\tregularWeeks: {\n      type: Object,\n      default() {},\n    },\n\n    configuration: {\n      type: Object,\n      default() {\n        return null;\n      },\n    },\n\n\t},\n  data(){\n    return {\n      message: \"\",\n      capacity: this.configuration.effectiveCapacity * 100,\n    };\n\n  },\n  methods: {\n\n    formatTime : helperService.formatTime,\n\n    //day french\n    dayInFr(cases) {\n      switch (cases) { \n        case \"MONDAY\": return \"LUN\";\n        case \"TUESDAY\": return \"MAR\";\n        case \"WEDNESDAY\": return \"MER\";\n        case \"THURSDAY\": return \"JEU\";\n        case \"FRIDAY\": return \"VEN\";\n        case \"SATURDAY\": return \"SAM\";\n        case \"SUNDAY\": return \"DIM\";\n      }\n    },\n},\n\n};\n</script>\n\n<style lang=\"css\" scoped>\n</style>\n","import { render } from \"./UserConfigurationInfo.vue?vue&type=template&id=4da9e367\"\nimport script from \"./UserConfigurationInfo.vue?vue&type=script&lang=js\"\nexport * from \"./UserConfigurationInfo.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n\t<div v-if=\"userCompanies.totalRecords > 0\" class=\"card\">\n\n\t\t<div class=\"card-body\">\n\n\t\t\t<!-- error message -->\n\t\t\t<CustomMessage v-if=\"message\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n\t\t\t<div class=\"media-list media-list-divided media-list-hover media-list-bordered\">\n\n\t\t\t\t<div class=\"media-list-body bg-white position-relative\">\n\n\t\t\t\t\t<div class=\"media flexbox align-items-center\" v-for=\"company in userCompanies.data\" :key=\"company.companyCode\">\n\n\t\t\t\t\t\t<div class=\"col-8 flexbox flex-grow align-items-center\" >\n\t\t\t\t\t\t\t<CompanyListElement :element=\"company\" :displayDates=\"false\" />\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"col-1 text-center\">\n\t\t\t\t\t\t\t<CompanyStatus :companyStatusResp=\"company.companyStatusResp\" />\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"hasPrivilege('ASSOCIATE_COMPANY')\" class=\"col-2 text-center\">\n\t\t\t\t\t\t\t<div v-if=\"userCompanies.totalRecords > 1\" class=\"btn-group col-9 mb-0\">\n\t\t\t\t\t\t\t\t<button v-if =\"company.companyCode != companyCode\" class=\"btn btn-lg\" v-on:click=\"displayConfirmation(company)\" >Retirer</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<!-- loader -->\n\t\t\t\t\t\t<div v-show=\"loading\" class=\"loading reveal top-0\">\n\t\t\t\t\t\t\t<span class=\"spinner-border\" role=\"status\"></span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t</div>\n\n\t\t\t</div>\n\n\t\t\t<div v-if=\"hasPrivilege('ASSOCIATE_COMPANY')\" class=\"my-2 btn-group d-block text-center\">\n\t\t\t\t<span v-if=\"showCompanies\" class=\"mdi mdi-arrow-up-bold fs-24\"></span>\n\t\t\t\t<button v-else class=\"btn btn-lg mdi mdi-plus\" v-on:click=\"loadCompanies()\">Ajouter</button>\n\t\t\t</div>\n\n\t\t\t<!-- other companies -->\n\t\t\t<div v-if=\"showCompanies\" class=\"rounded-box shadow-1 p-2\">\n\n\t\t\t\t<div class=\"form-type-material\">\n\t\t\t\t\t<div class=\"mx-auto form-group w-25\">\n\t\t\t\t\t\t<EditableSelect \n\t\t\t\t\t\t\t:options=\"companiesName\" \n\t\t\t\t\t\t\t@value-updated=\"(value)=> {selectCompany(value)}\"\n\t\t\t\t\t\t\tname=\"company\"\n\t\t\t\t\t\t\t:label=\"'Entreprise'\" \n\t\t\t\t\t\t\t:required=\"false\" \n\t\t\t\t\t\t\t:clearable=\"true\"\n\t\t\t\t\t\t/> \t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div v-if=\"selectedCompany\" class=\"w-75 mx-auto my-3 media-list media-list-hover media-list-bordered\">\n\n\t\t\t\t\t<div class=\"media flexbox align-items-center\">\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"col-8 flexbox flex-grow align-items-center\" >\n\t\t\t\t\t\t\t<CompanyListElement :element=\"selectedCompany\" :displayDates=\"false\"/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"col-1 text-center me-2\">\n\t\t\t\t\t\t\t<CompanyStatus :companyStatusResp=\"selectedCompany.companyStatusResp\" />\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"hasPrivilege('ASSOCIATE_COMPANY')\" class=\"col-2 text-center cursor-pointer\">\n\t\t\t\t\t\t\t<div class=\"btn-group col-9 mb-0\">\n\t\t\t\t\t\t\t\t<button class=\"btn btn-lg mdi mdi-plus\" v-on:click=\"addCompany(selectedCompany)\">Ajouter</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t</div>\n\t\t\t\n\t\t\t<!-- pop up confirmation -->\n\t\t\t<UserCompaniesDeleteConfirmation\n\t\t\t\t:show=\"showDeletingConfirmation\" \n\t\t\t\tv-on:close=\"showDeletingConfirmation = false\" \n\t\t\t\tv-on:company-deleted=\"deleteCompany(selectedCompany)\">\n\t\t\t</UserCompaniesDeleteConfirmation>\n\n\t\t</div>\n\n\t</div>\n\n\t<div v-if=\"userCompanies.totalRecords != undefined && userCompanies.totalRecords <= 0\" class=\"card text-center min-height-200 \">\n\t\t<div class=\"min-height-200 d-flex align-items-center\"> \n\t\t\t<div class=\"text-center w-100 \">\n\t\t\t\t\t<i class=\"mdi mdi-alert-outline fs-50\"/> \n\t\t\t\t\t<br/> \n\t\t\t\t\t<span class=\"text-muted fs-14\"> \n\t\t\t\t\t\tAucune entreprise\n\t\t\t\t\t</span> \n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n</template>\n\n<script>\nimport { hasPrivilege } from \"../../../../services/user.service.js\";\nimport CompanyStatus from \"../../../company/common/CompanyStatus.vue\";\nimport CompanyListElement from \"../../../company/companies/CompanyListElement.vue\";\nimport CustomMessage from '../../../common/CustomMessage.vue';\nimport EditableSelect from \"../../../common/EditableSelect.vue\"\nimport UserCompaniesDeleteConfirmation from \"./UserCompaniesDeleteConfirmation.vue\";\n\nexport default {\n\n\tname: \"UserCompanies\",\n\t\n\tcomponents:{\n\t\tCompanyStatus,\n\t\tCompanyListElement,\n\t\tCustomMessage,\n\t\tEditableSelect,\n\t\tUserCompaniesDeleteConfirmation,\n\t},\n\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcompanies:{},\n\t\t\tuserCompanies : {},\n\t\t\tloading: false,\n\t\t\tmessage:\"\",  \n\t\t\tcompaniesName : [],  \n\t\t\tshowCompanies:false,\n\t\t\tselectedCompany: null,\n\t\t\tcurrentUser: this.user,\n\t\t\tcompanyCode: this.$store.state.auth.user.companyCode,\n\t\t\tshowDeletingConfirmation : false,\n\t\t};\n\t},\n\n\tcreated() {\n\t\tthis.loadUser();\n\t},\n\n\tmethods: {\n\n\t\thasPrivilege : hasPrivilege,\n\n\t\tloadUser(){\n\n\t\t\tlet loadUserReq = {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()}\n\t\t\t};\n\n\t\t\tfetch(\"/api/user/simple/\"+this.companyCode+\"/\"+this.currentUser.userCode, loadUserReq)\n\t\t\t\t.then( async response => {\n\t\t\t\t\tif(response.status == 400){\n\t\t\t\t\t\tthis.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (response.ok){\n\t\t\t\t\t\tconst data = await response.json();\n\t\t\t\t\t\tthis.currentUser = data;\n\t\t\t\t\t\tthis.loadUserCompanies();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn Promise.reject(response);\n\t\t\t\t\t\n\t\t\t\t})\n\t\t\t\t.catch((response) => {\n\t\t\t\t\tif (response.status == 401){\n\t\t\t\t\t\tthis.$authTokenService.refreshToken(this.loadUser.bind(this));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.message = this.$authTokenService.handleErrorResponse(response);\n\t\t\t\t});\n\n\t\t},\n\n\t\tloadUserCompanies() {\n\n\t\t\tthis.loading = true;\n\t\t\tconst companyRequest = {\n\t\t\t\tsortField: \"companyName\",\n\t\t\t\tpageLength: this.currentUser.companiesCode ? this.currentUser.companiesCode.length: 10,\n\t\t\t}\n\n\t\t\tif (this.currentUser.companiesCode)\n\t\t\t\tcompanyRequest.companiesCode = this.currentUser.companiesCode;\n\t\t\t\n\t\t\tif (this.currentUser.companyCode && !this.currentUser.companiesCode)\n\t\t\t\tcompanyRequest.companyCode = this.currentUser.companyCode\n\n\t\t\tconst companiesReq = {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken(),},\n\t\t\t\tbody: JSON.stringify(companyRequest),\n\t\t\t};\n\n\t\t\tfetch(\"/api/company/companies\", companiesReq)\n\t\t\t\t.then( async response => {\n\t\t\t\t\tif(response.status == 400){\n\t\t\t\t\t\tthis.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n\t\t\t\t\t\tthis.loading = false;\n\t\t\t\t\t\treturn; \n\t\t\t\t\t}\n\t\t\t\t\tif (response.ok){\n\t\t\t\t\t\tthis.userCompanies = await response.json();\n\t\t\t\t\t\tthis.loading = false;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn Promise.reject(response);\n\t\t\t\t\t\n\t\t\t\t})\n\t\t\t\t.catch( (response) => {\n\t\t\t\t\tif (response.status == 401){\n\t\t\t\t\t\tthis.$authTokenService.refreshToken(this.loadUserCompanies.bind(this));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.message = this.$authTokenService.handleErrorResponse(response);\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t});\n\t\t},\n\n\t\tloadCompanies(){\n\n\t\t\tthis.loading = true;\n\n\t\t\tconst companiesReq = {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()}\n\t\t\t};\n\n\t\t\tfetch(\"/api/company/companies/\"+this.currentUser.userCode, companiesReq)\n\t\t\t\t.then( async response => {\n\t\t\t\t\tif(response.status == 400){\n\t\t\t\t\t\tthis.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n\t\t\t\t\t\tthis.loading = false;\n\t\t\t\t\t\treturn; \n\t\t\t\t\t}\n\t\t\t\t\tif (response.ok){\n\t\t\t\t\t\tthis.companies = await response.json();\n\t\t\t\t\t\tthis.showCompanies = true;\n\t\t\t\t\t\tthis.companiesName = this.companies.map(company => company.companyName);\n\t\t\t\t\t\tthis.loading = false;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn Promise.reject(response);\n\t\t\t\t\t\n\t\t\t\t})\n\t\t\t\t.catch( (response) => {\n\t\t\t\t\tif (response.status == 401){\n\t\t\t\t\t\tthis.$authTokenService.refreshToken(this.loadCompanies.bind(this));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.message = this.$authTokenService.handleErrorResponse(response);\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t});\n\t\t},\n\n\t\tselectCompany(companyName){\n\t\t\tthis.selectedCompany = this.companies.find(company => company.companyName === companyName);\n\t\t},\n\n\t\tdisplayConfirmation(company) {\n\t\t\tthis.showDeletingConfirmation = true;\n\t\t\tthis.selectedCompany = company;\n\t\t},\n\n\t\taddCompany(company){\n\t\t\tthis.loading = true;\n\n      let addCompanyCodeReq = {\n        method: \"PUT\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n      };\n\n      fetch(\"/api/user/company/\"+this.currentUser.userCode+\"/\"+company.companyCode, addCompanyCodeReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            this.loading = false;\n            return; \n          }\n          if (response.ok) {\n\t\t\t\t\t\tthis.loadUser();\n            this.selectedCompany = null;\n            this.loading = false;\n            this.showCompanies = false;\n            return;\n          } \n          return Promise.reject(response);\n          \n        })\n        .catch( (response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.addCompany.bind(this, company));\n            return;\n          } \n          this.message = this.$authTokenService.handleErrorResponse(response);\n          this.loading = false;\n        });\n\t\t},\n\t\t\n\t\tdeleteCompany(company){\n\t\t\tthis.showDeletingConfirmation = false;\n\n\t\t\tlet deleteComapnyCodeReq = {\n\t\t\t\tmethod: \"DELETE\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\tAuthorization: this.$authTokenService.authToken(),\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tfetch(\"/api/user/company/\"+this.currentUser.userCode+\"/\"+company.companyCode, deleteComapnyCodeReq)\n\t\t\t\t.then(async (response) => {\n\t\t\t\t\tif(response.status == 400){\n\t\t\t\t\t\tthis.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n\t\t\t\t\t\treturn; \n\t\t\t\t\t}\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\tthis.loadUser();\n\t\t\t\t\t\tthis.selectedCompany = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} \n\t\t\t\t\treturn Promise.reject(response);\n\t\t\t\t\t\n\t\t\t\t})\n\t\t\t\t.catch( (response) => {\n\t\t\t\t\tif (response.status == 401){\n\t\t\t\t\t\tthis.$authTokenService.refreshToken(this.deleteCompany.bind(this, company));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} \n\t\t\t\t\tthis.message = this.$authTokenService.handleErrorResponse(response);\n\t\t\t\t});\t\t\n\t\t},\n\n\t}\n\n};\n</script>\n\n<style lang=\"css\" scoped>\n</style>\n","<template>\n\n<span v-if=\"companyStatusResp!=null\" :class='`badge badge-pill ${companyStatusResp.color}`' class=\"fs-14\"\n      v-tippy=\"{ content: `${companyStatusResp.description}` , placement:'top' }\">\n    {{ companyStatusResp.value }}\n</span>\n\n</template>\n\n<script>\nexport default {\n  name:\"CompanyStatus\",\n  props: {\n      companyStatusResp: {\n        type: Object,\n        default(){return null;}\n      },\n  }\n}\n</script>\n\n<style>\n\n</style>","import { render } from \"./CompanyStatus.vue?vue&type=template&id=1c475978\"\nimport script from \"./CompanyStatus.vue?vue&type=script&lang=js\"\nexport * from \"./CompanyStatus.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n  <!-- company information -->\n  <div class=\"media-body flex-grow text-truncate p-1\">\n\n    <div class=\"ms-1 fs-17 d-flex\" >\n      <span data-bs-html=\"true\" \n      v-tippy=\"{ content: `<small>Nom</small>` , placement:'left' }\" > {{ element.companyName }}</span>\n      <i v-if=\"element.companyUrlWebInterface\" class=\"mdi mdi-web fs-20 ms-2 text-default cursor-pointer\" @click=\"redirectToWebInterface(element.companyUrlWebInterface)\" \n          v-tippy=\"{ content: `<small>Interface web de prise de rendez-vous</small>` , placement:'top' }\" \n       />\n    </div>\n\n    <div>\n      <!-- address  -->\n      <small class=\"\" >\n          \n          <span class=\"ms-1 me-1\" v-tippy=\"{ content: `<small>Adresse</small>` , placement:'left' }\">\n            <i class=\"mdi mdi-map-marker-outline\" />{{address}}\n          </span>\n\n      </small>\n      <br>\n\n      <!-- companyEmail, companyPhone companyCreationDate, activation start end date   -->\n      <small>\n          <span class=\"ms-1 me-1\"\n          v-tippy=\"{ content: `<small>Email</small>` , placement:'left' }\" >\n            <i class=\"mdi mdi-email-outline\"/> {{ element.companyEmail.toLowerCase() }}\n          </span>\n\n          <span class=\"ms-1 me-1\" v-tippy=\"{ content: `<small>Téléphone</small>` , placement:'right' }\">\n            <i class=\"mdi mdi-phone-classic\" /> {{ element.companyPhone }}\n          </span><br>\n\n          <span class=\"ms-1 me-1\" v-tippy=\"{ content: `<small>Date de création</small>` , placement:'left' }\">\n            <i class=\"mdi mdi-calendar-start-outline\"/> {{ element.companyCreationDate }}\n          </span>\n\n          <span v-if=\"element.companyActivationStartDate\" class=\"ms-1 me-1\"\n          v-tippy=\"{ content: `<small>Date de début d'activation</small>` , placement:'right' }\">\n            <i class=\"mdi mdi-calendar-import-outline\" /> {{ element.companyActivationStartDate }}\n          </span>\n\n          <span v-if=\"element.companyActivationEndDate\" class=\"ms-1 me-1\"\n            v-tippy=\"{ content: `<small>Date de fin d'activation</small>` , placement:'right' }\">\n            <i class=\"mdi mdi-calendar-export-outline\" /> {{ element.companyActivationEndDate }}\n          </span>\n        \n      </small>\n\n    </div>\n    \n  </div>\n\n</template>\n\n<script>\n\n\nexport default {\n  name: \"CompanyListElement\",\n\n  props: {\n    element: {\n      type: Object,\n    }\n  },\n  \n  methods: {\n\n    redirectToWebInterface(url){\n      window.open(url, '_blank');\n    },\n\n  },\n\n  computed:{\n    address(){\n      var address = \"\";\n      address += this.element.companyAddress1+\" - \";\n\n      if(this.element.companyAddress2 != undefined)\n        address += this.element.companyAddress2+\" \";\n\n      address += this.element.companyZipCode+\" \";\n      address += this.element.companyCity +\" \"+ this.element.companyCountry;\n\n      return address;\n    }\n\n  }\n\n}\n</script>\n\n<style lang=\"css\" scoped>\n\nsmall, time, .small {\n  font-weight: 400;\n  font-size: 13px;\n  color: #8b95a5;\n}\n</style>","import { render } from \"./CompanyListElement.vue?vue&type=template&id=bb22f108&scoped=true\"\nimport script from \"./CompanyListElement.vue?vue&type=script&lang=js\"\nexport * from \"./CompanyListElement.vue?vue&type=script&lang=js\"\n\nimport \"./CompanyListElement.vue?vue&type=style&index=0&id=bb22f108&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-bb22f108\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"editable-select\">\n\n    <div class=\"dropdown cursor-pointer\">\n\n      <div class=\"dropdown-toggle\" id=\"dropdownMenuProfile\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-display=\"static\" aria-haspopup=\"true\" ref=\"dropdownToggle\">\n\n        <input type=\"text\" name=\"selectedValue\" :class=\"[{ 'is-invalid': error }]\" class=\"form-control\" required v-model=\"selectedValue\" @change=\"selectOption(selectedValue, $event)\"/> \n        \n        <label class=\"floating-label\" :class=\"[{'required' : required}, {'do-float': selectedValue}]\" for=\"selectedValue\" >{{label}}</label>\n              \n        <span  v-if=\"selectedValue && clearable == true\" class=\"mdi mdi-close close-icon fs-16 cursor-pointer\" @click=\"selectOption('')\"></span>\n \n      </div>\n\n      <ul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuProfile\" ref=\"DropdownMenu\">\n        <li class=\"dropdown-item\" v-for=\"option in filteredOptions\" :key=\"option\" @click=\"selectOption(option)\">\n          {{option}}\n        </li> \n      </ul>\n\n    </div>\n  </div>\n\n</template>\n\n<script>\n\nexport default {\n\n  name: 'EditableSelect',\n\n  $_veeValidate: {\n    name() {\n      return this.label;\n    },\n    value() {\n      return this.selectedValue;\n    }\n  },\n\n  emits:[\"value-updated\"],\n\n  props: {\n    modelValue:{ type:String, required: false, default: () => '' },\n    options: { type: Array, required: true, default: () => [], note: 'Options of items' },\n    label:{ type:String,required: true, default: () => '' },\n    required:{ type:Boolean, required:false, default: () => false },\n    clearable:{ type:Boolean, default: () => false },\n    name:  { required: true },\n    error:{ type:String, },\n  },\n\n  data() {\n    return {\n      selectedValue: this.modelValue\n    }\n  },\n\n  computed: {\n    filteredOptions() {\n      var array = this.options.filter(option => option.toLowerCase().includes(this.selectedValue.toLowerCase()));\n      if(array == null)\n        return [];\n      return array;\n    },\n  },\n\n  methods: {\n\n    selectOption(option, $event) {\n      this.selectedValue = option;\n      // this check is for handeling on change event for input\n      if($event && this.selectedValue !=''){\n        let value = $event.target.value;\n        if(this.filteredOptions.includes(value) )\n          this.selectedValue = value;\n      }\n      this.$emit('value-updated', this.selectedValue);\n    },\n\n  },\n\n};\n</script>\n\n<style scoped>\n\n.editable-select {\n  border: none;\n  font-weight: 400;\n  width: 100% !important;\n  border-radius: 0;\n  padding:  0px;\n  height: 35px;\n}\n\n/* editable-select */\n.editable-select.is-invalid {\n  border-color: #f96868;\n}\n.editable-select~.label {\n  left:16px\n}\n\n.editable-select .dropdown-toggle {\n  display: flex;\n  position: relative;\n  width: 100%;\n  text-align: left;\n  white-space: nowrap;\n  justify-content : space-between;\n  align-items: center;\n  border: none;\n  border-radius: 0px;\n  color: #212529;\n}\n\n.editable-select .dropdown .dropdown-toggle::after {\n  margin-right: 4px;\n  position: absolute;\n  right: 0px;\n  font-size: 14px;\n}\n.editable-select .dropdown .dropdown-toggle.hide-content::after {\n  display: none;\n}\n\n.editable-select .arrow-down-icon,\n.editable-select .close-icon {\n  position: absolute;\n  right: 0px;\n  top: 5px;\n  color: #00203f;\n  background-color: #FFF;\n  z-index: 1;\n}\n\n.editable-select .dropdown-toggle,\n.editable-select .dropdown-toggle:hover{\n\tbackground-color: transparent !important;\n\toutline: none !important;\n\t-webkit-box-shadow: none !important;\n\tbox-shadow: none !important;\n}\n\n.editable-select .dropdown-menu {\n  border-radius: 0px 0px 3px 3px;\n  max-height: 150px;\n  overflow-y: auto;\n  min-height: 92px;\n  min-width: 100%;\n  transform: translate3d(0px, 30px, 0px) !important;\n}\n\n.editable-select .dropdown label:not(.do-float) {\n  top : 5px !important;\n}\n\n.editable-select .dropdown label.do-float {\n  top : -13px !important;\n}\n\n.editable-select .dropdown input.focus ~ label,\n.editable-select .dropdown input:focus~label,\n.editable-select .dropdown input:valid~label {\n  top: -13px !important;\n  font-size: 10px !important;\n  font-weight: 400 !important;\n  opacity: .5\n}\n\n.error {\n  color: #f96868;\n  font-size: 13px;\n  font-weight: 300;\n  margin: 0;\n}\n\n</style>","import { render } from \"./EditableSelect.vue?vue&type=template&id=7ae600d4&scoped=true\"\nimport script from \"./EditableSelect.vue?vue&type=script&lang=js\"\nexport * from \"./EditableSelect.vue?vue&type=script&lang=js\"\n\nimport \"./EditableSelect.vue?vue&type=style&index=0&id=7ae600d4&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7ae600d4\"]])\n\nexport default __exports__","<template>\n  \n  <Transition name=\"modal\">\n  \n    <div v-if=\"show\" class=\"modal-mask\">\n\n      <div class=\"modal-wrapper\">\n\n        <div class=\"modal-container p-0\">\n          \n          <div class=\"card mb-0\">\n\n            <div class=\"card-header\">\n              <div class=\"fs-16 fw-600\"> \n                <i class=\"mdi mdi-alert-outline text-muted fs-17 me-1\" />\n                  Retrait de l'entreprise\n              </div>\n            </div>\n\n            <div class=\"card-body fs-14 fw-500 mx-auto\">\n              <div> \n                <span>  Êtes-vous certain de vouloir retirer ce responsable de l'entreprise?</span>\n              </div> \n            </div>\n\n            <div class=\"card-footer text-center btn-row p-2\">\n              <button class=\"btn btn-round btn-custom w-25\" @click=\"$emit('close')\">Annuler</button>\n              <button class=\"btn btn-round btn-custom w-25\"  @click=\"$emit('company-deleted')\" >Confirmer</button>\n            </div>\n\n          </div>\n        \n        </div>\n        \n      </div>\n\n    </div>\n\n  </Transition>\n\n</template>\n\n<script>\n\nexport default {\n\n  name:\"UserCompaniesDeleteConfirmation\",\n  \n  emits:['close', 'company-deleted'],\n\n  props: {\n\n    show: {\n      type: Boolean,\n      default() {\n        return false;\n      },\n    },\n  },\n\n  \n\n}\n</script>\n\n<style scoped>\n\n</style>","import { render } from \"./UserCompaniesDeleteConfirmation.vue?vue&type=template&id=2f4865d2\"\nimport script from \"./UserCompaniesDeleteConfirmation.vue?vue&type=script&lang=js\"\nexport * from \"./UserCompaniesDeleteConfirmation.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./UserCompanies.vue?vue&type=template&id=4cdf77c3\"\nimport script from \"./UserCompanies.vue?vue&type=script&lang=js\"\nexport * from \"./UserCompanies.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./UserSettings.vue?vue&type=template&id=70a0fb89&scoped=true\"\nimport script from \"./UserSettings.vue?vue&type=script&lang=js\"\nexport * from \"./UserSettings.vue?vue&type=script&lang=js\"\n\nimport \"./UserSettings.vue?vue&type=style&index=0&id=70a0fb89&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-70a0fb89\"]])\n\nexport default __exports__","import { render } from \"./UserSettingsModal.vue?vue&type=template&id=8a51b1b6&scoped=true\"\nimport script from \"./UserSettingsModal.vue?vue&type=script&lang=js\"\nexport * from \"./UserSettingsModal.vue?vue&type=script&lang=js\"\n\nimport \"./UserSettingsModal.vue?vue&type=style&index=0&id=8a51b1b6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8a51b1b6\"]])\n\nexport default __exports__","import { render } from \"./UserList.vue?vue&type=template&id=04b79f50&scoped=true\"\nimport script from \"./UserList.vue?vue&type=script&lang=js\"\nexport * from \"./UserList.vue?vue&type=script&lang=js\"\n\nimport \"./UserList.vue?vue&type=style&index=0&id=04b79f50&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-04b79f50\"]])\n\nexport default __exports__","<template>\n<!-- https://github.com/cloudeep/vuejs-paginate-next/blob/main/src/components/Paginate.vue -->\n  <!-- footer & pagination -->\n  <footer class=\"paginate flexbox align-items-center pt-2\" v-if=\"totalRecords>0\">\n    \n    <!-- dropDown of Length page -->\n    <div class=\"dropdown\" v-if=\"totalPages >0 \">\n      <a class=\"btn btn-sm dropdown-toggle\" href=\"#\" id=\"dropdownMenuButton2\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"> {{pageLength}} </a>\n      <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton2\">\n        <a class=\"dropdown-item\" href=\"#\" v-for=\"length in pageLengths\" :key=\"length\" v-on:click=\"$emit('pageLength', length), (pageLength = length), pageStart=1\">\n          {{length}}\n        </a>\n      </div>\n    </div>\n    \n    <!-- length information label -->\n    <div class=\"text-right\" v-if=\"totalPages > 0 \">\n      <span class=\"flex-grow fw-light footer-pages\"> De\n        <span> {{startRecords}}</span>  à  <span>{{endRecords}}</span>  sur {{ totalRecords }}\n      </span>\n    </div>\n\n\n    <div class=\"text-right\">\n      <paginate\n        v-model=\"pageStart\"\n        :pageCount=\"totalPages\"\n        :page-range=\"5\"\n        :hidePrevNext=\"true\"\n        :no-li-surround=\"true\"\n        :click-handler=\"loadData\"\n        :active-class=\"'active'\"\n        :prev-text=\"'Précédent'\"\n        :next-text=\"'Suivant'\"\n        :container-class=\"'pagination justify-content-end'\"\n        :page-class=\"'page-item'\">\n      </paginate>\n    </div>\n\n  </footer>\n\n</template>\n\n<script>\nimport paginate from \"../pagination/Paginate.vue\";\nexport default {\n\n  name: \"pagination\",\n\n  emits:[\"fetchData\", \"pageLength\"],\n\n  components: {\n    paginate,\n  },\n\n  props: {\n\n    totalPages: {\n      type: Number,\n      default() {\n        return 0;\n      },\n    },\n\n    rootPageLength: {\n      type: Number,\n      default() {\n        return 0;\n      },\n    },\n\n    totalRecords: {\n      type: Number,\n      default() {\n        return 0;\n      },\n    },\n\n    pageLengths:{\n        type:Array,\n        default(){\n          return [5, 10, 25, 50, 100];\n        }\n    },\n\n    initPageStart:{\n      type: Number,\n      default() {\n        return 1;\n      },\n    }\n  },\n\n  data() {\n    return {\n      pageStart:1,\n      pageLength: this.rootPageLength,\n      startRecords : 0,\n      endRecords : 0\n    };\n  },\n\n  created() {\n    this.loadData();\n    this.updateStartAndEndRecords();   \n  },\n\n  watch:{\n\n    rootPageLength() {\n      this.updateStartAndEndRecords();   \n    },\n\n    totalRecords(){\n      this.updateStartAndEndRecords();   \n    },\n\n    pageStart(){\n      this.updateStartAndEndRecords();   \n    },\n\n    initPageStart(newVal, oldVal) {\n\n      this.updateStartAndEndRecords();  \n      if(newVal != oldVal)\n        this.pageStart = newVal;      \n    }\n  },\n\n  methods:{\n    loadData(){\n      this.$emit('fetchData', this.pageStart)\n    },\n\n    updateStartAndEndRecords(){\n      if(this.pageStart >= 1)\n        this.startRecords = (this.pageStart-1)*this.rootPageLength +1;\n          \n      this.endRecords = this.startRecords + this.rootPageLength -1;\n      if(this.endRecords>=this.totalRecords)\n        this.endRecords = this.totalRecords;\n    }\n  },\n\n}\n\n</script>\n\n<style scoped>\n.btn {\n  font-size: 14px;\n  padding: 5px 16px;\n  line-height: inherit;\n  color: #8b95a5;\n  letter-spacing: 1px;\n  border-radius: 2px;\n  background-color: #fff;\n  border-color: #ebebeb;\n  outline: none !important;\n  -webkit-transition: 0.15s linear;\n  transition: 0.15s linear;\n}\n.btn-sm {\n  font-size: 12px;\n  padding: 4px 12px;\n  line-height: 20px;\n}\n.footer-pages {\n  font-size: 12px;\n  color: #8b95a5 !important;\n}\n.dropdown-menu {\n  min-width: 3rem;\n  text-align: center;\n}\n@media ( min-width:640px ) and ( max-width : 768px) {\n    .paginate{\n        min-width:800px;\n        overflow: auto;\n    }\n}\n@media ( min-width:768px ) and ( max-width : 1280px) {\n    .paginate{\n        min-width:800px;\n        overflow: auto;\n    }\n}\n\n@media ( max-width:640px )  {\n    .paginate{\n        min-width:800px;\n        overflow: auto;\n    }\n}\n</style>\n","\n<template>\n  \n  <ul :class=\"containerClass\" v-if=\"!noLiSurround\">\n    <li v-if=\"firstLastButton\" :class=\"[pageClass, firstPageSelected() ? disabledClass : '']\" >\n      <a  @click=\"selectFirstPage()\" @keyup.enter=\"selectFirstPage()\" :class=\"pageLinkClass\" :tabindex=\"firstPageSelected() ? -1 : 0\" v-html=\"firstButtonText\"></a>\n    </li>\n\n    <li v-if=\"!(firstPageSelected() && hidePrevNext)\" :class=\"[prevClass, firstPageSelected() ? disabledClass : '']\">\n      <a @click=\"prevPage()\" @keyup.enter=\"prevPage()\" :class=\"prevLinkClass\" :tabindex=\"firstPageSelected() ? -1 : 0\" v-html=\"prevText\">\n      </a>\n    </li>\n\n    <li v-for=\"page in pages\" :key=\"page.index\"\n      :class=\"[pageClass, page.selected ? activeClass : '', page.disabled ? disabledClass : '', page.breakView ? breakViewClass : '']\">\n      <a v-if=\"page.breakView\" :class=\"[pageLinkClass, breakViewLinkClass]\" tabindex=\"0\">\n        <slot name=\"breakViewContent\">{{ breakViewText }}</slot>\n      </a>\n\n      <a  v-else-if=\"page.disabled\" :class=\"pageLinkClass\" tabindex=\"0\">{{page.content}}</a>\n      <a v-else @click=\"handlePageSelected(page.index + 1)\" @keyup.enter=\"handlePageSelected(page.index + 1)\" :class=\"pageLinkClass\" tabindex=\"0\" >{{ page.content }}</a>\n    </li>\n\n    <li v-if=\"!(lastPageSelected() && hidePrevNext)\" :class=\"[nextClass, lastPageSelected() ? disabledClass : '']\">\n      <a @click=\"nextPage()\" @keyup.enter=\"nextPage()\" :class=\"nextLinkClass\" :tabindex=\"lastPageSelected() ? -1 : 0\" v-html=\"nextText\"> </a>\n    </li>\n\n    <li v-if=\"firstLastButton\" :class=\"[pageClass, lastPageSelected() ? disabledClass : '']\">\n      <a @click=\"selectLastPage()\" @keyup.enter=\"selectLastPage()\" :class=\"pageLinkClass\" :tabindex=\"lastPageSelected() ? -1 : 0\" v-html=\"lastButtonText\">\n      </a>\n    </li>\n  </ul>\n\n  <div :class=\"containerClass\" v-else>\n    <a  v-if=\"firstLastButton\" @click=\"selectFirstPage()\" @keyup.enter=\"selectFirstPage()\" :class=\"[pageLinkClass, firstPageSelected() ? disabledClass : '']\" tabindex=\"0\"\n      v-html=\"firstButtonText\">\n    </a>\n\n    <a v-if=\"!(firstPageSelected() && hidePrevNext)\" @click=\"prevPage()\" @keyup.enter=\"prevPage()\" :class=\"[prevLinkClass, firstPageSelected() ? disabledClass : '']\" tabindex=\"0\"\n      v-html=\"prevText\">\n    </a>\n    <template v-for=\"page in pages\">\n      <a \n        v-if=\"page.breakView\"\n        :key=\"page.index\"\n        :class=\"[\n          pageLinkClass,\n          breakViewLinkClass,\n          page.disabled ? disabledClass : '',\n        ]\"\n        tabindex=\"0\"\n      >\n        <slot name=\"breakViewContent\">{{ breakViewText }}</slot>\n      </a>\n      <a \n        v-else-if=\"page.disabled\"\n        :key=\"page.index\"\n        :class=\"[\n          pageLinkClass,\n          page.selected ? activeClass : '',\n          disabledClass,\n        ]\"\n        tabindex=\"0\"\n        >{{ page.content }}</a\n      >\n      <a \n        v-else\n        :key=\"page.index\"\n        @click=\"handlePageSelected(page.index + 1)\"\n        @keyup.enter=\"handlePageSelected(page.index + 1)\"\n        :class=\"[pageLinkClass, page.selected ? activeClass : '']\"\n        tabindex=\"0\"\n       \n        >{{ page.content }}</a\n      >\n    </template>\n    <a \n      v-if=\"!(lastPageSelected() && hidePrevNext)\"\n      @click=\"nextPage()\"\n      @keyup.enter=\"nextPage()\"\n      :class=\"[nextLinkClass, lastPageSelected() ? disabledClass : '']\"\n      tabindex=\"0\"\n      v-html=\"nextText\"\n      \n    ></a>\n    <a \n      v-if=\"firstLastButton\"\n      @click=\"selectLastPage()\"\n      @keyup.enter=\"selectLastPage()\"\n      :class=\"[pageLinkClass, lastPageSelected() ? disabledClass : '']\"\n      tabindex=\"0\"\n      v-html=\"lastButtonText\"\n    ></a>\n  </div>\n\n</template>\n<script>\nexport default {\n  \n  name:\"paginate\",\n\n  data() {\n    return {\n      innerValue: 1,\n    };\n  },\n\n  props: {\n    modelValue: {\n      type: Number,\n    },\n    pageCount: {\n      type: Number,\n      required: true,\n    },\n    initialPage: {\n      type: Number,\n      default: 1,\n    },\n    forcePage: {\n      type: Number,\n    },\n    clickHandler: {\n      type: Function,\n      default: () => {},\n    },\n    pageRange: {\n      type: Number,\n      default: 3,\n    },\n    marginPages: {\n      type: Number,\n      default: 1,\n    },\n    prevText: {\n      type: String,\n      default: \"Prev\",\n    },\n    nextText: {\n      type: String,\n      default: \"Next\",\n    },\n    breakViewText: {\n      type: String,\n      default: \"…\",\n    },\n    containerClass: {\n      type: String,\n      default: \"pagination\",\n    },\n    pageClass: {\n      type: String,\n      default: \"page-item\",\n    },\n    pageLinkClass: {\n      type: String,\n      default: \"btn btn-sm ms-1\",\n    },\n    prevClass: {\n      type: String,\n      default: \"page-item\",\n    },\n    prevLinkClass: {\n      type: String,\n      default: \"btn btn-sm\",\n    },\n    nextClass: {\n      type: String,\n      default: \"page-item\",\n    },\n    nextLinkClass: {\n      type: String,\n      default: \"btn btn-sm ms-1\",\n    },\n    breakViewClass: {\n      type: String,\n    },\n    breakViewLinkClass: {\n      type: String,\n    },\n    activeClass: {\n      type: String,\n      default: \"active\",\n    },\n    disabledClass: {\n      type: String,\n      default: \"disabled\",\n    },\n    noLiSurround: {\n      type: Boolean,\n      default: false,\n    },\n    firstLastButton: {\n      type: Boolean,\n      default: false,\n    },\n    firstButtonText: {\n      type: String,\n      default: \"First\",\n    },\n    lastButtonText: {\n      type: String,\n      default: \"Last\",\n    },\n    hidePrevNext: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  computed: {\n    selected: {\n      get: function () {\n        return this.modelValue || this.innerValue;\n      },\n      set: function (newValue) {\n        this.innerValue = newValue;\n      },\n    },\n    pages: function () {\n      let items = {};\n      if (this.pageCount <= this.pageRange) {\n        for (let index = 0; index < this.pageCount; index++) {\n          let page = {\n            index: index,\n            content: index + 1,\n            selected: index === this.selected - 1,\n          };\n          items[index] = page;\n        }\n      } else {\n        const halfPageRange = Math.floor(this.pageRange / 2);\n        let setPageItem = (index) => {\n          let page = {\n            index: index,\n            content: index + 1,\n            selected: index === this.selected - 1,\n          };\n          items[index] = page;\n        };\n        let setBreakView = (index) => {\n          let breakView = {\n            disabled: true,\n            breakView: true,\n          };\n          items[index] = breakView;\n        };\n        // 1st - loop thru low end of margin pages\n        for (let i = 0; i < this.marginPages; i++) {\n          setPageItem(i);\n        }\n        // 2nd - loop thru selected range\n        let selectedRangeLow = 0;\n        if (this.selected - halfPageRange > 0) {\n          selectedRangeLow = this.selected - 1 - halfPageRange;\n        }\n        let selectedRangeHigh = selectedRangeLow + this.pageRange - 1;\n        if (selectedRangeHigh >= this.pageCount) {\n          selectedRangeHigh = this.pageCount - 1;\n          selectedRangeLow = selectedRangeHigh - this.pageRange + 1;\n        }\n        for (\n          let i = selectedRangeLow;\n          i <= selectedRangeHigh && i <= this.pageCount - 1;\n          i++\n        ) {\n          setPageItem(i);\n        }\n        // Check if there is breakView in the left of selected range\n        if (selectedRangeLow > this.marginPages) {\n          setBreakView(selectedRangeLow - 1);\n        }\n        // Check if there is breakView in the right of selected range\n        if (selectedRangeHigh + 1 < this.pageCount - this.marginPages) {\n          setBreakView(selectedRangeHigh + 1);\n        }\n        // 3rd - loop thru high end of margin pages\n        for (\n          let i = this.pageCount - 1;\n          i >= this.pageCount - this.marginPages;\n          i--\n        ) {\n          setPageItem(i);\n        }\n      }\n      return items;\n    },\n  },\n  methods: {\n    handlePageSelected(selected) {\n      if (this.selected === selected) return;\n      this.innerValue = selected;\n      this.$emit(\"update:modelValue\", selected);\n      this.clickHandler(selected);\n    },\n    prevPage() {\n      if (this.selected <= 1) return;\n      this.handlePageSelected(this.selected - 1);\n    },\n    nextPage() {\n      if (this.selected >= this.pageCount) return;\n      this.handlePageSelected(this.selected + 1);\n    },\n    firstPageSelected() {\n      return this.selected === 1;\n    },\n    lastPageSelected() {\n      return this.selected === this.pageCount || this.pageCount === 0;\n    },\n    selectFirstPage() {\n      if (this.selected <= 1) return;\n      this.handlePageSelected(1);\n    },\n    selectLastPage() {\n      if (this.selected >= this.pageCount) return;\n      this.handlePageSelected(this.pageCount);\n    },\n  },\n  beforeMount() {\n    this.innerValue = this.initialPage;\n  },\n  beforeUpdate() {\n    if (this.forcePage === undefined) return;\n    if (this.forcePage !== this.selected) {\n      this.selected = this.forcePage;\n    }\n  },\n};\n</script>\n\n\n<style scoped>\n.btn {\n  font-size: 14px;\n  padding: 5px 16px;\n  line-height: inherit;\n  color: #8b95a5;\n  letter-spacing: 1px;\n  border-radius: 2px;\n  background-color: #fff;\n  border-color: #ebebeb;\n  outline: none !important;\n  -webkit-transition: 0.15s linear;\n  transition: 0.15s linear;\n}\n.btn-sm {\n  font-size: 12px;\n  padding: 4px 12px;\n  line-height: 20px;\n}\n.active {\n  background-color: #efefef;\n}\n</style>","import { render } from \"./Paginate.vue?vue&type=template&id=49f6cbed&scoped=true\"\nimport script from \"./Paginate.vue?vue&type=script&lang=js\"\nexport * from \"./Paginate.vue?vue&type=script&lang=js\"\n\nimport \"./Paginate.vue?vue&type=style&index=0&id=49f6cbed&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-49f6cbed\"]])\n\nexport default __exports__","import { render } from \"./Pagination.vue?vue&type=template&id=c7d02aae&scoped=true\"\nimport script from \"./Pagination.vue?vue&type=script&lang=js\"\nexport * from \"./Pagination.vue?vue&type=script&lang=js\"\n\nimport \"./Pagination.vue?vue&type=style&index=0&id=c7d02aae&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c7d02aae\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"quickview quickview-lg\" tabindex=\"-1\" id=\"quickViewUserUpdate\" aria-labelledby=\"quickViewUserUpdateLabel\">\n    <header class=\"quickview-header\">\n      <h5 class=\"quickview-title lead fw-400\">Création de l'utilisateur</h5>\n      <button type=\"button\" class=\"btn-close\" v-on:click=\"$emit('close')\"></button>\n    </header>\n\n    <div class=\"quickview-body\">\n      <div class=\"quickview-block form-type-material\">\n        <UserCreateForm v-on:user-created=\"reload\"></UserCreateForm>\n      </div>\n    </div>\n    \n  </div>\n    \n</template>\n\n<script>\nimport UserCreateForm from \"./UserCreateForm.vue\";\n\nexport default {\n\n  name: \"UserCreate\",\n  \n  emits:[\"close\", \"user-created\"],\n  \n  data() {\n    return {\n      closed:false,\n    };\n  },\n\n  components: {\n    UserCreateForm\n  },\n\n  computed: {\n  },\n\n  created() {\n  },\n\n  methods: {\n    reload(){\n      this.$emit('user-created');\n    }\n  }\n\n};\n</script>\n\n<style lang=\"css\" scoped>\n\n</style>","<template>\n\n  <Form v-on:submit=\"handleCreateUser\" :validation-schema=\"userCreateFormSchema\" v-slot=\"{ errors }\">\n    \n    <!-- nom -->\n    <div class=\"form-group\">\n      <Field id=\"userLastName\" name=\"userLastName\" type=\"text\" class=\"form-control\" :class=\"{ 'is-invalid': errors.userLastName }\" required />\n      <label class=\"required\" for=\"userLastName\">Nom</label>\n      <ErrorMessage name=\"userLastName\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- prenom -->\n    <div class=\"form-group\">\n      <Field id=\"userFirstName\" name=\"userFirstName\" type=\"text\" class=\"form-control\" :class=\"{ 'is-invalid': errors.userFirstName }\" required />\n      <label class=\"required\" for=\"userFirstName\">Prénom</label>\n      <ErrorMessage name=\"userFirstName\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- email -->\n    <div class=\"form-group\">\n      <Field name=\"email\" type=\"text\" id=\"email\" class=\"form-control\" :class=\"{ 'is-invalid': errors.email }\" required />\n      <label class=\"required\" for=\"email\">Email</label>\n      <ErrorMessage name=\"email\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- login -->\n    <div class=\"form-group\">\n      <Field id=\"login\" name=\"login\" type=\"text\" class=\"form-control\" :class=\"{ 'is-invalid': errors.login }\" required />\n      <label class=\"required\" for=\"login\">Login</label>\n      <ErrorMessage name=\"login\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- telephone -->\n    <div class=\"form-group\">\n      <Field name=\"phone\" type=\"text\" v-model=\"phone\">\n        <PhoneInput \n          :modelValue=\"phone\"\n          @value-updated=\"selectedPhone\" \n          :phoneType=\"'FIXED_LINE'\"\n          :country=\"selectedCountry\" \n          :error=\"errors.phone\" />\n      </Field>\n    </div>\n\n    <!-- Portable -->\n    <div class=\"form-group\">\n      <Field name=\"mobile\" v-model=\"mobile\" type=\"text\" >\n        <PhoneInput \n          :modelValue=\"mobile\"\n          @value-updated=\"selectedMobile\" \n          :phoneType=\"'MOBILE'\" \n          :country=\"selectedCountry\" \n          :required=\"false\" \n          :error=\"errors.mobile\" />\n      </Field>\n    </div>\n\n    <!-- color profile -->\n    <div class=\"form-group\">\n      <div class=\"btn-group align-items-center\">\n        <span class=\"label-floated label-required\">Couleur de profile</span>\n        <span>\n          <a class=\"btn btn-sm dropdown-toggle dropdown-color ms-2\" \n            href=\"#\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"\n            id=\"font-color\" :style=\"{'background-color': iconColor}\" \n            data-color=iconColor data-original-title=\"Font Color\">\n          </a>\n          <ul id=\"fore-color\" class=\"dropdown-menu\">\n            <li style=\"padding: 2px\">\n              <a class=\"btn\" data-edit=\"foreColor #000000\" data-color=\"#000000\" v-for=\"color in colorList\" :key=\"color\"\n                v-on:click=\"iconColor=rgbToHex(color[0], color[1],color[2])\"\n                :style=\"{ margin: 1 + 'px', float: 'left', 'background-color': `rgb(${color[0]}, ${color[1]}, ${color[2]})`,\n                  height: 15 + 'px', width: '15%', padding: '0px', clear: 'none',\n                  border: '1px' + 'solid' + 'rgba(0, 0, 0, 0.15)', 'border-radius': 2 + 'px',\n                }\"\n              ></a>\n            </li>\n          </ul>\n        </span>\n      </div>\n    </div>\n\n    <!-- role -->\n    <div class=\"form-group\">\n      <Field name=\"role\" v-model=\"role\" v-slot=\"{handleChange, value}\">\n        <CustomSelect \n          :modelValue=\"value\"\n          @value-updated=\"(value)=> {handleChange(value); selectRole()}\"\n          :options=\"inferiorRoles\"\n          name=\"role\"\n          :error=\"errors.role\"\n          classStyle=\"form-control\"\n          />\n      </Field>\n      <label class=\"floating-label required\" for=\"role\">Rôle:</label>\n      <ErrorMessage name=\"role\" class=\"d-flex invalid-feedback\" />\n    </div>\n\n    <!-- workshop -->\n    <Field type=\"text\" name=\"mandatoryWorkshopCode\" v-model=\"mandatoryWorkshopCode\" hidden required />\n    <div v-if=\"mandatoryWorkshopCode\" class=\"form-group\">\n      <Field name=\"workshopCode\" v-model=\"workshopCode\" v-slot=\"{handleChange, value}\">\n        <CustomSelect \n          :modelValue=\"value\"\n          @value-updated=\"(value)=> {handleChange(value); loadSuperiors()}\"\n          :options=\"workshops\"\n          name=\"workshopCode\"\n          :error=\"errors.workshopCode\"\n          classStyle=\"form-control\"\n          />\n      </Field>\n      <label class=\"floating-label required\" for=\"workshopCode\">Atelier:</label>\n      <ErrorMessage name=\"workshopCode\" class=\"d-flex invalid-feedback\" />\n    </div>\n\n    <!-- superior -->\n    <div v-if=\"canChooseSuperior\" class=\"form-group\">\n      <Field name=\"superior\" v-model=\"superiorCode\"  v-slot=\"{handleChange, value}\">\n        <CustomSelect \n          :modelValue=\"value\"\n          @value-updated=\"(value)=> {handleChange(value);}\"\n          :options=\"superiors\"\n          name=\"superior\"\n          :error=\"errors.superior\"\n          classStyle=\"form-control\"\n        />\n      </Field>\n      <label class=\"floating-label\" for=\"superior\">Supérieur:</label>\n      <ErrorMessage name=\"superior\" class=\"d-flex invalid-feedback\" />\n    </div>\n\n    <!-- ajouter buttom -->\n    <div class=\"text-center pt-3\">\n      <button type=\"submit\" class=\"btn btn-custom btn-round\" :disabled=\"disableSubmit\">Ajouter</button>\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n  </Form>\n  \n</template>\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport PhoneInput from \"../../common/PhoneInput.vue\"\nimport CustomSelect from '../../common/CustomSelect.vue';\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"UserCreateForm\",\n\n  emits:[\"user-created\"],\n  \n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    PhoneInput,\n    CustomSelect,\n    CustomMessage\n  },\n\n  setup() {\n\n    const userCreateFormSchema = Yup.object().shape({\n      userLastName: Yup.string().required(\"Nom est obligatoire\"),\n      userFirstName: Yup.string().required(\"Prénom est obligatoire\"),\n      login: Yup.string().required(\"Login est obligatoire\")\n        .matches(/^[@.A-Za-z0-9_-]*$/, \"Login ne doit pas contenir d'espaces\"),\n      email: Yup.string().required(\"Email est obligatoire\").email(\"Email invalide\"),\n      phone: Yup.string().required(\"Téléphone est obligatoire\"),\n      role: Yup.string().required(\"Rôle est obligatoire\"),\n      mandatoryWorkshopCode: Yup.boolean(),\n      workshopCode: Yup.string().when(\"mandatoryWorkshopCode\", {\n        is: true,\n        then: Yup.string().required(\"Atelier est obligatoire\")\n      }),\n    });\n\n    const countries = ['France', 'Monaco', 'Belgique', 'Suisse', 'Andorre', 'Italie', 'Espagne', 'Luxembourg', 'Pays-Bas', 'Allemagne', 'Autriche'];\n    const colorList = [[0, 0, 0], [68, 68, 68], [100, 100, 100], [136, 136, 136], [170, 170, 170], [214, 213, 213], \n                  [64, 161, 248], [106, 227, 208], [136, 212, 83], [248, 225, 90], [239, 109, 87], [223, 105, 165],\n                  [46, 117, 181], [73, 165, 157], [84, 173, 50], [241, 187, 65], [220, 58, 38], [188, 59, 122],\n                  [26, 77, 124], [52, 121, 118], [49, 110, 29], [242, 151, 55], [167, 42, 23], [141, 40, 93]];\n\n    return { userCreateFormSchema, countries, colorList}\n  },\n\n  data() {\n    return {\n      superiors: [],\n      canChooseSuperior: false,\n      mandatoryWorkshopCode: false,\n      workshops: [],\n      inferiorRoles: [],\n      workshopCode: \"\",\n      role: \"\",\n      superiorCode: \"\",\n      iconColor: \"#00203f\",\n      companyCode: this.$store.state.auth.user.companyCode,\n      message: \"\",\n      phone :'',\n      mobile:'',\n      selectedCountry:\"\",\n      disableSubmit:false\n    };\n  },\n\n  created() {\n    this.loadInferiorRoles();\n    this.loadSimpleCompany();\n  },\n\n  methods: {\n\n    rgbToHex(r, g, b) {\n      return \"#\" + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b);\n    },\n\n    selectedMobile (mobile){\n      this.mobile = mobile\n    },\n\n     selectedPhone (phone){\n      this.phone = phone;\n    },\n\n    componentToHex(c) {\n      var hex = c.toString(16);\n      return hex.length == 1 ? \"0\" + hex : hex;\n    },\n\n    loadSimpleCompany() {\n\n      let companyReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n          Authorization: this.$authTokenService.authToken()\n        },\n      };\n\n      fetch(\"/api/company/get-simple-company/\"+this.companyCode, companyReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            const company = await response.json();\n            // init country\n            this.selectedCountry = company.companyCountry;\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response)=> {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadSimpleCompany.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    },\n\n    loadInferiorRoles() {\n\n      this.message = \"\";\n      let inferiorRolesReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(this.$store.state.auth.user.role),\n      };\n      \n      fetch(\"/api/user/inferior-roles\", inferiorRolesReq)\n        .then( async response  => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            const results = await response.json();\n            this.inferiorRoles = results.map(inferiorRole => {                                     \n              return {\n                text:  inferiorRole.roleValue,                            \n                value: inferiorRole.roleName                               \n              };\n            });\n\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => { \n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadInferiorRoles.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    loadWorkshops() {\n      this.superiors= [];\n      if(this.role=='LEADER' || this.role=='STAFF'){\n        this.mandatoryWorkshopCode = true;\n      } else {\n        this.mandatoryWorkshopCode = false;\n        this.workshops= [];\n      }\n      if(this.mandatoryWorkshopCode){\n\n        let workshopsReq = {\n          method: \"GET\",\n          headers: {\"Content-Type\": \"application/json\", \n          Authorization: this.$authTokenService.authToken()},\n        };\n\n        fetch(\"/api/workshop/workshops/enabled/\"+this.companyCode, workshopsReq)\n          .then( async response => {\n            if(response.status == 400){\n              this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n              return; \n            }\n            if (response.ok){\n              const results = await response.json();\n              this.workshops = results.map(workshop => {                                     \n                return {\n                  text: workshop.workshopName,                              \n                  value: workshop.workshopCode                               \n                };\n               });\n              return;\n            } \n            return Promise.reject(response);\n          })\n          .catch( (response) => {\n            if (response.status == 401){\n              this.$authTokenService.refreshToken(this.loadWorkshops.bind(this));\n              return;\n            }\n            this.message = this.$authTokenService.handleErrorResponse(response);\n          });\n      }\n    },\n\n    loadSuperiors() {\n      this.message = \"\";\n      this.superiorCode = \"\";\n      this.superiors= [];\n      let selectedWorkshopCode = null;\n      if(this.role=='STAFF')\n        selectedWorkshopCode = this.workshopCode;\n      let superiorsReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify({\n          role : this.role,\n          companyCode : this.companyCode,\n          workshopCode: selectedWorkshopCode\n        })\n      };\n\n      fetch(\"/api/user/superiors\", superiorsReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            const results = await response.json();\n            this.superiors = results.map(user => {                                     \n              return {\n                text: user.userFirstName+ \" \" + user.userLastName+ \" [\"+user.roleValue+\"]\",                            \n                value: user.userCode                               \n              };\n            });\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadSuperiors.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n\n        });\n        \n    },\n\n    handleCreateUser(values) {\n\n      this.disableSubmit = true;\n      this.message = \"\";\n      values.companyCode = this.companyCode.toLowerCase();\n      values.workshopCode = this.workshopCode;\n      values.role = this.role;\n      values.superior = this.superiorCode;\n      values.iconColor = this.iconColor;\n      let createUserReqBody = this.userCreateFormSchema.cast(values);\n      let createUserReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(createUserReqBody),\n      };\n      fetch(\"/api/user/create-user\", createUserReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            this.disableSubmit = false;\n            return;\n          }\n          if (response.ok){\n            this.$emit(\"user-created\");\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch( (response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.handleCreateUser.bind(this, values));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          this.disableSubmit = false;\n        });\n    },\n\n    selectRole(){\n      this.workshopCode = \"\";\n      this.canChooseSuperior = false\n      this.mandatoryWorkshopCode = false;\n      this.workshops= [];\n      if(this.role=='LEADER' || this.role=='STAFF'){\n        this.mandatoryWorkshopCode = true;\n        this.canChooseSuperior = true\n      }\n      if(this.mandatoryWorkshopCode){\n        this.loadWorkshops();\n      }\n    },\n\n  },\n};\n</script>\n\n<style lang=\"css\" scoped>\n\n/* dropdown-color */\n.dropdown-color {\n  cursor: pointer;\n  transition: 0.2s linear;\n  float: left;\n  height: 15%;\n  min-width: 45px;\n  padding: 0px;\n  clear: none;\n  border-radius: 2px;\n}\n\n</style>\n","import { render } from \"./UserCreateForm.vue?vue&type=template&id=a15803b8&scoped=true\"\nimport script from \"./UserCreateForm.vue?vue&type=script&lang=js\"\nexport * from \"./UserCreateForm.vue?vue&type=script&lang=js\"\n\nimport \"./UserCreateForm.vue?vue&type=style&index=0&id=a15803b8&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a15803b8\"]])\n\nexport default __exports__","import { render } from \"./UserCreate.vue?vue&type=template&id=392939fb\"\nimport script from \"./UserCreate.vue?vue&type=script&lang=js\"\nexport * from \"./UserCreate.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"card shadow-1 form-type-material \" v-auto-animate>\n  \n    <div class=\"card-header\">\n        Filtres\n       <div class=\"float-end\"> <i class=\"mdi mdi-close fs-22 cursor-pointer\" @click=\"$emit('filter-closed')\" v-tippy=\"{ content: 'Fermer' , placement:'top' }\"/></div>\n    </div>  \n\n    <div class=\"card-body\">\n\n      <Form :validation-schema=\"filterSchema\" v-slot=\"{ errors }\" >\n      \n        <!-- workshop-->\n        <div v-if=\"workshops && workshops.length > 1 && this.$store.state.auth.user &&  !this.$store.state.auth.user.workshopCode\" class=\"nav-item form-group\">\n          <Field name=\"workshopCode\" v-model=\"workshopCode\"  v-slot=\"{handleChange, value}\">\n            <CustomSelect \n              :modelValue=\"value\"\n              @value-updated=\"(value)=> {handleChange(value); createFilter()}\"\n              :options=\"workshops\"\n              name=\"workshopCode\"\n              :error=\"errors.workshopCode\"\n              classStyle=\"form-control\"\n              :clearable=\"true\"\n              />\n          </Field>\n          <label class=\"floating-label\" for=\"workshopCode\">Atelier</label>\n        </div>\n\n        <!-- roles -->\n        <div>\n          <div class=\"opacity-50\">Roles</div>\n          <div class=\"pt-1\" v-for=\"role in inferiorRoles\" :key=\"role\">\n            <div class=\"d-flex align-items-center text-gray\">\n              <input type=\"checkbox\" class=\"form-checkbox\" name=\"role\" :checked=\"selectedRoles.indexOf(role.roleName) >-1\" :value=\"role.value\" @click=\"toggleRole(role.roleName)\"/> \n              <span class=\"ms-2\">{{role.roleValue}} </span>\n            </div>\n          </div>\n        </div>\n\n        <!-- user status -->\n        <div>\n          <hr />\n          <div class=\"opacity-50\">Status</div>\n          <div v-for=\"status in userStatus\" :key=\"status\">\n            <div class=\"text-capitalize d-flex align-items-center mb-1\">\n              <input type=\"checkbox\" class=\"form-checkbox\" name=\"status\" :checked=\"selectedStatus.indexOf(status.name) >-1\" :value=\"status.value\" @click=\"toggleStatus(status.name)\"/> \n              <span :class=\"'ms-2 badge badge-pill '+status.style\">{{status.value}} </span>\n            </div>\n          </div>\n        </div>\n\n      </Form>\n     \n      <!-- error message -->\n      <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n    </div>\n    \n  </div>\n\n</template>\n\n<script>\n\nimport CustomMessage from '../../common/CustomMessage.vue';\nimport CustomSelect from '../../common/CustomSelect.vue';\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\n\nexport default {\n\n  name:\"UserFilter\",\n\n  emits:[\"user-filter-updated\", \"filter-closed\"],\n\n  components: {\n    CustomSelect,\n    CustomMessage,\n    Form, \n    Field, \n    ErrorMessage\n  },\n\n  setup(){\n    const filterSchema = Yup.object().shape({ workshopCode: Yup.string()});\n    return {filterSchema}\n  },\n\n  data(){\n    return {\n      message: \"\",\n\n      companyCode: this.$store.state.auth.user.companyCode,\n      workshopCode:\"\",\n      workshops: [],\n      inferiorRoles: [],\n      userStatus: [\n        {name:'INITIAL', value:\"Initial\", style:\"badge-box\"},\n        {name:'ENABLED', value:\"Activé\", style:\"badge-box\"},\n        {name:'BLOCKED', value:\"Bloqué\", style:\"badge-box\"} , \n        {name:'DISABLED', value:\"Désactivé\", style:\"badge-box\"} \n      ],\n      selectedRoles: [],\n      selectedStatus: ['INITIAL', 'ENABLED', 'BLOCKED'],\n\n    }\n  },\n\n  created(){\n    this.loadWorkshops();\n    this.loadInferiorRoles();\n  },\n\n  methods:{\n\n    toggleRole(role) {\n      this.toggleItem(this.selectedRoles, role);\n    },\n\n    toggleStatus(status) {\n      this.toggleItem(this.selectedStatus, status);\n    },\n\n    /**\n     * this method is used to add or remove an element from an array\n     * @param {Array} list - The array to modify (selectedRoles or selectedStatus)\n     * @param {String} item - The element to add or remove\n     */\n     toggleItem(list, item) {\n      const index = list.indexOf(item);\n      if (index === -1) {\n        list.push(item);\n      } else {\n        list.splice(index, 1);\n      }\n      this.createFilter();\n    },\n\n    createFilter(){\n\n      var filterRequest = {};\n\n      //workshop code\n      if(this.$store.state.auth.user.workshopCode)\n        filterRequest.workshopCode = this.$store.state.auth.user.workshopCode\n      else if(this.workshopCode)\n        filterRequest.workshopCode = this.workshopCode;\n\n      if(this.selectedRoles.length > 0)\n        filterRequest.roles = this.selectedRoles;\n\n      if(this.selectedStatus.length > 0)\n        filterRequest.status = this.selectedStatus;\n\n      this.$emit(\"user-filter-updated\", filterRequest);\n    },\n\n    loadWorkshops() {\n\n      let workshopsReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n          Authorization: this.$authTokenService.authToken()\n        },\n      };\n\n      fetch(\"/api/workshop/workshops/enabled/\"+this.companyCode, workshopsReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if(response.ok){\n            const results = await response.json();\n            this.workshops = results.map(workshop => {                                     \n              return {\n                text: workshop.workshopName,                              \n                value: workshop.workshopCode                               \n              };\n            });\n            return;\n          } else {\n            return Promise.reject(response);\n          }\n        }).catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadWorkshops.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n      });\n      \n    },\n\n    loadInferiorRoles() {\n\n      let inferiorRolesReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(this.$store.state.auth.user.role),\n      };\n\n      fetch(\"/api/user/inferior-roles\", inferiorRolesReq)\n        .then( async response  => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.inferiorRoles = await response.json();\n            if(this.inferiorRoles.length ===1) \n              this.selectedRoles.push(this.inferiorRoles[0].roleName);\n\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => { \n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadInferiorRoles.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n  }\n\n\n\n}\n</script>\n\n<style scoped>\n\ninput[type=\"checkbox\"] {\n  filter: grayscale(1) !important;\n  cursor: pointer;\n}\n.card-header{\n  padding: 16px 16px;\n  color: #8b95a5;\n}\n</style>","import { render } from \"./UserFilter.vue?vue&type=template&id=289d1b9e&scoped=true\"\nimport script from \"./UserFilter.vue?vue&type=script&lang=js\"\nexport * from \"./UserFilter.vue?vue&type=script&lang=js\"\n\nimport \"./UserFilter.vue?vue&type=style&index=0&id=289d1b9e&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-289d1b9e\"]])\n\nexport default __exports__","import { render } from \"./Users.vue?vue&type=template&id=7fccb379&scoped=true\"\nimport script from \"./Users.vue?vue&type=script&lang=js\"\nexport * from \"./Users.vue?vue&type=script&lang=js\"\n\nimport \"./Users.vue?vue&type=style&index=0&id=7fccb379&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7fccb379\"]])\n\nexport default __exports__","<template>\n  <div class=\"container\">\n\n    <!-- header -->\n    <div v-if=\"user && this.$store.state.auth.user\" class=\"header-bar justify-content-between my-3\">\n\n      <!-- not the same connected user-->\n      <div v-if=\"user.userCode != this.$store.state.auth.user.userCode \">\n        <div class=\"fs-17 fw-600\" >\n          Planning\n        </div>\n        <span v-if=\"user.userFirstName && user.userLastName\">\n            <span class=\"text-capitalize fs-14\">\n              {{user.userFirstName+\" \"+user.userLastName}}\n            </span>\n            <small class=\"minus-separator fst-italic\">\n              {{user.roleValue}}\n            </small>\n        </span>\n      </div>\n\n      <!-- same connected user-->\n      <div v-if=\"user.userCode == this.$store.state.auth.user.userCode \">\n        <div class=\"fs-17 fw-600\" >\n          Mon planning\n        </div>\n      </div>\n\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n    <!-- user absence form -->\n    <UserAbsenceForm \n      v-if=\"showUserAbsence\"\n      :userCode=\"userCode\"\n      :transferredStartDate=\"userAbsenceDate\" \n      :limitTime=\"workingCapacity\" \n      :existUserAbsence=\"existeUserAbsence\"\n      :absenceTypeTransferred=\"absenceType\"\n      v-on:user-absence-removed=\"showUserAbsence = false\" \n      v-on:user-absence-created=\"relaodUserCalendar\" \n    />\n\n    <div v-auto-animate>\n\n      <div class=\"my-3\">\n\n        <div class=\"fc card p-0\">\n          \n          <!-- calendar header -->\n          <CalendarHeader\n            :date=\"startDate\" \n            :defaultDisplay=\"'monthly'\"\n            :showNav=\"false\"\n            v-on:decrement-month=\"decrementMonth()\" \n            v-on:increment-month=\"incrementMonth()\"\n          />\n\n          <!-- calendar -->\n          <div class=\"fc\">\n              \n            <table>\n              <thead>\n\n                <tr>\n                  <td class=\"border-0\">\n                    <table>\n                      <thead>\n                        <tr>\n                          <!-- Days Name -->\n                          <th v-for=\"day in days\" :key=\"day\">\n                            <span class=\"fs-17 text-lighter\">{{day}} </span>\n                          </th>\n\n                        </tr>\n                      </thead>\n                    </table>\n                  </td>\n                </tr>\n                  \n              </thead>\n\n              <tbody>\n                <tr>\n                  <td>\n                    <div>\n                      <!-- weeks -->\n                      <div class=\"fc-row fc-tr\" v-for=\"(week, index) in monthWeeks\" :key=\"index\">\n                        <div class=\"fc-bg\">\n                          <table>\n                            <tbody>\n\n                              <tr>\n\n                                <!-- if the day is indisponible/or past the update and click is not allow :class=[condition? (val1 if condition is true) : (else val2), seconde] -->\n                                <td v-for=\"weekDay in weekDays\" :key=\"weekDay\" > \n                                  <UserCalendarCell :calendarDay =\"week[weekDay]\" v-on:user-absence-added=\"addUserAbsence\"/>\n                                </td>\n                                \n                              </tr>\n\n                            </tbody>\n                          </table>\n                        </div>\n                      </div>\n                    </div>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n            \n          </div>\n\n          <!-- loader -->\n          <div v-if=\"loading\" class=\"loading reveal top-0\">\n            <span class=\"spinner-border\" role=\"status\"></span>\n          </div>\n\n        </div>\n\n      </div>\n\n    </div>\n  </div>\n\n</template>\n\n<script>\nimport { useRoute } from \"vue-router\";\nimport UserAbsenceForm from \"./user-calendars/UserAbsenceForm.vue\";\nimport UserCalendarCell from \"./user-calendars/UserCalendarCell.vue\"\nimport range from 'lodash/range';\nimport moment from \"moment\";\nimport CustomMessage from '../common/CustomMessage.vue';\nimport CalendarHeader from \"../common/CalendarsHeader.vue\";\n\nexport default {\n  \n  name:\"UserCalendars\",\n\n  components:{\n    UserAbsenceForm,\n    UserCalendarCell,\n    CustomMessage,\n    CalendarHeader\n  },\n\n  setup(){\n\n     let workshopCode = useRoute().params.workshopCode;\n     let companyCode = useRoute().params.companyCode;\n     let userCode = useRoute().params.userCode;\n\n     moment.locale('fr');\n     const planning = {};\n\n    return { workshopCode, companyCode, userCode, planning};\n  },\n\n  data(){\n    return{\n      showUserAbsence: false,\n      userAbsenceDate: \"\",\n      workingCapacity: 8,\n      existeUserAbsence: false,\n      absenceType: \"\",\n      weekDays: range(0,7),\n      days: ['Lun','Mar','Mer','Jeu','Ven','Sam','Dim'],\n      monthWeeks: [],\n      message: \"\",\n      currentMonth: moment().startOf('months'),\n      startDate: moment().startOf('months').startOf('week'),\n      endDate: moment().endOf('months').endOf('week'),\n      user: null\n    }\n  },\n\n  created(){\n    this.moment = moment;\n    this.loadUser();\n    this.loadUserCalendars();\n  },\n\n  methods:{\n\n    addUserAbsence(userAbsenceReq){\n        //console.log(\"--_>\",userAbsenceReq);\n        this.showUserAbsence = true;\n        this.userAbsenceDate = userAbsenceReq.date;\n        this.workingCapacity = userAbsenceReq.workingCapacity;\n        this.existeUserAbsence = userAbsenceReq.existUserAbsence;\n        this.absenceType = userAbsenceReq.absenceType;\n        window.scrollTo(0,0);\n    },\n\n    relaodUserCalendar(){\n      this.showUserAbsence = false;\n      this.loadUserCalendars();\n    },\n\n    decrementMonth(){\n      this.currentMonth = this.currentMonth.subtract(1, \"months\");\n      this.startDate = this.currentMonth.clone().startOf('week');\n      //console.log(\"<<< startDate=\", this.startDate.format('YYYY-MM-DD'));\n      this.endDate = this.currentMonth.clone().endOf('months').endOf('week');\n      //console.log(\"<<< endDate=\", this.endDate.format('YYYY-MM-DD'));\n      this.loadUserCalendars();\n    },\n\n    incrementMonth(){\n      this.currentMonth = this.currentMonth.add(1, \"months\");\n      this.startDate = this.currentMonth.clone().startOf('week');\n      //console.log(\">>> startDate=\",this.startDate.format('YYYY-MM-DD'));\n      this.endDate = this.currentMonth.clone().endOf('months').endOf('week');\n      //console.log(\">>> endDate=\",this.endDate.format('YYYY-MM-DD'));\n      this.loadUserCalendars();\n    },\n  \n    loadUser(){\n\n      let loadUserReq = {\n        method: \"GET\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()}\n      };\n\n      fetch(\"/api/user/simple/\"+this.companyCode+\"/\"+this.userCode, loadUserReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            const data = await response.json();\n            this.user = data;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch( (response) => { \n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadUser.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    loadUserCalendars() {\n      \n      let planningReq = {\n        userCode: this.userCode,\n        companyCode: this.companyCode,\n        workshopCode: this.workshopCode,\n        startDate: this.startDate.clone().format('DD/MM/YYYY'),\n        endDate: this.endDate.clone().format('DD/MM/YYYY')\n      };\n\n      this.loading = true;\n      let loadUserCalendarsReq = {\n        method: \"POST\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()},\n        body: JSON.stringify(planningReq)\n      };\n\n      fetch(\"/api/user-calendar/\", loadUserCalendarsReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            const data = await response.json();\n            this.planning = data;\n            this.buildMonthWeeks();\n            this.loading = false;\n            return;\n          } \n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadUserCalendars.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    buildMonthWeeks() {\n      var calendarStartDate = this.startDate.clone();\n      var month = [];\n      while (this.endDate.isAfter(calendarStartDate)) {\n        let week=[];\n        let i=0;\n        while (i<7) {\n          // data to display in calendar\n          const userCalendar = this.userCapacityByDate(calendarStartDate.format('YYYY-MM-DD'));\n          var userAbsence = null;\n          if(userCalendar.userAbsence)\n            userAbsence = userCalendar.userAbsence\n          var day = {\n            'date': calendarStartDate.format('DD/MM/YYYY'), \n            'day': calendarStartDate.format('dddd'),\n            'isToday': this.isToDay(calendarStartDate.format('DD/MM/YYYY')), \n            'isPast': this.isPast(calendarStartDate.format('DD/MM/YYYY')),\n            'isCurrentMonth': this.isCurrentMonth(calendarStartDate.format('DD/MM/YYYY')),\n            'workingCapacity': userCalendar.workingCapacity,\n            'workingRate':userCalendar.workingRate,\n            'workingHours':userCalendar.workingHours,\n            'editable': true,\n            'userAbsence': userAbsence \n          }\n\n          week.push(day);\n          calendarStartDate = calendarStartDate.add(1,'days');\n          i++;\n        }\n        month.push(week);\n        calendarStartDate = calendarStartDate.clone().startOf('week');\n\n      }\n      this.monthWeeks = month;\n    },\n\n    /*\n    * return json by date from userCalendar not working for that we converted explicitly the target to json object \n    */\n    userCapacityByDate(date){\n      var userCalendar = this.planning[date];\n      var jsonObject = {};\n      for(const key in userCalendar)\n        jsonObject[key] = userCalendar[key];\n      return jsonObject; \n    },\n\n    isToDay(date){\n      var today=new Date();\n      return this.formatDate(date, 'DD/MM/YYYY').isSame(today, \"day\");\n    },\n\n    isPast(date){\n      var today=new Date();\n      return this.formatDate(date, 'DD/MM/YYYY').isBefore(today, \"day\");\n    },\n\n    isCurrentMonth(date){\n      if( this.formatDate(date, 'DD/MM/YYYY').isAfter(this.currentMonth,\"month\") || this.formatDate(date, 'DD/MM/YYYY').isBefore(this.currentMonth,\"month\"))\n        return false;\n      \n      return true;\n    },\n\n    formatDate(value, pattern){\n      return moment(value, pattern).hour(0).minute(0).seconds(0);\n    },\n\n  }\n\n}\n</script>\n\n<style>\n\n</style>","<template>\n  <div class=\"mx-auto card p-4\">\n    <Form v-on:submit=\"createUserAbsence\" :validation-schema=\"userAbsenceSchema\" v-slot=\"{ errors }\">\n\n      <div class=\"pb-1\"> \n          <span class=\"ps-0\">Absence partielle</span> \n          <Switch class=\"ps-2\" :checked=\"partialAbsence\" :label=\"''\" @update:checked=\"updateChecked\" /> \n          <span class=\"mdi mdi-close cursor-pointer fs-18\" style=\"float: inline-end;\" @click=\"$emit('user-absence-removed')\"></span>\n          <Field type=\"text\" class=\"form-control\" name=\"partialAbsence\" :class=\"{ 'is-invalid': errors.partialAbsence }\" required  v-model=\"partialAbsence\" hidden/>\n      </div>\n\n      <div class=\"form-type-material\">\n\n        <!-- absence type -->\n        <div class=\"form-type-material form-group\" :class=\"absenceTypeTransferred ?'pointer-not-allowed':'cursor-pointer'\">\n          <Field name=\"absenceType\" v-model=\"absenceType\" v-slot=\"{handleChange, value}\">\n            <CustomSelect \n              :modelValue=\"value\"\n              @value-updated=\"(value)=> {handleChange(value); }\"\n              :options=\"holidaysType\"\n              :error=\"errors.absenceType\"\n              name=\"absenceType\"\n              classStyle=\"form-control\"\n              :clearable=\"true\"\n              />\n          </Field>\n          <label class=\"floating-label required\" for=\"absenceType\">Type</label>\n          <ErrorMessage name=\"absenceType\" class=\"d-flex invalid-feedback\" />\n        </div>\n\n        <!-- start date -->\n        <div class=\"form-group\">\n          <Field type=\"text\" class=\"form-control\" name=\"startDate\" :class=\"{ 'is-invalid': errors.startDate }\" hidden required  v-model=\"startDate\"/>\n          <Datepicker name=\"startDate\" class=\"form-control\"  v-model=\"startDate\" :lowerLimit='upperLimit' :inputFormat=\"'dd/MM/yyyy'\"\n           :typeable=\"true\" :placeholder=\"''\" v-maska data-maska=\"##/##/####\" \n           @focus=\"setStartDateShowingLabelTrue\"\n           @keypress=\"startDateKeyPressed\"\n           @blur=\"startDateLabelDisplay\"\n           @change=\"startDateChangeDate\"/>\n          <span :class=\"startDateShowLabel  ? 'do-float':''\">\n            <label class=\"required\">Début</label>\n          </span>\n          <ErrorMessage name=\"startDate\" class=\"d-flex invalid-feedback\" />\n        </div>\n\n        <div class=\"form-group\" v-if=\"partialAbsence == false\">\n          <Field type=\"text\" class=\"form-control\" name=\"endDate\" :class=\"{ 'is-invalid': errors.endDate }\" hidden required  v-model=\"endDate\"/>\n          <Datepicker name=\"endDate\" class=\"form-control\"  v-model=\"endDate\" :lowerLimit='upperLimit' :inputFormat=\"'dd/MM/yyyy'\"\n           :style=\"datePickerStyle\"  :typeable=\"true\" :placeholder=\"''\" v-maska data-maska=\"##/##/####\"\n           @focus=\"setEndDateShowingLabelTrue\"\n           @keypress=\"endDateKeyPressed\"\n           @blur=\"endDateLabelDisplay\"\n           @change=\"endDateChangeDate\" />\n          <span :class=\"endDateShowLabel  ? 'do-float':''\">\n            <label class=\"required\">Fin</label>\n          </span>\n          <ErrorMessage name=\"endDate\" class=\"d-flex invalid-feedback\" />\n        </div>\n\n      </div>\n\n      <div v-if=\"partialAbsence\" class=\"row\">\n        <Field type=\"number\" class=\"form-control\" name=\"timeSpace\" :class=\"{ 'is-invalid': errors.timeSpace }\" required  v-model=\"timeSpace\" hidden/>\n        <span class=\"col-sm-1 d-flex align-items-center pe-0\">Heures:</span>\n        <TimePicker  class=\"col-sm-4 ps-0\" :inputMinute=\"timeSpace\" v-on:minute-updated=\"updateTimeSpace\" :limit=\"limitTime\"/>\n        <ErrorMessage name=\"timeSpace\" class=\"d-flex invalid-feedback\" />\n      </div>\n\n      <!-- ajouter button -->\n      <div class=\"text-center\">\n        <button type=\"submit\" class=\"btn btn-custom btn-round\" :disabled=\"disableSubmit\">Sauvegarder</button>\n      </div>\n\n    </Form>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n    \n    <!-- loader -->\n    <div v-show=\"loading\" class=\"loading reveal\">\n      <span class=\"spinner-border\" role=\"status\"></span>\n    </div>\n\n  </div>\n</template>\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport { vMaska } from \"maska\";\nimport * as Yup from \"yup\";\nimport moment from \"moment\";\nimport Datepicker from 'vue3-datepicker';\nimport TimePicker from \"../../common/TimePicker.vue\";\nimport Switch from \"../../common/Switch.vue\"\nimport CustomSelect from '../../common/CustomSelect.vue';\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name:\"UserAbsenceForm\",\n\n  directives: {maska: vMaska},\n\n  emits:[\"user-absence-created\", \"user-absence-removed\"],\n\n  components:{\n    Form,\n    Field,\n    ErrorMessage,\n    Datepicker,\n    TimePicker,\n    Switch,\n    CustomSelect,\n    CustomMessage\n  },\n  \n  setup(){\n\n    const datePickerStyle={\"--vdp-selected-bg-color\":'#00203f',\"--vdp-selected-color\": \"#ffffff\",  \"--vdp-hover-bg-color\": \"#00203f\"};\n    moment.locale('fr');\n\n    const holidaysType =[\n      {text:\"Congés payés\", value:\"PAID_VACATION\"},\n      {text:\"Congé sans solde\", value:\"UNPAID_LEAVE\"},\n      {text:\"Formation\", value:\"FORMATION\"},\n      {text:\"Arrêt maladie\", value:\"SICK_LEAVE\"}\n    ];\n    \n    const startDateMessage = \"Date de début est obligatoire\";\n    const endDateMessage =\"Date de fin est obligatoire\";\n    return {holidaysType, startDateMessage, endDateMessage , datePickerStyle}\n  },\n\n  props:{\n\n    userCode:{ \n      type:String,\n       required: true\n    },\n\n    transferredStartDate:{\n      type:String,\n      default(){\n        return null\n      }\n    },\n    limitTime:{\n      type:Number,\n      default(){\n        return 8;\n      }\n    },\n    existUserAbsence:{\n      type:Boolean,\n      default(){\n        return false;\n      }\n    },\n    absenceTypeTransferred:{\n      type : String,\n      default(){\n        return \"\";\n      }\n    }\n  },\n\n  data(){\n\n    return{\n      selectedHolidayType:{},\n      companyCode :  this.$store.state.auth.user.companyCode,\n      absenceType: this.absenceTypeTransferred,\n      startDate:null,\n      upperLimit:new Date(),\n      lowerLimit:new Date(),\n      partialAbsence : this.existUserAbsence,\n      timeSpace : 0,\n      endDate:null,\n      message:\"\",\n      loading:false,\n      userAbsenceSchema : Yup.object().shape({\n        absenceType: Yup.string(\"Le type d'absence est obligatoire\").required(\"Le type d'absence est obligatoire\"),\n        partialAbsence :Yup.boolean(),\n        startDate: Yup.date(this.startDateMessage).typeError(this.startDateMessage).required(this.startDateMessage).nullable(false).min(moment().subtract(1,\"d\"), \"Valeur entrée est non valide\"),\n        endDate: Yup.date(this.endDateMessage).nullable(true)\n          .when((startDate,schema) => (moment(startDate).isValid() && this.partialAbsence== false ? schema.min(moment(this.startDate), \"Valeur entrée est non valide\")\n          .required(this.endDateMessage) : schema.typeError(this.endDateMessage))),\n          \n        timeSpace : Yup.number().when(\n          ('partialAbsence'),\n          { is: true, then: Yup.number().min(1,\"Nombre d'heures est obligatoire\").max(this.limitTime, \"Vous avez dépasse la valuer d'absence maximale par jour\")\n          .required(\"Nombre d'heures est obligatoire\")})\n      }),\n      endDateShowLabel:false,\n      startDateShowLabel:false,\n      disableSubmit: false,\n    }\n\n  },\n\n  watch:{\n    startDate(newDate, oldOld) {\n      if(newDate != oldOld){\n        if(moment(this.startDate).isAfter(moment(this.endDate)))\n            this.endDate = this.startDate;\n        }\n    },\n\n    transferredStartDate(newValue, oldValue) {\n      if(newValue != oldValue){\n          if(moment(newValue,\"DD/MM/YYYY\").isValid()){\n              var dateInMoment= moment(newValue ,\"DD/MM/YYYY\");\n              //console.log(\"newValue-->\",newValue );\n              this.startDate = new Date(dateInMoment.year(), dateInMoment.month(), dateInMoment.format('D') );\n              this.endDate = this.startDate;\n\n          }else\n              this.startDate=null;\n          this.endDate = this.startDate;\n      }\n    },\n\n    existUserAbsence(newValue, oldValue){\n      if(newValue != oldValue){\n        this.partialAbsence = newValue;\n      }\n    }\n\n  },\n\n  created(){\n    if(moment(this.transferredStartDate,\"DD/MM/YYYY\").isValid()){\n      //console.log(\"transferredStartDate-->\",this.transferredStartDate);\n      var dateInMoment= moment(this.transferredStartDate,\"DD/MM/YYYY\");\n      this.startDate = new Date(dateInMoment.year(), dateInMoment.month(), dateInMoment.format('D') );\n      this.endDateShowLabel =true;\n      this.startDateShowLabel= true;\n    }else{ \n      this.startDate=null;\n      this.endDateShowLabel =false;\n      this.startDateShowLabel= false;\n    }\n    this.endDate = this.startDate;\n      \n  },\n\n  methods:{\n\n    /**\n     *  showing label of start date\n     * */\n    startDateLabelDisplay($event){\n\n      if(!$event.target.value ){\n          this.startDateShowLabel= false;\n      }    \n      else {\n        this.startDateShowLabel= true;\n      }\n    },\n\n    startDateChangeDate($event){\n\n      if( $event.target.value === \"\"){\n          this.startDateShowLabel= false;\n          this.startDate = null;\n      }\n    },\n\n    startDateKeyPressed(){\n\n      this.startDateShowLabel= true;\n    },\n\n    setStartDateShowingLabelTrue(){\n       this.startDateShowLabel = true;\n    },\n\n    /**\n     *  showing label of end date\n     * */\n    endDateLabelDisplay($event){\n\n      if(!$event.target.value ){\n          this.endDateShowLabel= false;\n      }    \n      else {\n        this.endDateShowLabel= true;\n      }\n    },\n\n    endDateChangeDate($event){\n\n      if( $event.target.value === \"\"){\n        this.endDateShowLabel= false;\n        this.endDate = \"\";\n      }\n    },\n\n    endDateKeyPressed(){\n      this.endDateShowLabel= true;\n    },\n\n    setEndDateShowingLabelTrue(){\n       this.endDateShowLabel = true;\n    },\n\n    updateChecked(check){\n      this.partialAbsence = check;\n    },\n\n    updateTimeSpace(min){\n      this.timeSpace = min;\n    },\n\n    createUserAbsence(){\n      if(moment(this.startDate).isAfter(moment(this.endDate)) || !moment(this.startDate).isValid() || !moment(this.endDate).isValid()){\n        this.message=\"Les dates sont invalide \";\n        return ;\n      }\n      this.disableSubmit = true;\n      this.loading =true;\n      let bodyReq={\n        companyCode: this.companyCode,\n        startDate: moment(this.startDate).format(\"DD/MM/YYYY\"),\n        endDate : moment(this.endDate).format(\"DD/MM/YYYY\"),\n        absenceType: this.absenceType,\n        userCode: this.userCode,\n        userCreatorCode: this.$store.state.auth.user.userCode,\n        timeSpace : this.timeSpace\n      };\n\n      let loadEnergiesReq = {\n        method: \"POST\",\n        headers: {\n        \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(bodyReq)\n      };\n\n      fetch(\"/api/user-absence/\", loadEnergiesReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            this.disableSubmit = false;\n            return;\n          }\n          if (response.ok) {\n            this.resul = await response.text();\n            this.disableSubmit = false;\n            this.$emit('user-absence-created');\n            this.loading =false;\n            return;\n          } \n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.createUserAbsence.bind(this));\n            return;\n          }\n          this.loading =false;\n          this.disableSubmit = false;\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    }\n  }\n\n}\n</script>\n\n<style>\n\n</style>","import { render } from \"./UserAbsenceForm.vue?vue&type=template&id=55fa62aa\"\nimport script from \"./UserAbsenceForm.vue?vue&type=script&lang=js\"\nexport * from \"./UserAbsenceForm.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n    <!-- if availability is undefined or capacity eq 0 -->\n    <div class=\"card-not-responsive card card-body m-0 p-0 border-bottom-0 h-100\" v-if=\"calendarDay.workingCapacity == undefined\">\n        <div v-if=\"calendarDay.isToday==true\"  class=\"float-start badge badge-circle bg-gray-clear fw-700 text-lighter m-1\">\n          {{dayOfDate(calendarDay.date)}}\n        </div>\n\n        <div v-if=\"calendarDay.isToday==false\" class=\"float-start m-1\"\n          :class=\"calendarDay.isCurrentMonth ? '' : 'opacity-40'\"> {{dayOfDate(calendarDay.date)}}\n        </div>\n\n        <div class=\"opacity-40 text-center\"> \n          <p class=\"fs-12 fw-100 ptop-10-percent\" v-tippy=\"{ content: '<small>Hors période de planning</small>' , placement:'top' }\"> <i class=\"mdi mdi-dots-horizontal\" /> </p>\n        </div>\n\n    </div>\n\n    <div v-else class=\"card-not-responsive card card-body m-0 p-0 border-bottom-0 h-100\" \n        :class=\"[calendarDay.isPast == true ? 'pointer-not-allowed opacity-40' : ''\n        , calendarDay.userAbsence? 'bg-orange-lighter':'']\"\n        >\n      <div class=\"m-1\">\n\n        <!-- header -->\n        <span v-if=\"calendarDay.isToday==true\"  class=\"float-start fs-12 fw-500 badge badge-circle bg-gray-clear text-default\">{{dayOfDate(calendarDay.date)}}</span>\n        <span v-if=\"calendarDay.isToday==false\" class=\"float-start fs-12 fw-300\" :class=\"calendarDay.isCurrentMonth ? '' : ' opacity-40'\">{{dayOfDate(calendarDay.date)}}</span>\n\n        <!-- dropDown actions-->\n        <div v-if=\"canDeclareAbsence()\" class=\"float-end dropdown\">\n          <a href=\"#\" data-bs-toggle=\"dropdown\" id=\"dropdownMenuLink\" aria-expanded=\"false\">\n            <i class=\"mdi mdi-dots-vertical fs-18 text-lighter\"/>\n          </a>\n          <div class=\"dropdown-menu dropdown-menu-right cursor-pointer\" x-placement=\"bottom-end\" aria-labelledby=\"dropdownMenuLink\">\n            <a class=\"dropdown-item fs-12\" @click=\"addUserAbsence\"  >\n                <i class=\"mdi mdi-chevron-right me-0\"/>\n                Déclarer une absence\n            </a>\n          </div>\n        </div>\n      </div>\n\n      <!-- body -->\n      <!-- working capacity > 0 -->\n      <div  v-if=\"calendarDay.workingCapacity > 0\" :class=\"calendarDay.isPast || calendarDay.isCurrentMonth == false ? 'opacity-40' : ''\" class=\"text-center\">\n\n        <p class=\"fs-20 fw-100 ptop-10-percent font-roboto-thin\" v-tippy=\"{ content: '<small>Capacité de travail</small>' , placement:'top' }\">\n          {{formatTime(calendarDay.workingCapacity)}}\n        </p>\n        <div v-if=\"this.calendarDay.userAbsence\" class=\"badge badge-pill bg-gray fs-9\">\n          {{this.calendarDay.userAbsence.absenceTypeValue}}\n          ( {{formatTime(this.calendarDay.userAbsence.absenceTimeSpace)}})\n        </div>      \n      </div>\n      \n      <!-- workingCapacity === 0 -->\n      <div v-else=\"calendarDay.workingCapacity == undefined || calendarDay.workingCapacity == 0\" class=\"fs-12 fw-100 text-lighter text-center ptop-10-percent\"\n        :class=\"calendarDay.isPast || calendarDay.isCurrentMonth == false ? 'opacity-40' : ''\">\n        \n        <div v-if=\"this.calendarDay.userAbsence\" class=\"badge badge-pill bg-gray fs-9\">\n          <p class=\"mb-0\" v-tippy=\"{ content: `<small>Journée d'absence</small>` , placement:'top' }\"> \n             {{this.calendarDay.userAbsence.absenceTypeValue}} \n             ( {{formatTime(this.calendarDay.userAbsence.absenceTimeSpace)}})\n            </p>\n        </div>\n\n        <div v-else-if=\"calendarDay.workingCapacity == 0\" class=\"fs-12 fw-300\" >\n          <p v-tippy=\"{ content: '<small>Atelier fermé</small>' , placement:'top' }\"> indisponible </p>  \n        </div>\n\n        <div v-else >\n          <p v-tippy=\"{ content: '<small>Hors période de planning</small>' , placement:'top' }\"> <i class=\"mdi mdi-dots-horizontal text-muted\" /> </p>\n        </div> \n\n      </div>\n\n    </div> \n\n</template>\n\n<script>\n\nimport moment from \"moment\";\nimport HelperService from \"../../../services/helper.service.js\";\nimport { hasNotPrivilege } from \"../../../services/user.service.js\";\n\nexport default {\n  \n  name : \"UserCalendarCell\",\n\n  emits:[\"user-absence-added\"],\n\n  props:{\n    calendarDay:{\n      type: Object\n    }\n  },\n\n  methods: {\n    hasNotPrivilege : hasNotPrivilege,\n    formatTime : HelperService.formatTime,\n\n    addUserAbsence(){\n      // already reserved\n      var existsUser = false;\n      if(this.calendarDay.userAbsence)\n        existsUser = true;\n\n      // holiday Type  \n      var absenceType = \"\";\n      if(this.calendarDay.userAbsence && this.calendarDay.userAbsence.absenceType)\n        absenceType = this.calendarDay.userAbsence.absenceType;\n\n      var userAbsence = {\n        date: this.calendarDay.date,\n        workingCapacity:this.calendarDay.workingCapacity,\n        existUserAbsence:existsUser,\n        absenceType:absenceType\n      }\n      this.$emit('user-absence-added', userAbsence);\n    },\n\n    dayOfDate(value){\n      return moment(value, 'DD/MM/YYYY').format('DD');\n    },\n\n    canDeclareAbsence(){\n\n      if(hasNotPrivilege(\"DISPLAY_MY_ABSENCE\") && hasNotPrivilege(\"DISPLAY_ABSENCE\") )\n        return false;\n\n      if(this.calendarDay.workingCapacity == undefined)\n        return false;\n\n      if(this.calendarDay.workingCapacity == 0)\n        return false;\n      \n      if(this.calendarDay.userAbsence)\n        return false;\n\n      return true;\n      \n    }\n  },\n\n\n\n}\n</script>\n\n<style scoped>\n.font-roboto-thin {\n  font-family: 'Roboto Thin';\n}\n.card {\n  box-shadow: 0 0 0 #fff;\n  height: inherit;\n}\n.ptop-fifteen-percent {\n  padding-top: 15%;\n}\n.ptop-10-percent {\n  padding-top: 10%;\n}\n\n</style>","import { render } from \"./UserCalendarCell.vue?vue&type=template&id=e32678b2&scoped=true\"\nimport script from \"./UserCalendarCell.vue?vue&type=script&lang=js\"\nexport * from \"./UserCalendarCell.vue?vue&type=script&lang=js\"\n\nimport \"./UserCalendarCell.vue?vue&type=style&index=0&id=e32678b2&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e32678b2\"]])\n\nexport default __exports__","<template>\n\n  <!-- header bar -->\n  <div class=\"header-bar justify-content flexbox align-items-baseline\">\n\n    <!-- date -->\n    <div class=\"flexbox align-items-center fs-16\">\n\n      <span v-if=\"display == 'monthly'\" type=\"button\" class=\"cursor-pointer\"\n        v-tippy=\"{ content: '<small>Mois précédent</small>' , placement:'left' }\" @click=\"$emit('decrement-month')\"> \n          <i class=\"mdi mdi-chevron-left fs-18\" />\n      </span>\n\n      <span v-else-if=\"display == 'weekly'\" type=\"button\" class=\"cursor-pointer\"\n        v-tippy=\"{ content: '<small>Semaine précédente</small>' , placement:'left' }\" @click=\"$emit('decrement-week')\"> \n          <i class=\"mdi mdi-chevron-left fs-18\" />\n      </span>\n\n      <span v-else-if=\"display == 'daily'\" type=\"button\" class=\"cursor-pointer\"\n        v-tippy=\"{ content: '<small>Jour précédent</small>' , placement:'left' }\" @click=\"$emit('decrement-day')\"> \n          <i class=\"mdi mdi-chevron-left fs-18\" />\n      </span>\n\n\n      <span class=\"text-capitalize ps-2 pe-2\">\n        <span v-if=\"display=='monthly'\" class=\"date-month\"> {{date.clone().endOf('week').local('fr').format('MMMM YYYY')}}</span>\n        <span v-if=\"display=='weekly'\" class=\"date-week\"> {{date.clone().startOf('week').local('fr').format('DD MMMM')}}\n             - {{date.clone().endOf('week').local('fr').format('DD MMMM, YYYY')}}\n        </span>\n        <span v-if=\"display=='daily'\" class=\"date-day\"> {{date.clone().local('fr').format('dddd DD MMMM YYYY')}}</span>\n      </span>\n      \n        \n      <span v-if=\"display == 'monthly'\" class=\"cursor-pointer\" v-tippy=\"{ content: '<small>Mois suivant</small>' , placement:'right' }\" @click=\"$emit('increment-month')\"> \n          <i class=\"mdi mdi-chevron-right fs-18\" />\n      </span>\n\n      <span v-else-if=\"display == 'weekly'\" class=\"cursor-pointer\" v-tippy=\"{ content: '<small>Semaine suivante</small>' , placement:'right' }\" @click=\"$emit('increment-week')\"> \n          <i class=\"mdi mdi-chevron-right fs-18\" />\n      </span>\n\n      <span v-else-if=\"display == 'daily'\" class=\"cursor-pointer\" v-tippy=\"{ content: '<small>Jour suivant</small>' , placement:'right' }\" @click=\"$emit('increment-day')\"> \n          <i class=\"mdi mdi-chevron-right fs-18\" />\n      </span>\n\n    </div>\n      \n    <nav v-if=\"showNav\" class=\"nav\">\n    \n      <a class=\"nav-item\" :class=\"display == 'daily'? 'active' : ''\"\n        @click=\"display = 'daily' , $emit('day-display-mode')\" > JOUR\n      </a>\n\n      <a class=\"nav-item\" :class=\"display == 'weekly'? 'active' : ''\"\n        @click=\"display = 'weekly' , $emit('week-display-mode')\" > SEMAINE\n      </a>\n\n      <a class=\"nav-item\" :class=\"display == 'monthly'? 'active' : ''\"\n        @click=\"display = 'monthly', $emit('month-display-mode')\" > MOIS\n      </a>\n      \n    </nav>\n\n  </div>\n  \n</template>\n\n<script>\nimport moment from \"moment\";\n\nexport default {\n  \n  name: \"CalendarHeader\",\n\n  emits: [\"increment-month\", \"increment-week\", \"increment-day\", \"decrement-week\", \"decrement-month\", \"decrement-day\", \"day-display-mode\" , \"week-display-mode\", \"month-display-mode\"],\n\n  setup() {\n      moment.locale('fr');\n  },\n\n  props: {\n    date:{\n      type : Object\n    },\n    defaultDisplay:{\n      type:String,\n      default:()=> 'weekly'\n    },\n    showNav:{\n      type: Boolean,\n      default:()=> true\n    }\n\n  },\n\n  data(){\n    return{\n      display : this.defaultDisplay\n    }\n  },\n\n\n}\n</script>\n\n<style lang=\"css\" scoped>\n\n.header-bar{\n  background-color: white;\n  border-bottom: 6px solid #f5f6f7;\n  padding-left: 10px;\n  padding-right: 10px;\n  height: 60px;\n  padding-top: 15px;\n}\n\n.header-bar .nav-item.active{\n  border-bottom-color: #00203f;\n  color: #00203f;\n}\n\n.header-bar .nav-item:hover {\n   border-bottom-color: #00203f;\n   color: #00203f;\n}\n\n.header-bar .nav-item {\n  display: inline-block;\n  letter-spacing: 1px;\n  text-transform: uppercase;\n  font-weight: 600;\n  padding-left: 20px;\n  padding-right: 20px;\n  padding-bottom: 13px;\n  color: #6c757d;\n  border-bottom: 2px solid transparent;\n  cursor: pointer;\n\n}\n\n.header-bar .date-month{\n    width: 112px;\n    display: block;\n    text-align: center;\n  }\n\n.header-bar .date-week{\n    width: 248px;\n    display: block;\n    text-align: center;\n  }\n\n.header-bar .date-day{\n    width: 212px;\n    display: block;\n    text-align: center;\n}\n\n</style>","import { render } from \"./CalendarsHeader.vue?vue&type=template&id=112b4bc6&scoped=true\"\nimport script from \"./CalendarsHeader.vue?vue&type=script&lang=js\"\nexport * from \"./CalendarsHeader.vue?vue&type=script&lang=js\"\n\nimport \"./CalendarsHeader.vue?vue&type=style&index=0&id=112b4bc6&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-112b4bc6\"]])\n\nexport default __exports__","import { render } from \"./UserCalendars.vue?vue&type=template&id=1aef69ac\"\nimport script from \"./UserCalendars.vue?vue&type=script&lang=js\"\nexport * from \"./UserCalendars.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"container\">\n    <div class=\"header-bar justify-content-between my-3\" v-if=\"user && this.$store.state.auth.user\">\n\n      <!-- not the same connected user-->\n      <div v-if=\"user.userCode != this.$store.state.auth.user.userCode \">\n        <div class=\"fs-17 fw-600\" >\n          Jours d'absences \n        </div>\n        <span v-if=\"user.userFirstName && user.userLastName\">\n            <span class=\"text-capitalize fs-14\">\n              {{user.userFirstName+\" \"+user.userLastName}}\n            </span>\n            <small class=\"minus-separator fst-italic\">\n              {{user.roleValue}}\n            </small>\n        </span>\n      </div>\n\n      <!-- same connected user-->\n      <div v-if=\"user.userCode == this.$store.state.auth.user.userCode \">\n        <div class=\"fs-17 fw-600\" >\n          Mes absences\n        </div>\n      </div>\n\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n    <div class=\"my-3 mx-auto\" v-auto-animate v-if=\"dataListResponse && dataListResponse.data && dataListResponse.data.length > 0\">\n      <UserAbsenceList  v-bind:data-list-items=\"dataListResponse.data\" v-on:user-absence-deleted=\"deleteUserAbsence\"/>\n\n      <Pagination\n        v-bind:rootPageLength=\"dataListRequest.pageLength\"\n        v-bind:totalPages=\"dataListResponse.totalPages\"\n        v-bind:totalRecords=\"dataListResponse.totalRecords\"\n        v-on:pageLength=\"pageLengthHandler\"\n        v-on:fetchData=\"fetchDataHandler\"\n        v-bind:pageLengths=\"pageLengths\"\n      />\n\n      <!-- Loader -->\n      <div v-show=\"loading\" class=\"loading reveal top-0\">\n        <span class=\"spinner-border\" role=\"status\"></span>\n      </div>\n\n    </div>\n\n    <div v-else-if=\" dataListResponse.data && dataListResponse.data.length == 0\" class=\"card text-center mt-4\">\n      <div class=\"min-height-150 d-flex align-items-center\"> \n        <div class=\"text-center w-100 \">\n          <i class=\"mdi mdi-calendar-multiselect-outline fs-50\"/> \n          <br/> \n          <span class=\"text-muted fs-14\"> \n            Aucune absence déclarée\n          </span> \n        </div>\n      </div>\n    </div>\n\n\n  </div>\n  \n\n</template>\n\n<script>\nimport UserAbsenceList from \"./user-absences/UserAbsenceList.vue\";\nimport Pagination from \"../pagination/Pagination.vue\";\nimport { useRoute } from \"vue-router\";\nimport CustomMessage from '../common/CustomMessage.vue';\n\nexport default {\n  \n  name:\"UserAbsences\",\n\n  components:{\n    UserAbsenceList,\n    Pagination,\n    CustomMessage\n  },\n\n setup() {\n    let userCode = useRoute().params.userCode;\n    return { userCode };\n  },\n\n  data() {\n\n    return {\n\n      pageFrom: 0,\n      pageTo: 0,\n      loading:false,\n      dataListRequest: {\n        companyCode: this.$store.state.auth.user.companyCode,\n        pageLength: 5, // page length\n        pageStart: 0,\n        userCode:this.userCode\n      },\n      dataListResponse:{},\n      pageLengths: [5, 10, 25, 50],\n      user:{},\n      message:\"\"\n    };\n\n  },\n\n  created(){\n   this.loadUser();\n   this.fetchData();\n  },\n\n  methods:{\n \n    pageLengthHandler(value) {\n      this.dataListRequest.pageStart = 0;\n      this.dataListRequest.pageLength = value;\n      this.fetchData();\n    },\n\n    fetchDataHandler(value) {\n        this.dataListRequest.pageStart = value;\n        this.fetchData();\n    },\n\n    loadUser(){\n\n      let loadUserReq = {\n        method: \"GET\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()}\n      };\n\n      fetch(\"/api/user/simple/\"+this.dataListRequest.companyCode+\"/\"+this.userCode, loadUserReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            const data = await response.json();\n            this.user = data;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadUser.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    },\n\n    deleteUserAbsence(){\n      this.fetchData();\n    },\n\n    fetchData() {\n\n      this.loading=true;\n      \n      let dataListReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(this.dataListRequest),\n      };\n     \n       fetch(\"/api/user-absence/pagination\", dataListReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.dataListResponse = await response.json();\n            this.loading = false;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          this.loading=false;\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.fetchData.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n      if (this.dataListRequest.pageStart - 1 > 0)\n        this.pageFrom = (this.dataListRequest.pageStart - 1) * this.dataListRequest.pageLength;    \n    },\n\n  }\n\n}\n</script>\n\n<style scoped>\n\n</style>","<template>\n    \n  <div class=\"card m-0\" v-if=\"dataListItems != undefined && dataListItems.length> 0\">\n\n    <div class=\"media-list media-list-lg media-list-bordered media-list-divided\" v-auto-animate>\n\n      <div class=\"media flexbox align-items-center \" v-for=\"item in this.dataListItems\" :key=\"item.userCode\">\n        <UserAbsenceListElement :element=\"item\" v-on:user-absence-deleted=\"deletedUserAbsence\" \n          v-on:user-absence-not-deleted=\"showErrorMessage\" />\n      </div>\n      \n    </div>\n  </div>\n\n  <!-- error message -->\n  <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n</template>\n\n<script>\n\nimport UserAbsenceListElement from \"./UserAbsenceListElement.vue\";\nimport { useRoute } from \"vue-router\";\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name:\"UserAbsenceList\",\n\n  emits:[\"user-absence-deleted\"],\n  \n  components:{\n    UserAbsenceListElement,\n    CustomMessage\n  },\n\n  props:{\n    dataListItems: {\n      type: Object,\n      default(){\n        return null;\n      }\n    },\n  },\n\n  setup() {\n    let userCode = useRoute().params.userCode;\n    return { userCode };\n  },\n\n  data(){\n    return{\n      user:{},\n      items:this.dataListItems,\n      message:\"\"\n    };\n  },\n\n  methods:{\n\n    deletedUserAbsence(userAbsenceCode){\n      this.$emit(\"user-absence-deleted\", userAbsenceCode);\n    },\n\n    showErrorMessage(message){\n      this.message = message;\n    }\n\n  },\n  \n}\n</script>\n\n<style scoped>\n\n</style>","<template>\n\n  <div class=\"col-2 fw-600 text-capitalize\"\n    v-tippy=\"{ content: '<small>La date</small>' , placement:'left' }\">\n    {{moment(element.date, \"DD/MM/YYYY\").format('dddd, DD MMMM YYYY')}}\n  </div>\n\n  <div class=\"col-2 fs-13 text-center\" v-tippy=\"{ content: `<small>Motif d'absence</small>` , placement:'left' }\">\n    <span class=\"badge badge-pill bg-gray\">{{element.absenceTypeValue}}</span>\n  </div>\n\n  <div class=\"col-2 text-center\" >\n    <span v-if=\"element.absenceCategory == 'PART_DAY'\" class=\"badge badge-pill badge-box fs-13\"\n    v-tippy=\"{ content: `<small>Nombre d'heures</small>` , placement:'left' }\" >\n      {{formatTime(element.absenceTimeSpace)}}\n      </span>\n    <span v-else class=\"badge badge-pill badge-box fs-10 fst-italic\"  >\n     Toute la journée\n    </span>\n  </div>\n\n  <div  class=\"col-3 text-capitalize fs-13\" v-tippy=\"{ content: `<small>Déclaré par</small>` , placement:'left' }\" >\n    <!-- created by suprior -->\n    <span v-if=\"element.userCreatorResp.userLastName != element.userResp.userLastName\" >\n      {{element.userCreatorResp.userFirstName +\" \"+ element.userCreatorResp.userLastName }}\n      <span class=\"minus-separator fst-italic fs-12\">{{element.userCreatorResp.roleValue}}</span>\n    </span>\n\n    <!-- created by user himSelif -->\n    <span v-else>\n      {{element.userResp.userFirstName +\" \"+ element.userResp.userLastName }}\n      <span class=\"minus-separator fst-italic fs-12\">{{element.userCreatorResp.roleValue}}</span>\n    </span>\n  </div>\n\n  <div class=\"col-2 fst-italic fs-11\" v-tippy=\"{ content: '<small>Date de déclaration</small>' , placement:'left' }\">\n  Déclaré le {{element.creationDate}}\n  </div>\n\n  <div class=\"col-1 cursor-pointer text-end\">\n    <i v-if=\"canDeleteAbsence()\" @click=\"deleteUserAbsence()\" class=\"mdi mdi-trash-can-outline fs-18 \"\n    v-tippy=\"{ content: '<small>Supprimer</small>' , placement:'right' }\"/>\n  </div>\n\n</template>\n\n<script>\nimport HelperService from \"../../../services/helper.service.js\";\nimport moment from \"moment\";\nimport {hasNotPrivilege} from \"../../../services/user.service.js\";\n\nexport default {\n\n  name:\"UserAbsenceListElement\",\n  \n  emits:[\"user-absence-deleted\", \"user-absence-not-deleted\"],\n\n   setup() {\n    moment.locale('fr');\n  },\n  data(){\n    return {\n      resultat:\"\"\n    };\n  },\n\n  created(){\n    this.moment =moment\n  },\n\n  props: {\n    element: {\n      type: Object,\n    }\n  },\n\n  methods:{\n\n    hasNotPrivilege: hasNotPrivilege,\n    \n    formatTime : HelperService.formatTime,\n\n    beforeToday(){\n      var yesterday = moment().subtract(1,\"days\");\n      var isBefore =  moment(this.element.date, \"DD/MM/YYYY\").isBefore(yesterday);\n      return (isBefore)\n    },\n\n    deleteUserAbsence(){\n\n      let userAbsencesReq = {\n        method: \"DELETE\",\n        headers: {\"Content-Type\": \"application/json\", \n        Authorization: this.$authTokenService.authToken()},\n      };\n\n      fetch(\"/api/user-absence/delete/\"+this.$store.state.auth.user.companyCode+\"/\"+this.element.userAbsenceCode, userAbsencesReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.resultat = await response.text();\n            this.$emit(\"user-absence-deleted\", this.element.userAbsenceCode);\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.deleteUserAbsence.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          this.$emit(\"user-absence-not-deleted\", this.message);\n        });\n\n    },\n\n    canDeleteAbsence(){\n      \n      if(hasNotPrivilege('DELETE_MY_ABSENCE') && hasNotPrivilege('DELETE_ABSENCE'))\n        return false;\n\n      if(this.beforeToday())\n        return false;\n\n      return true;\n\n    }\n  }\n\n}\n</script>\n\n<style scoped>\n\n</style>","import { render } from \"./UserAbsenceListElement.vue?vue&type=template&id=d1fbe37c\"\nimport script from \"./UserAbsenceListElement.vue?vue&type=script&lang=js\"\nexport * from \"./UserAbsenceListElement.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./UserAbsenceList.vue?vue&type=template&id=5f669a1e\"\nimport script from \"./UserAbsenceList.vue?vue&type=script&lang=js\"\nexport * from \"./UserAbsenceList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./UserAbsences.vue?vue&type=template&id=104c6320\"\nimport script from \"./UserAbsences.vue?vue&type=script&lang=js\"\nexport * from \"./UserAbsences.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template >\n\n  <div class=\"container\">\n    <!-- create workshop -->\n    <div  v-if=\"this.$store.state.auth.user && this.$store.state.auth.user.companyStatus !== 'DISABLED' \" \n          class=\"fab fab-fixed\" \n          v-tippy=\"{ content: `Ajouter un atelier` , placement:'top' }\" \n          v-on:click=\"showQuickView()\">\n      <a class=\"btn btn-float\">\n        <i class=\"mdi mdi-plus\" />\n      </a>\n    </div>\n\n    <div class=\"position-relative\">\n      <!-- WorkshopList-->\n      <div class=\"my-3\" v-auto-animate>\n         <WorkshopList v-bind:data-list-items=\"dataListResponse\" v-bind:sort-field=\"dataListRequest.sortField\"\n          v-on:sort=\"order\"/>\n\n          <Pagination v-bind:rootPageLength=\"dataListRequest.pageLength\" v-bind:totalPages=\"dataListResponse.totalPages\" v-bind:totalRecords=\"dataListResponse.totalRecords\"\n            v-on:pageLength=\"pageLengthHandler\"\n            v-on:fetchData=\"loadWorkshopsHandler\"\n            v-bind:pageLengths=\"pageLengths\"\n          />\n      </div>\n\n      <!-- Loader -->\n      <div v-show=\"loading\" class=\"loading reveal\">\n        <span class=\"spinner-border\" role=\"status\"></span>\n      </div>\n    </div>\n\n    <!-- workshop create -->\n    <div v-if=\"isOpen\" class=\"quickview-container\">\n      <WorkshopCreate\n        v-on:close=\"closeQuickView\"\n        v-on:workshop-created=\"closeQuickView(), loadWorkshops()\"/>\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n  </div>\n\n</template>\n\n<script>\nimport Pagination from \"../pagination/Pagination.vue\";\nimport WorkshopList from \"./workshops/WorkshopList.vue\";\nimport WorkshopCreate from \"./workshops/WorkshopCreate.vue\";\nimport CustomMessage from '../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"Workshops\",\n\n  components: {\n    WorkshopList,\n    Pagination,\n    WorkshopCreate,\n    CustomMessage\n  },\n\n  data() {\n    return {\n      pageFrom: 0,\n      pageTo: 0,\n      isOpen: false,\n      loading: false,\n      \n      dataListRequest: {\n        companyCode: this.$store.state.auth.user.companyCode,\n        sortField: \"workshopName\",\n        serverSide: true,\n        pageLength: 5,\n        pageStart: 0,\n      },\n\n      pageLengths: [5, 10, 25, 50],\n      dataListResponse: {},\n      message:\"\",\n    };\n  },\n\n  methods: {\n\n    workshopCreatedHandler() {\n      this.closeQuickView();\n      this.loadWorkshopsHandler(\"workshopCreatedHandler\");\n    },\n\n    closeQuickView() {\n      this.isOpen = false;\n    },\n\n    showQuickView() {\n      if (this.isOpen == true) {\n        this.isOpen = false;\n      } else {\n        this.isOpen = true;\n      }\n    },\n\n    // Page start handler of child emitted value\n    loadWorkshopsHandler(value) {\n        this.dataListRequest.pageStart = value;\n        this.loadWorkshops();\n    },\n\n    // Page length handler of child value emitted\n    pageLengthHandler(value) {\n\n      this.dataListRequest.pageStart = 0;\n      this.dataListRequest.pageLength = value;\n      this.loadWorkshops();\n\n    },\n\n    loadWorkshops() {\n\n      this.loading = true;\n      let dataTableReq = {\n        method: \"POST\",\n        headers: {\"Content-Type\": \"application/json\",Authorization: this.$authTokenService.authToken()},\n        body: JSON.stringify(this.dataListRequest),\n      };\n\n      fetch(\"/api/workshop/workshops/pagination\", dataTableReq)\n        .then( async response => {\n          this.loading = false;\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.dataListResponse=await response.json();\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadWorkshops.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n      if (this.dataListRequest.pageStart - 1 > 0)\n        this.pageFrom =(this.dataListRequest.pageStart - 1) *this.dataListRequest.pageLength;\n\n    },\n\n    order(fieldName) {\n\n      this.dataListRequest.sortField = fieldName;\n      this.dataListRequest.pageStart=0;\n      this.loadWorkshops();\n    },\n\n    updatePageLength(length) {\n      this.dataListRequest.pageLength = length;\n      this.loadWorkshops();\n    },\n\n  },\n\n};\n</script>\n\n<style scoped>\n</style>\n","<template>\n\n  <div class=\"media-list media-list-sm media-list-divided media-list-hover\" v-if=\"dataListItems.totalRecords != undefined && dataListItems.totalRecords>0\">\n\n    <header class=\"flexbox align-items-center media-list-header border-0 bg-transparent pb-2\">\n      <div class=\"dropdown\">\n        <button class=\"btn btn-sm btn-media dropdown-toggle\" type=\"button\" id=\"dropdownMenuButton1\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n          Trier par\n        </button>\n        <ul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton1\">\n          <li v-for=\"field in workshopListConfig.sortedFields\" :key=\"field\">\n            <a class=\"dropdown-item\" href=\"#\" :data-field-name=\"field.name\" v-on:click=\"$emit('sort', field.name)\" v-bind:class=\"field.name === sortField ? 'fw-bold' : ''\">\n              {{ field.title }}\n            </a>\n          </li>\n        </ul>\n\n      </div>\n    </header>\n\n    <div class=\"media-list-body bg-white position-relative\" >\n      <div class=\"media flexbox align-items-center\" v-for=\"item in dataListItems.data\" :key=\"item.workshopCode\">\n\n        <WorkshopListElement v-bind:element=\"item\" />\n    \n        <!-- loader -->\n        <div v-show=\"loading\" class=\"loading reveal top-0\">\n          <span class=\"spinner-border\" role=\"status\"></span>\n        </div>\n  \n      </div>\n\n    </div>\n  </div>\n\n  <div v-else-if=\"dataListItems.totalRecords != undefined && dataListItems.totalRecords <= 0\" class=\"card text-center min-height-200 mt-4\">\n    <div class=\"min-height-200 d-flex align-items-center\"> \n      <div class=\"text-center w-100 \">\n        <i class=\"mdi mdi-alert-outline fs-50\"/> \n        <br/> \n        <span class=\"text-muted fs-14\"> \n          Aucun atelier\n        </span> \n      </div>\n    </div>\n  </div>\n\n</template>\n\n<script>\n\nimport { WorkshopListConfig } from \"../../../beans/WorkshopListConfig.js\";\nimport WorkshopStatus from \"../common/WorkshopStatus.vue\";\nimport WorkshopListElement from \"./WorkshopListElement.vue\"\n\nexport default {\n\n  name: \"WorkshopList\",\n  emits: [\"sort\"],\n\n  components:{\n    WorkshopStatus,\n    WorkshopListElement\n  },\n\n  props: {\n    dataListItems: {\n      type: Object,\n    },\n\n    sortField: {\n      type: String,\n    },\n    \n    workshopListConfig: {\n      type: WorkshopListConfig,\n      default() {\n        return new WorkshopListConfig();\n      },\n    },\n    \n    loading: {\n      type: Boolean,\n      default() {\n        return false;\n      },\n    },\n    \n  },\n\n};\n</script>\n\n<style lang=\"css\" scoped>\n\n.btn-media {\n  color: #8b95a5;\n  background-color: #fff;\n  border-color: #ebebeb;\n  border-radius: 2px;\n  outline: none !important;\n  transition: 0.15s linear;\n}\n\n</style>\n","export class  WorkshopListConfig{\n    constructor(\n        fields= [\n            \n        { name: \"workshopCode\", title: \"Code d'atelier\", visible:true },\n        { name: \"workshopName\", title: \"Nom\" , visible:true},\n        { name: \"workshopAddress1\", title: \"Adresse\" , visible:true},\n        { name: \"workshopCity\", title: \"Ville\" , visible:true},\n        { name: \"workshopCountry\", title: \"Pays\" , visible:true},\n        { name: \"workshopCreationDate\", title: \"Date de création\" , visible:true},\n        { name: \"workshopEmail\", title: \"Email\" , visible:true},\n        { name: \"workshopModificationDate\", title: \"Date de modification\" , visible:true},\n        { name: \"workshopPhone\", title: \"Portable\" , visible:true},\n        { name: \"workshopStatus\", title: \"Status\" , visible:true},\n        { name: \"workshopZipCode\", title: \"Code postale\" , visible:true},\n    ]\n    ,\n    sortedFields= [\n        { name: \"workshopCode\", title: \"Code d'atelier\", visible:true },\n        { name: \"workshopName\", title: \"Nom\" , visible:true},\n        { name: \"workshopCity\", title: \"Ville\" , visible:true},\n        { name: \"workshopCountry\", title: \"Pays\" , visible:true},\n        { name: \"workshopCreationDate\", title: \"Date de création\" , visible:true},\n        { name: \"workshopModificationDate\", title: \"Date de modification\" , visible:true},\n\n    ]\n        ){\n            this.fields=fields;\n            this.sortedFields=sortedFields;\n    }\n}","<template>\n\n<span v-if=\"workshopStatusResp!=null\" :class='`badge badge-pill ${workshopStatusResp.color}`' class=\"fs-14\"\n  v-tippy=\"{ content: `<small>${workshopStatusResp.description}</small>` , placement:'top' }\" >\n    {{ workshopStatusResp.value }}\n</span>\n\n</template>\n\n<script>\nexport default {\nname:\"WorkshopStatus\",\nprops: {\n    workshopStatusResp: {\n      type: Object,\n      default(){\n        return null;\n      }\n      \n    },\n}\n}\n</script>\n\n<style>\n\n</style>","import { render } from \"./WorkshopStatus.vue?vue&type=template&id=7cac1605\"\nimport script from \"./WorkshopStatus.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopStatus.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  \n  <!-- important information -->\n  <div class=\"flexbox align-items-center flex-grow\">\n   \n    <div class=\"col-9\">\n      \n      <div class=\"ms-1\"> \n        <span class=\"ms-1 fs-17\" v-tippy=\"{ content: `<small>Nom d'atelier</small>` , placement:'left' }\">\n         {{ element.workshopName }}\n        </span>\n      </div>\n\n      <div class=\"ms-1\" >\n        <small data-bs-html=\"true\"\n           v-tippy=\"{ content: '<small>Adresse</small>' , placement:'left' }\">\n          <i class=\"mdi mdi-map-marker-outline\" />{{ element.workshopAddress1 + address2 +\", \"+ element.workshopZipCode +\" \"+\n            element.workshopCity +\" \"+ element.workshopCountry }}\n        </small>\n      </div>\n      \n      <!-- Contact information -->\n      <div class=\"ms-1\">\n        <small>\n          <span class=\"ms-1 me-1\" v-tippy=\"{ content: '<small>Email</small>' , placement:'left' }\" >\n            <i class=\"mdi mdi-email-outline\"/> {{ element.workshopEmail.toLowerCase() }}\n          </span>\n\n          <span class=\"ms-1 me-1\"\n            v-tippy=\"{ content: '<small>Téléphone</small>' , placement:'right' }\">\n            <i class=\"mdi mdi-phone-classic\" /> {{ element.workshopPhone }}\n          </span><br>\n          \n          <span v-if=\"element.workshopCreationDate\" class=\"ms-1 me-1\" v-tippy=\"{ content: '<small>Date de création</small>' , placement:'left' }\">\n            <i class=\"mdi mdi-calendar-start-outline\"/>{{ element.workshopCreationDate }}\n          </span>\n        </small>\n      </div>\n    </div>\n\n    <div class=\"col-1 text-center\">\n      <WorkshopStatus :workshopStatusResp=\"element.workshopStatusResp\" />\n    </div>\n\n    <div class=\"col-2 text-center flexbox\">\n      \n      <!-- created -->\n      <div class=\"btn-group col-9 mb-0\" v-if=\"element.workshopStatusResp.name == 'CREATED'\">\n        <button class=\"btn btn-lg\" v-on:click=\"redirectToWorkshop(element.workshopCode)\">Paramétrages</button>\n      </div>\n      \n      <!-- validated -->\n      <div class=\"btn-group col-9 mb-0\" v-else-if=\"element.workshopStatusResp.name == 'VALIDATED'\">\n        <button v-if=\"hasPrivilege('DISPLAY_WORKSHOP_TEAM')\" class=\"btn btn-lg col-12 p-0\" v-on:click=\"redirectToTeam(element.workshopCode)\">Gérer l'équipe</button>\n        <button class=\"btn btn-lg dropdown-toggle dropdown-toggle-split\" id=\"dropdownMenuLink\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"></button>\n        <div class=\"dropdown-menu dropdown-menu-right cursor-pointer\" x-placement=\"bottom-end\" aria-labelledby=\"dropdownMenuLink\" >\n          <a class=\"dropdown-item\" v-on:click=\"redirectToWorkshop(element.workshopCode)\">\n            <i class=\"mdi mdi-chevron-right fs-14\"/> Paramétrages \n          </a>\n          <a class=\"dropdown-item\" @click=\"displayWorkshopClosure\" >\n            <i class=\"mdi mdi-chevron-right fs-14\"/> Fermetures exceptionnelles\n          </a>\n        </div>\n      </div>\n           \n       <!-- activated -->\n      <div class=\"btn-group col-9 mb-0\" v-else-if=\"element.workshopStatusResp.name == 'ACTIVATED' || element.workshopStatusResp.name == 'DISABLED'\">\n        <button class=\"btn btn-lg col-12\" v-on:click=\"handleActivatedButton\">{{ activatedButtonLabel }}</button>\n        <button class=\"btn btn-lg dropdown-toggle dropdown-toggle-split\" id=\"dropdownMenuLink\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"></button>\n        <div class=\"dropdown-menu dropdown-menu-right cursor-pointer\" aria-labelledby=\"dropdownMenuLink\">\n          <a v-if=\"hasPrivilege('DISPLAY_WORKSHOP_TEAM') && displayTeamItem\" class=\"dropdown-item\" v-on:click=\"redirectToTeam(element.workshopCode)\">\n            <i class=\"mdi mdi-chevron-right fs-14\"/> Gérer l'équipe \n          </a>\n          <a v-if=\"displayPlanningItem && displayConfigItem\" class=\"dropdown-item\" v-on:click=\"redirectToWorkshop(element.workshopCode)\">\n            <i class=\"mdi mdi-chevron-right fs-14\"/> Paramétrages \n          </a>\n          <a class=\"dropdown-item\" @click=\"displayWorkshopClosure\">\n            <i class=\"mdi mdi-chevron-right fs-14\"/> Fermetures exceptionnelles\n          </a>\n        </div>\n      </div>\n\n    </div>\n    \n\n  <Teleport to=\"body\">\n    <WorkshopClosureModal :show=\"isWorkshopClosureModalOpen\" :workshop=\"element\" v-on:close=\"closeModal\"/>\n  </Teleport>\n\n  </div>\n\n</template>\n\n<script>\n\nimport WorkshopStatus from \"../common/WorkshopStatus.vue\";\nimport WorkshopClosureModal from \"../workshop-closure/WorkshopClosureModal.vue\";\nimport { hasPrivilege } from \"../../../services/user.service.js\";\n\nexport default {\n  \n  name: \"WorkshopListElement\",\n\n  emits: ['workshop-closure-modal-closed'],\n\n  components:{\n    WorkshopStatus,\n    WorkshopClosureModal\n  },\n\n  props: {\n    element: {\n      type: Object,\n    },\n\n    displayPlanningItem:{\n      type:Boolean,\n      default:()=> true\n    },\n    \n    displayTeamItem:{\n      type:Boolean,\n      default:()=> true\n    },\n\n    displayConfigItem:{\n      type:Boolean,\n      default:()=> true\n    },\n  },\n\n  computed:{\n    address2(){\n    if(this.element.workshopAddress2 != undefined)\n      return \" - \"+this.element.workshopAddress2;\n    else return \"\";\n    },\n    activatedButtonLabel() {\n      return this.displayPlanningItem ? 'Planning' : 'Paramétrages';\n    }\n  },\n  \n  data() {\n    return {\n      companyCode: this.$store.state.auth.user.companyCode,\n      isWorkshopClosureModalOpen: false,\n    };\n  },\n\n\n  methods: {\n\n    hasPrivilege : hasPrivilege,\n\n    handleActivatedButton(){\n      if (this.displayPlanningItem) {\n        this.reDirectToPlanning(this.element.workshopCode);\n        return;\n      }\n      this.redirectToWorkshop(this.element.workshopCode);\n    },\n\n    redirectToWorkshop(workshopCode){\n      this.$router.push({path: '/workshop/', name: 'workshop', params: { workshopCode: workshopCode }});\n    },\n\n    redirectToTeam(workshopCode){\n      this.$router.push({path: '/workshop-team/', name: 'workshop-team', params: { companyCode:this.companyCode, workshopCode: workshopCode }});\n    },\n\n    reDirectToPlanning(workshopCode){\n      this.$router.push({path: '/workshop-calendars/', name: 'workshop-calendars', params: { companyCode: this.companyCode, workshopCode: workshopCode }});\n    },\n\n    displayWorkshopClosure(){\n      this.isWorkshopClosureModalOpen = !this.isWorkshopClosureModalOpen;\n    },\n    \n    closeModal(){\n      this.isWorkshopClosureModalOpen = false;\n      this.$emit(\"workshop-closure-modal-closed\");\n    }\n\n  },\n\n}\n</script>\n\n<style lang=\"css\" scoped>\n\nsmall, time, .small {\n  font-weight: 400;\n  font-size: 13px;\n  color: #8b95a5;\n}\n</style>","<template>\n  <Transition name=\"modal\">\n    <div v-if=\"show\" class=\"modal-mask-page\">\n\n      <div class=\"modal-container-page bg-light\">\n\n        <div class=\"text-end\"> <i class=\"mdi mdi-close fs-24 cursor-pointer\" v-on:click=\"$emit('close')\"/> </div>\n\n        <div class=\"w-75 mx-auto\">\n\n          <WorkshopClosures :workshop=\"workshop\"/>\n\n        </div>\n\n      </div>\n\n    </div>\n  </Transition>\n</template>\n\n\n<script>\n\nimport WorkshopClosures from \"./WorkshopClosures.vue\";\n\nexport default {\n\n  name:\"WorkshopClosureModal\",\n\n  emits: ['close'],\n\n  props: {\n    show: {\n      type: Boolean\n    },\n    workshop: {\n      type: Object,\n    }\n  },\n\n  components:{\n    WorkshopClosures\n  },\n\n}\n</script> \n\n<style scoped>\n\n.modal-mask-page {\n  position: fixed;\n  z-index: 9998;\n  top: 0;\n  transition: opacity 0.3s ease;\n  width: 100%;\n  height: 100%;\n  overflow-y: auto;\n}\n\n.modal-container-page {\n  min-height: 100%;\n  padding: 20px 30px;\n}\n\n</style>","<template>\n  <div class=\"container\">\n    <div v-if=\"workshop\" class=\"header-bar justify-content-between my-3\">\n\n      <div>\n        <div class=\"fs-17 fw-600\" >\n          Fermetures exceptionnelles\n        </div>\n        <span class=\"text-capitalize fs-14\">\n          {{workshop.workshopName}}\n        </span>\n      </div>\n\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n    <div class=\"my-3 mx-auto\" v-auto-animate>\n      \n      <WorkshopClosureList v-bind:data-list-items=\"dataListResponse.data\" v-on:workshop-closure-canceled=\"cancelWorkshopClosure\"/>\n      \n      <Pagination\n        v-bind:initPageStart=\"dataListRequest.pageStart\"\n        v-bind:rootPageLength=\"dataListRequest.pageLength\"\n        v-bind:totalPages=\"dataListResponse.totalPages\"\n        v-bind:totalRecords=\"dataListResponse.totalRecords\"\n        v-on:pageLength=\"pageLengthHandler\"\n        v-on:fetchData=\"fetchDataHandler\"\n        v-bind:pageLengths=\"pageLengths\"\n      />\n\n      <!-- Loader -->\n      <div v-show=\"loading\" class=\"loading reveal top-0\">\n        <span class=\"spinner-border\" role=\"status\"></span>\n      </div>\n\n    </div>\n\n  </div>\n    \n</template>\n\n<script>\nimport WorkshopClosureList from \"./WorkshopClosureList.vue\";\nimport Pagination from \"../../pagination/Pagination.vue\";\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n  \n  name:\"WorkshopClosures\",\n\n  components:{\n    WorkshopClosureList,\n    Pagination,\n    CustomMessage\n  },\n\n  props: {\n    workshop: {\n      type: Object,\n    }\n  },\n\n  data() {\n    return {\n      loading:false,\n      dataListRequest: {\n        companyCode: this.$store.state.auth.user.companyCode,\n        workshopCode: this.workshop.workshopCode,\n        pageLength: 10, // page length\n        pageStart: 0\n      },\n      dataListResponse:{},\n      pageLengths: [5, 10, 25, 50],\n      message:\"\"\n    };\n\n  },\n\n  methods:{\n\n    pageLengthHandler(value) {\n      this.dataListRequest.pageStart = 0;\n      this.dataListRequest.pageLength = value;\n      this.loadWorkshopClosures();\n    },\n\n    fetchDataHandler(value) {\n      this.dataListRequest.pageStart = value;\n      this.loadWorkshopClosures();\n    },\n\n    cancelWorkshopClosure(){\n      this.loadWorkshopClosures();\n    },\n\n    loadWorkshopClosures() {\n\n      this.loading=true;\n      \n      let dataListReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(this.dataListRequest),\n      };\n      \n        fetch(\"/api/workshop-closure/pagination\", dataListReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.dataListResponse = await response.json();\n            this.loading = false;\n\n          // update page start if result is empty\n          if(this.dataListResponse.data && this.dataListResponse.data.length == 0){\n            if(this.dataListRequest.pageStart > 0){\n              this.dataListRequest.pageStart =  this.dataListRequest.pageStart - 1;\n              this.loadWorkshopClosures();\n            }\n          }\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          this.loading=false;\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadWorkshopClosures.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n \n    },\n\n  }\n\n}\n</script>\n\n<style scoped>\n\n</style>","<template>\n  <div class=\"position-relative my-3\">\n    <div class=\"card m-0 position-relative\" v-if=\"dataListItems != undefined && dataListItems.length> 0\">\n\n      <div class=\"media-list media-list-sm media-list-bordered media-list-divided\" v-auto-animate>\n\n        <div class=\"media flexbox align-items-center\" v-for=\"item in this.dataListItems\" :key=\"item.userCode\">\n          <WorkshopClosureListElement\n            :element=\"item\" \n            v-on:workshop-closure-canceled=\"cancelWorkshopClosure\"/>\n        </div>\n        \n      </div>\n\n    </div>\n\n    <div v-else-if=\"dataListItems != undefined && dataListItems.length == 0\" class=\"card text-center mt-4\">\n      <div class=\"min-height-150 d-flex align-items-center\"> \n        <div class=\"text-center w-100 \">\n          <i class=\"mdi mdi-calendar-multiselect-outline fs-50\"/> \n          <br/> \n          <span class=\"text-muted fs-14\"> \n            Aucune fermeture déclarée\n          </span> \n        </div>\n      </div>\n    </div>\n\n  </div>\n</template>\n\n<script>\n\nimport CustomMessage from '../../common/CustomMessage.vue';\nimport WorkshopClosureListElement from './WorkshopClosureListElement.vue';\n\nexport default {\n\n  name:\"WorkshopClosureList\",\n\n  emits:[\"workshop-closure-canceled\"],\n  \n  components:{\n    CustomMessage,\n    WorkshopClosureListElement\n  },\n\n  props:{\n    dataListItems: {\n      type: Object,\n      default(){\n        return null;\n      }\n    },\n  },\n\n  data(){\n    return{\n      items: this.dataListItems,\n    };\n  },\n\n  methods:{\n\n    cancelWorkshopClosure(){\n      this.$emit(\"workshop-closure-canceled\");\n    },\n\n  },\n  \n}\n</script>\n\n<style scoped>\n\n</style>","<template>\n\n  <div class=\"col-2 fw-600 text-capitalize\"\n    v-tippy=\"{ content: '<small>La date</small>' , placement:'left' }\">\n    {{moment(element.date, \"DD/MM/YYYY\").format('dddd, DD MMMM YYYY')}}\n  </div>\n\n  <div class=\"col-2 fs-13 text-center\" v-tippy=\"{ content: `<small>Motif de fermeture</small>`, placement:'left' }\">\n    <span class=\"badge badge-pill bg-gray\">{{element.workshopClosureReasonValue}}</span>\n  </div>\n\n  <div class=\"col-2 text-center\" >\n    <span class=\"badge badge-pill badge-box fs-10 fst-italic\">\n     Toute la journée\n    </span>\n  </div>\n\n  <div class=\"col-3 text-capitalize text-center fs-13\" v-tippy=\"{ content: `<small>Déclaré par</small>`, placement:'left' }\">\n    <span v-if=\"element.user\" >\n      {{element.user.userFirstName +\" \"+ element.user.userLastName }}\n      <span class=\"minus-separator fst-italic fs-12\">{{element.user.roleValue}}</span>\n    </span>\n  </div>\n\n  <div class=\"col-2 fst-italic text-center fs-11\" v-tippy=\"{ content: '<small>Date de déclaration</small>', placement:'left' }\">\n    Déclaré le {{element.creationDate}}\n  </div>\n\n  <div class=\"col-1 cursor-pointer text-end\">\n    <i  v-if=\"beforeToday() == false\" @click=\"displayDeleteModal\" class=\"mdi mdi-trash-can-outline fs-18\"\n    v-tippy=\"{ content: '<small>Annuler</small>' , placement:'right' }\"/>\n  </div>\n\n   <!-- pop up confirmation -->\n   <WorkshopClosureCancelConfirmation\n    :show=\"showDeleteModal\"\n    :workshopClosure=\"element\"\n    v-on:close=\"showDeleteModal = false\" \n    v-on:workshop-closure-canceled=\"cancelWorkshopClosure\"\n  />\n\n</template>\n\n<script>\nimport HelperService from \"../../../services/helper.service.js\";\nimport moment from \"moment\";\nimport WorkshopClosureCancelConfirmation from \"./WorkshopClosureCancelConfirmation.vue\";\n\nexport default {\n\n  name:\"WorkshopClosureListElement\",\n  \n  emits:[\"workshop-closure-canceled\"],\n\n  components: {\n    WorkshopClosureCancelConfirmation\n  },\n\n  setup() {\n    moment.locale('fr');\n  },\n  data(){\n    return {\n      showDeleteModal: false\n    };\n  },\n\n  created(){\n    this.moment =moment\n  },\n\n  props: {\n    element: {\n      type: Object,\n    }\n  },\n\n  methods:{\n\n    formatTime : HelperService.formatTime,\n\n    beforeToday(){\n      var yesterday = moment().subtract(1,\"days\");\n      var isBefore =  moment(this.element.date, \"DD/MM/YYYY\").isBefore(yesterday);\n      return (isBefore);\n    },\n\n    displayDeleteModal(){\n      this.showDeleteModal = true;\n    },\n\n    cancelWorkshopClosure(){\n      this.$emit('workshop-closure-canceled'); \n      this.showDeleteModal = false;\n    }\n  }\n\n}\n</script>\n\n<style scoped>\n\n</style>","<template>\n  \n  <Transition name=\"modal\">\n  \n    <div v-if=\"show\" class=\"modal-mask\">\n\n      <div class=\"modal-wrapper\">\n        <div class=\"modal-container p-0\">\n          <div class=\"card mb-0\">\n\n            <div class=\"card-header\">\n              <div class=\"fs-16 fw-600\"> \n                <i class=\"mdi mdi-alert-outline text-muted fs-17 me-1\" />\n                Annulation de la fermeture exceptionnelle\n              </div>\n            </div>\n\n            <div class=\"card-body fs-16 fw-500 mx-auto\">\n              <div> \n                <span> Êtes-vous certain de vouloir annuler cette fermeture exceptionnelle? </span>\n              </div> \n            </div>\n\n            <div class=\"card-footer text-center btn-row p-2\">\n              <button class=\"btn btn-round btn-custom w-25\" @click=\"$emit('close')\">Annuler</button>\n              <button class=\"btn btn-round btn-custom w-25\" @click=\"cancelWorkshopClosure\" >Confirmer</button>\n            </div>\n\n            <!-- error message -->\n            <CustomMessage v-if=\"message\" :cssClass=\"'mt-2 ps-2 pe-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n          </div>\n          \n          \n        </div>\n        \n      </div>\n\n    </div>\n\n  </Transition>\n\n</template>\n\n<script>\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name:\"WorkshopClosureCancelConfirmation\",\n\n  emits:['close', 'workshop-closure-canceled'],\n\n  components: {\n    CustomMessage\n  },\n\n  props:{\n\n    show: {\n      type: Boolean,\n      default() {\n        return false;\n      },\n    },\n\n    workshopClosure:{\n      type: Object,\n      required: true,\n    },\n  },\n  data(){\n    return {\n      message: \"\"\n    };\n  },\n\n  methods: {\n\n    cancelWorkshopClosure(){\n\n      let workshopClosureReq  = {\n        workshopCode:this.workshopClosure.workshopCode,\n        companyCode: this.workshopClosure.companyCode,\n        date: this.workshopClosure.date,\n      };\n\n      let workshopClosureDeleteReq = {\n        method: \"DELETE\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(workshopClosureReq),\n      };\n\n      fetch(\"/api/workshop-closure/delete/\", workshopClosureDeleteReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            await response.text();\n            this.$emit(\"workshop-closure-canceled\");\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.cancelWorkshopClosure.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n  },\n\n}\n</script>\n\n<style scoped>\n\n</style>","import { render } from \"./WorkshopClosureCancelConfirmation.vue?vue&type=template&id=00b9ee32\"\nimport script from \"./WorkshopClosureCancelConfirmation.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopClosureCancelConfirmation.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./WorkshopClosureListElement.vue?vue&type=template&id=c2003842\"\nimport script from \"./WorkshopClosureListElement.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopClosureListElement.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./WorkshopClosureList.vue?vue&type=template&id=308d6f0d\"\nimport script from \"./WorkshopClosureList.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopClosureList.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./WorkshopClosures.vue?vue&type=template&id=29a20718\"\nimport script from \"./WorkshopClosures.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopClosures.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./WorkshopClosureModal.vue?vue&type=template&id=2f52db39&scoped=true\"\nimport script from \"./WorkshopClosureModal.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopClosureModal.vue?vue&type=script&lang=js\"\n\nimport \"./WorkshopClosureModal.vue?vue&type=style&index=0&id=2f52db39&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2f52db39\"]])\n\nexport default __exports__","import { render } from \"./WorkshopListElement.vue?vue&type=template&id=2693a267&scoped=true\"\nimport script from \"./WorkshopListElement.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopListElement.vue?vue&type=script&lang=js\"\n\nimport \"./WorkshopListElement.vue?vue&type=style&index=0&id=2693a267&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2693a267\"]])\n\nexport default __exports__","import { render } from \"./WorkshopList.vue?vue&type=template&id=47901d9d&scoped=true\"\nimport script from \"./WorkshopList.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopList.vue?vue&type=script&lang=js\"\n\nimport \"./WorkshopList.vue?vue&type=style&index=0&id=47901d9d&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-47901d9d\"]])\n\nexport default __exports__","<template>\n  <div class=\"quickview quickview-lg\" tabindex=\"-1\" id=\"quickViewUserUpdate\" aria-labelledby=\"quickViewUserUpdateLabel\">\n    <header class=\"quickview-header\">\n      <h5 id=\"offcanvasNavbarLabel\" class=\"offcanvas-title\">Création d'atelier</h5>\n      <button type=\"button\" class=\"btn-close\" v-on:click=\"$emit('close')\"></button>\n    </header>\n    <div class=\"quickview-body\">\n      <div class=\"quickview-block form-type-material\">\n        <WorkshopCreateForm v-on:workshop-created=\"reload\"></WorkshopCreateForm>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport WorkshopCreateForm from \"./WorkshopCreateForm.vue\";\n\nexport default {\n\n  name: \"WorkshopCreate\",\n\n  emits: [\"close\", \"workshop-created\"],\n\n  data() {\n    return {\n      closed: false,\n    };\n  },\n\n  components: {\n    WorkshopCreateForm,\n  },\n\n  computed: {},\n\n  created() {},\n\n  methods: {\n    reload() {\n      this.$emit(\"workshop-created\");\n    },\n  },\n};\n</script>\n\n<style lang=\"css\" scoped>\n\n</style>\n","<template>\n\n    <Form @submit=\"createWorkshop\" :validation-schema=\"createUserschema\" v-slot=\"{ errors }\">\n\n      <!-- nom -->\n      <div class=\"form-group\">\n        <Field name=\"workshopName\" type=\"text\" class=\"form-control\" required :class=\"{ 'is-invalid': errors.workshopName }\"/>\n        <label  class=\"required\" for=\"workshopName\">Nom</label>\n         <ErrorMessage name=\"workshopName\" class=\"invalid-feedback\" />\n      </div>\n\n      <!-- code -->\n      <div class=\"form-group\">\n        <Field name=\"workshopCode\" type=\"text\" class=\"form-control\" :class=\"{ 'is-invalid': errors.workshopCode }\" style=\"text-transform: lowercase\" required/>\n        <label class=\"required\" for=\"workshopCode\">Code</label>\n         <ErrorMessage name=\"workshopCode\" class=\"invalid-feedback\" />\n      </div>\n\n      <!-- adresse -->\n      <div class=\"form-group\">\n        <Field name=\"workshopAddress1\" type=\"text\" class=\"form-control\" required :class=\"{ 'is-invalid': errors.workshopAddress1 }\"/>\n        <label class=\"required\" for=\"workshopAddress1\">Adresse </label>\n         <ErrorMessage name=\"workshopAddress1\" class=\"invalid-feedback\" />\n      </div>\n      \n      <!-- complément -->\n      <div class=\"form-group\">\n        <Field name=\"workshopAddress2\" type=\"text\" class=\"form-control\"  required :class=\"{ 'is-invalid': errors.workshopAddress2 }\"/>\n        <label for=\"workshopAddress2\">Complément</label>\n         <ErrorMessage name=\"workshopAddress2\" class=\"invalid-feedback\" />\n      </div>\n\n      <!-- zip code -->\n      <div class=\"form-group\">\n        <Field name=\"workshopZipCode\" type=\"text\" class=\"form-control\"  required :class=\"{ 'is-invalid': errors.workshopZipCode }\"/>\n        <label class=\"required\" for=\"workshopZipCode\">Code postal</label>\n        <ErrorMessage name=\"workshopZipCode\" class=\"invalid-feedback\" />\n      </div>\n\n      <!-- ville -->\n      <div class=\"form-group\">\n        <Field name=\"workshopCity\" type=\"text\" class=\"form-control\"  required :class=\"{ 'is-invalid': errors.workshopCity }\"/>\n        <label  class=\"required\" for=\"workshopCity\">Ville</label>\n        <ErrorMessage name=\"workshopCity\" class=\"invalid-feedback\" />\n      </div>\n      \n      <!-- pays -->\n      <div class=\"form-group\">\n        <Field name=\"workshopCountry\" v-slot=\"{ handleChange, value }\">\n          <CustomSelect \n            :modelValue=\"value\"\n            @value-updated=\"(value) => {handleChange(value); countryUpdated(value)}\"\n            :options=\"countries\"\n            name=\"workshopCountry\"\n            :error=\"errors.workshopCountry\"\n            classStyle=\"form-control\" />\n        </Field>\n        <label class=\"floating-label required\" for=\"workshopCountry\">Pays</label>\n        <ErrorMessage name=\"workshopCountry\" class=\"d-flex invalid-feedback\" />\n      </div>\n\n      <!-- email -->\n      <div class=\"form-group\">\n        <Field name=\"workshopEmail\" type=\"text\" class=\"form-control\" :class=\"{ 'is-invalid': errors.workshopEmail }\" required/>\n        <label class=\"required\" for=\"workshopEmail\">Email</label>\n        <ErrorMessage name=\"workshopEmail\" class=\"invalid-feedback\" />\n      </div>\n\n      <!-- phone -->\n      <Field name=\"workshopPhone\" v-slot=\"{ handleChange, value }\">\n        <PhoneInput v-if=\"workshopCountry\" \n          :modelValue=\"value\"\n          @value-updated=\"handleChange\" \n          :country=\"workshopCountry\" \n          :phoneType=\"'FIXED_LINE'\"\n          :error=\" errors.workshopPhone\" />\n      </Field>\n\n      <!-- category -->\n      <div class=\"form-group\">\n        <Field name=\"category\"  v-slot=\"{handleChange, value}\">\n          <CustomSelect\n            :modelValue=\"value\"\n            @value-updated=\"(item)=> {handleChange(item); categoryUpdated(item) }\"\n            :options=\"categories\"\n            name=\"category\"\n            :error=\"errors.category\"\n            classStyle=\"form-control\"\n          />\n        </Field>\n        <label class=\"floating-label required\" for=\"category\">Catégorie:</label>\n        <ErrorMessage name=\"category\" class=\"d-flex invalid-feedback\" />\n      </div>\n\n     <!-- Mark -->\n      <div v-if=\" category != '' && allMarks.length > 0\" v-auto-animate class=\"form-group\">\n        <Field name=\"marks\" v-slot=\"{handleChange, value}\">\n          <MultiTagSelect \n            :modelValue=\"value\"\n            @tags-selected= \"handleChange\"\n            :label=\"'Marque'\"\n            :tags=\"allMarks\"\n            :required=\"true\"\n            :max=\"10\"\n            :error=\"errors.marks\"/>  \n        </Field>\n        <ErrorMessage name=\"marks\" class=\"d-flex invalid-feedback\" />\n      </div> \n\n      <!-- date d'activation use datePicker : documentation https://icehaunter.github.io/vue3-datepicker/-->\n      <div class=\"form-group\">\n        <Datepicker name=\"activationStartDate\" class=\"form-control\"  v-model=\"activationStartDate\" :lowerLimit='lowerLimit' :style=\"datePickerStyle\"/>\n        <span class=\"do-float\">\n          <label class=\"required\">Date de début d'activation </label>\n        </span>\n      </div>\n\n      <!-- ajouter button -->\n      <div class=\"text-center pt-3\">\n        <button type=\"submit\" class=\"btn btn-round btn-custom\" :disabled=\"disableSubmit\">Ajouter</button>\n      </div>\n\n      <!-- error message -->\n      <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n    </Form>\n</template>\n\n<script>\n\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport * as moment from \"moment\";\nimport Datepicker from 'vue3-datepicker';\nimport { ref } from 'vue';\nimport MultiTagSelect from \"../../common/MultiTagSelect.vue\";\nimport PhoneInput from \"../../common/PhoneInput.vue\"\nimport CustomSelect from '../../common/CustomSelect.vue';\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n \n  name: \"WorkshopCreateForm\",\n  \n  emits: [\"workshop-created\"],\n\n  setup(){\n      const createUserschema = Yup.object().shape({\n      workshopName: Yup.string().required(\"Nom d'atelier est obligatoire\"),\n      workshopCode: Yup.string().required(\"Code d'atelier est obligatoire\").matches(/^[a-zA-Z0-9]+$/, \"Chiffres et lettres autorisées\")\n      .min(5,\"Doit comporter au moins 5 caractères\").max(20, \"20 lettres autorisées\"),\n      workshopAddress1: Yup.string().required(\"L'adresse est obligatoire\"),\n      workshopAddress2: Yup.string(),\n      workshopCity: Yup.string().required(\"La ville est obligatoire\"),\n      workshopEmail: Yup.string().required(\"Email est obligatoire\").email(\"Email est n'est pas valide\"),\n      workshopPhone: Yup.string().required(\"Téléphone est obligatoire\"),\n      workshopCountry:Yup.string().required(\"Pays est obligatoire\"),\n      workshopZipCode: Yup.string().required(\"Code postal est obligatoire\"),\n      category: Yup.string().required(\"Le Catégorie auto ou moto est obligatoire\"),\n      marks : Yup.array().when(('category'), { \n          is: (category) => {\n              if (category != '')\n                return true;\n              else \n                return false;\n            },\n            then: Yup.array().required(\"Veuillez choisir au moins une marque\").min(1, \"Veuillez choisir au moins une marque\")\n        })\n      });\n      \n      const countries = [\n        {text:'France',     value:'France'},\n        {text:'Monaco',     value:'Monaco'},\n        {text:'Belgique',   value:'Belgique'},\n        {text:'Suisse',     value:'Suisse'},\n        {text:'Andorre',    value:'Andorre'},\n        {text:'Italie',     value:'Italie' },\n        {text:'Espagne',    value:'Espagne'},\n        {text:'Luxembourg', value:'Luxembourg' },\n        {text:'Pays-Bas',   value:'Pays-Bas'},\n        {text:'Allemagne',  value:'Allemagne'}, \n        {text:'Autriche',   value:'Autriche'}\n      ];\n\n      const categories = [\n        {text:'AUTO', value:'AUTO'},\n        {text:'MOTO', value:'MOTO'},\n      ];\n\n      return { createUserschema, categories, countries\n      };\n  },\n\n  components: {\n\n    Form,\n    Field,\n    ErrorMessage,\n    Datepicker,\n    MultiTagSelect,\n    PhoneInput,\n    CustomSelect,\n    CustomMessage\n\n  },\n\n  data() {\n\n    return {\n      selectedCountry:{},\n      workshopCountry:'',\n      category:'',\n      allMarks: [],\n      marks:[],\n      activationStartDate : ref(new Date()),\n      lowerLimit:new Date(),\n      companyCode: this.$store.state.auth.user.companyCode,\n      workshopPhone:'',\n      loading: false,\n      message: \"\",\n      datePickerStyle:{\"--vdp-selected-bg-color\":'#00203f',\"--vdp-selected-color\": \"#ffffff\",  \"--vdp-hover-bg-color\": \"#00203f\"},\n      disableSubmit:false\n    };\n\n  },\n\n  methods: {\n\n    emittedWorkshopPhone(phone){\n      this.workshopPhone = phone;\n    },\n    \n    countryUpdated(country){\n      this.workshopCountry = country;\n      this.selectedCountry = country;\n    },\n    \n    categoryUpdated(value){\n      this.category = value;\n      this.loadMarks();\n    },\n\n    loadMarks(){\n\n      let loadAllMarksReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n          },\n        };\n        \n        fetch(\"/api/vehicle/all-marks/\" + this.category,loadAllMarksReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok) {\n            let data = await response.json();\n            this.allMarks = data;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch( (response) => {\n          if(response.status == 401){\n            this.$authTokenService.refreshToken(this.loadMarks.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          setTimeout(() => (this.message = ''), 4000);\n        });\n\n    },\n\n    createWorkshop(values) {\n      this.disableSubmit = true;\n      this.loading = true;\n      values.companyCode = this.companyCode;\n      values.workshopActivationStartDate = moment(this.activationStartDate).format(\"DD/MM/YYYY HH:mm\");\n      values.workshopCountry = this.workshopCountry;\n      let trimedValues = this.createUserschema.cast(values);\n\n      let createWorkshopReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(trimedValues),\n      };\n\n      fetch(\"/api/workshop/create-workshop\",createWorkshopReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            this.disableSubmit = false;\n            return;\n          }\n          if (response.ok){\n            this.$emit(\"workshop-created\");\n            return;\n          }\n          return Promise.reject(response);\n          \n      })\n      .catch((response) => {\n        if(response.status == 401){\n          this.$authTokenService.refreshToken(this.createWorkshop.bind(this, values));\n          return;\n        }\n        this.disableSubmit = false;\n        this.message = this.$authTokenService.handleErrorResponse(response);\n      });\n    },\n\n  },\n};\n</script>\n\n<style lang=\"css\" scoped>\n\n</style>\n","<template>\n\n  <!-- editable-multi-select-tag  -->\n  <div class=\"editable-multi-select-tag\">\n    <div class=\"dropdown cursor-pointer\">   \n      <div class=\"dropdown-toggle\" id=\"dropdownMenuProfile\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-display=\"static\" aria-haspopup=\"true\" ref=\"dropdownToggle\">\n      \n        <input type=\"text\" name=\"selectedValue\" :class=\"[error ?'is-invalid': '' ]\"   class=\"form-control\" required v-model=\"selectedValue\" @change=\"selectTag(selectedValue)\"/> \n        <label :class=\"[{'required' : required}] \" for=\"field\" >{{label}}</label>\n\n      </div>\n      <ul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuProfile\">\n        <li class=\"dropdown-item\" v-for=\"item in  filterTags\" :key=\"item\" @click=\"selectTag(item)\">{{item}}</li> \n      </ul>\n    </div>\n  </div>\n\n  <!-- displaying tags -->\n  <span class=\"m-2 remove badge badge-pill bg-gray-lighter text-gray-strong fw-600 m-1 fs-13\" v-for=\"tag in selectedTags\" :key=\"tag\" @click=\"removeTag(tag)\"> {{tag}}</span>\n\n</template>\n\n<script>\n\nexport default {\n\n  name: \"MultiTagSelect\",\n\n  $_veeValidate: {\n    name() {\n      return this.label;\n    },\n    value() {\n      return this.selectedTags;\n    }\n  },\n\n  emits:[\"tags-selected\"],\n\n  props:{\n    modelValue:{\n      required:true,\n      type :Array,\n      default(){\n        return [];\n      }\n    },\n    tags: {\n      type: Array,\n      required: true,\n      default: () => [],\n      note: 'array of tags',\n    },\n    label:{\n      type:String,\n      required: true,\n      default: () => ''\n    },\n    required:{\n      type:Boolean,\n      required:false,\n      default: () => false\n    },\n    error:{\n      type:String,\n    },\n    max:{\n      type:Number,\n      default(){\n          return 50;\n      }\n    }\n  },\n\n  computed: {\n    filterTags() {\n      var array = this.allTags.filter(option => option.toLowerCase().includes(this.selectedValue.toLowerCase()));\n      if(array == null)\n        return [];\n      return array;\n    },\n  },\n\n  data(){\n    return {\n      allTags : this.tags,\n      selectedTags : this.modelValue,\n      selectedValue : '',\n    }\n  },\n\n  updated(){\n    if(this.allTags.length != this.tags.length){\n      \n      // skip initiate first time tags changing\n      if(this.allTags.length != 0)\n        this.selectedTags = [];\n\n      this.allTags = this.tags;\n      this.selectedValue = '';\n    }\n  },\n\n  mounted(){\n    //Delete all seletected tag from allTags list\n    this.selectedTags.forEach(selectedTag => {\n      if(this.allTags.includes(selectedTag)){\n        var selectedTagIndex = this.allTags.indexOf(selectedTag);\n        this.allTags.splice(selectedTagIndex, 1);\n      }\n    });\n  },\n\n  methods:{\n\n    removeTag( value) {\n      var index = this.selectedTags.indexOf(value);\n      if (index > -1){ \n        this.selectedTags.splice(index, 1);\n        this.allTags.push(value);\n        this.allTags.sort();\n      }\n      this.$emit(\"tags-selected\", this.selectedTags);\n    },\n\n    selectTag(tag){\n      this.selectedValue = tag;\n      if(this.selectedTags.length < this.max && tag && this.allTags.indexOf(tag)!= -1){\n        this.selectedTags.indexOf(tag) === -1 ? this.selectedTags.push(tag) : \"\";\n        var tagIndex = this.allTags.indexOf(tag);\n        this.allTags.splice(tagIndex, 1);\n        this.$emit(\"tags-selected\", this.selectedTags);\n        this.selectedValue = '';\n      }\n    }\n  }\n\n\n}\n</script>\n\n<style scoped>\n\n/* editable-multi-select-tag */\n.editable-multi-select-tag {\n  border: none;\n  font-weight: 400;\n  width: 100% !important;\n  border-radius: 0;\n  padding:  0px;\n  height: 35px;\n}\n\n.editable-multi-select-tag.is-invalid {\n  border-color: #f96868;\n}\n.editable-multi-select-tag~.label {\n  left:16px\n}\n\n.editable-multi-select-tag .dropdown-toggle {\n  display: flex;\n  position: relative;\n  width: 100%;\n  text-align: left;\n  white-space: nowrap;\n  justify-content : space-between;\n  align-items: center;\n  border: none;\n  border-radius: 0px;\n  color: #212529;\n}\n\n.editable-multi-select-tag .dropdown-toggle::after {\n  position: absolute;\n  right: 0px;\n  height: 5px;\n  width: 8px;\n  border-top: 4px solid #00203f;\n  margin-right: 4px;\n}\n\n.editable-multi-select-tag .close {\n  position: absolute;\n  right: 0;\n  top: 6px;\n  opacity: .5;\n}\n\n.editable-multi-select-tag .dropdown-menu {\n  border-radius: 0px 0px 3px 3px;\n  max-height: 150px;\n  overflow-y: auto;\n  min-height: 92px;\n  min-width: 100%;\n  transform: translate3d(0px, 30px, 0px) !important;\n}\n.editable-multi-select-tag .dropdown-menu div.inner::-webkit-scrollbar {\n  -webkit-appearance: none;\n  width: 5px;\n}\n\n.editable-multi-select-tag .dropdown-toggle.content-none::after {\n  content: none;\n}\n\n\n.editable-multi-select-tag .dropdown-menu div.inner::-webkit-scrollbar-thumb {\n  border-radius: 3px;\n  background-color: rgba(0, 0, 0, .5);\n  box-shadow: 0 0 1px rgba(255, 255, 255, .5);\n}\n\n.editable-multi-select-tag .dropdown-menu div.inner{\n  overflow-x: hidden !important;\n}\n\n.editable-multi-select-tag .dropdown label {\n  top : 5px !important;\n}\n\n.editable-multi-select-tag .dropdown input.focus ~ label,\n.editable-multi-select-tag .dropdown input:focus~label,\n.editable-multi-select-tag .dropdown input:valid~label {\n  top: -13px !important;\n  font-size: 10px !important;\n  font-weight: 400 !important;\n  opacity: .5\n}\n\n.error {\n  color: #f96868;\n  font-size: 13px;\n  font-weight: 300;\n  margin: 0;\n}\n\n</style>","import { render } from \"./MultiTagSelect.vue?vue&type=template&id=786c4e0c&scoped=true\"\nimport script from \"./MultiTagSelect.vue?vue&type=script&lang=js\"\nexport * from \"./MultiTagSelect.vue?vue&type=script&lang=js\"\n\nimport \"./MultiTagSelect.vue?vue&type=style&index=0&id=786c4e0c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-786c4e0c\"]])\n\nexport default __exports__","import { render } from \"./WorkshopCreateForm.vue?vue&type=template&id=11995bf2\"\nimport script from \"./WorkshopCreateForm.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopCreateForm.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./WorkshopCreate.vue?vue&type=template&id=74569f2a\"\nimport script from \"./WorkshopCreate.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopCreate.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./Workshops.vue?vue&type=template&id=2d3e356c\"\nimport script from \"./Workshops.vue?vue&type=script&lang=js\"\nexport * from \"./Workshops.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n  <div class=\"container\">\n\n    <!-- header bar -->\n    <div class=\"row my-3\" v-show=\"isLoaded\">\n      \n      <div v-if=\"workshop\" class=\"header-bar justify-content-between\" >\n        <WorkshopListElement v-bind:element=\"workshop\" :displayConfigItem=\"false\" />\n      </div>\n\n    </div>\n\n    <CustomMessage v-if=\"message\" :cssClass=\"'row'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n    <div class=\"row my-3\" v-show=\"isLoaded\">\n\n      <div class=\"col-lg-3 ps-0\">\n\n        <!-- card elements -->\n        <div class=\"card \">\n          <ul class=\"nav nav-lg flex-column\">\n            \n              <NavItem v-on:click=\"activeTab = 'updateWorkshop'\" \n                :title=\"'Informations'\" \n                :activated=\"activeTab === 'updateWorkshop' ? true: false\" \n                :exist=\"true\"\n                :toolTipMessage=\"`Modifier les informations de l'atelier`\">\n                <span class=\"mdi mdi-square-edit-outline fs-20 me-2\"></span>\n              </NavItem>\n              \n              <NavItem :title=\"regularWeekTitle\" \n                v-on:click=\"activeTab = 'regularWeek'\" \n                :activated=\"activeTab === 'regularWeek' ? true : false\" \n                :exist=\"existTimeSlot\" \n                :toolTipMessage=\"existTimeSlot ? 'Modifier les horaires d\\'ouverture' : 'Veuillez ajouter les horaires d\\'ouverture'\">\n                <span class=\"mdi mdi-calendar-edit fs-20 me-2\"></span>\n              </NavItem>\n            \n              <NavItem v-on:click=\"activeTab = 'workshopConfiguration'\" \n                :title=\"'Configuration'\" \n                :activated=\"activeTab === 'workshopConfiguration' ? true : false\" \n                :exist=\"existConfiguration\" \n                :toolTipMessage=\"existConfiguration ? 'Modifier la configuration' : 'Veuillez ajouter une configuration'\">\n                <span class=\"mdi mdi-cog-outline fs-20 me-2\"></span>\n              </NavItem>\n\n              <NavItem v-if=\"existRegularWeek && workshopRegularWeekUsers && workshopRegularWeekUsers.users.length == 0\"  \n                :title=\"'Disponibilité'\" \n                v-on:click=\"activeTab = 'defaultCapacity'\" \n                :activated=\"activeTab === 'defaultCapacity' ? true : false\" \n                :exist=\"existingDefaultCapacity\" \n                :toolTipMessage=\"existingDefaultCapacity ? 'Modifier les disponibilités journalière' : 'Veuillez ajouter les disponibilités journalière'\">\n                <span class=\"mdi mdi-calendar-cursor-outline fs-20 me-2\"></span>\n              </NavItem>\n\n              <NavItem v-if=\"existRegularWeek && workshopRegularWeekUsers && workshopRegularWeekUsers.users.length > 0\"\n                :title=\"'Disponibilité'\" \n                v-on:click=\"activeTab = 'workshopTeam', loadWorkshopRegularWeekUsers()\" \n                :activated=\"activeTab === 'workshopTeam' ? true : false\" \n                :exist=\"true\" \n                :toolTipMessage=\"'Voir les disponibilité de l\\'équipe'\">\n                <span class=\"mdi mdi-account-group-outline fs-20 me-2\"></span>\n              </NavItem>\n\n              <NavItem  \n                :title=\"'Prestations'\" \n                v-on:click=\"activeTab = 'prestations'\" \n                :activated=\"activeTab === 'prestations' ? true : false\" \n                :exist=\"enbledPrestation\"\n                :toolTipMessage=\"enbledPrestation ? 'Modifier les prestations' : 'Veuillez ajouter les prestations'\">\n                <span class=\"mdi mdi-wrench-cog-outline fs-20 me-2\"></span>\n              </NavItem>\n          \n          </ul>\n\n        </div>\n\n      </div>\n\n      <!-- second card for compoment -->\n      <div v-if=\"workshop\" class=\"col-lg-9 p-0\" v-auto-animate>\n\n        <WorkshopUpdate v-if=\"activeTab == 'updateWorkshop' && workshop.workshopCode != undefined\" :workshopSelected=\"workshop\" v-on:workshop-name-changed=\"changeWorkshopName\"  \n        :loadingTransferred=\"loading\" />\n        \n        <WorkshopRegularWeek v-if=\"activeTab == 'regularWeek'\"  v-bind:regularWeeks=\"workshop.workshopRegularWeek\" v-bind:companyCode=\"companyCode\"\n        v-bind:workshopCode=\"workshop.workshopCode\"  v-on:regular-week-updated=\"validateWorkshop(), regularWeekCreatedHandler()\"/>\n        \n        <WorkshopConfiguration v-if=\"activeTab == 'workshopConfiguration'\" v-bind:workshopConfig=\"workshop.workshopConfiguration\" v-bind:companyCode=\"companyCode\"\n         v-bind:workshopCode=\"workshop.workshopCode\" v-on:configuration-created=\"configurationCreatedHandler\" v-bind:workshopStatus=\"workshop.workshopStatusResp.name\"/> \n        \n        <WorkshopRegularWeekUsers v-if=\"activeTab == 'workshopTeam' \" :regularWeeks=\"workshopRegularWeekUsers.regularWeeks\" :users=\"workshopRegularWeekUsers.users\"/>\n        \n        <WorkshopRegularWeekAvailability v-if=\"activeTab == 'defaultCapacity'\" v-bind:regularWeeks=\"workshop.workshopRegularWeek\" v-bind:companyCode=\"companyCode\" \n          v-bind:workshopCode=\"workshop.workshopCode\" v-on:regular-weeks-updated=\"updateRegularWeeks\" />\n\n        <div v-if=\"workshop.workshopCode\" v-show=\"activeTab == 'prestations' \"> \n          <WorkshopPrestationCategory :workshopCode=\"workshop.workshopCode\" :companyCode=\"workshop.companyCode\" v-on:prestation-enabled=\"enablePrestation\" />\n        </div>\n\n      </div>\n\n    </div>\n\n  </div>\n\n</template>\n\n<script>\nimport WorkshopStatus from \"./common/WorkshopStatus.vue\";\nimport { useRoute } from \"vue-router\";\nimport WorkshopUpdate from \"./workshop/WorkshopUpdate.vue\";\nimport WorkshopConfiguration from \"./workshop/WorkshopConfiguration.vue\";\nimport WorkshopRegularWeek from \"./workshop/WorkshopRegularWeek.vue\";\nimport WorkshopRegularWeekAvailability from \"./workshop/WorkshopRegularWeekAvailability.vue\";\nimport NavItem from \"../common/NavItem.vue\";\nimport WorkshopPrestationCategory from \"./workshop/WorkshopPrestationCategory.vue\"\nimport CustomMessage from '../common/CustomMessage.vue';\n\nimport WorkshopListElement from \"./workshops/WorkshopListElement.vue\";\nimport WorkshopRegularWeekUsers from  \"./workshop/WorkshopRegularWeekUsers.vue\";\n\nexport default {\n\n  name: \"Workshop\",\n\n  setup() {\n    let workshopCode = useRoute().params.workshopCode;\n    return { workshopCode };\n  },\n\n  components: {\n    WorkshopUpdate,\n    WorkshopRegularWeek,\n    WorkshopConfiguration,\n    WorkshopRegularWeekAvailability,\n    NavItem,\n    WorkshopStatus,\n    WorkshopPrestationCategory,\n    CustomMessage,\n    WorkshopListElement,\n    WorkshopRegularWeekUsers\n  },\n\n  data() {\n    return {\n\n      activeTab: \"updateWorkshop\",\n      companyCode: this.$store.state.auth.user.companyCode,\n      workshop: null,\n      regularWeekCreated:false,\n      loading: false,\n      configurationCreated: false,\n      isLoaded:false,\n      enbledPrestation:false,\n      screenWidth:'',\n      regularWeekTitle:'La semaine régulière',\n      message:\"\",\n      workshopRegularWeekUsers : null,\n    };\n  },\n\n  created() {\n    this.loadWorkshop();\n    this.loadWorkshopRegularWeekUsers();\n  },\n\n  watch:{\n    screenWidth(newValue){\n      if(newValue<1000)\n        this.regularWeekTitle = \"semaine.Ré\";\n        else\n        this.regularWeekTitle = \"La semaine régulière\";\n    }\n  },\n  \n  computed: {\n\n    // regular week contains defaultCapacity or no\n    existingDefaultCapacity(){\n      \n      if(!this.workshop)\n        return false;\n\n      for(var regular in this.workshop.workshopRegularWeek){\n        if(this.workshop.workshopRegularWeek[regular].defaultCapacity>0)\n          return true;\n      }\n      return false;\n    },\n\n    existRegularWeek(){\n\n      if(!this.workshop)\n        return false;\n\n      if(this.workshop.workshopRegularWeek == undefined)\n        return false;\n      if(this.workshop.workshopRegularWeek.length==0 )\n       return false;\n      if(this.regularWeekCreated == true)\n        return true ;\n\n      return true;\n\n    },\n\n    existConfiguration(){\n      if(!this.workshop)\n        return false;\n\n      if(this.workshop.workshopConfiguration != undefined || this.configurationCreated==true )\n        return true ;\n      else return false;\n\n    },\n\n    // regular week contains timeSlot or no\n    existTimeSlot(){\n\n      if(!this.workshop)\n        return false;\n\n      for(var regular in this.workshop.workshopRegularWeek){\n        if(this.workshop.workshopRegularWeek[regular].openningTimeSlots.length>0)\n          return true;\n      }\n      return false;\n\n    }\n  },\n\n  mounted() {\n    this.updateScreenWidth();\n    this.onScreenResize();\n  },\n\n  methods: {\n\n    onScreenResize() {\n      window.addEventListener(\"resize\", () => {\n        this.updateScreenWidth();\n      });\n    },\n\n    updateScreenWidth() {\n      this.screenWidth = window.innerWidth;\n    },\n\n    enablePrestation(isEnabled){\n      this.enbledPrestation = isEnabled;\n    },\n    \n    updateRegularWeeks(regularWeeks){\n      this.workshop.workshopRegularWeek = regularWeeks;\n    },\n\n    validateWorkshop(){\n      if(this.workshop.workshopStatusResp.name == 'CREATED'){\n        this.loadWorkshop();\n        this.activeTab=\"regularWeek\";\n      }\n    },\n    \n    regularWeekCreatedHandler(){\n      this.regularWeekCreated=true;\n      this.activeTab=\"regularWeek\";\n    },\n\n    configurationCreatedHandler() {\n      this.loadWorkshop();\n      this.configurationCreated = true;\n      this.activeTab=\"workshopConfiguration\";\n    },\n\n    changeWorkshopName(value) {\n      this.workshop.workshopName = value;\n    },\n    \n    loadWorkshop() {\n\n      this.loading = true;\n      let loadWorkshopReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n          Authorization: this.$authTokenService.authToken()\n        }\n      };\n        \n      fetch(\"/api/workshop/get-workshop/\"+this.companyCode+\"/\"+this.workshopCode, loadWorkshopReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.workshop = await response.json();\n            this.isLoaded=true;\n            this.loading = false;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          this.loading = false;\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadWorkshop.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          \n        });\n\n    },\n\n    loadWorkshopRegularWeekUsers() {\n\n      const request = {\n        companyCode: this.$store.state.auth.user.companyCode,\n        workshopCode: this.workshopCode\n      }\n\n      let loadWorkshopUsersReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(request),\n      };\n\n      fetch(\"/api/workshop-planning/regularweek-users\", loadWorkshopUsersReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.workshopRegularWeekUsers = await response.json();\n            return;\n          } \n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadWorkshopRegularWeekUsers.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n      },\n\n  },\n\n};\n</script>\n\n<style scoped>\n\n\n</style>\n","<template>\n  <!-- card-body  -->\n  <Form @submit=\"handleUpdate\" :validation-schema=\"workshopSchema\" v-slot=\"{ errors }\"  class=\"card p-4\">\n    <div class=\"row position-relative form-type-material\" >\n\n      <!-- workshop-code -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group do-float\">\n          <span class=\"form-control\">{{this.workshopSelected.workshopCode}}</span>  \n          <label class=\"\"> Code d'atelier:</label>  \n        </div>\n      </div>\n\n      <!-- Nom -->\n      <div class=\"col-md-12\">\n        <div class=\"form-group\">\n          <Field name=\"workshopName\" type=\"text\" :value=\"workshopSelected.workshopName\"  class=\"form-control\" required :class=\"{ 'is-invalid': errors.workshopName }\"/>\n          <label for=\"workshopName\" class=\"required\">Nom</label>\n          <ErrorMessage name=\"workshopName\" class=\"invalid-feedback\" />\n        </div>\n      </div>\n\n      <!-- Adresse1 -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"workshopAddress1\" type=\"text\" :value=\"workshopSelected.workshopAddress1\" class=\"form-control\" required :class=\"{ 'is-invalid': errors.workshopAddress1 }\"/>\n          <label for=\"workshopAddress1\" class=\"required\">Adresse </label>\n          <ErrorMessage name=\"workshopAddress1\" class=\"invalid-feedback\" />\n        </div>\n      </div>\n\n      <!-- Adresse2 -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"workshopAddress2\" type=\"text\" :value=\"workshopSelected.workshopAddress2\" class=\"form-control\"  required :class=\"{ 'is-invalid': errors.workshopAddress2 }\"/>\n          <label for=\"workshopAddress2\">Complément d'adresse</label>\n          <ErrorMessage name=\"workshopAddress2\" class=\"invalid-feedback\" />\n        </div>\n      </div>\n\n      <!-- zip code -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"workshopZipCode\" type=\"text\" :value=\"workshopSelected.workshopZipCode\" class=\"form-control\"  required :class=\"{ 'is-invalid': errors.workshopZipCode }\"/>\n          <label for=\"workshopZipCode\" class=\"required\">Code postal</label>\n          <ErrorMessage name=\"workshopZipCode\" class=\"invalid-feedback\" />\n        </div>\n      </div>\n\n      <!-- ville -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"workshopCity\" type=\"text\" :value=\"workshopSelected.workshopCity\" class=\"form-control\"  required :class=\"{ 'is-invalid': errors.workshopCity }\"/>\n          <label for=\"workshopCity\" class=\"required\" >Ville</label>\n          <ErrorMessage name=\"workshopCity\" class=\"invalid-feedback\" />\n        </div>\n      </div>\n\n      <!-- pays -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"workshopCountry\" v-slot=\"{ handleChange}\" v-model=\"workshopCountry\">\n            <CustomSelect \n              :modelValue=\"workshopCountry\"\n              @value-updated=\"(value) => {handleChange(value); workshopCountry = value}\"\n              :options=\"countries\"\n              name=\"workshopCountry\"\n              :error=\"errors.workshopCountry\"\n              classStyle=\"form-control\" />\n          </Field>\n          <label class=\"floating-label required\" for=\"workshopCountry\">Pays</label>\n          <ErrorMessage name=\"workshopCountry\" class=\"d-flex invalid-feedback\" />\n        </div>\n      </div>\n\n      <div class=\"col-md-6\"></div>\n\n      \n      <!-- email -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"workshopEmail\" type=\"text\" :value=\"workshopSelected.workshopEmail\" class=\"form-control\" :class=\"{ 'is-invalid': errors.workshopEmail }\" required/>\n          <label for=\"workshopEmail\" class=\"required\">Email</label>\n          <ErrorMessage name=\"workshopEmail\" class=\"invalid-feedback\" />\n        </div>\n      </div>\n\n      <!-- telephone -->\n      <div class=\"col-md-6\">\n        <Field name=\"workshopPhone\" v-slot=\"{ handleChange }\" v-model=\"workshopPhone\">\n          <PhoneInput v-if=\"workshopCountry\" \n            :modelValue=\"workshopPhone\"\n            :country=\"workshopCountry\" \n            @value-updated=\"handleChange\" \n            :error=\" errors.workshopPhone\" \n            :initPhone=\"workshopPhone\" \n            :phoneType=\"'FIXED_LINE'\" />\n        </Field>\n\n      </div>\n\n      <div class=\"col-md-6\"></div>\n\n      <div class=\"col-md-12\">\n        <div class=\"form-group do-float\">\n          <span class=\"form-control text-capitalize\">{{this.workshopSelected.category}}</span>\n          <label class=\"read-only\"> Catégorie:</label> \n        </div>\n      </div>\n      \n      <!-- marks -->\n      <div v-if=\"workshop.category != '' && allMarks.length > 0\" class=\"col-md-6 form-group\">\n        <Field name=\"marks\" v-slot=\"{handleChange}\" v-model=\"workshop.marks\">\n          <MultiTagSelect \n            :modelValue=\"workshop.marks\" \n            @tags-selected= \"handleChange\"\n            :label=\"'Marque'\" \n            :tags=\"allMarks\" \n            :required=\"false\" \n            :max=\"10\"\n            :error=\"errors.marks\" />  \n          </Field> \n        <ErrorMessage name=\"marks\" class=\"d-flex invalid-feedback\" />\n      </div> \n\n    </div>\n    \n    <!-- save button -->\n    <div class=\"text-center pt-3\">\n      <button type=\"submit\" class=\"btn btn-custom btn-round\" :disabled=\"disableSubmit\">Sauvegarder</button>\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n  </Form>\n\n  <div v-show=\"loading\" class=\"loading reveal\">\n    <span class=\"spinner-border\" role=\"status\"></span>\n  </div>\n\n</template>\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport CustomSelect from '../../common/CustomSelect.vue';\nimport PhoneInput from \"../../common/PhoneInput.vue\"\nimport { parsePhoneNumber} from 'libphonenumber-js';\nimport MultiTagSelect from \"../../common/MultiTagSelect.vue\";\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"WorkshopUpdate\",\n  \n  emits:[\"workshop-name-changed\"],\n\n  props: {\n    workshopSelected: {\n      type: Object,\n    },\n    loadingTransferred:{\n      type:Boolean\n    },\n  },\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    MultiTagSelect,\n    PhoneInput,\n    CustomSelect,\n    CustomMessage\n  },\n\n  setup(){\n\n    const workshopSchema = Yup.object().shape({\n      workshopName: Yup.string().required(\"Nom d'atelier est obligatoire\"),\n      workshopAddress1: Yup.string().required(\"L'adresse est obligatoire\"),\n      workshopAddress2: Yup.string(),\n      workshopCountry: Yup.string().required(\"Pays est obligatoire\"),\n      workshopCity: Yup.string().required(\"La ville est obligatoire\"),\n      workshopEmail: Yup.string().required(\"Email est obligatoire\").email(\"Email est n'est pas valide\"),\n      workshopPhone: Yup.string().required(\"Le téléphone est obligatoire\"),\n      workshopZipCode: Yup.string().required(\"Code postal est obligatoire\"),\n      marks: Yup.array().min(1,\"Veuillez choisir au moins une marque\").required(\"Veuillez choisir au moins une marque\"),\n    });\n\n    const countries = [\n      {text:'France',     value:'France'},\n      {text:'Monaco',     value:'Monaco'},\n      {text:'Belgique',   value:'Belgique'},\n      {text:'Suisse',     value:'Suisse'},\n      {text:'Andorre',    value:'Andorre'},\n      {text:'Italie',     value:'Italie' },\n      {text:'Espagne',    value:'Espagne'},\n      {text:'Luxembourg', value:'Luxembourg' },\n      {text:'Pays-Bas',   value:'Pays-Bas'},\n      {text:'Allemagne',  value:'Allemagne'}, \n      {text:'Autriche',   value:'Autriche'}\n    ];\n\n    return {workshopSchema, countries};\n  },\n\n  data() {\n\n    return {\n      loading: this.loadingTransferred,\n      message: \"\",\n      workshopUpdated: \"\",\n      companyCode: this.$store.state.auth.user.companyCode,\n      allMarks: [],\n      marks:this.workshopSelected.marks,\n      workshop:this.workshopSelected,\n      workshopCountry:this.workshopSelected.workshopCountry,\n      selectedCountry:{},\n      workshopPhone:this.workshopSelected.workshopPhone,\n      disableSubmit: false,\n    };\n\n  },\n\n  created(){\n\n    this.loadMarks();\n    if(this.workshop.workshopPhone){\n      var phone = parsePhoneNumber(this.workshop.workshopPhone);\n      for(const index in this.countries)\n        if(phone.country == this.countries[index].iso2)\n          this.selectedCountry = this.countries[index];\n      this.workshopPhone =  phone.format('INTERNATIONAL');\n     }\n  },\n\n  methods: {\n\n    emittedWorkshopPhone(phone){\n      this.workshopPhone = phone;\n      this.workshop.workshopPhone = phone;\n    \n    },\n\n    selectedTags(tags){\n\n      this.marks = tags;\n\n    },\n\n    loadMarks(){\n\n      let loadAllMarksReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n          },\n      };\n          \n      fetch(\"/api/vehicle/all-marks/\" + this.workshopSelected.category, loadAllMarksReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if(response.ok) {\n            let data = await response.json();\n            this.allMarks = data;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadMarks.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          setTimeout(() => (this.message = ''), 4000);\n        });\n\n    },\n\n    handleUpdate(values) {\n      this.disableSubmit = true;\n      // values are form attributes and values\n      this.loading = true;\n      this.message = \"\";\n      values.companyCode = this.companyCode;\n      values.workshopCode = this.workshopSelected.workshopCode;\n      values.marks = this.marks;\n      let trimedValues = this.workshopSchema.cast(values);\n\n      let createWorkshopReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(trimedValues),\n      };\n      this.workshopUpdated = fetch(\"/api/workshop/update-workshop\", createWorkshopReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            this.disableSubmit = false;\n            return;\n          }\n          if (response.ok){\n            this.loading = false;\n            this.disableSubmit = false;\n            this.$emit(\"workshop-name-changed\", values.workshopName);\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          this.loading = false;\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.handleUpdate.bind(this, values));\n            return;\n          }\n          this.disableSubmit = false;\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          \n        });\n\n    },\n  },\n\n};\n</script>\n","import { render } from \"./WorkshopUpdate.vue?vue&type=template&id=2aeb16ee\"\nimport script from \"./WorkshopUpdate.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopUpdate.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n    <!-- update config -->\n    <WorkshopConfigurationUpdate v-if=\"workshopConfig != undefined\" v-bind:companyCode=\"companyCode\" v-bind:workshopCode=\"workshopCode\" v-bind:workshopStatus=\"workshopStatus\"/>\n    \n    <!-- create config -->\n    <WorkshopConfigurationCreate v-else v-on:configuration-created=\"createConf\" v-bind:companyCode=\"companyCode\" v-bind:workshopCode=\"workshopCode\" />\n\n</template>\n\n<script>\nimport WorkshopConfigurationCreate from \"./WorkshopConfigurationCreate.vue\";\nimport WorkshopConfigurationUpdate from\"./WorkshopConfigurationUpdate.vue\";\n\nexport default {\n\n  name: \"WorkshopConfiguration\",\n  \n  emits: [\"configuration-created\"],\n\n  components: {\n    WorkshopConfigurationCreate,\n    WorkshopConfigurationUpdate,\n  },\n\n  methods: {\n    createConf(){\n      this.$emit(\"configuration-created\");\n    }\n  },\n\n  props: {\n    workshopConfig: {\n      type: Object,\n    },\n    companyCode: {\n       type: String \n    },\n    workshopCode: { \n      type: String \n    },\n    workshopStatus: {\n        type: String,\n      },\n  },\n};\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n\n  <div class=\"card\">\n   \n    <div class=\"card-body form-type-material\">\n\n      <Form v-on:submit=\"createConfiguration\" :validation-schema=\"createConfigSchema\" v-slot=\"{ errors }\">\n          \n        <div class=\"row\">\n\n            <!-- nbCarenceDays -->\n            <div class=\"col-md-5\">\n              <div class=\"form-group\">\n                <Field type=\"tel\" class=\"form-control\" name=\"nbCarenceDays\" :class=\"{ 'is-invalid': errors.nbCarenceDays }\" v-maska data-maska=\"##\" required/>\n                <label class=\"required\" for=\"nbCarenceDays\">Jours de carence</label>\n                <ErrorMessage name=\"nbCarenceDays\" class=\"invalid-feedback\" />\n              </div>\n            </div>\n            <div class=\"col-md-1 d-flex align-items-center p-0\">\n              <i class=\"text-lighter mdi mdi-alert-circle-outline fs-16\"\n                v-tippy=\"{ content: `<i class='fs-12'>Délai en jours à compter duquel commencera la réservation pour les clients en ligne.</i>` , placement:'top' }\"  /> \n            </div>\n\n            <!-- onlineMaxLoad -->\n            <div class=\"col-md-5\">\n              <div class=\"form-group\">\n                <Field type=\"tel\" class=\"form-control\" name=\"onlineMaxLoad\" :class=\"{ 'is-invalid': errors.onlineMaxLoad }\" v-maska data-maska=\"###\" required/>\n                <label class=\"required\" for=\"nbCarenceDays\">Taux de charge maximum en ligne (%)</label>\n                <ErrorMessage name=\"onlineMaxLoad\" class=\"invalid-feedback\" />\n              </div>\n            </div>\n            <div class=\"col-md-1\">\n            </div>\n\n            <!-- availabilityInterval -->\n            <div class=\"col-md-5\">\n              <div class=\"form-group\">\n                <Field name=\"availabilityInterval\" v-slot=\"{ handleChange, value }\" >\n                  <CustomSelect \n                    :modelValue=\"value\"\n                    @value-updated=\"(value) => {handleChange(value);}\"\n                    :options=\"availabilityIntervals\"\n                    name=\"availabilityInterval\"\n                    :error=\"errors.availabilityInterval\"\n                    classStyle=\"form-control\"\n                  />\n                </Field>\n                <label class=\"floating-label required\" for=\"availabilityInterval\">Intervalle de disponibilité</label>\n                <ErrorMessage name=\"availabilityInterval\" class=\"d-flex invalid-feedback\" />\n              </div>\n            </div>\n            <div class=\"col-md-1 d-flex align-items-center p-0\">\n              <i class=\"text-lighter mdi mdi-alert-circle-outline fs-16\"\n                  v-tippy=\"{ content: `<i class='fs-12'>Indique la durée d'un intervalle de disponibilité.</i>` , placement:'top' }\"  /> \n            </div>\n\n            <!-- availabilityIntervalSize -->\n            <div class=\"col-md-5\">\n              <div class=\"form-group\">\n                <Field name=\"availabilityIntervalSize\" v-slot=\"{ handleChange, value }\" >\n                  <CustomSelect \n                    :modelValue=\"value\"\n                    @value-updated=\"(value) => {handleChange(value);}\"\n                    :options=\"availabilityIntervalsSize\"\n                    name=\"availabilityIntervalSize\"\n                    :error=\"errors.availabilityIntervalSize\"\n                    classStyle=\"form-control\"\n                  />\n                </Field>\n                <label class=\"floating-label required\" for=\"availabilityIntervalSize\">Nombre de disponibilité par intervalle</label>\n                <ErrorMessage name=\"availabilityIntervalSize\" class=\"d-flex invalid-feedback\" />\n              </div>\n            </div>\n            <div class=\"col-md-1 d-flex align-items-center p-0\">\n              <i class=\"text-lighter mdi mdi-alert-circle-outline fs-16\"\n                  v-tippy=\"{ content: `<i class='fs-12'>Indique le nombre de disponibilités par intervalle de réservation.</i>` , placement:'top' }\"  /> \n            </div>\n\n            <!-- eventDuration  -->\n            <div class=\"col-md-5\">\n              <div class=\"form-group\">\n                <Field name=\"eventDuration\"  v-slot=\"{ handleChange, value }\" >\n                  <CustomSelect \n                    :modelValue=\"value\"\n                    @value-updated=\"(value) => {handleChange(value);}\"\n                    :options=\"availabilityIntervals\"\n                    name=\"eventDuration\"\n                    :error=\"errors.eventDuration\"\n                    classStyle=\"form-control\"\n                  />\n                </Field>\n                <label class=\"floating-label required\" for=\"eventDuration\">Durée de l'événement</label>\n                <ErrorMessage name=\"eventDuration\" class=\"d-flex invalid-feedback\" />\n              </div>\n            </div>\n            <div class=\"col-md-1 d-flex align-items-center p-0\">\n              <i class=\"text-lighter mdi mdi-alert-circle-outline fs-16\"\n                v-tippy=\"{ content: `<i class='fs-12'>Durée par défaut de l'événement de réservation.</i>` , placement:'top' }\"  /> \n            </div>\n\n            <!-- dateRange -->\n            <div class=\"col-md-5\">\n              <div class=\"form-group\">\n                <Field type=\"tel\" class=\"form-control\" name=\"dateRange\" :class=\"{ 'is-invalid': errors.dateRange }\"  v-maska data-maska=\"###\" required/>\n                <label class=\"required\" for=\"dateRange\">Période de planning dans le future (en jours)</label>\n                <ErrorMessage name=\"dateRange\" class=\"invalid-feedback\" />\n              </div>\n            </div>\n            <div class=\"col-md-1 d-flex align-items-center p-0\">\n            </div>\n\n            <!-- submit buttom -->\n            <div class=\"text-center p-3\">\n              <button type=\"submit\" class=\"btn btn-custom btn-round\" :disabled=\"disableSubmit\">Ajouter</button>\n            </div>\n\n        </div>\n\n      </Form>\n\n      <!-- loader -->\n      <div v-show=\"loading\" class=\"loading reveal\">\n        <span class=\"spinner-border\" role=\"status\"></span>\n      </div>\n\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3 ps-2 pe-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n  </div>\n\n</template>\n\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport { vMaska } from \"maska\";\nimport helperService from \"../../../services/helper.service.js\";\nimport CustomSelect from '../../common/CustomSelect.vue';\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n  \n  name: \"WorkshopConfigurationCreate\",\n  \n  emits: [\"configuration-created\"],\n  \n  directives: {maska: vMaska},\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    CustomSelect,\n    CustomMessage\n  },\n\n  setup() {\n\n    const carenceDayErrorMessage=\"Nombre de jours de carence entre 1...30 jours\";\n    const onlineMaxLoadErrorMessage=\"La valeur doit-être entre 1...100\";\n    const availabilityIntervalErrorMessage=\"La valeur doit-être entre 1...240 minutes\";\n    const availabilityIntervalSizeErrorMessage=\"La valeur doit-être entre 1...10\";\n    const eventDurationErrorMessage=\"Durée de l'événement 1...240 minutes\";\n    const dateRangeErrorMessage=\"Période de planning dans le futur entre 1...180 jours\";\n\n    const createConfigSchema = Yup.object().shape({\n      nbCarenceDays: Yup.number().min(1, carenceDayErrorMessage).max(30, carenceDayErrorMessage)\n          .required(carenceDayErrorMessage).typeError(carenceDayErrorMessage),\n      onlineMaxLoad: Yup.number().min(1, onlineMaxLoadErrorMessage).max(100, onlineMaxLoadErrorMessage)\n          .required(onlineMaxLoadErrorMessage).typeError(onlineMaxLoadErrorMessage),\n      availabilityInterval: Yup.number().min(1, availabilityIntervalErrorMessage).max(240, availabilityIntervalErrorMessage)\n          .required(availabilityIntervalErrorMessage).typeError(availabilityIntervalErrorMessage),\n      availabilityIntervalSize: Yup.number().min(1, availabilityIntervalSizeErrorMessage).max(10, availabilityIntervalSizeErrorMessage)\n          .required(availabilityIntervalSizeErrorMessage).typeError(availabilityIntervalSizeErrorMessage),\n      eventDuration: Yup.number().min(1, eventDurationErrorMessage).max(240, eventDurationErrorMessage)\n          .required(eventDurationErrorMessage).typeError(eventDurationErrorMessage),\n      dateRange: Yup.number().min(1, dateRangeErrorMessage).max(180, dateRangeErrorMessage)\n          .required(dateRangeErrorMessage).typeError(dateRangeErrorMessage),\n    });\n\n    const availabilityIntervalsSize=[\n      {text:\"1\", value:1},\n      {text:\"2\", value:2},\n      {text:\"3\", value:3},\n      {text:\"4\", value:4},\n      {text:\"5\", value:5},\n      {text:\"6\", value:6},\n      {text:\"7\", value:7},\n      {text:\"8\", value:8},\n      {text:\"9\", value:9},\n      {text:\"10\", value:10},\n    ];\n\n    const availabilityIntervals=[\n      {text:\"15 min\", value:15},\n      {text:\"30 min\", value:30},\n      {text:\"45 min\", value:45},\n      {text:\"1h\", value:60},\n      {text:\"1h15min\", value:75},\n      {text:\"1h:30min\", value:90},\n      {text:\"1h:45min\", value:105},\n      {text:\"2h\", value:120},\n      {text:\"2h:15min\", value:135},\n      {text:\"2h:30min\", value:150},\n      {text:\"2h:45min\", value:165},\n      {text:\"3h\", value:180},\n      {text:\"3h:15min\", value:195},\n      {text:\"3h:30min\", value:210},\n      {text:\"3h:45min\", value:225},\n      {text:\"4h\", value:240}\n    ];\n\n    return {createConfigSchema, availabilityIntervals, availabilityIntervalsSize};\n  },\n\n  props: {\n    companyCode: { type: String },\n    workshopCode: { type: String },\n  },\n\n  data() {\n    return {\n      loading: false,\n      message:\"\",\n      disableSubmit :false\n    };\n  },\n\n  methods: {\n\n    formatTime : helperService.formatTime,\n    \n    createConfiguration(values) {\n\n      this.disableSubmit = true;\n      this.loading = true;\n\n      values.workshopCode = this.workshopCode;\n      values.companyCode = this.companyCode;\n      values.onlineMaxLoad = values.onlineMaxLoad/100;\n\n      let createConfigurationReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(values),\n      };\n\n      fetch(\"/api/configuration/create\", createConfigurationReq)\n        .then( async response => {\n          this.loading = false;\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            this.disableSubmit = false;\n            return;\n          }\n          if (response.ok){\n            this.$emit(\"configuration-created\");\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.createConfiguration.bind(this, values));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          this.disableSubmit = false;\n        });\n\n    }\n  },\n\n\n};\n</script>\n\n<style scoped>\n\n\n</style>\n","import { render } from \"./WorkshopConfigurationCreate.vue?vue&type=template&id=5e47ad90\"\nimport script from \"./WorkshopConfigurationCreate.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopConfigurationCreate.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n  <div class=\"card\">\n  \n    <div class=\"card-body form-type-material\">\n\n      <Form v-on:submit=\"updateConfiguration\" :validation-schema=\"updateConfigSchema\" v-slot=\"{ errors }\" class=\"row\">\n\n        <!-- nbCarenceDays -->\n        <div class=\"col-5\">\n          <div class=\"form-group\">\n            <Field type=\"tel\" class=\"form-control\" name=\"nbCarenceDays\" :class=\"{ 'is-invalid': errors.nbCarenceDays }\" v-model=\"configuration.nbCarenceDays\"\n              v-maska data-maska=\"##\" required/>\n            <label class=\"required\" for=\"nbCarenceDays\">Jours de carence</label>\n            <ErrorMessage name=\"nbCarenceDays\" class=\"invalid-feedback\" />\n          </div>\n        </div>\n        <div class=\"col-md-1 d-flex align-items-center p-0\">\n          <i class=\"text-lighter mdi mdi-alert-circle-outline fs-16\"\n            v-tippy=\"{ content: `<i class='fs-12'>Délai en jours à compter duquel commencera la réservation pour les clients en ligne.</i>` , placement:'top' }\"  /> \n        </div>\n        \n        <!-- onlineMaxLoad -->\n        <div class=\"col-5\">\n          <div class=\"form-group\">\n            <Field type=\"tel\" class=\"form-control\" name=\"onlineMaxLoad\" :class=\"{'is-invalid': errors.onlineMaxLoad}\" v-model=\"configuration.onlineMaxLoad\"\n              v-maska data-maska=\"###\" required/>\n            <label class=\"required\" for=\"onlineMaxLoad\">Taux de charge maximum en ligne (%)</label>\n            <ErrorMessage name=\"onlineMaxLoad\" class=\"invalid-feedback\" />\n          </div>\n        </div>\n        <div class=\"col-md-1\">\n        </div>\n\n        <!-- availabilityInterval -->\n        <div class=\"col-5\">\n          <div class=\"form-group\">\n            <Field name=\"availabilityInterval\" v-model=\"configuration.availabilityInterval\" v-slot=\"{ handleChange, value}\" >\n              <CustomSelect \n                :modelValue=\"value\"\n                @value-updated=\"(value) => {handleChange(value);}\"\n                :options=\"availabilityIntervals\"\n                name=\"availabilityInterval\"\n                :error=\"errors.availabilityInterval\"\n                classStyle=\"form-control\"\n              />\n            </Field>\n            <label class=\"floating-label required\" for=\"availabilityInterval\">Intervalle de disponibilité</label>\n            <ErrorMessage name=\"availabilityInterval\" class=\"d-flex invalid-feedback\" />\n          </div>    \n        </div>\n        <div class=\"col-md-1 d-flex align-items-center p-0\">\n          <i class=\"text-lighter mdi mdi-alert-circle-outline fs-16\"\n              v-tippy=\"{ content: `<i class='fs-12'>Indique la durée d'un intervalle de disponibilité <br>\n                La modification de l'intervalle de disponibilité n'entraîne pas la mise à jour immédiate du calendrier et se fera après un laps de temps.</i>` , placement:'top' }\"  /> \n        </div>\n\n        <!-- availabilityIntervalSize -->\n        <div class=\"col-md-5\">\n          <div class=\"form-group\">\n            <Field name=\"availabilityIntervalSize\" v-model=\"configuration.availabilityIntervalSize\" v-slot=\"{ handleChange,value}\" >\n              <CustomSelect \n                :modelValue=\"value\"\n                @value-updated=\"(value) => {handleChange(value);}\"\n                :options=\"availabilityIntervalsSize\"\n                name=\"availabilityIntervalSize\"\n                :error=\"errors.availabilityIntervalSize\"\n                classStyle=\"form-control\"\n              />\n            </Field>\n            <label class=\"floating-label required\" for=\"availabilityIntervalSize\">Nombre de disponibilité par intervalle</label>\n            <ErrorMessage name=\"availabilityIntervalSize\" class=\"d-flex invalid-feedback\" />\n          </div>\n        </div>\n        <div class=\"col-md-1 d-flex align-items-center p-0\">\n          <i class=\"text-lighter mdi mdi-alert-circle-outline fs-16\"\n              v-tippy=\"{ content: `<i class='fs-12'>Indique le nombre de disponibilités par intervalle.</i>` , placement:'top' }\"  /> \n        </div>\n\n        <!-- eventDuration  -->\n        <div class=\"col-md-5\">\n\n          <div class=\"form-group\">\n            <Field name=\"eventDuration\" v-model=\"configuration.eventDuration\"  v-slot=\"{ handleChange, value}\">\n              <CustomSelect \n                :modelValue=\"value\"\n                @value-updated=\"(value) => {handleChange(value);}\"\n                :options=\"availabilityIntervals\"\n                name=\"eventDuration\"\n                :error=\"errors.eventDuration\"\n                classStyle=\"form-control\"\n              />\n            </Field>\n            <label class=\"floating-label required\" for=\"eventDuration\">Durée de l'événement</label>\n            <ErrorMessage name=\"eventDuration\" class=\"d-flex invalid-feedback\" />\n          </div>\n\n        </div>\n        <div class=\"col-md-1 d-flex align-items-center p-0\">\n          <i class=\"text-lighter mdi mdi-alert-circle-outline fs-16\"\n            v-tippy=\"{ content: `<i class='fs-12'>Durée par défaut de l'événement de réservation.</i>` , placement:'top' }\"  /> \n        </div>\n\n        <!-- dateRange if workshopStatus is validated/created so update configuration is allowed in other hand is not allowed-->\n        <div class=\"col-md-5\">\n          <div class=\"form-group\">\n            <Field type=\"tel\" class=\"form-control\" name=\"dateRange\" v-model=\"configuration.dateRange\"  :class=\"{ 'is-invalid': errors.dateRange }\" v-maska data-maska=\"###\" required/>\n            <label class=\"required\" for=\"dateRange\">Période de planning dans le future (en jour)</label>\n            <ErrorMessage name=\"dateRange\" class=\"invalid-feedback\" />\n          </div>\n        </div>\n        <div class=\"col-md-1 d-flex align-items-center p-0\">\n          <i class=\"text-lighter mdi mdi-alert-circle-outline fs-16\"\n            v-tippy=\"{ content: `<i class='fs-12'>La diminution ne va pas entraîner une réduction immédiate de la période du planning, mais elle sera applicable pour le futur.</i>` , placement:'top' }\"  /> \n        </div>\n            \n        <!-- submit button -->\n        <div class=\"text-center p-3\">\n          <button type=\"submit\" class=\"btn btn-custom btn-round\" :disabled=\"disableSubmit\" >Enregistrer</button>\n        </div>\n\n\n      </Form>\n    \n      <div v-show=\"loading\" class=\"loading reveal top-0\">\n        <span class=\"spinner-border\" role=\"status\"></span>\n      </div>\n\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'ms-2 me-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n  </div>\n\n</template>\n\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport { vMaska } from \"maska\";\nimport * as Yup from \"yup\";\nimport helperService from \"../../../services/helper.service.js\";\nimport CustomSelect from '../../common/CustomSelect.vue';\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name:\"WorkshopConfigurationUpdate\",\n  \n  directives: {maska: vMaska},\n  \n  setup(){\n\n    const carenceDayErrorMessage=\"Nombre des jours de carence entre 1...30 jours\";\n    const onlineMaxLoadErrorMessage=\"La valeur doit-être entre 1...100\";\n    const availabilityIntervalErrorMessage=\"Intervalle de disponibilité entre 1...240 minutes\";\n    const availabilityIntervalSizeErrorMessage=\"La valeur doit-être entre 1...10\";\n    const eventDurationErrorMessage=\"Durée de l'événement 1...240 minutes\";\n    const dateRangeErrorMessage=\"Période de planning dans le futur entre 1...180 jours\";\n\n    const updateConfigSchema = Yup.object().shape({\n      nbCarenceDays: Yup.number().min(1, carenceDayErrorMessage).max(30, carenceDayErrorMessage)\n          .required(carenceDayErrorMessage).typeError(''),\n      onlineMaxLoad: Yup.number().min(1, onlineMaxLoadErrorMessage).max(100, onlineMaxLoadErrorMessage)\n          .required(onlineMaxLoadErrorMessage).typeError(onlineMaxLoadErrorMessage),\n      availabilityInterval: Yup.number().min(1, availabilityIntervalErrorMessage).max(240, availabilityIntervalErrorMessage)\n          .required(availabilityIntervalErrorMessage).typeError(''),\n      availabilityIntervalSize: Yup.number().min(1, availabilityIntervalSizeErrorMessage).max(10, availabilityIntervalSizeErrorMessage)\n          .required(availabilityIntervalSizeErrorMessage).typeError(availabilityIntervalSizeErrorMessage),\n      eventDuration: Yup.number().min(1, eventDurationErrorMessage).max(240, eventDurationErrorMessage)\n          .required(eventDurationErrorMessage).typeError(''),\n      dateRange: Yup.number().min(1, dateRangeErrorMessage).max(180, dateRangeErrorMessage)\n          .required(dateRangeErrorMessage).typeError(''),\n    });\n\n    const availabilityIntervalsSize=[\n      {text:\"1\", value:1},\n      {text:\"2\", value:2},\n      {text:\"3\", value:3},\n      {text:\"4\", value:4},\n      {text:\"5\", value:5},\n      {text:\"6\", value:6},\n      {text:\"7\", value:7},\n      {text:\"8\", value:8},\n      {text:\"9\", value:9},\n      {text:\"10\", value:10},\n    ];\n\n    const availabilityIntervals=[\n      {text:\"15 min\", value:15},\n      {text:\"30 min\", value:30},\n      {text:\"45 min\", value:45},\n      {text:\"1h\", value:60},\n      {text:\"1h15min\", value:75},\n      {text:\"1h:30min\", value:90},\n      {text:\"1h:45min\", value:105},\n      {text:\"2h\", value:120},\n      {text:\"2h:15min\", value:135},\n      {text:\"2h:30min\", value:150},\n      {text:\"2h:45min\", value:165},\n      {text:\"3h\", value:180},\n      {text:\"3h:15min\", value:195},\n      {text:\"3h:30min\", value:210},\n      {text:\"3h:45min\", value:225},\n      {text:\"4h\", value:240}\n    ];\n\n    return {updateConfigSchema, availabilityIntervals, availabilityIntervalsSize};\n  },\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    CustomSelect,\n    CustomMessage\n  },\n\n  props:{\n    companyCode: {\n      type: String,\n    },\n    workshopCode: {\n      type: String,\n    },\n    workshopStatus: {\n      type: String,\n    },\n  },\n\n  data() {\n    return {\n      loading: false,\n      message:\"\",\n      configuration:{},\n      disableSubmit : false,\n    };\n  },\n\n  created(){\n    this.loadConfig();\n  },\n\n  methods: {\n\n    formatTime : helperService.formatTime,\n\n    loadConfig(){\n\n      this.loading=true;\n      let confReq={\n        companyCode:this.companyCode,\n        workshopCode:this.workshopCode,\n      };\n\n      let loadConfigurationReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(confReq),\n      };\n\n      fetch(\"/api/configuration/get-configuration\", loadConfigurationReq).then( async response => {\n        if(response.status == 400){\n          this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n          return;\n        }\n        if (response.ok){\n          this.configuration = await response.json();\n          this.configuration.onlineMaxLoad = this.configuration.onlineMaxLoad * 100;\n          this.loading = false;\n          return;\n        } \n        return Promise.reject(response);\n        \n      })\n      .catch((response) => {\n        this.loading = false; \n        if (response.status == 401) {\n          this.$authTokenService.refreshToken(this.loadConfig.bind(this));\n          return;\n        }\n        this.message = this.$authTokenService.handleErrorResponse(response);\n      });\n    },\n\n    updateConfiguration(values) {\n      this.disableSubmit = true;\n      this.loading = true;\n\n      values.workshopCode = this.workshopCode;\n      values.companyCode = this.companyCode;\n      values.onlineMaxLoad = values.onlineMaxLoad/100;\n        \n      let updateConfigurationReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(values),\n      };\n\n      fetch(\"/api/configuration/update\", updateConfigurationReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            this.disableSubmit = false;\n            return;\n          }\n          if (response.ok){\n            this.disableSubmit = false;\n            this.loading = false;\n            return;\n          } \n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          this.loading = false;\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.updateConfiguration.bind(this, values));\n            return;\n          }\n          this.disableSubmit = false;\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n      }\n    \n  },\n\n}\n</script>\n\n<style scoped>\n\n</style>","import { render } from \"./WorkshopConfigurationUpdate.vue?vue&type=template&id=64cb321c\"\nimport script from \"./WorkshopConfigurationUpdate.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopConfigurationUpdate.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./WorkshopConfiguration.vue?vue&type=template&id=8591b044\"\nimport script from \"./WorkshopConfiguration.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopConfiguration.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n  <div class=\"card\">\n\n    <div class=\"media-list media-list-sm media-list-divided position-relative form-type-material\" v-if=\"regularWeeksItems.length !=0\"  >\n\n      <div class=\"text-orange mx-auto w-50 mt-2 p-1 text-center fs-15\" role=\"alert\" v-if=\"existedTimeSlot == false\">\n        <i class=\"mdi mdi-alert-outline ms-auto fs-17\"/> Veuillez ajouter au moins un créneau d'ouverture\n      </div>\n\n      <div class=\" media flexbox align-items-center fs-15\" v-for=\"regularWeek in regularWeeksItems\" :key=\"regularWeek.dayOfWeek\">\n        \n        <div class=\"col-1\">\n          <input type=\"checkbox\" class=\"ms-2\" :name='`${regularWeek.dayOfWeek}`' @click=\"addDayToApplyCopy(regularWeek.dayOfWeek)\"\n          :ref='`${regularWeek.dayOfWeek}`' :checked=\"isUnchecked(regularWeek.dayOfWeek)\" />\n        </div>\n\n        <!-- day -->\n        <div class=\"col-3 text-center\">\n          <label class=\"text-muted \"> {{ dayInFrenchTranslator(regularWeek.dayOfWeek)}}</label>\n        </div>\n\n        <div class=\"col-5\">\n\n          <!-- if there is no timeSlot -->\n          <span class=\"text-muted\" v-if=\"regularWeek.openningTimeSlots.length <= 0\"> Indisponible </span>\n          \n          <!-- time slot generator  tag as div -->\n          <TransitionGroup tag=\"div\">\n            <div v-for=\"(item, index)  in regularWeek.openningTimeSlots\" :key=\"index\" class=\"row\">\n              \n              <div class=\"col-3\" >\n                <TimeInput \n                  :model-value=\"item.startTime\"\n                  v-bind:name=\"regularWeek.dayOfWeek+index+1\" \n                  v-on:value-updated=\"item.startTime = $event\"\n                  required/> \n              </div>\n\n              <div class=\"col-auto m-0 mt-2\">\n                <i class=\" text-muted mdi mdi-minus pt-4\"/>  \n              </div>\n              \n              <div class=\"col-3\" >\n                <TimeInput \n                  :model-value=\"item.endTime\"\n                  v-on:value-updated=\"item.endTime = $event\" \n                  v-bind:name=\"regularWeek.dayOfWeek+index+1\" \n                  @focusout=\"insertRegularWeek(regularWeek, index)\"\n                  required/> \n              </div>\n\n              <div class=\"col-2 delete pt-2 pb-2 cursor-pointer text-center\">\n                <span id=\"delete\" @click=\"remove(regularWeek, item)\"\n                  v-tippy=\"{ content: '<small>Supprimer</small>' , placement:'right'}\">\n                  <i class=\"mdi mdi-delete-outline\"  />\n                </span>\n              </div>\n            \n              <div v-show=\"item.errorMessage != undefined\" class=\"invalid-time\">\n                  {{item.errorMessage}}\n              </div> \n              \n            </div>\n          </TransitionGroup>\n\n        </div>\n\n        <div class=\"col-2\">\n          <span \n            v-tippy=\"{ content: '<small>Volume horaire </small>' , placement:'top'}\"\n            class=\"badge badge-pill badge-box mx-auto text-muted\" v-show=\"regularWeek.dayTimeSpace != undefined && regularWeek.dayTimeSpace >0 \">\n              {{formatTime(regularWeek.dayTimeSpace)}}\n          </span>\n        </div>\n\n        <!-- actions -->\n        <div class=\"col-2\">\n            <span id=\"plus\" @click=\"insert(regularWeek)\"\n            v-tippy=\"{ content: `<small>Ajouter un créneau d'ouverture </small>` , placement:'top'}\">\n              <i class=\"mdi mdi-plus cursor-pointer fs-17\" />\n            </span>\n\n            \n            <span v-if=\"regularWeek.openningTimeSlots && regularWeek.openningTimeSlots.length>0\"\n              @click=\"copyAndApply(regularWeek)\" v-tippy=\"{ content: `<small>Dupliquer les créneaux pour les jours sélectionnés</small>` , placement:'top'}\" >\n              <i class=\"mdi mdi-content-copy ms-2\"/>\n            </span> \n        </div>\n\n      </div>\n\n    </div>\n\n    <!-- custom message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3 ms-2 me-2'\" :message=\"message\" :type=\"successfulUpdated ? 'success' : 'error'\" @close=\"this.message = ''\" />\n\n  </div>\n  \n</template>\n\n<script>\nimport helperService from \"../../../services/helper.service.js\";\nimport moment from \"moment\";\nimport TimeInput from \"../../common/TimeInput.vue\"\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"WorkshopRegularWeek\",\n  \n  emits: [\"regular-week-updated\"],\n\n  components: {\n    TimeInput,\n    CustomMessage\n  },\n\n  data() {\n    return {\n      \n      regularWeeksItems: this.regularWeeks,\n      message: \"\",\n      successfulUpdated: false,\n      stratTime: \"\",\n      endTime: \"\",\n      existedTimeSlot: false,\n      daysToApplyCopy:[]\n\n    };\n  },\n  \n  props: {\n    regularWeeks: {\n      type: Object,\n      default() {},\n    },\n    companyCode: {\n      type: String,\n    },\n    workshopCode: {\n      type: String,\n    },\n  },\n\n  created() {\n    this.existedTimeSlot = this.existingTimeSlot();\n  },\n\n  methods: {\n\n    isValidFormat(time){\n      return time.match(\"^([0-1]{1}[0-9]{1}|[2]{1}[0-3]{1}):[0-5]{1}[0-9]{1}$\") != null;\n    },\n\n    \n    isUnchecked(day){\n      if(this.daysToApplyCopy.indexOf(day)===-1)\n        return false;\n        else return true;\n    },\n    removeItemOnce( value) {\n    var index = this.daysToApplyCopy.indexOf(value);\n    if (index > -1) \n      this.daysToApplyCopy.splice(index, 1);\n    },\n    // add to days will th copy will be applied\n    addDayToApplyCopy(newItem){\n     this.daysToApplyCopy.indexOf(newItem) === -1 ? this.daysToApplyCopy.push(newItem) : this.removeItemOnce(newItem);\n    },\n\n    formatTime : helperService.formatTime,\n\n    formatDate(value, pattern) {\n      return moment(value, pattern);\n    },\n\n    // if there is time slot\n    existingTimeSlot() {\n      for (var regular in this.regularWeeksItems) {\n        if (this.regularWeeksItems[regular].openningTimeSlots.length > 0)\n          return true;\n      }\n      return false;\n    },\n\n    // day translator in french\n    dayInFrenchTranslator(day){\n      switch(day){\n        case 'MONDAY':    return 'LUN';\n        case 'TUESDAY':   return 'MAR';\n        case 'WEDNESDAY': return 'MER';\n        case 'THURSDAY':  return 'JEU';\n        case 'FRIDAY':    return 'VEN';\n        case 'SATURDAY':  return 'SAM';\n        case 'SUNDAY':    return 'DIM';\n      }\n    },\n\n    isValidTimeSlot(regularWeek, currentTimeSlot, index){\n\n       if (currentTimeSlot.startTime == \"\") {\n        regularWeek.openningTimeSlots[index].errorMessage = \"Temps de début est vide\";\n        return false;\n      }\n\n      if (currentTimeSlot.startTime  && !this.isValidFormat(currentTimeSlot.startTime) ) {\n        regularWeek.openningTimeSlots[index].errorMessage = \"Format d'heure invalide\";\n        return false;\n      }\n\n      if (currentTimeSlot.endTime == \"\") {\n        regularWeek.openningTimeSlots[index].errorMessage = \"Temps de fin est vide\" ;\n        return false;\n      }\n\n      if (currentTimeSlot.endTime  && !this.isValidFormat(currentTimeSlot.endTime) ) {\n        regularWeek.openningTimeSlots[index].errorMessage = \"Format d'heure invalide\";\n        return false;\n      }\n\n      if (currentTimeSlot.startTime == currentTimeSlot.endTime) {\n        regularWeek.openningTimeSlots[index].errorMessage = \"Heure de fin doit être strictement supérieure à l'heure de début\";\n        return false;\n      }\n\n      if (this.formatDate(currentTimeSlot.startTime, \"HH:mm\").isAfter(this.formatDate(currentTimeSlot.endTime, \"HH:mm\"))) {\n        regularWeek.openningTimeSlots[index].errorMessage = \"Heure de fin doit être strictement supérieure à l'heure de début\";\n        return false;\n      }\n\n      return true;\n    },\n\n    // if all time slot are valid\n    isValidRegularWeek(openningTimeSlots){\n\n      for(var timeSlot in openningTimeSlots ){\n        if(openningTimeSlots[timeSlot].errorMessage !== undefined && openningTimeSlots[timeSlot].errorMessage != \"\" )\n          return false;\n        if(openningTimeSlots[timeSlot].startTime === \"\" || openningTimeSlots[timeSlot].endTime === \"\")\n            return false;\n      }\n      \n      return true;\n    },\n\n     /* \n     * dates validations : \n     * 1. startTime < endTime  \n     * 2. startTime < endTime < startTime(n+1) < endTime(n+1)  \n     * 3. startTime != startTime(n-1)\n     */\n    insertRegularWeek(regularWeek , index ) {\n\n     regularWeek.openningTimeSlots[index].errorMessage = '';\n     var duplicatedTimeSlot=0;\n     var currentTimeSlot = regularWeek.openningTimeSlots[index];\n\n     if( this.isValidTimeSlot(regularWeek, currentTimeSlot, index)==false)\n        return false;\n      \n        // validated all timeSlots\n        for(var timeSlot in regularWeek.openningTimeSlots){\n\n          if (this.formatDate(regularWeek.openningTimeSlots[timeSlot].startTime, \"HH:mm\").isSame(this.formatDate( regularWeek.openningTimeSlots[index].startTime, \"HH:mm\"))) {\n              duplicatedTimeSlot+=1;\n              continue;\n          }\n          else\n          if ( this.formatDate(regularWeek.openningTimeSlots[index].startTime, \"HH:mm\").isBetween( \n               this.formatDate(regularWeek.openningTimeSlots[timeSlot].startTime, \"HH:mm\"), \n               this.formatDate(regularWeek.openningTimeSlots[timeSlot].endTime, \"HH:mm\"))\n               ||\n               this.formatDate(regularWeek.openningTimeSlots[index].endTime, \"HH:mm\").isBetween( \n               this.formatDate(regularWeek.openningTimeSlots[timeSlot].startTime, \"HH:mm\"), \n               this.formatDate(regularWeek.openningTimeSlots[timeSlot].endTime, \"HH:mm\"))\n              ){\n\n                regularWeek.openningTimeSlots[index].errorMessage = \"Erreur l'intervalle existe déjà!\";\n                return false;\n          }\n        }\n\n        // Duplicated timeSlot \n        if(duplicatedTimeSlot>1){\n          regularWeek.openningTimeSlots[index].errorMessage = \"Erreur l'intervalle existe déjà!\";\n          return false;\n        }\n\n        if (this.isValidRegularWeek(regularWeek.openningTimeSlots) == true)\n          this.handleUpdate(regularWeek); \n\n    },\n    \n    handleUpdate(regularWeek) {\n\n      let updateRegularWeekReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(regularWeek),\n      };\n\n      fetch(\"/api/regular-week/update-regular-week\", updateRegularWeekReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok) {\n            this.regularWeeksItems = await response.json();\n            this.$emit(\"regular-week-updated\");\n            this.existedTimeSlot = this.existingTimeSlot();\n            this.successfulUpdated = true;\n            this.message = \"La semaine régulière a été mis à jour\";\n            setTimeout(() => (this.successfulUpdated = false, this.message = ''), 4000);\n            return;\n          }\n          return Promise.reject(response);\n        \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.handleUpdate.bind(this, regularWeek));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          setTimeout(() => (this.message = ''), 4000);\n        });\n        \n    },\n\n    // insert inputs start time and end time\n    insert(item) {\n\n      const indexOfDay = this.regularWeeksItems.indexOf(item);\n      const i = this.regularWeeksItems[indexOfDay].openningTimeSlots.length + 1;\n\n      this.regularWeeksItems[indexOfDay].openningTimeSlots.splice(i, 0, {\n        startTime: \"\",\n        endTime: \"\",\n      });\n    },\n\n    // copy containt not implemented yet\n    copyAndApply(regularWeek) {\n\n      const openningTimeSlotsToCopy = regularWeek.openningTimeSlots;\n      //console.log('----->', \" weeks\", this.daysToApplyCopy, \" openningTimeSlotsToCopy\", openningTimeSlotsToCopy);\n      for(const index in this.regularWeeksItems){\n        if( this.daysToApplyCopy.indexOf(this.regularWeeksItems[index].dayOfWeek) != -1 ){\n          //console.log('---index-->',index, \" weeks\",);\n          this.regularWeeksItems[index].openningTimeSlots = openningTimeSlotsToCopy;\n           if (this.isValidRegularWeek(this.regularWeeksItems[index].openningTimeSlots) == true)\n            this.handleUpdate(this.regularWeeksItems[index]); \n        }\n      }\n      this.daysToApplyCopy = [];\n    },\n\n    // remove time slots from time slots and update BD\n    remove(regularWeek, items) {\n\n      const indexOfDay = this.regularWeeksItems.indexOf(regularWeek);\n      const timeSolotIndex =this.regularWeeksItems[indexOfDay].openningTimeSlots.indexOf(items);\n\n      if (indexOfDay > -1 && timeSolotIndex > -1) {\n        if (this.regularWeeksItems[indexOfDay].openningTimeSlots.length == 1) {\n           this.regularWeeksItems[indexOfDay].defaultCapacity = 0;\n        }\n        \n        this.regularWeeksItems[indexOfDay].openningTimeSlots.splice(timeSolotIndex, 1);\n      }\n\n      if (this.isValidRegularWeek(regularWeek.openningTimeSlots) == true){\n          this.handleUpdate(regularWeek);\n      }\n    },\n  },\n};\n</script>\n\n<style scoped>\n.invalid-time {\n  color: #f96868;\n  font-size: 13px;\n  font-weight: 300;\n  letter-spacing: 0.5px;\n  margin: 0;\n  margin-left: 0px;\n}\n</style>\n","<template>\n\n\t<div class=\"time-input position-relative mx-auto\">\n\t\t<input type=\"text\" v-model=\"time\" :name=\"name\" class=\"form-control\" :class=\"{'is-invalid': time && !isTimeFormat}\" \n\t\tv-maska data-maska=\"##:##\" @blur=\"timeUpdated\" @input=\"textSelected($event)\" placeholder=\"-- : --\" required/> \n\t\t<span class=\"mdi mdi-clock-outline\"></span>\n\n\t</div>\n\n</template>\n\n<script>\n\nimport { vMaska } from \"maska\";\nexport default {\n\n\tname:\"TimeInput\",\n\n\tdirectives: {maska: vMaska},\n\n\temits:['value-updated'],\n\n\tprops:{\n    name: { required: true },\n\t\tmodelValue: { required: true },\n  },\n\n\tdata(){\n\t\treturn {\n\t\t\ttime: this.modelValue,\n\t\t\tisTimeFormat: true\n\t\t};\n\t},\n\n\tmethods:{\n\n\t\ttimeUpdated(){\n\t\t\tthis.isTimeFormat = this.time.match(\"^([0-1]{1}[0-9]{1}|[2]{1}[0-3]{1}):[0-5]{1}[0-9]{1}$\") != null;\n\t\t\tthis.$emit(\"value-updated\", this.time);\n\t\t},\n\n\t\ttextSelected($event){\n\t\t\tvar value = $event.target.value;\n\n\t\t\tswitch(value.length){\n\t\t\t\tcase 1: \n\t\t\t\t\tvalue = value[0].replace(/^[3-9]+|[^\\d]/g, '');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2: \n\t\t\t\t\tif(value > 23){\n\t\t\t\t\t\tvalue = value[0];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase 4: \n\t\t\t\t\tif(value[3] >5 ){\n\t\t\t\t\t\tvalue = value[0]+value[1]+\":\";\n\t\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.time = value;\n\t\t}\n\n\t}\n\n}\n</script>\n\n<style scoped>\n\n.time-input{\n\twidth: 70%;\n}\n.time-input span{\n\tposition: absolute;\n\tright: 0px;\n\ttop: 5px;\n}\n\n</style>","import { render } from \"./TimeInput.vue?vue&type=template&id=46826a22&scoped=true\"\nimport script from \"./TimeInput.vue?vue&type=script&lang=js\"\nexport * from \"./TimeInput.vue?vue&type=script&lang=js\"\n\nimport \"./TimeInput.vue?vue&type=style&index=0&id=46826a22&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-46826a22\"]])\n\nexport default __exports__","import { render } from \"./WorkshopRegularWeek.vue?vue&type=template&id=443f887c&scoped=true\"\nimport script from \"./WorkshopRegularWeek.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopRegularWeek.vue?vue&type=script&lang=js\"\n\nimport \"./WorkshopRegularWeek.vue?vue&type=style&index=0&id=443f887c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-443f887c\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"card\">\n\n    <div class=\"text-orange mx-auto w-50 mt-2 p-1 text-center fs-15\" role=\"alert\" v-if=\" existingDefaultCapacity == false\">\n      <i class=\"mdi mdi-alert-outline me-2 fs-17\"/>Veuillez ajouter au moins une disponibilité\n    </div>\n\n    <div class=\"position-relative media-list media-list-sm media-list-divided\">\n\n      <!-- show and update onlien charge -->\n      <div class=\"media flexbox align-items-center float-right fs-15\" v-for=\"regularWeek in regularWeeksItems\" :key=\"regularWeek.dayOfWeek\" >\n          \n          <!-- day -->\n          <div class=\"col-2 text-muted text-center\">\n            <span>{{ \" \" + dayInFr(regularWeek.dayOfWeek)}}</span>\n          </div>\n\n          <!-- time slots -->\n          <div class=\"col-2 text-center\">\n            <span class=\"text-muted\" v-if=\"regularWeek.openningTimeSlots.length==0\">Indisponible</span>\n            <div v-else>\n              <div v-for=\"item in regularWeek.openningTimeSlots\" :key=\"item\">\n                  <span class=\"text-muted p-2\">{{item.startTime}}</span>\n                  <i class=\"text-muted mdi mdi-minus\" />\n                  <span class=\"text-muted p-2\">{{item.endTime}}</span>\n              </div>\n            </div>\n          </div>\n\n          <div class=\"col-1 text-center\">\n            <span v-tippy=\"{ content: '<small>Volume horaire de la journée </small>' , placement:'top'}\"\n              class=\"badge badge-pill badge-box mx-auto text-muted fs-11\" v-show=\"regularWeek.dayTimeSpace != undefined && regularWeek.dayTimeSpace >0 \">\n              {{formatTime(regularWeek.dayTimeSpace)}}\n            </span>\n          </div>\n\n          <!-- time picker -->\n          <div class=\"col-3\" @mouseover=\"selectedDay=regularWeek.dayOfWeek\" v-if=\"regularWeek.openningTimeSlots.length>0\">\n            <TimePicker  :inputMinute=\"regularWeek.defaultCapacity\" v-on:minute-updated=\"updateCapacity\" />\n          </div>\n\n          <div class=\"col-3\" v-if=\"regularWeek.openningTimeSlots.length==0\">\n          </div>\n\n          <div class=\"col-1\">\n              <i class=\"text-lighter mdi mdi-alert-circle-outline fs-18\" data-bs-html=\"true\" v-if=\"regularWeek.openningTimeSlots.length>0\"\n                v-tippy=\"{ content: `<i class='fs-12'>La disponibilité journalière par défaut sera utilisée si aucun utilisateur n'est attaché au planning de l'atelier</i>` , placement:'top' }\"  /> \n          </div>\n          \n          <!-- label of default capacity -->\n          <div class=\"col-3\">\n              <div v-if=\"regularWeek.openningTimeSlots.length>0\"> \n                <span class=\"text-muted fs-13\"> Disponibilité journalière : </span>\n                <span class=\"badge badge-pill bg-gray ms-2 fs-15\">{{ formatTime(regularWeek.defaultCapacity) }}</span>\n              </div>\n          </div>\n\n      </div>\n      \n      <!-- loader -->\n      <div v-if=\"loading\" class=\"loading reveal top-0\">\n        <span class=\"spinner-border\" role=\"status\"></span>\n      </div>\n\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3 ms-2 me-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n    \n  </div>\n\n</template>\n\n<script>\nimport HelperService from \"../../../services/helper.service.js\";\nimport TimePicker from \"../../common/TimePicker.vue\";\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"WorkshopRegularWeekAvailability\",\n\n  emits:[\"regular-weeks-updated\"],\n\n  components: {\n    TimePicker,\n    CustomMessage\n  },\n\n  data() {\n    \n    return {\n      selectedDay: \"\",\n      regularWeeksItems: this.regularWeeks,\n      selectedDefaultCapacity: \"\",\n      loading: false,\n      message: \"\",\n       \n      };\n    },\n\n  props: {\n    regularWeeks: {\n      type: Object,\n      default() {},\n    },\n    companyCode: {\n      type: String,\n    },\n    workshopCode: {\n      type: String,\n    },\n  },\n  computed:{\n    // regular week contains defaultCapacity >0\n    existingDefaultCapacity(){\n      for(var regular in this.regularWeeksItems){\n        if(this.regularWeeksItems[regular].defaultCapacity>0)\n          return true;\n      }\n      return false;\n    },\n  },\n\n  created() {\n     this.regularWeeksItems = this.regularWeeks;\n  },\n  \n  methods: {\n\n    formatTime : HelperService.formatTime,\n\n    //day french\n    dayInFr(cases) {\n      switch (cases) {\n        case \"MONDAY\":\n          return \"LUN\";\n        case \"TUESDAY\":\n          return \"MAR\";\n        case \"WEDNESDAY\":\n          return \"MER\";\n        case \"THURSDAY\":\n          return \"JEU\";\n        case \"FRIDAY\":\n          return \"VEN\";\n        case \"SATURDAY\":\n          return \"SAM\";\n        case \"SUNDAY\":\n          return \"DIM\";\n      }\n    },\n    \n    // output catch of time picker in order to update defaultCapacity\n    updateCapacity(defaultCapacity) {\n      if (this.selectedDay != \"\") {\n        this.selectedDefaultCapacity = defaultCapacity;\n        this.updateDefaultCapacity();\n      }\n\n    },\n\n    /* update */\n    updateDefaultCapacity() {\n      this.loading = false;\n      let updateDefaultCapacity = {\n        companyCode: this.regularWeeks[0].companyCode,\n        workshopCode: this.regularWeeks[0].workshopCode,\n        dayOfWeek: this.selectedDay,\n        defaultCapacity: this.selectedDefaultCapacity,\n      };\n\n      let updateRegularWeekReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(updateDefaultCapacity),\n      };\n\n      fetch(\"/api/regular-week/update-default-capacity\", updateRegularWeekReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok) {\n            this.regularWeeksItems=await response.json();\n            this.$emit(\"regular-weeks-updated\", this.regularWeeksItems);\n            this.loading = false;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.updateDefaultCapacity.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n\n        });\n    },\n  },\n\n\n};\n</script>\n\n<style scoped>\n\n</style>\n","import { render } from \"./WorkshopRegularWeekAvailability.vue?vue&type=template&id=c2d51554\"\nimport script from \"./WorkshopRegularWeekAvailability.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopRegularWeekAvailability.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n  <div class=\"card\">\n\n    <div v-if=\"prestations.length <= 0\" class=\"card text-center\">\n      <div class=\"fs-16 fw-600 mt-4\">L'atelier ne comporte aucune prestation</div>\n      <div class=\"mdi mdi-clipboard-alert-outline fs-60 m-5\"/>\n    </div>\n\n    <div class=\"text-orange mx-auto w-50 mt-2 p-1 text-center fs-15\" role=\"alert\" v-if=\"prestations.length > 0 && enbledPrestation() == false\">\n      <i class=\"mdi mdi-alert-outline me-2 fs-17\"/>Veuillez ajouter au moins une prestation\n    </div>\n\n    <div class=\"card-body\" v-if=\"prestations.length > 0\">\n\n      <!-- list of prestations -->\n      <transition-group tag=\"div\" mode=\"flip-list\" name=\"prestation-list\"  class=\"media-list media-list-bordered media-list-divided media-list-md\">\n        <div class=\"media flexbox align-items-center cursor-pointer \" v-for=\"prestation in prestations\" :key=\"prestation.name\" @click=\"selectPrestation(prestation)\">\n          \n          <div class=\"col-10 ms-3 d-flex align-items-center\">\n            \n            <span :class=\"`fs-30 ${prestation.icon} me-4 `\" />\n            <span class = \"fs-16\" v-tippy=\"{ content: `<small>Prestation</small>` , placement:'right' }\" >\n            {{prestation.name}}\n            </span>\n\n          </div>\n\n          <div class=\"col-1 text-green fw-600 me-2\" v-if=\"prestation.status == 'ENABLED' \"> Activé</div>\n          <div class=\"col-1 text-red fw-600 me-2\" v-else-if=\"prestation.status == 'DISABLED'\"> Désactivé</div>\n          \n          <div class=\"col-1 fs-22\" v-if=\"prestation.status == 'ENABLED'\"> <i class=\"mdi mdi-check\"></i> </div>\n          <div class=\"col-1 fs-22\" v-else-if=\"prestation.status == 'DISABLED'\" > <i class=\"mdi mdi-close\"></i> </div>\n        \n        </div>\n      </transition-group>\n\n      <!-- error message -->\n      <CustomMessage v-if=\"message && successful == false\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n      </div>\n  </div>\n\n</template>\n\n<script>\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name:\"WorkshopPrestationCategory\",\n\n  emits: [\"prestation-enabled\"],\n\n  components: {\n    CustomMessage\n  },\n\n  props:{\n\n    companyCode:{\n      type:String,\n      default(){\n        return \"\";\n      }\n    },\n\n    workshopCode:{\n      type:String,\n      default(){\n        return \"\";\n      }\n    }\n\n  },\n\n  data(){\n    return {\n      prestations:[],\n      message: \"\",\n      successful: false\n    }\n  },\n\n  created(){\n    this.loadWorkshopPrestationCategory();\n  },\n\n  methods:{\n\n    enbledPrestation(){\n      for(var index in this.prestations)\n        if(this.prestations[index].status == 'ENABLED')\n        return true;\n      return false;\n    },\n\n    selectPrestation(prestation){\n\n      if(prestation.status == 'ENABLED'){\n        this.disableWorkshopPrestationCategory(prestation);\n\n        for(var presta in this.prestations)\n          if(prestation == this.prestations[presta])\n              this.prestations[presta].status = 'DISABLED';\n\n        this.sortingTable();\n\n      }else if(prestation.status == 'DISABLED'){\n        this.enableWorkshopPrestationCategory(prestation);\n        for(var index in this.prestations)\n          if(prestation == this.prestations[index])\n              this.prestations[index].status = 'ENABLED';\n        this.sortingTable();\n      }\n      // sorting alerte \n      this.$emit(\"prestation-enabled\", this.enbledPrestation());\n    },\n\n    disableWorkshopPrestationCategory(prestation){\n      \n      let prestationReq = {\n        method: \"PUT\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n            Authorization: this.$authTokenService.authToken(),\n        },\n        body:JSON.stringify({\n          prestationCode:prestation.workshopPrestationCode,\n          status : prestation.status\n        })\n      };\n\n      fetch(\"/api/workshop-prestation-category/disable\", prestationReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if(response.ok) {\n            this.message = await response.text();\n            this.successful = true;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.disableWorkshopPrestationCategory.bind(this, prestation));\n            return;\n          }\n          this.successful = false;\n          this.message = this.$authTokenService.handleErrorResponse(response);\n\n        });\n    },\n\n    enableWorkshopPrestationCategory(prestation){\n\n        let prestationReq = {\n          method: \"PUT\",\n          headers: {\n            \"Content-Type\": \"application/json\",\n             Authorization: this.$authTokenService.authToken(),\n          },\n          body: JSON.stringify({\n            prestationCode:prestation.workshopPrestationCode,\n            status : prestation.status\n            })\n        };\n\n      fetch(\"/api/workshop-prestation-category/enable\", prestationReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok) {\n            this.message = await response.text();\n            this.successful = true;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.enableWorkshopPrestationCategory.bind(this, prestation));\n            return;\n          }\n          this.successful = false;\n          this.message = response.status + \" \" + response.statusText;\n        });\n\n    },\n\n    sortingTable(){\n      this.prestations.sort((a, b) => {\n        if (a.status > b.status) \n          return -1;\n        return a.status < b.status ? 1 : 0;\n      });\n    },\n\n    loadWorkshopPrestationCategory(){\n\n      let prestationReq = {\n          method: \"GET\",\n          headers: {\n            \"Content-Type\": \"application/json\",\n             Authorization: this.$authTokenService.authToken(),\n          },\n        };\n\n      fetch(\"/api/workshop-prestation-category/\"+this.companyCode+\"/\"+this.workshopCode, prestationReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok) {\n            let data = await response.json();\n            this.prestations = data;\n            this.$emit(\"prestation-enabled\", this.enbledPrestation());\n            this.sortingTable();\n            this.successful = true;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadWorkshopPrestationCategory.bind(this));\n            return;\n          }\n          this.successful = false;\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    }\n\n  }\n}\n</script>\n\n<style scoped>\n\n.prestation-list-move {\n  transition: all 1s\n}\n\n</style>","import { render } from \"./WorkshopPrestationCategory.vue?vue&type=template&id=34c9e3c2&scoped=true\"\nimport script from \"./WorkshopPrestationCategory.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopPrestationCategory.vue?vue&type=script&lang=js\"\n\nimport \"./WorkshopPrestationCategory.vue?vue&type=style&index=0&id=34c9e3c2&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-34c9e3c2\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"card\">\n    \n    <div class=\"media-list media-list-sm media-list-divided\">\n\n      <!-- show and update charge  test -->\n      <div class=\"media float-right fs-15 pb-3\" v-for=\"regularWeek in regularWeeks\" :key=\"regularWeek.dayOfWeek\" >\n      \n        <div class=\"flexbox align-items-center\">\n\n          <!-- day -->\n          <div class=\"col-2 text-muted text-center\">\n            <span>{{ \" \" + dayInFr(regularWeek.dayOfWeek)}}</span>\n          </div>\n\n          <!-- Time slots -->\n          <div class=\"col-2 text-center\">\n            <span class=\"text-muted\" v-if=\"regularWeek.openningTimeSlots.length==0\">Indisponible</span>\n            <div v-else>\n              <div v-for=\"item in regularWeek.openningTimeSlots\" :key=\"item\">\n                <span class=\"text-muted p-2\">{{item.startTime}}</span>\n                <i class=\"text-muted mdi mdi-minus\" />\n                <span class=\"text-muted p-2\">{{item.endTime}}</span>\n              </div>\n            </div>\n          </div>\n\n          <div class=\"col-1 text-center\">\n            <span v-tippy=\"{ content: '<small>Volume horaire de la journée </small>' , placement:'top'}\"\n              class=\"badge badge-pill badge-box mx-auto text-muted fs-11\" v-show=\"regularWeek.dayTimeSpace != undefined && regularWeek.dayTimeSpace >0 \">\n              {{formatTime(regularWeek.dayTimeSpace)}}\n            </span>\n          </div>\n\n          <div class=\"col-2\"></div>\n\n          <div class=\"col-1\">\n            <i v-if=\"regularWeek.openningTimeSlots.length>0\" \n              class=\"text-lighter mdi mdi-alert-circle-outline fs-18\"\n              v-tippy=\"{ content: `<i class='fs-12'>Disponibilité journalière de l'ensemble des utilisateurs attachés au planning de l'atelier</i>` , placement:'top' }\"  /> \n          </div>\n\n          <!-- label of defaultCapacity -->\n          <div class=\"col-3\">\n            <div v-if=\"regularWeek.openningTimeSlots.length>0\"> \n              <span class=\"text-muted fs-13\"> Disponibilité journalière : </span>\n              <span class=\"badge badge-pill bg-gray ms-2 fs-15\">{{ formatTime(regularWeek.defaultCapacity) }}</span>\n            </div>\n          </div>\n\n          <div class=\"col-1 float-end\">\n          \n            <i v-if=\"regularWeek.openningTimeSlots.length>0\" \n              :class=\"['text-lighter', 'fs-18', 'cursor-pointer', userDetailsVisible[regularWeek.dayOfWeek] ? 'mdi mdi-chevron-up' : 'mdi mdi-chevron-down']\"\n              v-tippy=\"{ content: `<i class='fs-12'>Voir les détails par utilisateur</i>` , placement:'top' }\"  \n              @click=\"toggleUserDetails(regularWeek.dayOfWeek)\"/> \n          \n          </div>\n\n        </div>\n\n        <div v-if=\"userDetailsVisible[regularWeek.dayOfWeek]\">\n          <hr>\n\n          <div class=\"media-list media-list-xs w-75 mx-auto bg-gray-lighter\">\n            \n            <div class=\"media flexbox align-items-center\" v-for=\"user in users\" :key=\"user.userCode\">\n\n              <!-- user -->\n              <div class=\"col-4 me-3 text-truncate\">\n                <span>{{user.userFirstName}} {{user.userLastName}}</span>\n                <span class=\"badge bg-light text-dark ms-3 fs-10\">{{user.roleValue}}</span>\n              </div>\n\n              <!-- effective capacity -->\n              <div class=\"col-2 text-center\">\n                <span v-if=\"user.configuration.status == 'ENABLED'\" class=\"badge badge-pill bg-green fs-9\"> \n                  Attaché\n                </span>\n              </div>\n\n              <div class=\"col-2 mx-auto\">\n                <span class=\"badge badge-pill badge-box fw-600 float-end fs-10\" v-tippy=\"{ content: `<small>Capacité effective de l'utilisateur </small>` , placement:'top' }\">\n                  {{userEffectiveCapacity(user)}} \n                </span>\n              </div>\n\n              <div class=\"col-1\">\n                <span class=\"badge badge-pill bg-gray ms-2 float-end fs-10\">{{ formatTime(regularWeek.dayTimeSpace * user.configuration.effectiveCapacity) }}</span>\n              </div>\n              \n            </div>\n\n          </div>\n\n        </div>\n\n      </div>\n\n    </div>\n  </div>\n\n</template>\n\n<script>\nimport HelperService from \"../../../services/helper.service.js\";\n\nexport default {\n\n  name: \"WorkshopRegularWeekUsers\",\n\n  props: {\n    regularWeeks: {\n      type: Object,\n      default() {},\n    },\n\n    users: {\n      type: Object,\n      default() {},\n    },\n\n  },\n\n  data() {\n    return {\n      userDetailsVisible: {},\n    };\n  },\n  \n  methods: {\n\n    formatTime : HelperService.formatTime,\n\n    //day french\n    dayInFr(cases) {\n      switch (cases) {\n        case \"MONDAY\":\n          return \"LUN\";\n        case \"TUESDAY\":\n          return \"MAR\";\n        case \"WEDNESDAY\":\n          return \"MER\";\n        case \"THURSDAY\":\n          return \"JEU\";\n        case \"FRIDAY\":\n          return \"VEN\";\n        case \"SATURDAY\":\n          return \"SAM\";\n        case \"SUNDAY\":\n          return \"DIM\";\n      }\n    },\n\n    userEffectiveCapacity(user){\n      return user.configuration.effectiveCapacity*100+\"%\";;\n    },\n\n    toggleUserDetails(dayOfWeek) {\n      if (!this.userDetailsVisible[dayOfWeek]) {\n        this.userDetailsVisible[dayOfWeek] = true;\n      } else {\n        this.userDetailsVisible[dayOfWeek] = !this.userDetailsVisible[dayOfWeek];\n      }\n    },\n\n  },\n\n\n};\n</script>\n\n<style scoped>\n\n.media-list.media-list-xs .media {\n  padding: 8px 10px;\n}\n</style>\n","import { render } from \"./WorkshopRegularWeekUsers.vue?vue&type=template&id=572d934d&scoped=true\"\nimport script from \"./WorkshopRegularWeekUsers.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopRegularWeekUsers.vue?vue&type=script&lang=js\"\n\nimport \"./WorkshopRegularWeekUsers.vue?vue&type=style&index=0&id=572d934d&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-572d934d\"]])\n\nexport default __exports__","import { render } from \"./Workshop.vue?vue&type=template&id=ce4948e4\"\nimport script from \"./Workshop.vue?vue&type=script&lang=js\"\nexport * from \"./Workshop.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"," <!--  NOT USED -->\n<template>\n  <div class=\"container\">\n    \n    <div class=\"row my-3\">\n      <div class=\" header-bar justify-content-between fs-17\">Plannings de {{workshopName}}</div>\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'row'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />    \n        \n\n    <div class=\"row\" v-for=\"planning in plannings\" :key=\"planning\">\n\n      <div class=\"col-3 ps-0 position-relative\">\n        \n        <div class=\"card\">\n\n          <div class=\"card-header\">\n            <span class=\"card-title fs-14 fw-600\">Planning {{planning.planningTypeValue}}</span>\n          </div>\n\n          <div class=\"card-body p-0 media-list media-list-divided\">\n            <div class=\"d-flex media media-single\">\n                <span class=\"title text-muted\">Entreprise:</span>\n                <span>{{planning.companyName}}</span>\n            </div>\n\n            <div class=\"d-flex media media-single\">\n                <span class=\"title text-muted\">Atelier:</span>\n                <span class=\"text-lowercase\">{{planning.workshopName}}</span>\n            </div>\n\n            <div class=\"d-flex media media-single\">\n                <span class=\"title text-muted\">Nom du planning:</span>\n                <span class=\"text-lowercase\">{{planning.planningName}}</span>\n              \n            </div>\n          \n          </div>\n\n          <div class=\"card-footer text-center p-2\">\n            <button class=\"btn btn-sm btn-custom outline\" @click=\"planningRedirect()\">détails</button>\n          </div>\n\n        </div>\n\n\n        <div v-if=\"loading\" class=\"loading reveal loader-position\">\n          <span class=\"spinner-border\" role=\"status\"></span>\n        </div>\n        \n      </div>\n\n    </div>\n\n    <div v-if=\"plannings==undefined || plannings.length==0\" class=\"row my-3 header-tab text-center ms-5 me-5\">\n      <i class=\"mdi mdi-calendar-alert-outline fs-50 pt-5\" />\n      <p class=\"text-muted mb-1 fs-14 pt-3\">Le planning n'a pas encore été généré. <br></p>\n    </div>\n\n  </div>\n  \n</template>\n\n<script>\nimport { useRoute } from \"vue-router\";\nimport CustomMessage from '../common/CustomMessage.vue';\n\nexport default {\n  \n  name: \"WorkshopPlannings\",\n\n  setup() {\n    let workshopCode = useRoute().params.workshopCode;\n    return { workshopCode };\n  },\n\n  components: {\n    CustomMessage\n  },\n\n  data() {\n    return {\n      plannings: {},\n      message: \"\",\n      loading: false,\n      workshopName:\"\"\n    };\n  },\n\n  mounted() {\n    this.loadPlanning();\n  },\n\n  methods: {\n\n    planningRedirect() {  \n      this.$router.push({\n        path: \"/workshop-calendars/\",\n        name: \"workshop-calendars\",\n        params: { workshopCode: this.workshopCode },\n      });\n    },\n\n    loadPlanning() {\n      \n      this.loading = true;\n\n      let loadPlanningReq = {\n        method: \"GET\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()}\n      };\n\n      fetch(\"/api/workshop-planning/plannings/\"+this.$store.state.auth.user.companyCode+\"/\"+this.workshopCode, loadPlanningReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok) {\n            this.plannings = await response.json();\n            this.workshopName=this.plannings[0].workshopName;\n            this.loading = false;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadPlanning.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          this.loading = false;\n\n        });\n\n    },\n  \n  },\n};\n</script>\n\n<style scoped>\n\nsmall {\n  font-weight: 400;\n  font-size: 13px;\n  color: #8b95a5;\n}\n.media-single {\n  align-items: center;\n}\n .loader-position{\n  right: -13px;\n  left: -14px;\n  top: 10px;\n}\n\n</style>","import { render } from \"./WorkshopPlannings.vue?vue&type=template&id=09b01ede&scoped=true\"\nimport script from \"./WorkshopPlannings.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopPlannings.vue?vue&type=script&lang=js\"\n\nimport \"./WorkshopPlannings.vue?vue&type=style&index=0&id=09b01ede&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-09b01ede\"]])\n\nexport default __exports__","<template>\n  <div class=\"container\">\n\n    <div class=\"my-3\">\n      <div class=\"header-bar justify-content-between\" >\n        <WorkshopListElement v-if=\"workshop\" v-bind:element=\"workshop\" :displayPlanningItem=\"false\" v-on:workshop-closure-modal-closed=\"loadPlanning\"/>\n      </div>\n    </div>\n      \n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n    <div class=\"my-3\">\n      \n      <WorkshopClosureForm \n        v-if=\"showWorkshopClosureForm\" \n        class=\"mx-auto\" \n        :calendarDay=\"calendarDay\"\n        v-on:close=\"showWorkshopClosureForm = false\" \n        v-on:workshop-closure-updated=\"closeWorkshop\">\n      </WorkshopClosureForm>\n\n      <div class=\"card p-0 fc\">\n       \n        <CalendarHeader\n          :date=\"startDate\" \n          :defaultDisplay=\"'monthly'\"\n          v-on:decrement-month=\"decrementMonth()\" \n          v-on:increment-month=\"incrementMonth()\"\n          v-on:decrement-week=\"decrementWeek()\" \n          v-on:increment-week=\"incrementWeek()\"\n          v-on:decrement-day=\"decrementDay()\" \n          v-on:increment-day=\"incrementDay()\"\n          v-on:selected-date=\"selectedDateHandler\"\n          v-on:month-display-mode=\"selectedMonthlyDisplay\"\n          v-on:week-display-mode=\"selectedWeeklyDisplay\"\n          v-on:day-display-mode =\"selectedDailyDisplay\"\n        />\n\n        <KeepAlive> \n          <component\n            :is=\"display\"\n            :calendars=\"calendars\"\n            :regularWeeks=\"regularWeeks\"\n            :date=\"startDate\"\n            v-on:workshop-closure-added=\"addWorkshopClosure\"\n          />\n        </KeepAlive> \n\n        <!-- loader -->\n        <div v-if=\"loading\" class=\"loading reveal top-0\">\n          <span class=\"spinner-border\" role=\"status\"></span>\n        </div>\n\n      </div>\n\n    </div>\n\n  </div>\n</template>\n\n<script>\n\nimport { useRoute } from \"vue-router\";\nimport moment from \"moment\";\nimport WorkshopClosureForm from \"./workshop-calendars/WorkshopClosureForm.vue\";\nimport WorkshopListElement from \"./workshops/WorkshopListElement.vue\"\nimport WorkshopCalendarMonth from \"./workshop-calendars/WorkshopCalendarMonth.vue\";\nimport WorkshopCalendarWeek from \"./workshop-calendars/WorkshopCalendarWeek.vue\";\nimport WorkshopCalendarDay from \"./workshop-calendars/WorkshopCalendarDay.vue\"\nimport CalendarHeader from \"../common/CalendarsHeader.vue\";\nimport CustomMessage from '../common/CustomMessage.vue';\n\nexport default {\n  \n  name: \"WorkshopCalendars\",\n\n  setup() {\n    moment.locale('fr');\n    let workshopCode = useRoute().params.workshopCode;\n    let companyCode = useRoute().params.companyCode;\n    const planning={};\n    return {planning, workshopCode, companyCode};\n  },\n\n  components: {\n    CustomMessage,\n    WorkshopClosureForm,\n    WorkshopListElement,\n    CalendarHeader,\n    WorkshopCalendarMonth,\n    WorkshopCalendarWeek,\n    WorkshopCalendarDay\n    \n  },\n\n  data() {\n    return {\n      display:'WorkshopCalendarMonth',\n      showWorkshopClosureForm: false,\n      days: ['Lun','Mar','Mer','Jeu','Ven','Sam','Dim'],\n      loading: false,\n      calendars: [],\n      message: \"\",\n      currentMonth: moment().startOf('months'),\n      startDate: moment().startOf('months').startOf('week'),\n      endDate: moment().endOf('months').endOf('week'),\n      workshop: null,\n      calendarDay: null,\n      regularWeeks: [],\n    };\n  },\n\n  created(){\n    this.loadWorkshop();\n    this.loadPlanning();\n    this.moment = moment;\n  },\n\n  methods:{\n\n    isToDay(date){\n      var today=new Date();\n      return this.formatDate(date, 'DD/MM/YYYY').isSame(today, \"day\");\n    },\n\n    isPast(date){\n      var today=new Date();\n      return this.formatDate(date, 'DD/MM/YYYY').isBefore(today, \"day\");\n    },\n\n    isCurrentMonth(date){\n      if( this.formatDate(date, 'DD/MM/YYYY').isAfter(this.currentMonth,\"month\") || this.formatDate(date, 'DD/MM/YYYY').isBefore(this.currentMonth,\"month\"))\n        return false;\n      \n      return true;\n    },\n\n    formatDate(value, pattern){\n      return moment(value, pattern).hour(0).minute(0).seconds(0);\n    },\n\n    decrementMonth(){\n      this.currentMonth = this.currentMonth.subtract(1, \"months\");\n      this.startDate = this.currentMonth.clone().startOf('week');\n      //console.log(\"<<< startDate=\", this.startDate.format('YYYY-MM-DD'));\n      this.endDate = this.currentMonth.clone().endOf('months').endOf('week');\n      //console.log(\"<<< endDate=\", this.endDate.format('YYYY-MM-DD'));\n      this.loadPlanning();\n    },\n\n    incrementMonth(){\n      this.currentMonth = this.currentMonth.add(1, \"months\");\n      this.startDate = this.currentMonth.clone().startOf('week');\n      //console.log(\">>> startDate=\",this.startDate.format('YYYY-MM-DD'));\n      this.endDate = this.currentMonth.clone().endOf('months').endOf('week');\n      //console.log(\">>> endDate=\",this.endDate.format('YYYY-MM-DD'));\n      this.loadPlanning();\n    },\n\n    decrementWeek(){\n      this.startDate = this.startDate.clone().startOf('week').subtract(1, \"weeks\");\n      this.endDate = this.startDate.clone().endOf('week');\n      this.loadPlanning();\n    },\n\n    incrementWeek(){\n      this.startDate = this.startDate.clone().startOf('week').add(1, \"weeks\");\n      this.endDate = this.startDate.clone().endOf('week');\n      this.loadPlanning();\n    },\n\n    decrementDay(){\n      this.startDate = this.startDate.clone().subtract(1, \"days\");\n      this.endDate = this.startDate.clone();\n      this.loadPlanning();\n    },\n\n    incrementDay(){\n      this.startDate = this.startDate.clone().add(1, \"days\");\n      this.endDate = this.startDate.clone();\n      this.loadPlanning();\n    },\n\n    selectedDateHandler(date){\n      if(moment(date).isValid()){\n        this.startDate =moment(date)\n        this.endDate = moment(date)\n        this.loadPlanning();\n      }\n    },\n\n    selectedMonthlyDisplay(){\n      this.display = 'WorkshopCalendarMonth';\n      this.startDate = moment().startOf('months').startOf('week');\n      this.endDate = moment().endOf('months').endOf('week');\n      this.currentMonth = moment().startOf('months');\n      this.loadPlanning();\n    },\n\n    selectedWeeklyDisplay(){\n      this.display = 'WorkshopCalendarWeek';\n      this.startDate = moment().startOf('week');\n      this.endDate = moment().endOf('week');\n      this.loadPlanning();\n    },\n\n    selectedDailyDisplay(){\n      this.display = 'WorkshopCalendarDay';\n      this.startDate = moment();\n      this.endDate = moment();\n      this.loadPlanning();\n    },\n\n    /*\n    * return json by date from workshopCalendar not working for that we converted explicitly the target to json object \n    */\n    workshopCapacityByDate(date){\n      var workshopCalendar = this.planning[date];\n      var jsonObject = {};\n      for(const key in workshopCalendar)\n        jsonObject[key] = workshopCalendar[key];\n      return jsonObject; \n    },\n  \n    buildMonthWeeks() {\n      var calendarStartDate = this.startDate.clone();\n      var month=[];\n      if(this.display == 'WorkshopCalendarDay')\n        this.endDate.add(1,'days');\n      while (this.endDate.isAfter(calendarStartDate)) {\n        // console.log(\"endDate=\",this.endDate.format('YYYY-MM-DD'));\n        let week=[];\n        let i=0;\n        while (i<7) {\n            // data to display in calendar\n            const workshopCalendar = this.workshopCapacityByDate(calendarStartDate.format('YYYY-MM-DD'));\n            const dayOfWeek = calendarStartDate.clone().locale('en').format('dddd').toUpperCase();\n\n            var day = {\n              'date': calendarStartDate.format('DD/MM/YYYY'), \n              'day': calendarStartDate.format('dddd'),\n              'dayOfWeek': dayOfWeek,\n              'isToday': this.isToDay(calendarStartDate.format('DD/MM/YYYY')), \n              'isPast': this.isPast(calendarStartDate.format('DD/MM/YYYY')),\n              'isCurrentMonth': this.isCurrentMonth(calendarStartDate.format('DD/MM/YYYY')),\n              'capacity': workshopCalendar.workshopCapacity,\n              'load':workshopCalendar.workshopLoad,\n              'availability':workshopCalendar.workshopAvailability,\n              'charge':workshopCalendar.workshopCharge,\n              'workshopEventsSize': workshopCalendar.workshopEventsSize,\n              'workshopCode':workshopCalendar.workshopCode,\n              'workshopCalendarId':workshopCalendar.workshopCalendarId,\n              'editable': true,\n              'workshopClosure': workshopCalendar.workshopClosure,\n              'timeSlots': workshopCalendar.timeSlots,      \n              'notWorkingDayName': workshopCalendar.notWorkingDayName,         \n            }\n            week.push(day);\n            calendarStartDate = calendarStartDate.add(1,'days');\n            i++;\n        }\n        month.push(week);\n        calendarStartDate = calendarStartDate.clone().startOf('week');\n      }\n      // console.log(month);\n      this.calendars = month;\n    },\n\n    loadWorkshop() {\n\n      let loadWorkshopReq = {\n        method: \"GET\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()}\n      };\n\n      fetch(\"/api/workshop/get-workshop/\"+this.companyCode+\"/\"+this.workshopCode, loadWorkshopReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            var data = await response.json();\n            this.workshop = data;\n            this.regularWeeks = this.workshop.workshopRegularWeek;\n            return;\n          } \n          return Promise.reject(response);\n\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadWorkshop.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    loadPlanning() {\n      let planningReq = {\n        workshopCode:  this.workshopCode,\n        companyCode: this.companyCode,\n        startDate: this.startDate.clone().format('DD/MM/YYYY'),\n        endDate: this.endDate.clone().format('DD/MM/YYYY')\n      };\n\n      this.loading = true;\n      let loadPlanningReq = {\n        method: \"POST\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()},\n        body: JSON.stringify(planningReq)\n      };\n\n      fetch(\"/api/workshop-calendar/\", loadPlanningReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            const data = await response.json();\n            this.planning = data;\n            this.buildMonthWeeks();\n            this.loading=false;\n            return;\n          } \n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadPlanning.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    addWorkshopClosure(calendarDay){\n      this.calendarDay = calendarDay;\n      this.showWorkshopClosureForm = true;\n      window.scrollTo(0,0);\n\n    },\n\n    closeWorkshop(){\n      this.showWorkshopClosureForm = false;\n      this.calendarDay = null;\n      this.loadPlanning();\n    },\n\n  },\n\n};\n</script>\n\n\n<style scoped>\n\n</style>","<template>\n  \n  <div class=\"card p-0\">\n\n    <div class=\"card-header fs-16 fw-600 d-flex justify-content-between\"> \n\n      <div>\n        <span class=\"mdi mdi-calendar-edit-outline text-muted fs-17 me-1\"/> Selectionner la date de fermeture de l'atelier\n      </div>\n\n      <div>\n        <span class=\"mdi mdi-close cursor-pointer fs-18\" style=\"float: inline-end;\" @click=\"$emit('close')\"></span>\n      </div>\n    </div> \n\n    <div class=\"card-body\">\n\n      <Form class=\"form-type-material\" @submit=\"closeWorkshop\" :validation-schema=\"workshopClosureSchema\" v-slot=\"{ errors }\">\n\n        <!-- closure reason -->\n        <div class=\"form-group\">\n          <Field name=\"workshopClosureReason\" v-slot=\"{ handleChange, value }\">\n            <CustomSelect \n              :modelValue=\"value\"\n              @value-updated=\"(value) => {handleChange(value);}\"\n              :options=\"workshopClosureReasons\"\n              name=\"workshopClosureReason\"\n              classStyle=\"form-control\"\n              :error=\"errors.workshopClosureReason\"\n            />\n          </Field>\n          <label class=\"floating-label required\" for=\"workshopClosureReason\">Raison de la fermeture</label>\n          <ErrorMessage name=\"workshopClosureReason\" class=\"d-flex invalid-feedback\" />\n        </div>\n\n        <!-- closure start date -->\n        <div class=\"form-group\">\n          <Datepicker name=\"closureStartDate\" class=\"form-control\" \n            v-model=\"closureStartDate\" \n            :lowerLimit='lowerLimit' \n            :style=\"datePickerStyle\"\n            :inputFormat=\"'dd/MM/yyyy'\"\n            :placeholder=\"'jj/mm/aaaa'\" \n            :language=\"'fr'\"\n            v-maska data-maska=\"##/##/####\"\n            :class=\"{ 'is-invalid': errors.closureStartDate }\"\n          />\n          <Field name=\"closureStartDate\" :class=\"{ 'is-invalid': errors.closureStartDate }\"  v-model=\"closureStartDate\" hidden type=\"date\" /> \n          <span class=\"do-float\">\n            <label class=\"required\">Du </label>\n          </span>\n          <ErrorMessage name=\"closureStartDate\" class=\"invalid-feedback\" />\n\n        </div>\n\n        <!-- closure end date -->\n        <div class=\"form-group\">\n          <Datepicker \n            name=\"closureEndDate\" \n            class=\"form-control\" \n            v-model=\"closureEndDate\" \n            :lowerLimit='closureStartDate'\n            :upperLimit='upperLimit'\n            :style=\"datePickerStyle\"\n            :inputFormat=\"'dd/MM/yyyy'\"\n            :placeholder=\"'jj/mm/aaaa'\" \n            :language=\"'fr'\"\n            v-maska data-maska=\"##/##/####\"\n            :class=\"{ 'is-invalid': errors.closureEndDate }\"\n          />\n          <Field name=\"closureEndDate\" :class=\"{ 'is-invalid': errors.closureEndDate }\"  v-model=\"closureEndDate\" hidden type=\"date\" /> \n          <span class=\"do-float\">\n            <label class=\"required\">jusqu'à </label>\n          </span>\n          <ErrorMessage name=\"closureEndDate\" class=\"invalid-feedback\" />\n        </div>\n\n        <div class=\"text-center\">\n          <button class=\"btn btn-round btn-custom\" type=\"submit\" >Sauvegarder</button>\n        </div>        \n      </Form>\n\n      <!-- error message -->\n      <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n      <div v-show=\"loading\" class=\"loading reveal top-0\">\n        <span class=\"spinner-border\" role=\"status\"></span>\n      </div>\n\n    </div>\n        \n  </div>\n\n</template>\n\n<script>\n\nimport moment from \"moment\";\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport CustomSelect from '../../common/CustomSelect.vue';\nimport Datepicker from 'vue3-datepicker';\nimport { vMaska } from \"maska\";\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name:\"WorkshopClosureForm\",\n\n  emits:[\"close\", \"workshop-closure-updated\"],\n\n  directives: {maska: vMaska},\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    CustomSelect,\n    Datepicker,\n    CustomMessage\n  },\n\n  setup(){\n\n    moment.locale(\"fr\");\n\n    const workshopClosureSchema = Yup.object().shape({\n      workshopClosureReason : Yup.string().required(\"Raison de cloture est obligatoire\"),\n      closureStartDate:  Yup.date(\"Date de début est obligatoire\").nullable(false).typeError(\"Date de début est obligatoire\").required(\"Date de début est obligatoire\"),\n      closureEndDate: Yup.date(\"Date de fin est obligatoire\").typeError(\"Date de fin est obligatoire\").nullable(false)\n      .test('is-after-start', \"La date de fin doit être après la date de début\", function(value) {\n        const { closureStartDate } = this.parent;\n        return closureStartDate ? new Date(value) >= new Date(closureStartDate) : true;\n    }),\n    });\n\n    const datePickerStyle = {\"--vdp-selected-bg-color\":'#00203f',\"--vdp-selected-color\": \"#ffffff\",  \"--vdp-hover-bg-color\": \"#00203f\"};\n\n    return {datePickerStyle, workshopClosureSchema};\n\n  },\n\n  props:{\n    calendarDay:{\n      type: Object,\n      required: true\n    },\n\n  },\n\n  watch:{\n\n    'calendarDay.date': function(newDate, oldDate) {\n      if(newDate != oldDate)\n        this.formatDate(newDate);\n    },\n\n    closureStartDate(newDate , oldDate){\n      if(newDate != oldDate){\n        this.closureEndDate = this.closureStartDate;\n        this.upperLimit = moment(this.closureStartDate).add(30, 'days').toDate();\n      }\n    }\n\n  },\n\n  data() {\n   return {\n    closureStartDate : null,\n    closureEndDate: null,\n    lowerLimit: new Date(),\n    upperLimit: null,\n    workshopClosureReasons: [],\n    loading: false,\n    message:\"\",\n  };\n       \n },\n\n  mounted(){\n    this.getWorkshopClosureReason();\n    this.formatDate(this.calendarDay.date);\n  },\n\n  methods: {\n\n    formatDate(date) {\n      if(moment(date,\"DD/MM/YYYY\").isValid()){\n        var dateFormat = moment(date ,\"DD/MM/YYYY\");\n        this.closureStartDate = new Date(dateFormat.year(), dateFormat.month(), dateFormat.format('D') );\n        this.upperLimit = moment(this.closureStartDate).add(30, 'days').toDate();\n      }else\n        this.closureStartDate = null;\n      this.closureEndDate = this.closureStartDate;\n    },\n\n    getWorkshopClosureReason() {\n      this.loading = true;\n\n      let workshopClosureReasonReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        }\n      };\n\n      fetch(\"/api/workshop-closure/reason\",workshopClosureReasonReq)\n      .then( \n        async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.workshopClosureReasons = await response.json();\n            this.loading = false;\n            return;\n          } \n          return Promise.reject(response);\n        \n      })\n      .catch((response) => {\n        this.loading = false; \n        if (response.status == 401) {\n          this.$authTokenService.refreshToken(this.getWorkshopClosureReason.bind(this));\n          return;\n        }\n        this.message = this.$authTokenService.handleErrorResponse(response);\n      });\n\n    },\n \n    closeWorkshop(values) {\n      this.loading = true;\n\n      values.companyCode = this.$store.state.auth.user.companyCode;\n      values.workshopCode = this.calendarDay.workshopCode;\n      values.userCode = this.$store.state.auth.user.userCode;\n      values.closureStartDate = moment(this.closureStartDate).format(\"DD/MM/YYYY\");\n      values.closureEndDate = moment(this.closureEndDate).format(\"DD/MM/YYYY\");\n      \n      let closeWorkshopReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(values),\n      };\n\n      fetch(\"/api/workshop-closure/create\", closeWorkshopReq).then( \n        async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.loading = false;\n            this.$emit('workshop-closure-updated');\n            return;\n          } \n          return Promise.reject(response);\n        \n      })\n      .catch((response) => {\n        this.loading = false; \n        if (response.status == 401) {\n          this.$authTokenService.refreshToken(this.closeWorkshop.bind(this, values));\n          return;\n        }\n        this.message = this.$authTokenService.handleErrorResponse(response);\n      });\n\n    }\n  },\n\n}\n</script>\n\n<style scoped>\n\n</style>","import { render } from \"./WorkshopClosureForm.vue?vue&type=template&id=776fb6be\"\nimport script from \"./WorkshopClosureForm.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopClosureForm.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n  <!-- calendar -->\n  <div class=\"fc\">\n    <table>\n\n      <thead>\n\n        <tr>\n          <td class=\"border-0\">\n            <table>\n              <thead>\n                <tr>\n                  <!-- Days Name -->\n                  <th v-for=\"day in days\" :key=\"day\">\n                    <span class=\"fs-17 text-lighter calendar-day-name\">{{day}} </span>\n                  </th>\n\n                </tr>\n              </thead>\n            </table>\n          </td>\n        </tr>\n          \n      </thead>\n\n      <tbody>\n        <tr>\n          <td>\n            <div >\n              <!-- weeks -->\n              <div class=\"fc-row fc-tr\" v-for=\"(week, index) in calendars\" :key=\"index\">\n                <div class=\"fc-bg\">\n                  <table>\n                    <tbody>\n\n                      <tr>\n                        \n                        <!-- if the day is indisponible/or past the update and click is not allow :class=[condition? (val1 if condition is true) : (else val2), seconde] -->\n                        <td v-for=\"i in weekDays\" :key=\"i\"> \n                          <WorkshopCalendarCell :calendarDay=\"week[i]\" :regularWeek=\"getRegularWeek(week[i].dayOfWeek)\" v-on:workshop-closure-added=\"showWorkshopClosureForm(week[i])\"/>\n                        </td>\n                        \n                      </tr>\n\n                    </tbody>\n                  </table>\n                </div>\n              </div>\n\n            </div>\n          </td>\n        </tr>\n      </tbody>\n\n    </table>\n  </div>\n</template>\n\n<script>\n\nimport WorkshopCalendarCell from \"./workshop-calendars-month/WorkshopCalendarCell.vue\";\nimport range from 'lodash/range';\nexport default {\n\n  name:\"WorkshopCalendarMonth\",\n\n  emits:[\"workshop-closure-added\"],\n\n  components: {\n    WorkshopCalendarCell\n  },\n\n  props:{\n    calendars:{\n      default(){\n        return []\n      }\n    },\n    regularWeeks: {\n      type: Object,\n      default() {},\n    },\n  },\n\n  data() {\n    return {\n      weekDays: range(0,7),\n      days:['Lun','Mar','Mer','Jeu','Ven','Sam','Dim'],\n    };\n  },\n\n  methods:{\n    showWorkshopClosureForm(calendarDay){\n      this.$emit(\"workshop-closure-added\", calendarDay);\n    },\n\n    getRegularWeek(dayOfWeek){\n      return this.regularWeeks.find(regularWeek => regularWeek.dayOfWeek == dayOfWeek );\n    },\n\n\n  },\n\n  \n}\n</script>\n\n<style scoped>\n\n.fc .calendar-day-name{\n  font-size: 16px;\n  color: #6c757d;\n}\n</style>","<template>\n\n  <div class=\"card-not-responsive card card-body m-0 p-0 border-bottom-0 h-100\" \n    :class=\"getCalendarDayBackgroundCssClass(calendarDay)\">\n\n    \n    <!-- header -->\n    <div class=\"m-1\">\n\n      <span v-if=\"calendarDay.isToday==true\"  class=\"float-start fs-12 fw-500 badge badge-circle bg-gray-clear text-default\">\n        {{dayOfDate(calendarDay.date)}}\n      </span>\n\n      <span v-else-if=\"calendarDay.isToday==false && calendarDay.isCurrentMonth == false && calendarDay.isPast == true\" class=\"opacity-40 float-start fs-12 fw-300 \" >\n        {{dayOfDate(calendarDay.date)}}\n      </span>\n\n        <span v-else-if=\"calendarDay.isToday==false && calendarDay.isCurrentMonth == false && calendarDay.isPast == false\" class=\"float-start fs-12 fw-300 opacity-40\" >\n        {{dayOfDate(calendarDay.date)}}\n      </span>\n\n        <span v-else-if=\"calendarDay.isToday==false && calendarDay.isCurrentMonth == true && calendarDay.isPast == true\" class=\"float-start fs-12 fw-300 opacity-40\" >\n        {{dayOfDate(calendarDay.date)}}\n      </span>\n\n\n        <span v-else-if=\"calendarDay.isToday==false && calendarDay.isCurrentMonth == true && calendarDay.isPast == false\" class=\"float-start fs-12 fw-300\" >\n        {{dayOfDate(calendarDay.date)}}\n      </span>\n\n      <!-- dropDown actions-->\n      <div class=\"float-end dropdown\" v-if=\"hasActions == true\">\n        <a href=\"#\" id=\"dropdownMenuLink\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n          <i class=\"mdi mdi-dots-vertical fs-18 text-lighter\"/>\n        </a>\n        <div class=\"dropdown-menu dropdown-menu-right cursor-pointer\" x-placement=\"bottom-end\" aria-labelledby=\"dropdownMenuLink\">\n\n          <a class=\"dropdown-item fs-12\"  v-on:click=\"displayEvents()\" v-if=\"calendarDay.workshopEventsSize>0\" >\n              <i class=\"mdi mdi-chevron-right me-0\"/>\n              Voir les événements \n          </a>\n\n          <a class=\"dropdown-item fs-12\" v-if=\"displayCreateEvent(calendarDay)\" \n              v-on:click=\"addEvent(calendarDay.workshopCode, calendarDay.workshopCalendarId )\" >\n              <i class=\"mdi mdi-chevron-right me-0\"/>\n              Ajouter un événement\n          </a>\n\n          <a class=\"dropdown-item fs-12\" v-if=\"calendarDay.isPast == false && !calendarDay.workshopClosure\" \n              v-on:click=\"showWorkshopClosureForm\">\n              <i class=\"mdi mdi-chevron-right me-0\"/>\n              Fermeture exceptionnelle\n          </a>\n        </div>\n      </div>\n\n    </div>\n\n    <!-- body -->\n    <div class=\"ps-2 pe-2\" >\n\n      <div class=\"fs-12 fw-100 text-lighter text-center ptop-10-percent\" :class=\"{ 'opacity-40': calendarDay.isPast || calendarDay.isCurrentMonth == false }\" >\n        \n        <WorkshopCalendarInfo :displayAvailability=\"true\" :calendarDay=\"calendarDay\" :regularWeek=\"regularWeek\"/>\n\n      </div>\n\n  </div> \n\n  </div>\n</template>\n\n<script>\n\nimport moment from \"moment\";\nimport helperService from \"../../../../services/helper.service.js\";\nimport WorkshopCalendarInfo from '../common/WorkshopCalendarInfo.vue';\n\nexport default {\n  \n  name : \"WorkshopCalendarCell\",\n\n  emits:[\"workshop-closure-added\"],\n\n  components: {\n    WorkshopCalendarInfo\n  },\n\n  props:{\n    calendarDay:{\n      type: Object\n    },\n    \n    regularWeek: {\n      type: Object,\n      default() {},\n    },\n  },\n\n  computed:{\n\n    hasActions(){\n \n      // show event condition\n      if( this.calendarDay.availability != undefined && this.calendarDay.capacity > 0 && this.calendarDay.workshopEventsSize > 0)\n        return true;\n      // add event condition\n      if(this.calendarDay.isPast == false && this.calendarDay.capacity > 0)\n        return true;\n      // workshop closure\n      if(this.calendarDay.workshopClosure && this.calendarDay.workshopEventsSize > 0)\n        return true;\n\n      return false \n    }\n      \n  },\n\n  methods:{\n\n    formatTime : helperService.formatTime,\n\n    dayOfDate(value){\n      return moment(value, 'DD/MM/YYYY').format('DD');\n    },\n\n    displayEvents(){\n      var toDay = moment(this.calendarDay.date,'DD/MM/YYYY').format(\"DDMMYYYY\");\n      this.$router.push({ to:\"/app/events\", name: 'events', params: { startDate: toDay , endDate: toDay },  linkActiveClass: 'active' })\n    },\n\n    addEvent(workshopCode, workshopCalendarId ){\n      this.$router.push({ name: 'event-create', params: { workshopCode: workshopCode , workshopCalendarId: workshopCalendarId} })\n    },\n\n    showWorkshopClosureForm(){\n      this.$emit(\"workshop-closure-added\", this.calendarDay);\n    },\n\n    getCalendarDayBackgroundCssClass(calendarDay) {      \n      if(calendarDay.workshopClosure && this.regularWeek.openningTimeSlots.length !== 0)\n        return 'bg-orange-lighter';\n\n      if(calendarDay.notWorkingDayName)\n        return 'bg-gray-lighter';\n    },\n\n    displayCreateEvent(calendarDay){\n\n      if(this.$store.state.auth.user.companyStatus == 'DISABLED')\n        return false;\n\n      if(calendarDay.isPast)\n        return false;\n\n      if(calendarDay.workshopClosure)\n        return false;\n\n      return true;\n    }\n\n  },\n\n}\n</script>\n\n<style>\n\n.font-roboto-thin {\n  font-family: 'Roboto Thin';\n}\n.progress-line {\n  height: auto;\n  border-radius: 2px;\n  margin-bottom: 5px;\n  background-color: #f5f6f7;\n  display: flex;\n}\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  transition: width .6s ease;\n}\n.ptop-10-percent {\n  padding-top: 10%;\n}\n</style>","<template>\n \n  <!-- no workshop calendar -->\n  <div v-if=\"calendarDay.workshopCalendarId == undefined\">\n    <span v-tippy=\"{ content: '<small>Hors période de planning</small>' , placement:'top' }\"> <i class=\"mdi mdi-dots-horizontal text-muted\" />  </span>\n  </div>\n\n  <!-- workshop calendar availability > 0 -->\n  <div v-else-if=\"calendarDay.availability > 0\" class=\"d-flex align-items-center justify-content-center w-100\"  :include=\"['load']\">\n\n    <!-- prgress bar -->\n    <div class=\"w-100\">\n\n      <!-- availability -->\n      <p v-if=\"displayAvailability\" class=\"fs-20 fw-100 font-roboto-thin text-center\"  v-tippy=\"{ content: '<small>Disponibilité</small>' , placement:'top' }\">\n        {{formatTime(calendarDay.availability)}}\n      </p>    \n      <WorkshopCalendarProgressBar :load=\"calendarDay.load\" :eventsSize=\"calendarDay.workshopEventsSize\" />\n    </div>\n\n  </div>\n\n  <!-- workshop regularWeek no openning time slots -->\n  <div v-else-if=\"regularWeek && regularWeek.openningTimeSlots.length == 0\"> \n    <span v-tippy=\"{ content: '<small>Atelier fermé</small>' , placement:'top' }\"> indisponible </span>\n  </div>\n\n  <!-- not working day -->\n  <div v-else-if=\"calendarDay.notWorkingDayName\">\n    <span v-tippy=\"{ content: `<small>${calendarDay.notWorkingDayName}</small>` , placement:'top' }\"> jour férié  </span>\n  </div>\n\n  <!-- workshop closure -->\n  <div v-else-if=\"calendarDay.workshopClosure\" class=\"text-lowercase\">\n    <span v-tippy=\"{ content: '<small>Fermeture exceptionnelle</small>' , placement:'top' }\"> {{calendarDay.workshopClosure.workshopClosureReasonValue}}  </span>\n  </div>\n\n  <!-- workshop regularWeek default capacity == 0 -->\n  <div v-else-if=\"regularWeek && regularWeek.defaultCapacity == 0\"> \n    <span v-tippy=\"{ content: '<small>Atelier ouvert</small>' , placement:'top' }\"> disponibilité journalière <span class=\"badge badge-pill badge-box fs-10\">0 h</span> </span>\n  </div>\n\n</template>\n\n<script>\n\nimport WorkshopCalendarProgressBar from './WorkshopCalendarProgressBar.vue';\nimport helperService from \"../../../../services/helper.service.js\";\n\nexport default {\n\n  name : \"WorkshopCalendarInfo\",\n\n  components: {\n    WorkshopCalendarProgressBar\n  },\n\n  props: {\n    calendarDay: {\n      type: Object,\n      required: true\n    },\n\n    regularWeek: {\n      type: Object,\n      required: true\n    },\n\n    displayAvailability: {\n      type: Boolean,\n      required: false,\n      default(){\n        return false;\n      }\n    },\n    \n  },\n\n  computed: {\n    progressBarClass() {\n      if (this.calendar.load < 0.6) return 'bg-green';\n      if (this.calendar.load >= 0.6 && this.calendar.load < 0.9) return 'bg-orange';\n      if (this.calendar.load >= 0.9) return 'bg-red';\n      return '';\n    }\n  },\n\n  methods:{\n    formatTime : helperService.formatTime,\n  }\n};\n</script>","<template>\n  <div>\n    <!-- progress bar -->\n    <div class=\"progress-line\">\n      <div class=\"progress-bar\" :class=\"progressBarClass\" role=\"progressbar\" :style=\"{ width: load * 100 + '%', height: '4px' }\"\n        :aria-valuenow=\"load * 100\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n    </div>\n\n    <!-- details -->\n    <div class=\"text-gray\">\n      <span class=\"float-start fs-11\" v-tippy=\"{ content: '<small>Taux de charge</small>', placement: 'left' }\">\n        %{{ (load * 100).toFixed(2) }}\n      </span>\n      <span v-if=\"eventsSize == undefined || eventsSize == 0\" class=\"float-end me-1 fs-9\">\n        Aucun événement\n      </span>\n      <span v-else-if=\"eventsSize == 1\" class=\"float-end me-1 fs-9\">\n        {{ eventsSize }} événement\n      </span>\n      <span v-else-if=\"eventsSize > 1\" class=\"float-end me-1 fs-9\">\n        {{ eventsSize }} événements\n      </span>\n    </div>\n  </div>\n</template>\n\n<script>\n\nexport default {\n\n  name : \"WorkshopCalendarProgressBar\",\n\n  props: {\n    load: {\n      type: Number,\n      required: true\n    },\n    eventsSize: {\n      type: Number,\n      required: true\n    }\n  },\n\n  computed: {\n    progressBarClass() {\n      if (this.load < 0.6) return 'bg-green';\n      if (this.load >= 0.6 && this.load < 0.9) return 'bg-orange';\n      if (this.load >= 0.9) return 'bg-red';\n      return '';\n    }\n  }\n};\n</script>","import { render } from \"./WorkshopCalendarProgressBar.vue?vue&type=template&id=77213e66\"\nimport script from \"./WorkshopCalendarProgressBar.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopCalendarProgressBar.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./WorkshopCalendarInfo.vue?vue&type=template&id=4415eb39\"\nimport script from \"./WorkshopCalendarInfo.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopCalendarInfo.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./WorkshopCalendarCell.vue?vue&type=template&id=9dff49a2\"\nimport script from \"./WorkshopCalendarCell.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopCalendarCell.vue?vue&type=script&lang=js\"\n\nimport \"./WorkshopCalendarCell.vue?vue&type=style&index=0&id=9dff49a2&lang=css\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./WorkshopCalendarMonth.vue?vue&type=template&id=dabfbd86&scoped=true\"\nimport script from \"./WorkshopCalendarMonth.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopCalendarMonth.vue?vue&type=script&lang=js\"\n\nimport \"./WorkshopCalendarMonth.vue?vue&type=style&index=0&id=dabfbd86&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-dabfbd86\"]])\n\nexport default __exports__","<template>\n\n  <!-- calendar -->\n   <div class=\"calendar\" >\n      <table>\n\n        <thead>\n\n          <tr>\n            <td class=\"border-0\">\n                <table>\n                  <thead>\n                    <tr>\n                      <!-- Days Name -->\n                      <div class=\"d-flex justify-content-around\" v-for=\"(calendar, index) in calendars\" :key=\"index\" >\n                        <th v-for=\"i in daysNumber\" :key=\"i\" class=\"w-100\"> \n                          <div class=\"calendar-day-header\">\n                            <span class=\"day-name\">{{formatDay(calendar[i].date)}}</span>\n                            <span class=\"day-number\">{{formatDate(calendar[i].date, 'DD MMMM')}}</span>\n                          </div>\n                        </th>\n                      </div>\n\n                      <!-- workshop closure display -->\n                      <div class=\"d-flex justify-content-around\" v-for=\"(calendar, index) in calendars\" :key=\"index\" >\n                        <div v-for=\"i in daysNumber\" :key=\"i\" class=\"w-100 calendar-day-widget\" \n                          :class=\"getCalendarDayBackgroundCssClass(calendar[i])\"> \n\n                          <WorkshopCalendarInfo :calendarDay=\"calendar[i]\" :regularWeek=\"getRegularWeek(calendar[i].dayOfWeek)\"/>\n\n                        </div>\n                      </div>\n                    </tr>\n                  </thead>\n                </table>\n            </td>\n          </tr>\n            \n        </thead>\n\n        <tbody>\n          <tr>\n            <td class=\"border-0\">\n\n                  <!-- week -->\n                  <div v-for=\"(calendar, index) in calendars\" :key=\"index\" >\n                      <table class=\"day-calendar\">\n                        <tbody>\n\n                          <tr>\n                            <td v-for=\"i in daysNumber\" :key=\"i\" > \n                              <WorkshopCalendarWeeklyDay :calendarDay =\"calendar[i]\"/>\n                            </td>\n                          </tr>\n\n                        </tbody>\n                      </table>\n                  </div>\n\n            </td>\n          </tr>\n        </tbody>\n\n\n      </table>\n   </div>\n</template>\n\n<script>\nimport range from 'lodash/range';\nimport WorkshopCalendarWeeklyDay from \"./workshop-calendar-week/WorkshopCalendarWeeklyDay.vue\";\nimport moment from \"moment\";\nimport helperService from \"@/services/helper.service.js\";\nimport WorkshopCalendarInfo from \"./common/WorkshopCalendarInfo.vue\";\n\nexport default {\n\n  name:\"WorkshopCalendarWeek\",\n\n  components: {\n    WorkshopCalendarWeeklyDay,\n    WorkshopCalendarInfo\n  },\n  \n  setup() {\n    moment.locale('fr');\n  },\n\n  props:{\n\n    calendars:{\n      type:Array,\n      default(){\n        return []\n      }\n    },\n\n    regularWeeks: {\n      type: Object,\n      default() {},\n    },\n\n  },\n\n  data() {\n    return {\n      daysNumber:range(0,7),\n    };\n  },\n\n  methods:{\n\n    formatTime : helperService.formatTime,\n\n    formatDate(value, pattern){\n      return moment(value, 'DD/MM/YYYY').local('fr').format(pattern);\n    },\n\n    formatDay(value) {\n      return moment(value, 'DD/MM/YYYY').locale('fr').format('ddd').toUpperCase(); \n    },\n\n    getRegularWeek(dayOfWeek){\n      return this.regularWeeks.find(regularWeek => regularWeek.dayOfWeek == dayOfWeek );\n    },\n\n    getCalendarDayBackgroundCssClass(calendarDay) {\n      if(calendarDay.workshopClosure && this.getRegularWeek(calendarDay.dayOfWeek).openningTimeSlots.length !== 0)\n        return 'bg-orange-lighter';\n\n      if(calendarDay.notWorkingDayName)\n        return 'bg-gray-lighter';\n    },\n\n  },\n\n}\n</script>\n\n<style lang=\"css\" scoped>\n\n.calendar .day-calendar{\n  min-height: 400px;\n}\n\n.calendar .calendar-day-header{\n  font-size: 16px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  flex-direction: column;\n}\n\n.calendar .calendar-day-widget{\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  height: 50px;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n\n/** progress bar */\n\n.calendar .calendar-day-widget .progress-line {\n  height: auto;\n  border-radius: 2px;\n  margin-bottom: 5px;\n  background-color: #f5f6f7;\n  display: flex;\n  height: 4px;\n}\n.calendar .calendar-day-widget .progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  transition: width .6s ease;\n}\n\n</style>\n\n","<template>\n\n  <div class=\"\">\n    <div v-for=\"timeSlot in calendarDay.timeSlots \" :key=\"timeSlot.startTime\" class=\"text-lighter fs-17 ps-3 p-2 pe-3\"\n      :class=\"[timeSlot.eventsSize ? 'border-left-default ':'border-left-gray-lighter' ]\">\n\n    <span class=\"col-5\">{{formatTime(timeSlot.startTime, 'HH:mm')}} </span>\n\n      <span class=\"col-6 text-end\">\n        <span v-if=\"timeSlot.eventsSize > 0\" class=\"badge badge-pill bg-default float-end fs-12 cursor-pointer\" @click=\"displayEvents()\"\n        v-tippy=\"{ content: `<small>Nombre d'événements</small>` , placement:'right' }\">{{timeSlot.eventsSize}}</span>\n      </span>\n\n    </div>\n  </div>\n\n</template>\n\n<script>\nimport moment from \"moment\";\n\nexport default {\n\n  name : \"WorkshopCalendarWeeklyDay\",\n\n  props:{\n    calendarDay:{\n      default(){\n        return {}\n      }\n    },\n  },\n\n  methods:{\n    \n    formatTime(value, pattern){\n      return moment(value, pattern).format('HH[h]mm');\n    },\n\n    displayEvents(){\n      var toDay = moment(this.calendarDay.date,'DD/MM/YYYY').format(\"DDMMYYYY\");\n      this.$router.push({ to:\"/app/events\", name: 'events', params: { startDate: toDay , endDate: toDay },  linkActiveClass: 'active' })\n    },\n  }\n\n}\n</script>\n\n<style lang=\"css\" scoped>\n\n\n</style>","import { render } from \"./WorkshopCalendarWeeklyDay.vue?vue&type=template&id=127e2f1a\"\nimport script from \"./WorkshopCalendarWeeklyDay.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopCalendarWeeklyDay.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./WorkshopCalendarWeek.vue?vue&type=template&id=33d0bd68&scoped=true\"\nimport script from \"./WorkshopCalendarWeek.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopCalendarWeek.vue?vue&type=script&lang=js\"\n\nimport \"./WorkshopCalendarWeek.vue?vue&type=style&index=0&id=33d0bd68&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-33d0bd68\"]])\n\nexport default __exports__","<template>\n  <div class=\"header-bar calendar-day-name d-block text-center text-capitalize date-header\" v-if=\"date\">{{date.format('dddd DD MMMM YYYY').toLowerCase().split('.').join(\"\")}}</div> \n  \n  <!-- workshop closure display -->\n  <div class=\"header-bar d-block text-center\" :class=\"getCalendarDayBackgroundCssClass(calendars[0][0])\">\n      \n    <div class=\"w-25 mx-auto\">\n      <WorkshopCalendarInfo :calendarDay=\"calendars[0][0]\" :regularWeek=\"getRegularWeek(calendars[0][0].dayOfWeek)\" />\n    </div>\n  \n  </div> \n\n  <div v-if=\"calendars[0][0].timeSlots && calendars[0][0].timeSlots.length>0\">\n    <div v-for=\"timeSlot in calendars[0][0].timeSlots \" :key=\"timeSlot.startTime\"  class=\"text-lighter ps-3 p-2 pe-3\"\n     :class=\"[ timeSlot.eventsSize ? 'border-left-default ':'border-left-gray-lighter' ]\">\n\n        <div class=\"p-2 d-flex align-items-center text-lighter\">\n\n          <div class=\"col-3 fs-17\">{{formatTime(timeSlot.startTime, 'HH:mm')}} </div>\n          \n          <div class=\"col-3\"> \n\n            <span v-if=\"timeSlot.availability>1\">\n              {{timeSlot.availability}} disponibilités\n            </span>\n\n            <span v-else-if=\"timeSlot.availability == 1\">\n              {{timeSlot.availability}} disponibilité\n            </span>\n\n            <span v-else>0 disponibilité</span>\n          </div>\n\n          <div class=\"col-3 text-center\">\n              <span v-if=\"timeSlot.eventsSize>1\"> {{timeSlot.eventsSize}} événements</span> \n              <span v-if=\"timeSlot.eventsSize == 1\"> {{timeSlot.eventsSize}} événement</span> \n              <span v-else>Aucun événement</span>\n          </div>\n\n           <!-- prgress bar -->\n          <div class=\" col-3 text-center\">\n            <span v-tippy=\"{ content: `<small>Taux de charge</small>` , placement:'top' }\"\n             v-if=\"calculateChargeRate(timeSlot.eventsSize,timeSlot.availability)>0\">\n                {{calculateChargeRate(timeSlot.eventsSize,timeSlot.availability)*100}}%\n            </span>\n            <div class=\"progress-line mb-0\">\n              <!--  class in the list conditionally of load value -->\n              <div class=\"progress-bar\" :class=\"[\n                    calculateChargeRate(timeSlot.eventsSize,timeSlot.availability) < 0.6 && calculateChargeRate(timeSlot.eventsSize,timeSlot.availability) > 0 ? 'bg-green' : '',\n                    calculateChargeRate(timeSlot.eventsSize,timeSlot.availability) >= 0.6 && calculateChargeRate(timeSlot.eventsSize,timeSlot.availability) < 0.9 ? 'bg-orange' : '',\n                    calculateChargeRate(timeSlot.eventsSize,timeSlot.availability) >= 0.9 ? 'bg-red' : ''\n                  ]\"\n                role=\"progressbar\" :style=\"{width: calculateChargeRate(timeSlot.eventsSize,timeSlot.availability)*100+'%', height: 5+'px' }\" :aria-valuenow='`${calculateChargeRate(timeSlot.eventsSize,timeSlot.availability) *100}`' aria-valuemin=\"0\" aria-valuemax=\"100\">\n              </div>\n            </div>\n          </div>\n          \n        </div>\n    </div>\n  </div>\n\n</template>\n\n<script>\nimport moment from \"moment\";\n\nimport WorkshopCalendarInfo from \"./common/WorkshopCalendarInfo.vue\";\n\nexport default {\n\n  name:\"WorkshopCalendarDay\",\n  \n  emits:[\"workshop-closure-added\"],\n\n  components: {\n    WorkshopCalendarInfo\n  },\n\n  setup() {\n    moment.locale('fr');\n  },\n\n  props:{\n    calendars:{\n      type:Array,\n      default(){\n        return []\n      }\n    },\n\n    date:{\n      type:Object,\n      default(){\n        return {}\n      }\n    },\n\n    regularWeeks: {\n      type: Object,\n      default() {},\n    },\n\n  },\n\n  methods:{\n\n    calculateChargeRate(eventsSize, availability){\n      const result =  (eventsSize/(availability+eventsSize)).toFixed(2);\n      if(result > 0)\n        return result;\n      else return 0;\n    },\n\n    formatTime(value, pattern){\n      return moment(value, pattern).format('HH[h]mm');\n    },\n\n    redirectToEvent(eventCode){\n      if(eventCode)\n        this.$router.push({name:\"event\", params:{ id: eventCode} });\n    },\n\n    getRegularWeek(dayOfWeek){\n      return this.regularWeeks.find(regularWeek => regularWeek.dayOfWeek == dayOfWeek );\n    },\n\n    getCalendarDayBackgroundCssClass(calendarDay) {\n      if(calendarDay.workshopClosure && this.getRegularWeek(calendarDay.dayOfWeek).openningTimeSlots.length !== 0)\n        return 'bg-orange-lighter';\n\n      if(calendarDay.notWorkingDayName)\n        return 'bg-gray-lighter';\n    },\n\n  }\n\n}\n</script>\n\n<style scoped>\n\n.min-height-200px{\n  min-height: 200px;\n}\n\n.date-header, .calendar-day-widget{\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  font-weight: 400;\n  text-align: center;\n  padding: 9px 0;\n  font-size: 16px;\n}\n\n\n/** progress bar */\n\n.calendar-day-widget .progress-line {\n  height: auto;\n  border-radius: 2px;\n  margin-bottom: 5px;\n  background-color: #f5f6f7;\n  display: flex;\n  height: 4px;\n}\n.calendar-day-widget .progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  transition: width .6s ease;\n}\n\n\n</style>","import { render } from \"./WorkshopCalendarDay.vue?vue&type=template&id=49a9623b&scoped=true\"\nimport script from \"./WorkshopCalendarDay.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopCalendarDay.vue?vue&type=script&lang=js\"\n\nimport \"./WorkshopCalendarDay.vue?vue&type=style&index=0&id=49a9623b&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-49a9623b\"]])\n\nexport default __exports__","import { render } from \"./WorkshopCalendars.vue?vue&type=template&id=53820cac\"\nimport script from \"./WorkshopCalendars.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopCalendars.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"container\">\n    <div class=\"header-bar justify-content-between my-3\">\n      <WorkshopListElement v-if=\"workshop\" v-bind:element=\"workshop\" :displayTeamItem=\"false\"/>\n    </div>\n\n    <!-- attache / detache info message -->\n    <CustomMessage v-if=\"workshopTeamInfoMessage\" :message=\"workshopTeamInfoMessage\" :type=\"'info'\" @close=\"this.workshopTeamInfoMessage = ''\"/>\n    \n    <!-- warn message if users are attached witout an effective capacity  -->\n    <CustomMessage v-if=\"emptyAttachedUserMessage\" :message=\"emptyAttachedUserMessage\" :closable=\"false\" :type=\"'warning'\"/>\n   \n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n    <UserConfigurationList v-if=\"workshop\" v-bind:users=\"workshopPlanningUsers\" v-bind:sort-field=\"dataListRequest.sortField\" :loading=\"loading\" v-on:configuration-updated=\"refreshUsersWorkshopTeam\"\n      :regularWeek=\"regularWeek\" :displayActions=\"true\" :workshopStatus=\"workshop.workshopStatusResp\" />\n\n  </div>\n</template>\n\n<script>\nimport UserConfigurationList from \"./workshop-team/UserConfigurationList.vue\";\nimport { useRoute } from \"vue-router\";\nimport CustomMessage from '../common/CustomMessage.vue';\nimport WorkshopListElement from \"./workshops/WorkshopListElement.vue\"\n\nexport default {\n  \n  name: \"WorkshopTeam\",\n\n  setup() {\n    let workshopCode = useRoute().params.workshopCode;\n    let companyCode = useRoute().params.companyCode;\n    return { companyCode, workshopCode  };\n  },\n\n  components: {\n    UserConfigurationList,\n    CustomMessage,\n    WorkshopListElement\n  },\n\n  data() {\n    return {\n      dataListRequest: {\n        companyCode: this.companyCode,\n        workshopCode: this.workshopCode\n      },\n      regularWeek:{},\n      loading:false,\n      workshopPlanningUsers: null,\n      workshop: null,\n      message:\"\",\n      workshopTeamInfoMessage:\"\",\n      emptyAttachedUserMessage:\"\",\n    };\n  },\n\n  created(){\n    this.loadWorkshop();\n    this.loadUsersWorkshopTeam();\n  },\n\n  methods: {\n\n    loadWorkshop() {\n\n      let loadWorkshopReq = {\n        method: \"GET\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()}\n      };\n\n      fetch(\"/api/workshop/get-workshop/\"+this.companyCode+\"/\"+this.workshopCode, loadWorkshopReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            var data = await response.json();\n            this.workshop = data;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadWorkshop.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    loadUsersWorkshopTeam() {\n      \n      let dataListReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(this.dataListRequest),\n      };\n     \n       fetch(\"/api/workshop-planning/users\", dataListReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.workshopPlanningUsers = await response.json();\n            this.workshopRegularWeek();\n            this.checkEmptyAttachedUsers(this.workshopPlanningUsers);\n            return;\n          } \n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadUsersWorkshopTeam.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    workshopRegularWeek() {\n\n      let regularWeekHeaderReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n      };\n     \n      fetch(\"/api/regular-week/workshop-regular-week/\"+this.companyCode+\"/\"+this.workshopCode, regularWeekHeaderReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if(response.ok){\n            this.regularWeek = await response.json();\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.workshopRegularWeek.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n    },\n\n    refreshUsersWorkshopTeam(){\n      this.workshopTeamInfoMessage = \"La mise à jour du planning n'est pas immédiate et se fera après un certain laps de temps.\";\n      this.loadUsersWorkshopTeam();\n    },\n\n    checkEmptyAttachedUsers(users) {\n      this.emptyAttachedUserMessage = \"\";\n\n      const enabledConfigurations = users.filter(user => user.configuration.status === \"ENABLED\");\n      if(enabledConfigurations.length ===0)\n        return;\n\n      const allUsersBelowThreshold = users.every(user => user.configuration.effectiveCapacity < 0.05);\n      if (allUsersBelowThreshold)\n        this.emptyAttachedUserMessage = \"Tous les utilisateurs attachés ont une capacité effective à 0, ceci va résulter en un planning sans disponibilités.\"+ \n          \" Veuillez augmenter la capacité effective des utilisateurs\";\n    \n    },\n\n\n  },\n\n};\n</script>\n\n<style scoped>\n\n.dropdown-menu.page-length {\n  min-width: 3rem;\n}\n\nul {\n  list-style-type: none;\n  padding: 0;\n}\n</style>\n","<template>\n\n  <div class=\"card\" v-if=\"users != null && users.length> 0\">\n\n    <div class=\"media-list media-list-md media-list-bordered media-list-divided\">\n\n        <div class=\"media flexbox align-items-center\" v-for=\"user in users\" :key=\"user.userCode\">\n          <UserConfigurationListElement v-bind:element=\"user\"\n            :displayActions=\"displayActions\"\n            :isWorkshopEnabled=\"workshopStatus && workshopStatus.name ==='ACTIVATED'\"\n            v-on:user-configured=\"selectedUser=user, showQuickView()\" \n            v-on:user-attached=\"reload\" \n            v-on:user-detached=\"reload\" \n            v-on:error-occurred=\"showErrorMessage\" />\n        </div>\n\n        <!-- loader -->\n        <div v-show=\"loading\" class=\"loading reveal\">\n          <span class=\"spinner-border\" role=\"status\"></span>\n        </div>\n\n    </div>\n\n  </div>\n\n  <div v-if=\"isOpen\" class=\"quickview-container\">\n    <UserConfigurationUpdate v-bind:selected-user-item=\"selectedUser\" v-on:close=\"closeQuickView\" v-on:configuration-updated=\"reload\"/>\n  </div>\n\n  <div v-else-if=\"users != null && users.length <= 0\" class=\"card text-center min-height-200 mt-4\">\n    <div class=\"min-height-200 d-flex align-items-center\"> \n      <div class=\"text-center w-100 \">\n        <i class=\"mdi mdi-alert-outline fs-50\"/> \n        <br/> \n        <span class=\"text-muted fs-14\"> \n          Aucun utilisateur\n        </span> \n      </div>\n    </div>\n  </div>\n\n  <!-- error message -->\n  <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n</template>\n\n<script>\nimport { ListConfig } from \"../../../beans/UserListConfig.js\";\nimport UserConfigurationUpdate from \"./UserConfigurationUpdate.vue\";\nimport UserConfigurationListElement from \"./UserConfigurationListElement.vue\";\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n  \n  name: \"UserConfigurationList\",\n  \n  emits: [\"configuration-updated\"],\n\n  components: {\n    UserConfigurationUpdate,\n    UserConfigurationListElement,\n    CustomMessage\n  },\n \n  props: {\n    \n    users: {\n      type: Array,\n    },\n\n    sortField: {\n      type: String,\n    },\n\n    listConfig: {\n      type: ListConfig,\n      default() {\n        return new ListConfig();\n      },\n    },\n\n    loading: {\n      type: Boolean,\n      default() {\n        return false;\n      },\n    },\n    regularWeek:{\n       type: Object,\n       default(){\n          return null;\n       }\n\n    },\n\n    displayActions: {\n      type: Boolean\n    },\n\n    workshopStatus: {\n      type: Object,\n    },\n  },\n\n  data() {\n    return {\n      selectedUser: null,\n      direction: \"asc\",\n      isOpen: false,\n      message:\"\"\n    };\n  },\n\n  methods: {\n\n    reload() {\n      this.$emit(\"configuration-updated\");\n    },\n\n    showQuickView() {\n      if (this.isOpen == true) {\n        this.isOpen = false;\n      } else {\n        this.selectedUser.regularWeek = this.regularWeek;\n        this.isOpen = true;\n      }\n    },\n\n    closeQuickView() {\n      this.isOpen = false;\n    },\n\n    showErrorMessage(message){\n      this.message = message;\n    }\n\n  },\n};\n</script>\n\n<style lang=\"css\" scoped>\n/* responsive */\n\n</style>\n","<template>\n\n  <div class=\"quickview quickview-lg\" tabindex=\"-1\" id=\"quickViewUserUpdate\" aria-labelledby=\"quickViewUserUpdateLabel\">\n    <header class=\"quickview-header\">\n      <div class=\"quickview-title lead fw-400\">\n        Configuration de l'utilisateur\n      </div>\n      <button type=\"button\" class=\"btn-close\" v-on:click=\"$emit('close')\"></button>\n    </header>\n\n    <div class=\"quickview-body\">\n      <div class=\"quickview-block form-type-material\">\n        \n        <UserConfigurationUpdateForm :regularWeeks=\"selectedUserItem.regularWeek\" \n          :configurationTransferred=\"selectedUserItem.configuration\" \n          v-on:configuration-updated=\"configUpdated\" />\n\n      </div>\n    </div>\n    \n  </div>\n    \n</template>\n\n<script>\nimport UserConfigurationUpdateForm from \"./UserConfigurationUpdateForm.vue\";\n\nexport default {\n\n  name: \"UserConfigurationUpdate\",\n\n  emits: [\"close\", \"configuration-updated\"],\n\n  components: {\n    UserConfigurationUpdateForm\n  },\n\n  props:{\n    \n    selectedUserItem: {\n      type: Object,\n    }\n  },\n\n  data() {\n    return {\n      closed:false,\n    };\n  },\n\n  methods: {\n    configUpdated(){\n      this.$emit('configuration-updated');\n    }\n  }\n\n};\n</script>\n\n<style lang=\"css\" scoped>\n\n</style>","<template>\n\n  <Form v-on:submit=\"updateConfig\" :validation-schema=\"updateConfigSchema\" v-slot=\"{ errors }\" class=\"align-items-center fs-15 fw-500\">\n\n    <div class=\"d-flex align-items-center\">\n      <div class=\"pe-2\">Statut:</div>\n      <div class=\"col-2 text-center\"> \n        <span v-if=\"this.configuration.status == 'DISABLED'\" class=\"badge badge-pill bg-orange\">Non attaché</span>\n        <span v-if=\"this.configuration.status == 'ENABLED'\"  class=\"badge badge-pill bg-green\" >Attaché</span>\n      </div>\n    </div>\n\n    <div class=\"d-flex align-items-center\">\n      <div class=\"col-4\">La capacité effective:</div>\n\n      <!-- effective capacity -->\n      <template v-if=\"editable\">\n        <div class=\"col-3 form-group d-flex text-center align-items-center flex-wrap\">\n          <Field type=\"tel\" class=\"form-control text-center\" name=\"capacityEffective\" v-model=\"capacity\" :class=\"{ 'is-invalid': errors.capacityEffective }\"\n          v-maska data-maska=\"###\" v-on:blur=\"updateUserConfiguration()\" required/>\n          <ErrorMessage name=\"capacityEffective\" class=\"invalid-feedback\" />\n        </div>\n        <div class=\"col-1 ps-1\">%</div>\n      </template>\n\n      <div v-else class=\"col-2 text-center\">\n        <div v-tippy=\"{ content: `<small>Capacité effective de l'utilisateur </small>` , placement:'top' }\"  class=\"badge badge-pill badge-box mx-auto text-muted\"> {{capacity}} %</div>\n      </div>\n\n    </div>\n\n  </Form>\n\n  <hr>\n\n  <div class=\"media-list media-list-md media-list-divided\">\n\n    <div class=\"media flexbox align-items-center fs-15 text-muted\" v-for=\"regularWeek in regularWeeksItems\" :key=\"regularWeek.dayOfWeek\" >\n\n      <!-- day -->\n      <div class=\"col-1 text-muted text-center\">\n        <span>{{ \" \" + dayInFr(regularWeek.dayOfWeek)}}</span>\n      </div>\n\n      <!-- Time slots -->\n      <div class=\"col-4 text-center\">\n        <span class=\"text-muted\" v-if=\"regularWeek.openningTimeSlots.length==0\">Indisponible</span>\n        <div v-else>\n          <div v-for=\"item in regularWeek.openningTimeSlots\" :key=\"item\">\n            <span class=\" p-2\">{{item.startTime}}</span>\n            <i class=\"mdi mdi-minus\" />\n            <span class=\"p-2\">{{item.endTime}}</span>\n          </div>\n        </div>\n      </div>\n        \n      <!-- day time space -->\n      <div class=\"col-2 fs-14 text-center\">\n        <div v-if=\"regularWeek.openningTimeSlots.length>0\">\n          <span class=\"badge badge-pill badge-box mx-auto text-muted\"> {{ formatTime(regularWeek.dayTimeSpace) }} </span>\n        </div>\n      </div>\n\n      <div class=\"col-5 fs-14\">\n        <div v-if=\"regularWeek.openningTimeSlots.length>0\"> \n          <span> Capacité :</span>\n          <span class=\"p-1 ms-1 fw-600\">{{ formatTime(regularWeek.dayTimeSpace * capacity/100) }}</span>\n        </div>\n      </div>\n\n    </div>\n\n    <!-- loader -->\n    <div v-if=\"loading\" class=\"loading reveal top-0\">\n      <span class=\"spinner-border\" role=\"status\"></span>\n    </div>\n\n  </div>\n\n  <!-- custom message -->\n  <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"successfulUpdated ? 'success' : 'error'\" @close=\"this.message = ''\" />\n\n</template>\n\n<script>\nimport helperService from \"../../../services/helper.service.js\";\nimport {Form, Field, ErrorMessage } from \"vee-validate\";\nimport { vMaska } from \"maska\";\nimport moment from \"moment\";\nimport { useRoute } from \"vue-router\";\nimport * as Yup from \"yup\";\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name: \"UserConfigurationUpdateForm\",\n\n  emits:[\"configuration-updated\"],\n  \n  directives: {maska: vMaska},\n\n  components:{\n    Field,\n    ErrorMessage,\n    Form,\n    CustomMessage\n  },\n\n  setup(){\n    var errorMessage=\"Valeur non acceptée\"\n    const updateConfigSchema = Yup.object().shape({\n      capacityEffective: Yup.number().min(5, \"minimum 5%\").max(100, \"maximum 100%\").required(errorMessage).typeError(errorMessage)});\n    let workshopCode = useRoute().params.workshopCode;\n    let companyCode = useRoute().params.companyCode;\n\n    return{updateConfigSchema, companyCode, workshopCode  };\n\n  },\n\n  props: {\n\n    regularWeeks: {\n      type: Object,\n      default() {},\n    },\n\n    configurationTransferred: {\n      type: Object,\n      default() {\n        return null;\n      },\n    },\n\n    editable:{\n      type:Boolean,\n      default: () => true\n    }\n\n  },\n\n  data() {\n    \n    return {\n      regularWeeksItems: this.regularWeeks,\n      selectedOnlineCharge: \"\",\n      loading: false,\n      message: \"\",\n      activateUser:this.configurationTransferred.status,\n      capacity:this.configurationTransferred.effectiveCapacity*100,\n      configuration:this.configurationTransferred,\n      successfulUpdated: false\n    };\n\n  },\n\n  computed:{\n\n    checked(){\n      if (this.configuration.status == 'ENABLED')\n        return true;\n      else return false; \n    }\n\n  },\n\n  created() {\n    this.regularWeeksItems = this.regularWeeks;\n  },\n  \n  methods: {\n\n    formatTime : helperService.formatTime,\n\n    //day french\n    dayInFr(cases) {\n      switch (cases) { \n        case \"MONDAY\": return \"LUN\";\n        case \"TUESDAY\": return \"MAR\";\n        case \"WEDNESDAY\": return \"MER\";\n        case \"THURSDAY\": return \"JEU\";\n        case \"FRIDAY\": return \"VEN\";\n        case \"SATURDAY\": return \"SAM\";\n        case \"SUNDAY\": return \"DIM\";\n      }\n    },\n\n    formatDate(value, pattern){\n      return moment(value, pattern);\n    },\n\n    activated(checked){\n      if(checked == true)\n        this.activateUser='ENABLED';\n      if(checked == false)\n         this.activateUser='DISABLED';\n      this.updateConfig();\n\n    },\n\n    updateUserConfiguration(){\n      if(this.capacity>=5 && this.capacity<=100)\n        this.updateConfig()\n    },\n\n    /* update */\n    updateConfig() {\n\n      let updateConfig = {\n        userConfigurationCode:this.configuration.userConfigurationCode,\n        companyCode: this.companyCode,\n        workshopCode: this.workshopCode,\n        status:this.activateUser,\n        effectiveCapacity:this.capacity/100\n      };\n\n      let updateupdateConfigReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(updateConfig),\n      };\n\n      fetch(\"/api/user/configuration\", updateupdateConfigReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok) {\n            this.configuration=await response.json();\n            this.successfulUpdated = true;\n            this.message = \"Votre modification a été enregistrée avec succès.\";\n            setTimeout(() => (this.successfulUpdated = false, this.message = ''), 4000);\n            this.$emit(\"configuration-updated\");\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.updateConfig.bind(this));\n            return;\n          }  \n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n  },\n\n\n};\n</script>\n\n<style scoped>\n\n</style>\n","import { render } from \"./UserConfigurationUpdateForm.vue?vue&type=template&id=4d9d8720\"\nimport script from \"./UserConfigurationUpdateForm.vue?vue&type=script&lang=js\"\nexport * from \"./UserConfigurationUpdateForm.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./UserConfigurationUpdate.vue?vue&type=template&id=1b04675d\"\nimport script from \"./UserConfigurationUpdate.vue?vue&type=script&lang=js\"\nexport * from \"./UserConfigurationUpdate.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template >\n    \n  <div class=\"avatar ms-3 me-3 col-1\" id=\"profileImage\" v-bind:style=\"{ background: element.iconColor }\" >\n    {{element.userFirstName.substring(0, 1).concat(element.userLastName.substring(0, 1)).toUpperCase()}}\n  </div>\n\n  <div class=\" col-3 me-3 fs-17 text-truncate\">\n    <span> {{ element.userFirstName + \" \" + element.userLastName }}</span>\n    <UserRole :role=\"element.roleValue\" :size=\"12\" />\n  </div>\n\n  <!-- effective capacity -->\n  <div class=\"col-2 mx-auto\">\n    <div v-if=\"this.element.configuration.status == 'ENABLED'\" v-tippy=\"{ content: `<small>Capacité effective de l'utilisateur </small>` , placement:'top' }\"  class=\" badge badge-pill badge-box fs-15 fw-600\"> {{effectiveCapacity}}</div>\n  </div>\n\n  <!-- status -->\n  <div class=\"col-2 text-center\">\n    \n    <span v-if=\"this.element.configuration.status == 'DISABLED'\" v-tippy=\"{ content: `<small>Utilisateur non attaché au planning</small>` , placement:'top' }\" class=\"badge badge-pill bg-orange\">\n      Non attaché\n    </span>\n    <span v-if=\"this.element.configuration.status == 'ENABLED'\" class=\"badge badge-pill bg-green\" v-tippy=\"{ content: `<small>Utilisateur attaché au planning</small>` , placement:'top' }\" > Attaché\n    </span>\n  \n  </div>\n\n  <!-- actions -->\n  <div class=\"col-2\" v-if=\"displayActions\">\n\n    <!--DISABLED  -->\n    <div class=\"btn-group w-100 pe-3 mb-0\" v-if=\"this.element.configuration.status == 'DISABLED' && isWorkshopEnabled\">\n\n      <button class=\"btn btn-lg col-12\" v-on:click=\"addUserToPlanning\">Attacher au planning</button>\n      <button class=\"btn btn-lg dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" id=\"dropdownMenuLink\" aria-expanded=\"false\"></button>\n      <div class=\"dropdown-menu dropdown-menu-right cursor-pointer\" x-placement=\"bottom-end\" aria-labelledby=\"dropdownMenuLink\" >\n        <a class=\"dropdown-item\" v-on:click=\"configureUser\">\n          <i class=\"mdi mdi-chevron-right fs-14\"/>  Configurer\n        </a>\n      </div>\n     \n    </div> \n\n    <!--ENABLED-->\n    <div class=\"btn-group w-100 pe-3 mb-0\" v-if=\"this.element.configuration.status == 'ENABLED'\">\n      <button class=\"btn btn-lg col-12\" v-on:click=\"displayUserCalendars(this.element.userCode)\" > Planning</button>\n      <button class=\"btn btn-lg dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" id=\"dropdownMenuLink\" aria-expanded=\"false\"></button>\n      <div class=\"dropdown-menu dropdown-menu-right cursor-pointer\" x-placement=\"bottom-end\" aria-labelledby=\"dropdownMenuLink\" >\n\n        <a v-if=\"isWorkshopEnabled\" class=\"dropdown-item\" v-on:click=\"configureUser\" >\n          <i class=\"mdi mdi-chevron-right fs-14\"/> Configurer\n        </a>\n\n        <a v-if=\"hasPrivilege('DISPLAY_ABSENCE')\" class=\"dropdown-item\" v-on:click=\"displayUserAbsences\">\n          <i class=\"mdi mdi-chevron-right fs-14\"/> Jours d'absences\n        </a>\n\n        <a v-if=\"isWorkshopEnabled\" class=\"dropdown-item\" v-on:click=\"showDetachModal = true\">\n          <i class=\"mdi mdi-chevron-right fs-14\"/> Détacher du planning\n        </a>\n\n      </div>\n    </div> \n    \n  </div>\n  \n  <!-- pop up confirmation -->\n  <UserConfigurationDetachConfirmation\n    :show=\"showDetachModal\"\n    v-on:close=\"showDetachModal = false\" \n    v-on:user-detached=\"detacheUserFromPlanning\"\n  />\n</template>\n\n<script>\nimport UserRole from \"../../user/common/UserRole.vue\";\nimport UserConfigurationDetachConfirmation from \"./UserConfigurationDetachConfirmation.vue\";\nimport { hasPrivilege } from \"../../../services/user.service.js\";\n\nexport default {\n  \n  name: \"UserConfigurationListElement\",\n\n  emits:['user-attached', \"user-configured\", \"error-occurred\", \"user-detached\"],\n\n  components:{\n    UserRole,\n    UserConfigurationDetachConfirmation\n  },\n\n  props: {\n    element: {\n      type: Object,\n    },\n\n    displayActions: {\n      type: Boolean,\n    },\n\n    isWorkshopEnabled: {\n      type: Boolean,\n    },\n    \n  },\n\n  computed:{\n    effectiveCapacity(){\n      return this.element.configuration.effectiveCapacity*100+\"%\";\n    }\n  },\n\n  data(){\n    return{\n      message: \"\",\n      showDetachModal: false\n    }\n  },\n\n  methods:{\n\n    hasPrivilege: hasPrivilege,\n\n    addUserToPlanning(){\n      this.updateUserPlanningConfig(\"ENABLED\", this.element.capacity/100, \"user-attached\");\n    },\n    \n    displayUserAbsences(){\n      this.$router.push({ name: 'user-absences', params:{userCode:this.element.userCode}});\n    },\n\n    configureUser(){\n      this.$emit(\"user-configured\");\n    },\n\n    displayUserCalendars(){\n      this.$router.push({ name: 'user-calendars',params: { companyCode: this.element.companyCode, workshopCode: this.element.workshopCode, userCode: this.element.userCode }});\n    },\n\n    detacheUserFromPlanning(){\n      this.updateUserPlanningConfig(\"DISABLED\", 1, \"user-detached\");\n      this.showDetachModal = false;\n    },\n\n    updateUserPlanningConfig(status, effectiveCapacity, eventToEmit){\n      \n      let updateUserPlanningConfig = {\n        userConfigurationCode: this.element.configuration.userConfigurationCode,\n        companyCode: this.element.companyCode,\n        workshopCode: this.element.workshopCode,\n        status: status,\n        effectiveCapacity: effectiveCapacity\n      };\n\n      let updateUserPlanningConfigReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(updateUserPlanningConfig),\n      };\n\n      fetch(\"/api/user/configuration\", updateUserPlanningConfigReq)\n      .then(async (response) => {\n        if (response.status == 400) {\n          this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n          this.$emit(\"error-occurred\", this.message);\n          return;\n        }\n        if (response.ok) {\n          this.$emit(eventToEmit);\n          return;\n        } \n        return Promise.reject(response);\n      })\n      .catch((response) => {\n        if (response.status == 401){\n          this.$authTokenService.refreshToken(this.updateUserPlanning.bind(this, status, effectiveCapacity, eventToEmit));\n          return;\n        }\n        this.message = this.$authTokenService.handleErrorResponse(response);\n        this.$emit(\"error-occurred\", this.message);\n      });\n    },\n\n  }\n\n};\n</script>\n\n<style lang=\"css\" scoped>\n.avatar {\n  width: 3rem;\n  height: 3rem;\n  border-radius: 50%;\n  font-size: 1.5rem;\n  color: #fff;\n  text-align: center;\n  line-height: 3rem;\n}\nsmall, time, .small {\n  font-weight: 400;\n  font-size: 13px;\n  color: #8b95a5;\n}\n.badge-border {\n  border: 1px solid #efefef;\n}\n\n\n</style>\n","<template>\n  \n  <Transition name=\"modal\">\n  \n    <div v-if=\"show\" class=\"modal-mask\">\n\n      <div class=\"modal-wrapper\">\n        <div class=\"modal-container p-0\">\n          <div class=\"card mb-0\">\n\n            <div class=\"card-header\">\n              <div class=\"fs-16 fw-600\"> \n                <i class=\"mdi mdi-alert-outline text-muted fs-17 me-1\" />\n                Retrait du planning\n              </div>\n            </div>\n\n            <div class=\"card-body fs-16 fw-500 mx-auto\">\n              <div> \n                <span> Êtes-vous certain de vouloir détacher cet utilisateur du planning ? </span>\n              </div> \n            </div>\n\n            <div class=\"card-footer text-center btn-row p-2\">\n              <button class=\"btn btn-round btn-custom w-25\" @click=\"$emit('close')\">Annuler</button>\n              <button class=\"btn btn-round btn-custom w-25\" @click=\"detacheUserFromPlanning\" >Confirmer</button>\n            </div>\n\n            <!-- error message -->\n            <CustomMessage v-if=\"message\" :cssClass=\"'mt-2 ps-2 pe-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n          </div>\n          \n        </div>\n        \n      </div>\n\n    </div>\n\n  </Transition>\n\n</template>\n\n<script>\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name:\"UserConfigurationDetachConfirmation\",\n\n  emits:['close', 'user-detached'],\n\n  components: {\n    CustomMessage\n  },\n\n  props:{\n\n    show: {\n      type: Boolean,\n      default() {\n        return false;\n      },\n    },\n\n  },\n  data(){\n    return {\n      message: \"\"\n    };\n  },\n\n  methods: {\n\n    detacheUserFromPlanning(){\n      this.$emit(\"user-detached\");\n    }\n  },\n\n}\n</script>\n\n<style scoped>\n\n</style>","import { render } from \"./UserConfigurationDetachConfirmation.vue?vue&type=template&id=cb2c4ea0\"\nimport script from \"./UserConfigurationDetachConfirmation.vue?vue&type=script&lang=js\"\nexport * from \"./UserConfigurationDetachConfirmation.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./UserConfigurationListElement.vue?vue&type=template&id=458c3e43&scoped=true\"\nimport script from \"./UserConfigurationListElement.vue?vue&type=script&lang=js\"\nexport * from \"./UserConfigurationListElement.vue?vue&type=script&lang=js\"\n\nimport \"./UserConfigurationListElement.vue?vue&type=style&index=0&id=458c3e43&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-458c3e43\"]])\n\nexport default __exports__","import { render } from \"./UserConfigurationList.vue?vue&type=template&id=24e8b972&scoped=true\"\nimport script from \"./UserConfigurationList.vue?vue&type=script&lang=js\"\nexport * from \"./UserConfigurationList.vue?vue&type=script&lang=js\"\n\nimport \"./UserConfigurationList.vue?vue&type=style&index=0&id=24e8b972&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-24e8b972\"]])\n\nexport default __exports__","import { render } from \"./WorkshopTeam.vue?vue&type=template&id=103e3510&scoped=true\"\nimport script from \"./WorkshopTeam.vue?vue&type=script&lang=js\"\nexport * from \"./WorkshopTeam.vue?vue&type=script&lang=js\"\n\nimport \"./WorkshopTeam.vue?vue&type=style&index=0&id=103e3510&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-103e3510\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"d-flex\">\n\n    <!-- filter -->\n    <div class=\"col-md-4 col-xl-2\">\n\n      <ReportingFilter v-on:reporting-filter-updated=\"onFilterChange\" :disableSubmit=\"disablingSubmit\" :defaultDisplayMode=\"'month'\" />\n\n    </div>\n  \n    <div class=\"container-fluid col-md-8 col-xl-10 my-3\"> \n      \n      <div v-if=\"reporting\">\n\n        <div class=\"row\">\n\n          <!-- events number  -->\n          <div class=\"col-4\">\n            <ReportingWidget :title=\"'Événements'\" :value=\"reporting.events\" :comparativeIndex=\"reporting.eventsComparativeIndex\" :previousPeriodStartDate=\"reporting.previousPeriodStartDate\"\n              :previousPeriodEndDate=\"reporting.previousPeriodEndDate\" :cssClassBgColor=\"'bg-white'\" />\n          </div>\n\n          <!-- web interface -->\n          <div class=\"col-4\">\n            <ReportingWidget :title=\"'Interface Web'\" :value=\"reporting.eventsWebInterface\" :comparativeIndex=\"reporting.eventsWebInterfaceComparativeIndex\" :cssClassBgColor=\"'bg-white'\" \n              :iconName=\"'webInterfaceIcon'\" :previousPeriodStartDate=\"reporting.previousPeriodStartDate\" :previousPeriodEndDate=\"reporting.previousPeriodEndDate\" />\n          </div>\n\n          <!-- manager interface -->\n          <div class=\"col-4\">\n            <ReportingWidget :title=\"'Manager'\" :value=\"reporting.eventsManager\" :comparativeIndex=\"reporting.eventsManagerComparativeIndex\"\n              :previousPeriodStartDate=\"reporting.previousPeriodStartDate\" :previousPeriodEndDate=\"reporting.previousPeriodEndDate\" :iconName=\"'managerInterfaceIcon'\" />\n          </div>\n        \n        </div>\n\n        <div class=\"row\">\n\n          <!-- events done -->\n          <div class=\"col-4\">\n            <ReportingWidget :title=\"'Validés'\" :value=\"reporting.eventsDone\" :comparativeIndex=\"reporting.eventsDoneComparativeIndex\"\n              :previousPeriodStartDate=\"reporting.previousPeriodStartDate\" :previousPeriodEndDate=\"reporting.previousPeriodEndDate\" :cssClassBorderLeftColor=\"'border-left-green'\" />\n          </div>\n          \n          <!-- events revocated -->\n          <div class=\"col-4\">\n            <ReportingWidget :title=\"'Annulés'\" :value=\"reporting.eventsRevocated\" :comparativeIndex=\"reporting.eventsRevocatedComparativeIndex\"\n              :previousPeriodStartDate=\"reporting.previousPeriodStartDate\" :previousPeriodEndDate=\"reporting.previousPeriodEndDate\" :cssClassBorderLeftColor=\"'border-left-red'\" />\n          </div>\n\n        </div>\n      </div>\n\n      <!-- previous period -->\n      <div v-if=\"reporting\" class=\"d-none\">\n        <hr>\n        \n        <div class=\"row\" >\n\n          <!-- events number  -->\n          <div class=\"col-4\">\n            <ReportingWidget :title=\"'Événements'\" :value=\"reporting.eventsPreviousPeriod\" :cssClassBgColor=\"'bg-white'\" />\n          </div>\n\n          <!-- web interface -->\n          <div class=\"col-4\">\n            <ReportingWidget :title=\"'Interface Web'\" :value=\"reporting.eventsWebInterfacePreviousPeriod\" :cssClassBgColor=\"'bg-white'\" :iconName=\"'webInterfaceIcon'\" />\n          </div>\n\n          <!-- manager interface -->\n          <div class=\"col-4\">\n            <ReportingWidget :title=\"'Manager'\" :value=\"reporting.eventsManagerPreviousPeriod\" :iconName=\"'managerInterfaceIcon'\" />\n          </div>\n\n        </div>\n\n        <!-- display none -->\n        <div class=\"row\">\n\n          <!-- events done -->\n          <div class=\"col-4\">\n            <ReportingWidget :title=\"'Validés'\" :value=\"reporting.eventsDonePreviousPeriod\" :cssClassBorderLeftColor=\"'border-left-green'\" />\n          </div>\n\n          <!-- events revocated -->\n          <div class=\"col-4\">\n            <ReportingWidget :title=\"'Annulés'\" :value=\"reporting.eventsRevocatedPreviousPeriod\" :cssClassBorderLeftColor=\"'border-left-red'\" />\n          </div>\n\n        </div>\n      </div>\n\n      <!-- busy schedule chart -->\n      <div v-if=\"days.length>0\" class=\"card\">\n        <div class=\"card-header text-center border-0 text-lighter\">Affluence des événements</div>\n        <ReportingBusyScheduleChart class=\"card-body mt-2\" :dataSet=\"days\" :initialSeries=\"series\" :max=\"reportingMaxEventsDone\" />\n      </div>\n\n      <!-- Loader -->\n      <div v-show=\"loading\" class=\"loading reveal\">\n        <span class=\"spinner-border\" role=\"status\"></span>\n      </div>\n\n      <!-- error message -->\n      <CustomMessage v-if=\"message\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n\n    </div>\n\n  </div>\n\n</template>\n\n<script>\n\nimport ReportingWidget from './reporting/ReportingWidget.vue';\nimport ReportingFilter from './reporting/ReportingFilter.vue';\nimport moment from 'moment';\nimport ReportingBusyScheduleChart from './reporting/ReportingBusyScheduleChart.vue';\nimport CustomMessage from '../common/CustomMessage.vue';\n\nexport default {\n\n  name:\"Reporting\",\n\n  components:{\n    ReportingWidget,\n    ReportingFilter,\n    ReportingBusyScheduleChart,\n    CustomMessage\n  },\n\n  data(){\n    return{\n      reporting:null,\n      disablingSubmit:false,\n      loading:false,\n      busyScheduleReporting:null,\n      series : null,\n      days:[],\n      eventStartDate : null,\n      eventEndDate : null,\n      reportingMaxEventsDone:0,\n      message:\"\"\n    }\n  },\n\n\n  methods:{\n\n    /**\n     * fetch statistics\n     */\n    fetchStatistics(reportingRequest) {\n\n      let dataReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(reportingRequest),\n      };\n      this.disablingSubmit = true;\n      this.loading = true;\n\n      fetch(\"/api/reporting/statistics\", dataReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            this.disableSubmit = false;\n            return;\n          }\n          if (response.ok){\n            this.reporting  = await response.json();\n            this.disablingSubmit = false;\n            this.loading = false;\n            return;\n          }\n          return Promise.reject(response);\n\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.fetchStatistics.bind(this, reportingRequest));\n            return;\n          } \n          this.message = this.$authTokenService.handleErrorResponse(response);\n          this.loading = false;\n          this.disablingSubmit = false;\n        });\n\n    },\n    \n    \n    /**\n     * fetch reporting schedule data\n     */\n    fetchReportingBusySchedule(reportingRequest){\n\n      let dataReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(reportingRequest),\n      };\n      this.disablingSubmit = true;\n\n      fetch(\"/api/reporting/statistics/distributed\", dataReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            this.disableSubmit = false;\n            return;\n          }\n          if (response.ok){\n            this.busyScheduleReporting  = await response.json();\n            this.dataPreparation();\n            this.disablingSubmit = false;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.fetchReportingBusySchedule.bind(this, reportingRequest));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          this.disablingSubmit = false;\n      });\n      \n    },\n\n    /**\n     * when filter changed \n     */\n    onFilterChange(filter){\n      filter.companyCode =this.$store.state.auth.user.companyCode;\n      this.eventStartDate = moment(filter.eventStartDate, \"DD/MM/YYYY\").format(\"DD/MM/YYYY\");\n      this.eventEndDate = moment(filter.eventEndDate, \"DD/MM/YYYY\").format(\"DD/MM/YYYY\");\n\n      const daysNumber = moment(filter.eventEndDate, \"DD/MM/YYYY HH:mm\").diff(moment(filter.eventStartDate, \"DD/MM/YYYY HH:mm\"), 'days');\n      this.days = [];\n      if(daysNumber >= 6)\n        this.fetchReportingBusySchedule(filter);\n      this.fetchStatistics(filter);\n    },\n\n    /**\n     * this function used to format data in order to be used in chart which title is day in french and data is array of event number\n     * this.days will contains the results\n     */\n    dataPreparation(){\n      // translate dayOfWeek to french day,\n      const daysOfWeek = {\n        MONDAY: \"LUN.\",\n        TUESDAY: \"MAR.\",\n        WEDNESDAY: \"MER.\",\n        THURSDAY: \"JEU.\",\n        FRIDAY: \"VEN.\",\n        SATURDAY: \"SAM.\", \n        SUNDAY: \"DIM.\"\n      };\n\n      for(const index in this.busyScheduleReporting){\n        const dayItem = {};\n        dayItem.title = daysOfWeek[this.busyScheduleReporting[index].dayOfWeek];\n        dayItem.data = this.getDayEventsDone(index); \n        this.days.push(dayItem);\n      }\n      // default data\n      if(this.days.length > 0){\n        this.series= [{\n            name: \"Nombre d'événements effectués\",\n            data: this.days[0].data\n          }\n        ]\n      }\n\n    },\n\n    /**\n     * function format eventsDone like array [0, 1, 1, 0 ....]\n     */\n    getDayEventsDone(index){\n      const eventsDoneArray = [];\n      for(const timeSlotIndex in this.busyScheduleReporting[index].timeSlots){\n\n        const eventsDone = this.busyScheduleReporting[index].timeSlots[timeSlotIndex].eventsDone;\n\n        eventsDoneArray.push(eventsDone);\n        if(eventsDone > this.reportingMaxEventsDone)\n          this.reportingMaxEventsDone = eventsDone;\n      }\n\n      return eventsDoneArray;\n    }\n\n  }\n\n\n\n}\n</script>\n\n<style scoped>\n\n\n</style>","<template>\n  \n\n  <div class=\"card\">\n\n    <div class=\"card-body\" :class='`${cssClassBgColor} ${cssClassTextColor} ${cssClassBorderLeftColor}`'>\n\n      <div class=\"d-flex align-items-center\" :class=\"[iconName ? 'justify-content-between' : 'justify-content-center']\">\n\n        <div v-if=\"iconName\" class=\"\">\n          <i :class='`${selectedIcon} fs-40`' />\n        </div>\n\n        <div class=\"text-center\">\n          <div class=\"fs-30\">{{value}}</div>\n          <div class=\"mt-2\">{{title}}</div>\n        </div>\n      </div>\n\n    </div>\n\n    <div v-if=\"comparativeIndex != undefined\" class=\"card-footer\">\n      \n      <div v-tippy=\"{ content: tooltipMessage , placement:'left' }\">\n\n        <span v-if=\"comparativeIndex>0\" class=\"fst-italic\"> \n          <i class=\"mdi mdi-trending-up text-green fs-16 pe-2\" /> +{{(comparativeIndex*100).toFixed(1)}}%  \n        </span>\n\n        <span v-else-if=\"comparativeIndex<0\" class=\"fst-italic\"> \n          <i class=\"mdi mdi-trending-down text-red fs-16 pe-2\" /> {{(comparativeIndex*100).toFixed(1)}}% \n        </span>\n        \n        <span v-else class=\"ps-3 fst-italic\"> \n          <i class=\"mdi mdi-trending-neutral fs-16 pe-2\" /> {{(comparativeIndex*100).toFixed(1)}}% \n        </span>\n\n      </div>\n\n    </div>\n\n  </div>\n  \n</template>\n\n<script>\nexport default {\n\n  name:\"ReportingWidget\",\n\n  props:{\n    title: {type:String, required:true},\n    value : {type:Number, required:true},\n    previousPeriodStartDate: {type:String},\n    previousPeriodEndDate: {type:String},\n    iconName: {type:String, required:false, note:\"class name of icon  should be as it was defined in icon object\"},\n    comparativeIndex: {type:Number},\n    cssClassBgColor:{type:String},\n    cssClassTextColor:{type:String, default: () => 'text-lighter'},\n    cssClassBorderLeftColor:{type:String, default: () => ''}\n  },\n\n  setup(){\n    const icons = [\n        {name:'webInterfaceIcon', cssClassName:'mdi mdi-web'}, \n        {name:'managerInterfaceIcon', cssClassName:'mdi mdi-face-agent'}\n      ]\n      return {icons}\n  },\n\n  computed:{\n\n    tooltipMessage(){\n\n      if(this.comparativeIndex <0){\n        return `<div class=fs-11>Diminution par rapport à la période précédente <br/> <span>${this.previousPeriodStartDate} - ${this.previousPeriodEndDate}</span> </div>`;\n      }else if(this.comparativeIndex > 0){\n        return `<div class=fs-11>Augmentation par rapport à la période précédente <br/> <span>${this.previousPeriodStartDate} - ${this.previousPeriodEndDate} </span> </div>`;\n      } else \n          return `<div class=fs-11>Identique à la période précédente <br/> <span> ${this.previousPeriodStartDate} - ${this.previousPeriodEndDate} </span> </div>`;\n\n    }\n  },\n\n  data(){\n    return{\n      selectedIcon:null,\n    }\n  },\n\n  created(){\n    for(const icon in this.icons){\n      if(this.iconName == this.icons[icon].name)\n        this.selectedIcon = this.icons[icon].cssClassName;\n    }\n  },\n}\n</script>\n\n<style>\n\n.card .card-footer {\n  padding: 0px 10px;\n}\n\n.border-left-green {\n  border-left: 3px solid #15C377;\n}\n.border-left-red {\n  border-left: 3px solid #F96868;\n}\n</style>","import { render } from \"./ReportingWidget.vue?vue&type=template&id=05f9826b\"\nimport script from \"./ReportingWidget.vue?vue&type=script&lang=js\"\nexport * from \"./ReportingWidget.vue?vue&type=script&lang=js\"\n\nimport \"./ReportingWidget.vue?vue&type=style&index=0&id=05f9826b&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  \n  <div class=\"aside\">\n\n    <div class=\"form-type-material\">\n      <Form @submit=\"doFilter\" :validation-schema=\"filterShema\" v-slot=\"{ errors }\" >\n\n          <ul class=\"nav flex-column p-3\">\n\n            <!-- workshop-->\n            <li class=\"nav-item form-group\" v-if=\"hasPrivilege('DISPLAY_REPORTING_WORKSHOPS')\">\n              <Field name=\"workshopCode\" v-model=\"workshopCode\" v-slot=\"{handleChange, value}\">\n                <CustomSelect \n                  :modelValue=\"value\"\n                  @value-updated=\"(value)=> {handleChange(value);}\"\n                  :options=\"workshops\"\n                  name=\"workshopCode\"\n                  :error=\"errors.workshopCode\"\n                  classStyle=\"form-control\"\n                  :clearable=\"true\"\n                  />\n              </Field>\n              <label class=\"floating-label\" for=\"workshopCode\">Atelier</label>\n              <ErrorMessage name=\"workshopCode\" class=\"d-flex invalid-feedback\" />\n            </li>\n\n            <li class=\"nav-item btn-group btn-group-round mt-3 \">\n\n              <!-- current day -->\n              <span class=\"btn btn-xs btn-light\" :class=\"currentDaySelected?'btn-light-active':''\" @click=\"displayCurrentDay()\" >Jour</span>\n\n              <!-- current week -->\n              <span class=\"btn btn-xs btn-light\" :class=\"currentWeekSelected?'btn-light-active':''\" @click=\"displayCurrentWeek()\" >Semaine</span>\n\n              <!-- current month -->\n              <span class=\"btn btn-xs btn-light\" :class=\"currentMonthSelected?'btn-light-active':''\" @click=\"displayCurrentMonth()\" >Mois</span>\n\n            </li>\n            \n            <!-- event start date -->\n            <li class=\"nav-item form-group\">\n              <Datepicker name=\"eventStartDate\" class=\"form-control\" :class=\"{ 'is-invalid': errors.eventStartDate }\"\n                v-model.lazy=\"eventStartDate\" \n                :inputFormat=\"'dd/MM/yyyy'\"\n                :style=\"datePickerStyle\" \n                :typeable=\"true\" \n                :placeholder=\"'jj/mm/aaaa'\" \n                :upperLimit='upperLimit'\n                :language=\"'fr'\"\n                v-maska data-maska=\"##/##/####\"\n                @blur=\"eventStartDateChanged($event.target.value)\"\n              />\n              <Field name=\"eventStartDate\" :class=\"{ 'is-invalid': errors.eventStartDate }\"  v-model=\"eventStartDate\" hidden type=\"date\"   /> \n              <label class=\"do-float\">Date de début : </label>\n              <ErrorMessage name=\"eventStartDate\" class=\"invalid-feedback\" />\n            </li>\n\n            <!-- event end date -->\n            <li class=\"nav-item form-group\">\n              <Datepicker name=\"eventEndDate\" class=\"form-control\" :class=\"{ 'is-invalid': errors.eventEndDate }\"\n                v-model.lazy=\"eventEndDate\" \n                :inputFormat=\"'dd/MM/yyyy'\"\n                :lowerLimit='lowerLimit'\n                :style=\"datePickerStyle\" \n                :typeable=\"true\" \n                :placeholder=\"'jj/mm/aaaa'\"\n                v-maska data-maska=\"##/##/####\"\n                @blur=\"eventEndDateChanged($event.target.value)\"\n              />\n              <Field name=\"eventEndDate\" :class=\"{ 'is-invalid': errors.eventEndDate }\"  v-model=\"eventEndDate\" hidden type=\"date\"   /> \n              <label class=\"do-float\">Date de fin : </label>\n              <ErrorMessage name=\"eventEndDate\" class=\"invalid-feedback\" />\n            </li>\n\n            <!-- apply buttom -->\n            <div class=\"text-center\">\n              <button type=\"submit\" class=\"btn btn-sm btn-custom btn-round\" :disabled=\"disableSubmit\">Appliquer</button>\n            </div>\n\n          </ul>\n          \n        <!-- error message -->\n        <CustomMessage v-if=\"message\" :cssClass=\"'p-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\" />\n      </Form>\n    </div>\n\n  </div>\n\n</template>\n\n<script>\nimport { hasPrivilege, hasNotPrivilege } from \"../../../services/user.service.js\";\nimport CustomSelect from '../../common/CustomSelect.vue';\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport * as moment from \"moment\";\nimport Datepicker from 'vue3-datepicker';\nimport { vMaska } from \"maska\";\nimport {datePickerStyle} from '@/beans/GlobalVaribales.js';\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n\n  name : \"ReportingFilter\",\n  \n  props:{\n\n    disableSubmit:{\n      type:Boolean,\n      required:false,\n      default:() => false\n    },\n\n    defaultDisplayMode:{\n      type:String,\n      note:\"month or week display\",\n      default:() => \"month\"\n    }\n\n  },\n  \n  emits: [\"reporting-filter-updated\"],\n  \n  directives: {maska: vMaska},\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    CustomSelect,\n    Datepicker,\n    CustomMessage\n  },\n\n  setup() {\n\n    moment.locale('fr');\n    let invalideDateMessage = \"Date non valide\";\n\n    const filterShema = Yup.object().shape({\n      workshopCode: Yup.string(),\n      eventStartDate: Yup.date(invalideDateMessage).nullable(true).typeError(invalideDateMessage).required(\"Date de début est obligatoire\"),\n      eventEndDate: Yup.date(invalideDateMessage).typeError().nullable(true).required(\"Date de fin est obligatoire\")\n    });\n\n    return {filterShema, datePickerStyle};\n  },\n\n  data(){\n    return {\n      workshops:[],\n      workshopCode:\"\",\n      companyCode: this.$store.state.auth.user.companyCode,\n      eventStartDate:null,\n      eventEndDate: null,\n      upperLimit:null,\n      lowerLimit:null,\n      currentMonthSelected:false,\n      currentWeekSelected :false,\n      currentDaySelected:false,\n      message:\"\"\n    }\n  },\n  \n  created(){\n\n    // month\n    if(this.defaultDisplayMode == \"month\"){\n      this.eventStartDate = moment().startOf(\"month\").toDate();\n      this.eventEndDate = moment().endOf(\"month\").toDate();\n      this.lowerLimit = this.eventStartDate;\n      this.upperLimit = this.eventEndDate;\n      this.currentMonthSelected = true;\n\n    // week\n    } else if(this.defaultDisplayMode == \"week\"){\n      this.eventStartDate = moment().startOf(\"week\").toDate();\n      this.eventEndDate = moment().endOf(\"week\").toDate();\n      this.lowerLimit = this.eventStartDate;\n      this.upperLimit = this.eventEndDate;\n      this.currentWeekSelected = true;\n    }\n    \n    this.doFilter();\n\n    // workshop filter load \n    if(this.hasPrivilege(\"DISPLAY_REPORTING_WORKSHOPS\"))\n      this.loadWorkshops();\n  },\n\n  methods:{\n\n    hasPrivilege:  hasPrivilege,\n    hasNotPrivilege: hasNotPrivilege,\n\n    eventStartDateChanged(eventStartDate){\n\n      if(eventStartDate){\n        this.currentMonthSelected = false;\n        this.currentWeekSelected = false;\n        this.lowerLimit = this.eventStartDate;\n        if(moment(this.eventEndDate).isBefore(this.eventStartDate))\n          this.eventEndDate = this.eventStartDate;\n\n      }else if(!eventStartDate){\n        this.deleteEventStartDate();\n        this.lowerLimit = null;\n      }\n      \n    },\n\n    eventEndDateChanged(eventEndDate){\n      \n      if(eventEndDate){\n        this.currentMonthSelected = false;\n        this.currentWeekSelected = false;\n        if(moment(this.eventEndDate).isBefore(this.eventStartDate))\n          this.eventStartDate = new Date(this.eventEndDate);\n        this.upperLimit = this.eventEndDate;\n\n      }if(!eventEndDate){\n\n        this.deleteEventEndDate();\n        this.upperLimit  = null;\n\n      }\n    },\n\n    deleteEventStartDate(){\n      this.eventStartDate = null;\n      this.currentMonthSelected = false;\n      this.currentWeekSelected = false;\n    },\n\n    deleteEventEndDate(){\n      this.eventEndDate = null;\n      this.currentMonthSelected = false;\n      this.currentWeekSelected = false;\n    },\n\n    displayCurrentMonth(){\n      this.currentDaySelected = false;\n      this.currentWeekSelected = false;\n      this.currentMonthSelected = true;\n      this.eventStartDate = moment().startOf('month').toDate();\n      this.eventEndDate =  moment().endOf('month').toDate();\n    },\n    \n    displayCurrentWeek(){\n      this.currentDaySelected = false;\n      this.currentMonthSelected = false;\n      this.currentWeekSelected = true;\n      this.eventStartDate =moment().startOf('week').toDate();\n      this.eventEndDate = moment().endOf('week').toDate();\n    },\n\n    displayCurrentDay(){\n      this.currentMonthSelected = false;\n      this.currentWeekSelected = false;\n      this.currentDaySelected = true;\n      this.eventStartDate =moment().startOf('day').toDate();\n      this.eventEndDate = moment().endOf('day').toDate();\n    },\n\n    doFilter(){\n\n      var filter = {};\n\n      // workshop code\n      if(this.hasNotPrivilege(\"DISPLAY_REPORTING_WORKSHOPS\") && this.$store.state.auth.user.workshopCode)\n        filter.workshopCode = this.$store.state.auth.user.workshopCode\n      else if(this.workshopCode)\n        filter.workshopCode = this.workshopCode;\n\n      // event start date\n      if(this.eventStartDate)\n        filter.eventStartDate = moment(this.eventStartDate).format(\"DD/MM/YYYY HH:mm\");\n\n      // event end date\n      if(this.eventEndDate)\n        filter.eventEndDate = moment(this.eventEndDate).endOf('day').format(\"DD/MM/YYYY HH:mm\");\n\n      this.$emit(\"reporting-filter-updated\", filter);\n    },\n\n    loadWorkshops() {\n\n      let workshopsReq = {\n        method: \"GET\",\n        headers: {\"Content-Type\": \"application/json\",  Authorization: this.$authTokenService.authToken()},\n      };\n\n      fetch(\"/api/workshop/workshops/enabled/\"+this.companyCode, workshopsReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            const results = await response.json();\n            this.workshops = results.map(workshop => {                                     \n              return {\n                text: workshop.workshopName,                              \n                value: workshop.workshopCode                               \n              };\n            });\n            return;\n          }\n          return Promise.reject(response);\n\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadWorkshops.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n\n        });\n      \n    },\n\n  }\n\n}\n</script>\n\n<style scoped>\n\n.btn-light {\n  background-color: #fcfdfe;\n  border-color: #ebebeb; \n  font-size: 11px;\n}\n\n.btn-light:hover, .btn-light-active {\n  color: #868e96;\n  background-color: #f5f6f7;\n  border-color: #ebebeb;\n}\n\n</style>","\nexport  const datePickerStyle = {\n    \"--vdp-selected-bg-color\":'#00203f',\n    \"--vdp-selected-color\": \"#ffffff\",  \n    \"--vdp-hover-bg-color\": \"#00203f\",\n    \"--vdp-current-date-outline-color\": \"#666666\",\n    \"--vdp-current-date-font-weight\": \"500\"\n  }","import { render } from \"./ReportingFilter.vue?vue&type=template&id=6d154e0c&scoped=true\"\nimport script from \"./ReportingFilter.vue?vue&type=script&lang=js\"\nexport * from \"./ReportingFilter.vue?vue&type=script&lang=js\"\n\nimport \"./ReportingFilter.vue?vue&type=style&index=0&id=6d154e0c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6d154e0c\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"chart-container\">\n    <div class=\"week-days\">\n      <span class=\"day\" v-for=\"(item, index) in dataSet\" :key=\"index\" @click=\"changeData(item, index)\" :class=\"{'active': index === activeItem}\" >{{ item.title }}</span>\n    </div>\n    <apexchart class=\"chart\" type=\"bar\" height=\"300\" width=\"80%\" :options=\"chartOptions\" :series=\"series\" />\n  </div>\n\n</template>\n\n<script>\n\nexport default {\n\n  name:\"BusyScheduleChart\",\n\n  inject: ['isTablet'],\n\n  props:{\n\n    dataSet: { required: true, type: Object },\n    initialSeries: { required: false, type: Object },\n    max:{required: true, default: () => 5}\n\n  },\n\n\n  created(){\n    if(this.isTablet == true){\n        this.chartOptions.plotOptions.bar.columnWidth = '80%';\n        this.chartOptions.plotOptions.bar.borderRadius = '12';\n      }\n  },\n\n  mounted(){\n    if(this.dataSet.length > 0)\n      this.activeItem = 0;\n  },\n\n\n\n  data(){\n    const chartOptions =  {\n\n        chart: {\n          height: 350,\n          type: 'bar',\n          animations: {\n            enabled: true,\n            easing: 'easeinout',\n            speed: 800,\n            animateGradually: {\n                enabled: true,\n                delay: 150\n            },\n            dynamicAnimation: {\n                enabled: true,\n                speed: 350\n            }\n          },\n          toolbar: {\n            show: false,\n          },\n          \n        },\n\n        plotOptions: {\n          bar: {\n            borderRadius: '10',\n            columnWidth: '35%',\n            dataLabels: {\n              position: 'top', // top, center, bottom\n            }\n          }\n        },\n        \n        fill: {\n          colors: ['#00203f']\n        },\n        \n        dataLabels: {\n          enabled: false,\n          formatter: function (val) {\n            return val;\n          },\n          offsetY: -25,\n          style: {\n            fontSize: '12px',\n            colors: [\"#00203f\"]\n          }\n        },\n\n        // [\"08 h\", \"09 h\",\"10 h\",\"11 h\", \"12 h\",\"13 h\",\"14 h\", \"15 h\",\"16 h\",\"17 h\", \"18 h\",\"19 h\",\"20 h\", \"21 h\"]\n        xaxis: {\n          categories: [\"08 h\", \" \", \"10 h\", \" \", \"12 h\", \" \", \"14 h \", \" \", \"16 h\", \" \", \"18 h\", \" \", \"20 h\"],\n          position: 'bottom',\n          axisBorder: {\n            show: true\n          },\n          axisTicks: {\n            show: true\n          },\n          crosshairs: {\n            fill: {\n              type: 'gradient',\n              gradient: {\n                colorFrom: '#00203f',\n                colorTo: '#00203f',\n                stops: [0, 100],\n                opacityFrom: 0.4,\n                opacityTo: 0.5,\n              }\n            }\n          },\n\n        },\n\n        yaxis: {\n          forceNiceScale:true,\n          min:function(min){\n            return min;\n          },\n          max: this.max > 5 ? this.max * 1.25 : 5,\n          axisBorder: {\n            show: false\n          },\n          axisTicks: {\n            show: false,\n          },\n          labels: {\n            show: false,\n            formatter: function (val) {\n              return val;\n            }\n          }\n\n        },\n\n        grid: {\n          show: true,\n          borderColor: '#00203f',\n          strokeDashArray: 0,\n          position: 'back',\n          xaxis: {\n            lines: {\n              show: false\n            }\n          },   \n          yaxis: {\n            lines: {\n              show: false\n            }\n          },  \n          row: {\n            colors: undefined,\n            opacity: 1\n          },  \n          column: {\n            colors: undefined,\n            opacity: 0.5\n          },   \n        },\n\n        title: {\n          text: \"\",\n          floating: true,\n          offsetY: 330,\n          align: 'center',\n          style: {\n            color: '#00203f'\n          } \n        },\n\n        tooltip: {\n          enabled: true,\n          x:{show : false}\n        }\n    }\n\n    return {\n      activeItem: null,\n      series: this.initialSeries,\n      chartOptions\n    }\n  },\n\n  methods:{\n\n    changeData(item, index){\n      this.activeItem = index;\n      this.series[0].data = item.data;\n\n    }\n  }\n\n}\n</script>\n\n<style scoped>\n\n.chart-container .week-days{\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  width: 60%;\n  margin: 0px auto;\n  font-size: 16px;\n  color: #6c757d;\n}\n\n.chart-container .week-days .day:hover{\n  cursor: pointer;\n  border-bottom: 5px solid #00203f;\n}\n\n.chart-container .week-days .active{\n  border-bottom: 5px solid #00203f;\n}\n\n.chart-container .chart{\n  display:flex;\n  align-items:center;\n  justify-content:center;\n}\n\n</style>","import { render } from \"./ReportingBusyScheduleChart.vue?vue&type=template&id=af1526b0&scoped=true\"\nimport script from \"./ReportingBusyScheduleChart.vue?vue&type=script&lang=js\"\nexport * from \"./ReportingBusyScheduleChart.vue?vue&type=script&lang=js\"\n\nimport \"./ReportingBusyScheduleChart.vue?vue&type=style&index=0&id=af1526b0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-af1526b0\"]])\n\nexport default __exports__","import { render } from \"./Reporting.vue?vue&type=template&id=23809f78\"\nimport script from \"./Reporting.vue?vue&type=script&lang=js\"\nexport * from \"./Reporting.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n  <div class=\"container\">\n    <!-- create company -->\n    <div class=\"fab fab-fixed\" v-tippy=\"{ content: `Ajouter une entreprise` , placement:'top'}\" v-on:click=\"showQuickView()\">\n      <a class=\"btn btn-float\">\n        <i class=\"mdi mdi-plus\" />\n      </a>\n    </div>\n\n    <div class=\"position-relative my-3\" v-auto-animate>\n      <CompanyList v-bind:data-list-items=\"dataListResponse\" v-bind:sort-field=\"dataListRequest.sortField\" \n        v-on:sort=\"order\"\n        v-on:company-updated=\"loadCompanies\" \n        v-on:key-word-updated=\"loadCompaniesByKeyWord\"/>\n      \n      <Pagination v-bind:rootPageLength=\"dataListRequest.pageLength\" v-bind:totalPages=\"dataListResponse.totalPages\" v-bind:totalRecords=\"dataListResponse.totalRecords\"\n        v-on:pageLength=\"pageLengthHandler\"\n        v-on:fetchData=\"loadCompaniesHandler\"\n        v-bind:pageLengths=\"pageLengths\"\n        v-bind:initPageStart=\"initPageStart\"\n      />\n\n      <!-- Loader -->\n      <div v-show=\"loading\" class=\"loading reveal\">\n        <span class=\"spinner-border\" role=\"status\"></span>\n      </div>\n\n    </div>\n\n    <!-- CompanyCreate -->\n    <div v-if=\"isOpen\" class=\"quickview-container\">\n      <CompanyCreate\n        v-on:close=\"closeQuickView\"\n        v-on:company-created=\"closeQuickView(), loadCompanies()\"/>\n\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n  </div>\n\n</template>\n\n<script>\n\nimport Pagination from \"../pagination/Pagination.vue\";\nimport CompanyList from\"./companies/CompanyList.vue\";\nimport CompanyCreate from \"./companies/CompanyCreate.vue\";\nimport CustomMessage from '../common/CustomMessage.vue';\n\nexport default {\n  \n  name: \"Companies\",\n\n  components: {\n    CompanyList,\n    Pagination,\n    CompanyCreate,\n    CustomMessage\n  },\n\n  data() {\n\n    return {\n      pageFrom: 0,\n      pageTo: 0,\n      isOpen: false,\n      loading: false,\n      \n      dataListRequest: {\n        sortField: \"companyName\",\n        serverSide: true,\n        pageLength: 5,\n        pageStart: 0,\n        keyWordSearch:'',\n        companiesCode: this.$store.state.auth.user.companiesCode ? this.$store.state.auth.user.companiesCode : null\n      },\n      pageLengths: [5, 10, 25, 50],\n      dataListResponse: {},\n      initPageStart:1,\n      message:\"\"\n    };\n\n  },\n\n  methods: {\n\n    search(){\n      this.dataListRequest.pageStart = 0;\n      this.initPageStart +=1;\n      this.loadCompanies() \n    },\n\n    companyCreatedHandler() {\n      this.closeQuickView();\n      this.loadCompaniesHandler();\n    },\n\n    closeQuickView() {\n      this.isOpen = false;\n    },\n\n    showQuickView() {\n      if (this.isOpen == true) {\n        this.isOpen = false;\n      } else {\n        this.isOpen = true;\n      }\n    },\n\n    loadCompaniesByKeyWord(keyWord){\n      this.dataListRequest.keyWordSearch = keyWord;\n      this.loadCompanies();\n    },\n\n    \n    loadCompaniesHandler(value) {\n        this.dataListRequest.pageStart = value;\n        this.loadCompanies();\n    },\n\n    // Page length handler of emitted child value \n    pageLengthHandler(value) {\n      this.dataListRequest.pageStart = 0;\n      this.dataListRequest.pageLength = value;\n      this.loadCompanies();\n    },\n\n    loadCompanies() {\n\n      this.loading = true;     \n\n      let companiesCode = this.$store.state.auth.user.companiesCode || [];\n      let companyCode = this.$store.state.auth.user.companyCode;\n\n      if (companyCode && !companiesCode.includes(companyCode))\n        companiesCode.push(companyCode);\n\n      if(this.$store.state.auth.user.role == 'SUPER_USER')\n        companiesCode = null;\n\n      this.dataListRequest.companiesCode = companiesCode && companiesCode.length > 0 ? companiesCode : null;\n\n      let dataTableReq = {\n        method: \"POST\",\n        headers: {\"Content-Type\": \"application/json\",Authorization: this.$authTokenService.authToken(),},\n        body: JSON.stringify(this.dataListRequest),\n      };\n\n      fetch(\"/api/company/companies\",dataTableReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok){\n            this.dataListResponse = await response.json();\n            this.loading = false;\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch( (response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadCompanies.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n      if (this.dataListRequest.pageStart - 1 > 0)\n        this.pageFrom =(this.dataListRequest.pageStart - 1) *this.dataListRequest.pageLength;\n    },\n\n    order(fieldName) {\n      this.dataListRequest.sortField = fieldName;\n      this.dataListRequest.pageStart=0;\n      this.loadCompanies();\n    },\n\n    updatePageLength(length) {\n      this.dataListRequest.pageLength = length;\n      this.loadCompanies();\n    },\n\n  },\n\n};\n</script>\n\n<style scoped>\n\n\n</style>","<template>\n\n  <div v-if=\"dataListItems.totalRecords != undefined \" class=\"media-list media-list-xs media-list-divided media-list-hover\">\n\n    <header class=\"flexbox align-items-center media-list-header\">\n\n      <div class=\"dropdown\" >\n        <button class=\"btn btn-sm btn-media dropdown-toggle\" type=\"button\" id=\"dropdownMenuButton1\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" v-if=\"dataListItems.totalRecords > 0\">\n          Trier par\n        </button>\n        <ul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton1\">\n          <li v-for=\"field in CompanyListConfig.sortedFields\" :key=\"field\">\n            <a class=\"dropdown-item\" href=\"#\" :data-field-name=\"field.name\" v-on:click=\"$emit('sort', field.name)\" v-bind:class=\"field.name === sortField ? 'fw-bold' : ''\">\n              {{ field.title }}\n            </a>\n          </li>\n        </ul>\n\n      </div>\n\n      <div class=\"float-end d-flex align-items-center\">\n          <div class=\"lookup lookup-circle lookup-right mdi mdi-magnify fs-25\">\n            <input type=\"text\" v-model=\"searchKeyWord\" @blur=\"searchByKeyWord\" @keyup.enter=\"searchByKeyWord\" required class=\"text-default fs-14\">\n          </div>\n          <span class=\"mdi mdi-alert-circle-outline text-lighter fs-18 ms-3\" v-tippy=\"{content: `<span class=fs-12>Rechercher par nom</span>`,placement:'right'}\"   />\n      </div>\n\n    </header>\n\n    <div class=\"media-list-body bg-white position-relative\" v-if=\"dataListItems.totalRecords > 0\">\n\n      <div class=\"media flexbox align-items-center cursor-pointer\" v-for=\"item in dataListItems.data\" :key=\"item.companyCode\" v-on:click=\"selectCompany(item)\" >\n\n          <a  class=\"col-8 flexbox flex-grow align-items-center\">\n            <CompanyListElement v-bind:element=\"item\"/>\n          </a>\n\n          <i v-if=\"this.$store.state.auth.user!=null && this.$store.state.auth.user.companyCode === item.companyCode\" class=\"mdi mdi-lightbulb-on-outline fs-25 text-muted\"/>\n\n          <div class=\"col-1 text-center\">\n            <CompanyStatus :companyStatusResp=\"item.companyStatusResp\" />\n          </div>\n\n          <div class=\"col-2 text-center\">\n            <div class=\"btn-group col-9\">\n              <button class=\"btn btn-lg\" v-on:click=\"showCompanySettingsModal(item)\">Paramétrages</button>\n            </div>\n          </div>\n           \n          <!-- loader -->\n          <div v-show=\"loading\" class=\"loading reveal top-0\">\n            <span class=\"spinner-border\" role=\"status\"></span>\n          </div>\n  \n      </div>\n\n\n      <Teleport to=\"body\">\n        <CompanySettingsModal :show=\"isCompanySettingsModalOpen\" :company=\"company\" v-on:company-updated=\"updateCompany\"  v-on:close=\"isCompanySettingsModalOpen = false\"/>\n      </Teleport>\n\n    </div>\n\n  </div>\n\n  <div v-if=\"dataListItems.totalRecords != undefined && dataListItems.totalRecords <= 0\" class=\"card text-center min-height-200 \">\n    <div class=\"min-height-200 d-flex align-items-center\"> \n      <div class=\"text-center w-100 \">\n          <i class=\"mdi mdi-alert-outline fs-50\"/> \n          <br/> \n          <span class=\"text-muted fs-14\"> \n            Aucune entreprise\n          </span> \n      </div>\n    </div>\n  </div>\n\n</template>\n\n<script>\nimport {CompanyListConfig}  from \"../../../beans/CompanyListConfig.js\";\nimport CompanyStatus from \"../common/CompanyStatus.vue\";\nimport CompanyListElement from \"./CompanyListElement.vue\";\nimport CompanySettingsModal from \"./CompanySettingsModal.vue\";\n\nexport default {\n\n  name: \"CompanyList\",\n\n  emits: [\"sort\", \"company-updated\", \"key-word-updated\"],\n\n  components:{\n    CompanyStatus,\n    CompanyListElement,\n    CompanySettingsModal\n  },\n\n  props: {\n\n    dataListItems: {\n      type: Object,\n    },\n\n    sortField: {\n      type: String,\n    },\n\n    CompanyListConfig: {\n      type: CompanyListConfig,\n      default() {\n        return new CompanyListConfig();\n      },\n    },\n\n    loading: {\n      type: Boolean,\n      default() {\n        return false;\n    },\n    },\n  },\n\n  data() {\n    return {\n      searchKeyWord:'',\n      isCompanySettingsModalOpen: false,\n      company: null,\n    };\n  },\n\n  methods: {\n\n    searchByKeyWord(){\n      this.$emit('key-word-updated', this.searchKeyWord);\n    },\n\n    selectCompany(company){\n      this.$store.state.auth.user.companyCode = company.companyCode;\n      this.$store.state.auth.user.companyName = company.companyName;\n      this.$store.state.auth.user.companyStatus = company.companyStatusResp.name;\n      localStorage.setItem('kit4planning.user', JSON.stringify(this.$store.state.auth.user));\n    },\n\n    updateCompany() {\n      this.$emit(\"company-updated\");\n    },\n\n    showCompanySettingsModal(company) {\n      this.isCompanySettingsModalOpen = !this.isCompanySettingsModalOpen;\n      this.company = company;\n     },\n  }\n\n};\n</script>\n\n<style lang=\"css\" scoped>\n.col-4-precent{\n  width: 4%;\n}\n\n.btn-media {\n  color: #8b95a5;\n  background-color: #fff;\n  border-color: #ebebeb;\n  border-radius: 2px;\n  outline: none !important;\n  transition: 0.15s linear;\n}\n\n</style>\n","export class  CompanyListConfig{\n    constructor(\n        fields= [\n            \n        { name: \"companyCode\", title: \"Code d'atelier\", visible:true },\n        { name: \"companyName\", title: \"Nom\" , visible:true},\n        { name: \"companyAddress1\", title: \"Adresse\" , visible:true},\n        { name: \"companyCity\", title: \"Ville\" , visible:true},\n        { name: \"companyCountry\", title: \"Pays\" , visible:true},\n        { name: \"companyCreationDate\", title: \"Date de création\" , visible:true},\n        { name: \"companyEmail\", title: \"Email\" , visible:true},\n        { name: \"companyModificationDate\", title: \"Date de modéfication\" , visible:true},\n        { name: \"companyPhone\", title: \"Portable\" , visible:true},\n        { name: \"companyStatus\", title: \"Status\" , visible:true},\n        { name: \"companyZipCode\", title: \"Code postale\" , visible:true},\n    ]\n    ,\n    sortedFields= [\n        { name: \"companyName\", title: \"Nom\" , visible:true},\n        { name: \"companyCity\", title: \"Ville\" , visible:true},\n        { name: \"companyCountry\", title: \"Pays\" , visible:true},\n        { name: \"companyCreationDate\", title: \"Date de création\" , visible:true},\n        { name: \"companyModificationDate\", title: \"Date de modification\" , visible:true},\n\n    ]\n        ){\n            this.fields=fields;\n            this.sortedFields=sortedFields;\n    }\n}","<template>\n  <Transition name=\"modal\">\n    <div v-if=\"show\" class=\"modal-mask-page\">\n\n      <div class=\"modal-container-page bg-light\">\n\n        <div class=\"text-end\"> <i class=\"mdi mdi-close fs-24 cursor-pointer\" v-on:click=\"$emit('close')\"/> </div>\n\n        <div class=\"w-85 mx-auto\">\n\n          <CompanySettings :company=\"company\" v-on:company-updated=\"updateCompany\" />\n\n        </div>\n\n      </div>\n\n    </div>\n  </Transition>\n</template>\n\n<script>\n\nimport CompanySettings from \"./CompanySettings.vue\";\n\nexport default {\n\n  name:\"CompanySettingsModal\",\n\n  emits: ['close', 'company-updated'],\n\n  components:{\n    CompanySettings\n  },\n\n  props: {\n    \n    show: {\n      type: Boolean\n    },\n\n    company: {\n      type: Object,\n    }\n  },\n\n  methods:{\n\n    updateCompany(){\n      this.$emit(\"company-updated\");\n    }\n  }\n\n}\n</script> \n\n\n<style scoped>\n\n.modal-mask-page {\n  position: fixed;\n  z-index: 9998;\n  top: 0;\n  transition: opacity 0.3s ease;\n  width: 100%;\n  height: 100%;\n  overflow-y: auto;\n}\n\n.modal-container-page {\n  min-height: 100%;\n  padding: 20px 30px;\n}\n\n\n</style>","<template>\n\n  <div>\n\n    <!-- header bar -->\n    <div class=\"my-3\" :class=\"isTablet ==false? 'row':''\" >\n      \n      <div class=\"header-bar justify-content-between fs-17\">\n        <div class=\"d-flex align-items-center\">\n          <span class=\"text-capitalize fs-17\">{{currentCompany.companyName}} </span>\n          <i v-if=\"currentCompany.companyUrlWebInterface\" class=\"mdi mdi-web fs-20 ms-2 text-default cursor-pointer\" @click=\"redirectToWebInterface(currentCompany.companyUrlWebInterface)\" \n            v-tippy=\"{ content: `<small>Interface web de prise de rendez-vous</small>` , placement:'top' }\" \n          />\n        </div>\n\n        <div class=\"d-flex align-items-center\">\n          <CompanyStatus :companyStatusResp=\"currentCompany.companyStatusResp\" />\n        </div>\n      </div>\n\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'row'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n    <div class=\"my-3\" :class=\"isTablet ==false? 'row':''\">\n\n      <div class=\"col-3 ps-0\">\n\n        <!-- card elements  --> \n        <div class=\"card\">\n          <ul class=\"nav nav-lg flex-column\">\n            \n            <NavItem \n              v-on:click=\"activeTab = 'companyInfo'\" \n              :title=\"'Informations'\" \n              :activated=\"activeTab === 'companyInfo' ? true : false\" \n              :exist=\"true\"\n              :toolTipMessage=\"`Modifier les informations de l'entreprise`\">\n              <span class=\"mdi mdi-information-outline fs-20 me-2\"></span>\n            </NavItem> \n            \n            <NavItem v-on:click=\"activeTab = 'companyHistory'\" \n              :title=\"'Historique'\" \n              :activated=\"activeTab === 'companyHistory' ? true: false\" \n              :existToolTip=\"false\"\n              :exist=\"true\"\n              :toolTipMessage=\"`Historique de l'entreprise`\">\n              <span class=\"mdi mdi-history fs-20 me-2\"></span>\n            </NavItem>\n\n          </ul>\n        </div>\n\n        <div class=\"card\">\n\n          <div v-if=\"!currentCompany.companyActivationEndDate && hasPrivilege('DISABLE_COMPANY')\">\n            <div v-if=\"showDisablingForm\">\n              <CompanyDisabling :company=\"currentCompany\" v-on:company-disabled=\"loadCompany\"/>\n            </div>\n\n            <div v-else class=\"card-body text-center\">\n              <button class=\"btn btn-lg\" v-on:click=\"displayDisablingForm\"> Désactiver l'entreprise</button>\n            </div>\n          </div>\n\n          <div v-if=\"currentCompany.companyActivationEndDate && currentCompany.companyStatusResp.name != 'DISABLED'\" class=\"card-body\">\n            <span> Date fixée pour la fin de l'activité de l'entreprise le : </span>\n            <span class=\"fw-600\">{{currentCompany.companyActivationEndDate}} </span>\n\n          </div>\n         \n        </div>\n\n      </div>\n\n      <!-- second card for compoment -->\n      <div class=\"col-lg-9 p-0 \" v-auto-animate>\n        <CompanyInfo v-if=\"activeTab === 'companyInfo' && currentCompany != undefined\" :initialCompany=\"currentCompany\" v-on:company-updated=\"loadCompany\" />\n        <CompanyHistory v-if=\"activeTab == 'companyHistory' && currentCompany != undefined\" :company=\"currentCompany\" /> \n      </div>\n\n    </div>\n\n  </div>\n</template>\n\n<script>\n\nimport NavItem from \"../../common/NavItem.vue\";\nimport CustomMessage from '../../common/CustomMessage.vue';\nimport CompanyStatus from \"../common/CompanyStatus.vue\";\nimport CompanyInfo from \"./company-settings/CompanyInfo.vue\";\nimport CompanyDisabling from \"./company-settings/CompanyDisabling.vue\";\nimport CompanyHistory from \"./company-settings/CompanyHistory.vue\";\nimport { hasPrivilege } from \"../../../services/user.service.js\";\n\nexport default {\n\n  name: \"CompanySettings\",\n\n  inject: ['isTablet'],\n\n  emits: [\"company-updated\"],\n\n  components: {\n    NavItem,\n    CustomMessage,\n    CompanyStatus,\n    CompanyInfo,\n    CompanyDisabling,\n    CompanyHistory\n  },\n\n  props: {\n    company: {\n      type: Object,\n    }\n  },\n\n  data() {\n    return {\n      activeTab: \"companyInfo\",\n      message:\"\",\n      currentCompany: this.company,\n      showDisablingForm: false\n    };\n  },\n\n  methods: {\n\n    hasPrivilege: hasPrivilege,\n\n    loadCompany() {\n\n      let companyReq = {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n          Authorization: this.$authTokenService.authToken()\n        },\n      };\n\n      fetch(\"/api/company/get-company/\"+this.company.companyCode, companyReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text(); \n            return;\n          }\n          if (response.ok){\n            this.currentCompany = await response.json();\n            this.$emit(\"company-updated\");\n            return;\n          } \n          return Promise.reject(response);\n          \n        })\n        .catch( response => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadCompany.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n\n        });\n    },\n\n    redirectToWebInterface(url){\n      window.open(url, '_blank');\n    },\n\n    displayDisablingForm(){\n      this.showDisablingForm = true;\n\n    }\n  },\n\n};\n</script>\n\n<style scoped>\n\n/** tablet */\n@media (min-width:769px) and (max-width : 1280px) {\n  .card.items{\n    min-width: 160%;\n  }\n  .nav{\n    min-width: 100%;\n  }\n  .card{\n    min-width: 100%;\n  }\n}\n\n@media (min-width:640px) and (max-width : 768px) {\n   .card.items{\n    min-width: 160%;\n  } \n   .card{\n    min-width: 100%;\n  }\n}\n\n</style>\n","<template>\n\n  <div class=\"card p-0\">\n      \n    <div class=\"form-type-material p-3\">\n        \n      <div v-if=\"enableModification == false\" class=\"row\">\n\n        <!-- code -->\n        <div class=\"col-md-12\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{initialCompany.companyCode}}</span>  \n            <label class=\"\">Code:</label>\n          </div>\n        </div>\n\n        <!-- nom -->\n        <div class=\"col-md-6\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{initialCompany.companyName}}</span>  \n            <label class=\"required\" for=\"companyName\">Nom</label>\n          </div>\n        </div>\n\n        <div class=\"col-md-6\">\n        </div>    \n\n        <!-- address -->\n        <div class=\"col-md-6\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{initialCompany.companyAddress1}}</span>  \n            <label class=\"required\" for=\"companyAddress1\">Adresse</label>\n          </div>\n        </div>\n\n        <!-- additional address -->\n        <div class=\"col-md-6\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">\n              {{initialCompany.companyAddress2}}\n              <i v-if=\"!initialCompany.companyAddress2\" class=\"mdi mdi-minus\"></i>\n            </span> \n            <label for=\"companyAddress2\">Complément d'adresse</label>\n          </div>\n        </div>\n\n        <!-- zip code -->\n        <div class=\"col-md-6\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{initialCompany.companyZipCode}}</span>  \n            <label class=\"required\" for=\"companyZipCode\">Code postal</label>\n          </div>\n        </div>\n\n        <!-- city -->\n        <div class=\"col-md-6\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{initialCompany.companyCity}}</span>  \n            <label class=\"required\" for=\"companyCity\">Ville</label>\n          </div>\n        </div>\n\n        <!-- country -->\n        <div class=\"col-md-6\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{initialCompany.companyCountry}}</span>  \n            <label class=\"floating-label\" for=\"companyCountry\">Pays <span>*</span></label>\n          </div>\n        </div>  \n\n        <div class=\"col-md-6\">\n        </div>\n\n        <!-- email -->\n        <div class=\"col-md-6\">\n        <div class=\"form-group do-float\">\n          <span class=\"form-control\">{{initialCompany.companyEmail}}</span>  \n          <label class=\"required\" for=\"companyEmail\">Email</label>\n        </div>\n        </div>\n\n        <!-- phone -->\n        <div class=\"col-md-6\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">{{initialCompany.companyPhone}}</span>  \n            <label for=\"phone\" class=\"required\">Téléphone</label>\n          </div>  \n        </div>\n\n        <!-- siren number -->\n        <div class=\"col-md-6\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\"> \n              {{ initialCompany.registrationNumber}}\n              <i v-if=\"!initialCompany.registrationNumber\" class=\"mdi mdi-minus\"></i>\n            </span>  \n            <label for=\"registrationNumber\">Numéro de SIREN</label>\n          </div>\n        </div>\n\n        <!-- url -->\n        <div class=\"col-md-12\">\n          <div class=\"form-group do-float\">\n            <span class=\"form-control\">\n              {{initialCompany.companyUrlWebInterface}}\n              <i v-if=\"!initialCompany.companyUrlWebInterface\" class=\"mdi mdi-minus\"></i>\n            </span>  \n             \n            <label for=\"companyUrlWebInterface\">URL interface web</label>\n          </div>\n        </div>\n\n        <!-- update button -->\n        <div v-if=\"hasPrivilege('UPDATE_COMPANY') && initialCompany.companyStatusResp && initialCompany.companyStatusResp.name != 'DISABLED' \" class=\"text-center pt-3\">\n          <button type=\"submit\" class=\"btn btn-custom btn-round\" v-on:click=\"enableUpdate\">Modifier</button>\n        </div>\n\n      </div>\n      \n      <div v-if=\"enableModification\">\n\n        <CompanyInfoUpdate v-bind:companyTransferred=\"initialCompany\" v-on:company-updated=\"updateCompany\" v-on:company-update-canceled=\"cancelUpdateCompany\"/>\n\n        <!-- loader -->\n        <div v-show=\"loading\" class=\"loading reveal top-0\">\n          <span class=\"spinner-border\" role=\"status\"></span>\n        </div>\n\n      </div>\n\n    </div>\n\n  </div>\n</template>\n\n<script>\nimport CustomSelect from '../../../common/CustomSelect.vue'\nimport CustomMessage from '../../../common/CustomMessage.vue';\nimport CompanyInfoUpdate from './CompanyInfoUpdate.vue';\nimport { hasPrivilege } from \"../../../../services/user.service.js\";\n\nexport default {\n \n  name: \"CompanyInfo\",\n  \n  emits: [\"company-updated\"],\n\n  components: {\n    CustomSelect,\n    CustomMessage,\n    CompanyInfoUpdate\n\n  },\n\n  props: {\n    initialCompany: { \n      type: Object, \n      default() { \n        return null\n      },\n    }\n  },\n\n  data() {\n\n    return {\n      selectedCountry: '',\n      companyPhone: '',\n      disableSubmit:false,\n      loading: false,\n      enableModification: false,\n    };\n\n  },\n \n  methods: {\n\n    hasPrivilege: hasPrivilege,\n\n    enableUpdate(){\n      this.enableModification = true;\n    },\n\n    updateCompany(){\n      this.enableModification = false;\n      this.$emit('company-updated');\n    },\n    cancelUpdateCompany(){\n      this.enableModification = false\n    }\n\n  },\n\n};\n\n</script>\n\n<style lang=\"css\" scoped>\n</style>\n","<template>\n\n  <Form :validation-schema=\"companySchema\" v-slot=\"{ errors }\">\n\n    <div class=\"row\">\n\n      <!-- code -->\n      <div class=\"col-md-12\">\n        <div class=\"form-group do-float\">\n          <span class=\"form-control\">{{this.company.companyCode}}</span>  \n          <label class=\"\">Code:</label>\n        </div>\n      </div>\n    \n      <!-- nom -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"companyName\" type=\"text\" class=\"form-control\" v-model=\"company.companyName\" required :class=\"{ 'is-invalid': errors.companyName }\"/>\n          <label class=\"required\" for=\"companyName\">Nom</label>\n          <ErrorMessage name=\"companyName\" class=\"invalid-feedback\" />\n        </div>\n      </div> \n\n      <div class=\"col-md-6\">\n      </div>  \n\n      <!-- adresse -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"companyAddress1\" type=\"text\" class=\"form-control\" v-model=\"company.companyAddress1\" required :class=\"{ 'is-invalid': errors.companyAddress1 }\"/>\n          <label class=\"required\" for=\"companyAddress1\">Adresse</label>\n          <ErrorMessage name=\"companyAddress1\" class=\"invalid-feedback\" />\n        </div>\n      </div> \n\n      <!-- additional address -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"companyAddress2\" type=\"text\" class=\"form-control\" v-model=\"company.companyAddress2\"  required :class=\"{ 'is-invalid': errors.companyAddress2 }\"/>\n          <label for=\"companyAddress2\">Complément d'adresse</label>\n          <ErrorMessage name=\"companyAddress2\" class=\"invalid-feedback\" />\n        </div>\n      </div> \n    \n      <!-- zip code -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"companyZipCode\" type=\"text\" class=\"form-control\" v-model=\"company.companyZipCode\"  required :class=\"{ 'is-invalid': errors.companyZipCode }\"/>\n          <label class=\"required\" for=\"companyZipCode\">Code postal</label>\n          <ErrorMessage name=\"companyZipCode\" class=\"invalid-feedback\" />\n        </div>\n      </div> \n\n      <!-- city -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"companyCity\" type=\"text\" class=\"form-control\" v-model=\"company.companyCity\"  required :class=\"{ 'is-invalid': errors.companyCity }\"/>\n          <label class=\"required\" for=\"companyCity\">Ville</label>\n          <ErrorMessage name=\"companyCity\" class=\"invalid-feedback\" />\n        </div>\n      </div> \n\n      <!-- country -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"companyCountry\" v-slot=\"{ handleChange}\" v-model=\"company.companyCountry\">\n            <CustomSelect \n              :modelValue=\"company.companyCountry\"\n              @value-updated=\"(value) => {handleChange(value); countryUpdated(value)}\"\n              :options=\"countries\"\n              name=\"companyCountry\"\n              :error=\"errors.companyCountry\"\n              classStyle=\"form-control\" />\n          </Field>\n          <label class=\"floating-label\" for=\"companyCountry\">Pays <span>*</span></label>\n          <ErrorMessage name=\"companyCountry\" class=\"d-flex invalid-feedback\" />\n        </div>\n      </div> \n\n      <div class=\"col-md-6\">\n      </div> \n\n      <!-- email -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"companyEmail\" type=\"text\" class=\"form-control\" v-model=\"company.companyEmail\" :class=\"{ 'is-invalid': errors.companyEmail }\" required/>\n          <label class=\"required\" for=\"companyEmail\">Email</label>\n          <ErrorMessage name=\"companyEmail\" class=\"invalid-feedback\" />\n        </div>\n      </div> \n      \n      <!-- phone -->\n      <div class=\"col-md-6\">\n        <Field name=\"companyPhone\" v-slot=\"{ handleChange }\" v-model=\"companyPhone\">\n          <PhoneInput v-if=\"company.companyCountry\" \n            :modelValue=\"company.companyPhone\"\n            @value-updated=\"handleChange\"\n            :country=\"selectedCountry\"\n            :error=\"errors.companyPhone\" \n            :phoneType=\"'FIXED_LINE'\" />\n        </Field>\n      </div> \n\n      <!-- siren number -->\n      <div class=\"col-md-6\">\n        <div class=\"form-group\">\n          <Field name=\"registrationNumber\" type=\"tel\" class=\"form-control\" :class=\"{ 'is-invalid': errors.registrationNumber }\" v-model=\"company.registrationNumber\" \n          required v-maska data-maska=\"#########\" />\n          <label for=\"registrationNumber\">Numéro de SIREN</label>\n          <ErrorMessage name=\"registrationNumber\" class=\"invalid-feedback\" />\n        </div>\n      </div> \n\n      <!-- URL -->\n      <div class=\"col-md-12\">\n        <div class=\"form-group\">\n          <Field name=\"companyUrlWebInterface\" type=\"text\" class=\"form-control\" v-model=\"company.companyUrlWebInterface\"  required :class=\"{ 'is-invalid': errors.companyUrlWebInterface }\"/>\n          <label for=\"companyUrlWebInterface\">URL interface web</label>\n          <ErrorMessage name=\"companyUrlWebInterface\" class=\"invalid-feedback\" />\n        </div>\n      </div> \n\n      <!-- buttons -->\n      <div class=\"btn-row text-center\">\n        <button class=\"btn btn-custom btn-round\" @click=\"cancelUpdate\">Annuler</button>\n        <button class=\"btn btn-custom btn-round\" :disabled=\"disableSubmit\" @click=\"updateCompany(company)\">Sauvegarder</button>\n      </div>\n\n      <!-- custom message -->\n      <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"successfulUpdated ? 'success' : 'error'\" @close=\"this.message = ''\"/>\n\n    </div>\n  </Form>\n  \n</template>\n\n<script>\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport { vMaska } from \"maska\";\nimport * as moment from \"moment\";\nimport PhoneInput from \"../../../common/PhoneInput.vue\";\nimport { parsePhoneNumber} from 'libphonenumber-js';\nimport CustomSelect from '../../../common/CustomSelect.vue';\nimport CustomMessage from '../../../common/CustomMessage.vue';\n\nexport default {\n \n  name: \"CompanyInfoUpdate\",\n  \n  directives: {maska: vMaska},\n\n  emits: [\"company-update-canceled\", \"company-updated\"],\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    PhoneInput,\n    CustomSelect,\n    CustomMessage\n  },\n\n  setup(){\n    const urlRegex = \"^((http|https)://)[-a-zA-Z0-9@:%._\\\\+~#?&//=]{2,256}\\\\.[a-z]{2,6}\\\\b([-a-zA-Z0-9@:%._\\\\+~#?&//=]*)$\";\n\n    const companySchema = Yup.object().shape({\n      companyName: Yup.string().required(\"Nom d'entreprise est obligatoire\"),\n      registrationNumber:Yup.string(),\n      companyAddress1: Yup.string().required(\"L'adresse est obligatoire\"),\n      companyAddress2: Yup.string(),\n      companyZipCode: Yup.string().required(\"Code postal est obligatoire\"),\n      companyCity: Yup.string().required(\"La ville est obligatoire\"),\n      companyCountry:Yup.string().required(\"pays est obligatoire\"),\n      companyPhone : Yup.string().when(('companyCountry'),\n        {is: (companyCountry) => {\n            if (companyCountry != '')\n              return true;\n            else\n              return false;    \n          },\n          then: Yup.string().required(\"Téléphone est obligatoire\")\n        }),\n      companyEmail: Yup.string().required(\"Email est obligatoire\").email(\"Email est n'est pas valide\"),\n      companyUrlWebInterface :Yup.string().nullable().transform((v, o) => (o === '' ? null : v)).matches(urlRegex, {message: \"URL invalide\", excludeEmptyString:true})\n    });\n    \n    const countries = [\n      {text:'France',     value:'France'},\n      {text:'Monaco',     value:'Monaco'},\n      {text:'Belgique',   value:'Belgique'},\n      {text:'Suisse',     value:'Suisse'},\n      {text:'Andorre',    value:'Andorre'},\n      {text:'Italie',     value:'Italie' },\n      {text:'Espagne',    value:'Espagne'},\n      {text:'Luxembourg', value:'Luxembourg' },\n      {text:'Pays-Bas',   value:'Pays-Bas'},\n      {text:'Allemagne',  value:'Allemagne'}, \n      {text:'Autriche',   value:'Autriche'}\n    ];\n \n    return {companySchema, countries};\n  },\n\n  data() {\n\n    return {\n      message: \"\",\n      company:this.companyTransferred,\n      successfulUpdated:false,\n      selectedCountry:\"\",\n      companyPhone:'',\n      disableSubmit:false\n    };\n\n  },\n\n  created(){\n\n    for(const index in this.countries)\n        if(this.countries[index].name == this.company.companyCountry){\n          this.selectedCountry = this.countries[index];\n        }\n\n      var number = parsePhoneNumber(this.company.companyPhone, this.selectedCountry.iso2 );\n      this.companyPhone = number.format('INTERNATIONAL');\n      \n  },\n\n  props: {\n\n    companyTransferred: {\n      type: Object,\n      default() { return null},\n    }\n\n  },\n\n  methods: {\n\n    emittedPhone(phone){\n      //console.log(\" phone\",phone);\n      this.companyPhone = phone;\n    },\n    \n    countryUpdated(value){\n      if(this.selectedCountry != value){\n        this.selectedCountry = value;\n        this.companyPhone ='';\n      }\n    },\n\n    updateCompany(company) {\n      this.disableSubmit = true;\n      company.companyActivationStartDate = moment(this.activationStartDate).format(\"DD/MM/YYYY HH:mm\");\n      company.companyPhone = this.companyPhone;\n\n      let trimedValues = this.companySchema.cast(company);\n      let createCompanyReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(trimedValues),\n      };\n\n      fetch(\"/api/company/update-company\",createCompanyReq)\n        .then( async response => {\n        if(response.status == 400){\n          this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n          this.disableSubmit = false;\n          return; \n        }\n        if (response.ok){\n          this.successfulUpdated = true;\n          this.message = \"L'entreprise a été mis à jour\";\n          this.disableSubmit =false;\n          setTimeout(() => (this.successfulUpdated = false, this.message =\"\" ), 4000);\n          this.$emit(\"company-updated\");\n          return;\n        } \n        return Promise.reject(response);\n        \n      })\n      .catch((response) => {\n        if (response.status == 401) {\n          this.$authTokenService.refreshToken(this.updateCompany.bind(this, company));\n          return;\n        }\n        this.successfulUpdated = false;\n        this.disableSubmit = false;\n        this.message = this.$authTokenService.handleErrorResponse(response);\n      });\n      \n    },\n\n    cancelUpdate(){\n      this.$emit('company-update-canceled');\n    }\n  },\n\n};\n\n</script>\n<style lang=\"css\" scoped>\n</style>\n","import { render } from \"./CompanyInfoUpdate.vue?vue&type=template&id=f63b42ba\"\nimport script from \"./CompanyInfoUpdate.vue?vue&type=script&lang=js\"\nexport * from \"./CompanyInfoUpdate.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./CompanyInfo.vue?vue&type=template&id=0577c1c8\"\nimport script from \"./CompanyInfo.vue?vue&type=script&lang=js\"\nexport * from \"./CompanyInfo.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  \n  <div class=\"card-body\">\n    <CompanyDisablingForm :company=\"company\" v-on:company-disabled=\"disablingCompany\"/>\n  </div>\n</template>\n\n<script>\n\nimport CompanyDisablingForm from \"./company-disabling/CompanyDisablingForm.vue\";\n\nexport default {\n\n  name:\"CompanyDisabling\",\n\n  emits:['company-disabled'],\n\n  components: {\n    CompanyDisablingForm\n  },\n\n  props:{\n    company:{\n      type: Object,\n      required: true\n    },\n\n  },\n\n  methods: {\n\n    disablingCompany(){\n      this.$emit(\"company-disabled\");\n    },\n  },\n\n}\n</script>\n\n<style scoped>\n\n</style>","<template>\n  \n  <Form class=\"form-type-material\" @submit=\"displayCompanyDisablingConfirmation\" :validation-schema=\"companyDisablingSchema\" v-slot=\"{ errors }\">\n\n    <!-- company ActivationEndDate  -->\n    <div class=\"form-group\">\n      <Datepicker \n        name=\"companyActivationEndDate\" \n        class=\"form-control\" \n        v-model=\"companyActivationEndDate\" \n        :lowerLimit='lowerLimit'\n        :style=\"datePickerStyle\"\n        :inputFormat=\"'dd/MM/yyyy'\"\n        :placeholder=\"'jj/mm/aaaa'\" \n        :language=\"'fr'\"\n        :class=\"{ 'is-invalid': errors.companyActivationEndDate }\"\n      />\n      <Field name=\"companyActivationEndDate\" :class=\"{ 'is-invalid': errors.companyActivationEndDate }\"  v-model=\"companyActivationEndDate\" hidden type=\"date\" /> \n      <span class=\"do-float\">\n        <label class=\"required\">Date de désactivaiton de l'entreprise </label>\n      </span>\n      <ErrorMessage name=\"companyActivationEndDate\" class=\"invalid-feedback\" />\n    </div>\n\n    <div class=\"text-center pt-3\">\n      <button type=\"submit\" class=\"btn btn-custom btn-round\" >Valider</button>\n    </div>\n\n  </Form>\n\n  <!-- pop up confirmation -->\n  <CompanyDisablingConfirmation\n    :show=\"showDisablingConfirmation\"\n    :companyCode=\"company.companyCode\"\n    :activationEndDate=\"companyActivationEndDate\"\n    v-on:close=\"showDisablingConfirmation = false\" \n    v-on:company-disabled=\"disablingCompany\">\n  </CompanyDisablingConfirmation>\n\n</template>\n\n<script>\n\nimport {Form, Field, ErrorMessage} from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport * as moment from \"moment\";\nimport Datepicker from 'vue3-datepicker';\nimport CompanyDisablingConfirmation from \"./CompanyDisablingConfirmation.vue\";\n\nexport default {\n\n  name:\"CompanyDisablingForm\",\n\n  emits:['company-disabled'],\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    Datepicker,\n    CompanyDisablingConfirmation\n  },\n\n  setup(){\n    \n    moment.locale(\"fr\");\n\n    const companyDisablingSchema = Yup.object().shape({\n      companyActivationEndDate:  Yup.date(\"Date de désactivation est obligatoire\").nullable(false).typeError(\"Date de désactivation est obligatoire\").required(\"Date de désactivation est obligatoire\"),\n    });\n\n    const datePickerStyle = {\"--vdp-selected-bg-color\":'#00203f',\"--vdp-selected-color\": \"#ffffff\",  \"--vdp-hover-bg-color\": \"#00203f\"};\n\n    return {datePickerStyle, companyDisablingSchema};\n  },\n\n  props:{\n    company:{\n      type: Object,\n      required: true\n    },\n\n  },\n  \n  data(){\n    return {\n      companyActivationEndDate : null,\n      lowerLimit: new Date(),\n      showDisablingConfirmation: false,\n\n    };\n  },\n\n  methods: {\n\n    displayCompanyDisablingConfirmation(){\n      this.showDisablingConfirmation = true;\n    },\n\n    disablingCompany(){\n      this.showDisablingConfirmation = false;\n      this.$emit(\"company-disabled\");\n    },\n  },\n\n}\n</script>\n\n<style scoped>\n\n</style>","<template>\n  \n  <Transition name=\"modal\">\n  \n    <div v-if=\"show\" class=\"modal-mask\">\n\n      <div class=\"modal-wrapper\">\n        <div class=\"modal-container p-0\">\n          <div class=\"card mb-0\">\n\n            <div class=\"card-header\">\n              <div class=\"fs-16 fw-600\"> \n                <i class=\"mdi mdi-alert-outline text-muted fs-17 me-1\" />\n                Désactivation de l'entreprise\n              </div>\n            </div>\n\n            <div class=\"card-body fs-14 fw-500 mx-auto\">\n              <div> \n                <span> Attention la désactivation de l'entreprise est définitive et irreversible. Aucune action ne permet de la réactiver. </span>\n              </div> \n            </div>\n\n            <div class=\"card-footer text-center btn-row p-2\">\n              <button class=\"btn btn-round btn-custom w-25\" @click=\"$emit('close')\">Annuler</button>\n              <button class=\"btn btn-round btn-custom w-25\" @click=\"disableCompany\" >Désactiver</button>\n            </div>\n\n            <!-- error message -->\n            <CustomMessage v-if=\"message\" :cssClass=\"'p-2'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n          </div>\n\n        </div>\n        \n      </div>\n\n    </div>\n\n  </Transition>\n\n</template>\n\n<script>\nimport CustomMessage from '../../../../common/CustomMessage.vue';\nimport * as moment from \"moment\";\n\nexport default {\n\n  name:\"CompanyDisablingConfirmation\",\n\n  emits:['close', 'company-disabled'],\n\n  components: {\n    CustomMessage\n  },\n\n  props:{\n\n    show: {\n      type: Boolean,\n      default() {\n        return false;\n      },\n    },\n\n    companyCode: {\n      type: String,\n      required:true\n    },\n\n    activationEndDate: {\n      required: true\n    },\n\n  },\n  data(){\n    return {\n      message: \"\",\n    };\n  },\n\n  methods: {\n\n    disableCompany(){\n\n      let disableRequest = {\n        companyCode: this.companyCode,\n        companyActivationEndDate : moment(this.activationEndDate).format(\"DD/MM/YYYY HH:mm\")\n      }\n\n      let disableCompanyReq = {\n        method: \"PUT\",\n        headers: {\n          \"Content-Type\": \"application/json\", \n          Authorization: this.$authTokenService.authToken()\n        },\n        body:JSON.stringify(disableRequest),\n      };\n      \n      fetch(\"/api/company/disable-company\",disableCompanyReq)\n      .then( async response => {\n        if(response.status == 400){\n          this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n          return; \n        }\n        if(response.ok){\n          this.$emit(\"company-disabled\");\n          return;\n        }\n        return Promise.reject(response);\n        \n      })\n      .catch( (response) => {\n        if (response.status == 401){\n          this.$authTokenService.refreshToken(this.disableCompany.bind(this));\n          return;\n        }\n        this.message = this.$authTokenService.handleErrorResponse(response);\n        \n      });\n    },\n  },\n\n}\n</script>\n\n<style scoped>\n\n</style>","import { render } from \"./CompanyDisablingConfirmation.vue?vue&type=template&id=93af207e\"\nimport script from \"./CompanyDisablingConfirmation.vue?vue&type=script&lang=js\"\nexport * from \"./CompanyDisablingConfirmation.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./CompanyDisablingForm.vue?vue&type=template&id=7bc9c3d7\"\nimport script from \"./CompanyDisablingForm.vue?vue&type=script&lang=js\"\nexport * from \"./CompanyDisablingForm.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./CompanyDisabling.vue?vue&type=template&id=43e3f882\"\nimport script from \"./CompanyDisabling.vue?vue&type=script&lang=js\"\nexport * from \"./CompanyDisabling.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"card p-0\">\n    <div class=\"timeline-container\">\n\n      <ul class=\"timeline-process timeline-content-right w-50 form-type-material\"> \n        \n        <!--  created status -->\n        <li class=\"timeline-block\">\n          <div class=\"timeline-point\">\n            <span class=\"badge badge-pill bg-gray-lighter\">\n              <i class=\"mdi mdi-dots-horizontal fs-16 text-default\" />\n            </span>\n          </div>\n\n          <div class=\"timeline-content\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{formatTime(company.companyCreationDate, 'DD/MM/YYYY HH:mm', \"DD/MM/YYYY HH[h]mm\")}}</span>  \n              <label class=\"fs-13\">Date de création.</label>  \n            </div>\n          </div>\n\n        </li>\n\n        <!-- activation status -->\n        <li class=\"timeline-block\" v-if=\"company.companyActivationStartDate\">\n\n          <div class=\"timeline-point\">\n            <span class=\"badge badge-pill bg-green\">\n              Activé\n            </span>\n          </div>\n\n          <div class=\"timeline-content\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{formatTime(company.companyActivationStartDate, 'DD/MM/YYYY HH:mm', \"DD/MM/YYYY\")}}</span>  \n              <label class=\"fs-13\">Date d'activation.</label>  \n            </div>\n          </div>\n        </li>\n        \n        <!-- activation end Date -->\n        <li class=\"timeline-block\" v-if=\"company.companyActivationEndDate\">\n\n          <div class=\"timeline-point\">\n            <span class=\"badge badge-pill bg-gray-lighter\">\n              <i class=\"mdi mdi-dots-horizontal fs-16 text-default\" />\n            </span>\n          </div>\n\n          <div class=\"timeline-content\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{formatTime(company.companyActivationEndDate, 'DD/MM/YYYY HH:mm', \"DD/MM/YYYY\")}}</span>  \n              <label class=\"fs-13\">Date de fin de l'activité.</label>  \n            </div>\n          </div>\n        </li>\n\n        <!-- company desactivation date -->\n        <li class=\"timeline-block\" v-if=\"company.companyDesactivationDate\">\n\n          <div class=\"timeline-point\">\n            <span class=\"badge badge-pill bg-red\">\n              Déactivé\n            </span>\n          </div>\n\n          <div class=\"timeline-content\">\n            <div class=\"form-group do-float\">\n              <span class=\"form-control\">{{formatTime(company.companyDesactivationDate, 'DD/MM/YYYY HH:mm',\"DD/MM/YYYY HH[h]mm\" )}}</span>  \n              <label class=\"fs-13\">Date de désactivation.</label>  \n            </div>\n          </div>\n        </li>\n\n      </ul>\n    </div>\n  </div>\n \n</template>\n\n<script>\nimport moment from \"moment\";\nexport default {\n\n  name:\"CompanyHistory\",\n  \n  setup() {\n    moment.locale('fr');\n  },\n\n\n  props:{\n\n    company: { \n      type: Object, \n      default() { \n        return null\n      },\n    },\n\n  },\n  \n  methods:{\n\n    formatTime(value, formatter, pattern ){\n      return moment(value, formatter).format(pattern);\n    },\n  }\n}\n</script>\n\n<style scoped>\n\n/*\n * timeline\n */\n.timeline-process {\n  position: relative;\n  list-style: none;\n  margin:30px auto 30px;\n  padding-left:0;\n  width:90%;\n  z-index:1;\n}\n.timeline-process .timeline-block {\n  display: flex\n}\n\n.timeline-process .timeline-point {\n  position: relative;\n  flex-shrink: 0;\n  flex-grow: 0;\n  text-align: center;\n  width: 90px; \n  order:1;\n}\n.timeline-process .timeline-point::before {\n  content: '';\n  position: absolute;\n  top: 0px;\n  left: 50%;\n  bottom: 0px;\n  width: 2px;\n  margin-left: -1px;\n  z-index: -1;\n  background-color:#ebebeb\n}\n.timeline-process .timeline-block:first-child .timeline-point::before {\n  top: -31px !important;\n}\n.timeline-process .timeline-block:first-child .timeline-point::after, \n.timeline-process .timeline-block:last-child .timeline-point::after {\n  content: '';\n  position: absolute;\n  left: 50%;\n  display: inline-block;\n  width: 8px;\n  height: 8px;\n  margin-left: -4px;\n  background-color: #ebebeb;\n  border-radius: 50%\n}\n.timeline-process .timeline-block:first-child  {\n  padding-top: 38px;\n}\n.timeline-process .timeline-block:first-child .timeline-point::after{\n  top: -38px;\n}\n.timeline-process .timeline-block:last-child .timeline-point::after {\n  bottom: 0px;\n}\n\n.timeline-process .timeline-content {\n  flex: 1 1 0px;\n  margin-bottom: 25px;\n  position: relative;\n}\n.timeline-process .timeline-block:last-child .timeline-content {\n  margin-bottom: 0px;\n}\n\n.timeline-process.timeline-content-right .timeline-block:nth-child(odd) .timeline-content,\n.timeline-process.timeline-content-right .timeline-block:nth-child(even) .timeline-content {\n  order: 3\n}\n\n\n</style>","import { render } from \"./CompanyHistory.vue?vue&type=template&id=bad22614&scoped=true\"\nimport script from \"./CompanyHistory.vue?vue&type=script&lang=js\"\nexport * from \"./CompanyHistory.vue?vue&type=script&lang=js\"\n\nimport \"./CompanyHistory.vue?vue&type=style&index=0&id=bad22614&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-bad22614\"]])\n\nexport default __exports__","import { render } from \"./CompanySettings.vue?vue&type=template&id=4e2ae8fa&scoped=true\"\nimport script from \"./CompanySettings.vue?vue&type=script&lang=js\"\nexport * from \"./CompanySettings.vue?vue&type=script&lang=js\"\n\nimport \"./CompanySettings.vue?vue&type=style&index=0&id=4e2ae8fa&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4e2ae8fa\"]])\n\nexport default __exports__","import { render } from \"./CompanySettingsModal.vue?vue&type=template&id=60c07f78&scoped=true\"\nimport script from \"./CompanySettingsModal.vue?vue&type=script&lang=js\"\nexport * from \"./CompanySettingsModal.vue?vue&type=script&lang=js\"\n\nimport \"./CompanySettingsModal.vue?vue&type=style&index=0&id=60c07f78&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-60c07f78\"]])\n\nexport default __exports__","import { render } from \"./CompanyList.vue?vue&type=template&id=7b813e8a&scoped=true\"\nimport script from \"./CompanyList.vue?vue&type=script&lang=js\"\nexport * from \"./CompanyList.vue?vue&type=script&lang=js\"\n\nimport \"./CompanyList.vue?vue&type=style&index=0&id=7b813e8a&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7b813e8a\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"quickview quickview-lg\" tabindex=\"-1\" id=\"quickViewUserUpdate\" aria-labelledby=\"quickViewUserUpdateLabel\">\n\n    <header class=\"quickview-header\">\n      <h5 class=\"quickview-title lead fw-400\">Création d'entreprise</h5>\n      <button type=\"button\" class=\"btn-close\" v-on:click=\"$emit('close')\"></button>\n    </header>\n\n    <div class=\"quickview-body\">\n      <div class=\"quickview-block form-type-material\">\n        <CompanyCreateForm v-on:company-created=\"reload()\"/>\n      </div>\n    </div>\n    \n  </div> \n\n</template>\n\n<script>\n\nimport CompanyCreateForm from \"./CompanyCreateForm.vue\";\n\nexport default {\n\n  name: \"CompanyCreate\",\n\n  data() {\n    return {\n      closed: false,\n    };\n  },\n\n  components: {\n    CompanyCreateForm,\n  },\n\n  methods: {\n    reload() {\n      this.$emit(\"company-created\");\n    },\n  },\n  \n};\n</script>\n\n<style>\n\n</style>","<template>\n\n  <Form @submit=\"createCompany\" :validation-schema=\"companySchema\" v-slot=\"{ errors }\">\n\n    <!-- nom -->\n    <div class=\"form-group\">\n      <Field name=\"companyName\" type=\"text\" class=\"form-control\" required :class=\"{ 'is-invalid': errors.companyName }\"/>\n      <label class=\"required\" for=\"companyName\">Nom</label>\n        <ErrorMessage name=\"companyName\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- code -->\n    <div class=\"form-group\">\n      <Field name=\"companyCode\" type=\"text\" class=\"form-control\" :class=\"{ 'is-invalid': errors.companyCode }\" required style=\"text-transform: lowercase\" />\n      <label class=\"required\" for=\"companyCode\">Code</label>\n        <ErrorMessage name=\"companyCode\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- numéro de SIREN -->\n    <div class=\"form-group\">\n      <Field name=\"registrationNumber\" type=\"tel\" class=\"form-control\" :class=\"{ 'is-invalid': errors.registrationNumber }\" required v-maska data-maska=\"#########\" />\n      <label for=\"registrationNumber\">Numéro de SIREN</label>\n        <ErrorMessage name=\"registrationNumber\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- address -->\n    <div class=\"form-group\">\n      <Field name=\"companyAddress1\" type=\"text\" class=\"form-control\" required :class=\"{ 'is-invalid': errors.companyAddress1 }\"/>\n      <label class=\"required\" for=\"companyAddress1\">Adresse</label>\n        <ErrorMessage name=\"companyAddress1\" class=\"invalid-feedback\" />\n    </div>\n    \n    <!-- complément -->\n    <div class=\"form-group\">\n      <Field name=\"companyAddress2\" type=\"text\" class=\"form-control\"  required :class=\"{ 'is-invalid': errors.companyAddress2 }\"/>\n      <label for=\"companyAddress2\">Complément</label>\n        <ErrorMessage name=\"companyAddress2\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- zip code -->\n    <div class=\"form-group\">\n      <Field name=\"companyZipCode\" type=\"text\" class=\"form-control\"  required :class=\"{ 'is-invalid': errors.companyZipCode }\"/>\n      <label class=\"required\" for=\"companyZipCode\">Code postal</label>\n      <ErrorMessage name=\"companyZipCode\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- ville -->\n    <div class=\"form-group\">\n      <Field name=\"companyCity\" type=\"text\" class=\"form-control\"  required :class=\"{ 'is-invalid': errors.companyCity }\"/>\n      <label class=\"required\" for=\"companyCity\">Ville</label>\n      <ErrorMessage name=\"companyCity\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- pays -->\n    <div class=\"form-group\">\n      <Field name=\"companyCountry\" v-slot=\"{ handleChange, value }\">\n        <CustomSelect \n          :modelValue=\"value\"\n          @value-updated=\"(value) => {handleChange(value); countryUpdated(value)}\"\n          :options=\"countries\"\n          name=\"companyCountry\"\n          :error=\"errors.companyCountry\"\n          classStyle=\"form-control\"\n        />\n      </Field>\n      <label class=\"floating-label required\" for=\"companyCountry\">Pays</label>\n      <ErrorMessage name=\"companyCountry\" class=\"d-flex invalid-feedback\" />\n    </div>\n     \n    <!-- email -->\n    <div class=\"form-group\">\n      <Field name=\"companyEmail\" type=\"text\" class=\"form-control\" :class=\"{ 'is-invalid': errors.companyEmail }\" required/>\n      <label class=\"required\" for=\"companyEmail\">Email</label>\n        <ErrorMessage name=\"companyEmail\" class=\"invalid-feedback\" />\n    </div>\n\n    <!-- phone fixed-line -->\n    <Field v-if=\"selectedCountry\" name=\"companyPhone\" required v-slot=\"{ handleChange }\" v-model=\"companyPhone\"> \n      <PhoneInput  \n        :modelValue=\"companyPhone\"\n        @value-updated=\"handleChange\" \n        :country=\"selectedCountry\" \n        :phoneType=\"'FIXED_LINE'\" \n        :error=\"errors.companyPhone\" />\n    </Field>\n\n      <!-- date d'activation used datePicker pour plus d'info merci de bien lire la doc ici https://icehaunter.github.io/vue3-datepicker/:class=\"countryCallingCode? 'do-float': ''\"  v-maska data-maska=\"#########\" -->\n      <div class=\"form-group\">\n        <Datepicker name=\"activationStartDate\" class=\"form-control\"  v-model=\"activationStartDate\" :lowerLimit='lowerLimit' :style=\"datePickerStyle\"/>\n         <span class=\"do-float\">\n          <label class=\"required\">Date de début d'activation </label>\n         </span>\n      </div>\n\n      <!-- URL -->\n      <div class=\"form-group\">\n        <Field name=\"companyUrlWebInterface\" type=\"text\" class=\"form-control\"  required :class=\"{ 'is-invalid': errors.companyUrlWebInterface }\"/>\n        <label for=\"companyUrlWebInterface\">URL</label>\n        <ErrorMessage name=\"companyUrlWebInterface\" class=\"invalid-feedback\" />\n      </div>\n\n      <!-- ajouter buttom -->\n    <div class=\"text-center pt-3\">\n      <button type=\"submit\" class=\"btn btn-custom btn-round\" :disabled=\"disableSubmit\">Ajouter</button>\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n  </Form>\n  \n</template>\n\n<script>\n\n\nimport { Form, Field, ErrorMessage } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport * as moment from \"moment\";\nimport Datepicker from 'vue3-datepicker';\nimport { ref } from 'vue';\nimport { vMaska } from \"maska\";\nimport PhoneInput from \"../../common/PhoneInput.vue\";\nimport CustomSelect from '../../common/CustomSelect.vue';\nimport CustomMessage from '../../common/CustomMessage.vue';\n\nexport default {\n \n  name: \"CompanyCreateForm\",\n\n  directives: {maska: vMaska},\n\n  emits: [\"company-created\"],\n\n  components: {\n    Form,\n    Field,\n    ErrorMessage,\n    Datepicker,\n    PhoneInput,\n    CustomSelect,\n    CustomMessage\n  },\n\n  setup(){\n    \n    const urlRegex = \"^((http|https)://)[-a-zA-Z0-9@:%._\\\\+~#?&//=]{2,256}\\\\.[a-z]{2,6}\\\\b([-a-zA-Z0-9@:%._\\\\+~#?&//=]*)$\";\n\n    const companySchema = Yup.object().shape({\n      companyName: Yup.string().required(\"Nom d'entreprise est obligatoire\"),\n      companyCode: Yup.string().matches(/^[a-zA-Z0-9]+$/, \"Chiffres et lettres autorisées\")\n      .min(5,\"Doit comporter au moins 5 caractères\").max(20, \"20 lettres autorisées\")\n      .required(\"Code d'entreprise est obligatoire\"),\n      registrationNumber:Yup.string(),\n      companyAddress1: Yup.string().required(\"L'adresse est obligatoire\"),\n      companyAddress2: Yup.string(),\n      companyZipCode: Yup.string().required(\"Code postal est obligatoire\"),\n      companyCity: Yup.string().required(\"La ville est obligatoire\"),\n      companyCountry:Yup.string().required(\"Pays est obligatoire\"),\n      companyPhone: Yup.string().required(\"Téléphone est obligatoire\"),\n      companyEmail: Yup.string().required(\"Email est obligatoire\").email(\"Email invalide\"),\n      companyUrlWebInterface :Yup.string().matches(urlRegex, {message: \"URL invalide\", excludeEmptyString:true}),\n    });\n\n    const datePickerStyle = {\"--vdp-selected-bg-color\":'#00203f',\"--vdp-selected-color\": \"#ffffff\",  \"--vdp-hover-bg-color\": \"#00203f\"};\n    const today =new Date();\n\n    const countries = [\n      {text:'France',     value:'France'},\n      {text:'Monaco',     value:'Monaco'},\n      {text:'Belgique',   value:'Belgique'},\n      {text:'Suisse',     value:'Suisse'},\n      {text:'Andorre',    value:'Andorre'},\n      {text:'Italie',     value:'Italie' },\n      {text:'Espagne',    value:'Espagne'},\n      {text:'Luxembourg', value:'Luxembourg' },\n      {text:'Pays-Bas',   value:'Pays-Bas'},\n      {text:'Allemagne',  value:'Allemagne'}, \n      {text:'Autriche',   value:'Autriche'}\n    ];\n    \n    return {companySchema, today, countries, datePickerStyle};\n  },\n\n  data() {\n   \n    return {\n      activationStartDate : ref(this.today),\n      lowerLimit:new Date(),\n      loading: false,\n      companyCountry:\"\",\n      message: \"\",\n      companyCreated: \"\",\n      companyPhone:'',\n      selectedCountry:\"\",\n      disableSubmit:false,\n    };\n        \n  },\n\n  watch:{\n    companyCountry(newValue, oldValue){\n\n     if(newValue != oldValue){\n        this.companyPhone ='';\n      }\n    }\n\n  },\n\n  methods: {\n\n    countryUpdated(value){\n      if(this.selectedCountry != value){\n        this.selectedCountry = value;\n        this.companyPhone ='';\n      }\n    },\n\n    selectedPhone(phone){\n      //console.log(\"emited\",phone );\n      this.companyPhone = phone;\n    },\n\n    createCompany(values) {\n      this.disableSubmit = true;\n      this.loading = true;\n      values.companyActivationStartDate = moment(this.activationStartDate).format(\"DD/MM/YYYY HH:mm\");\n      values.companyPhone = this.companyPhone;\n      let trimedValues = this.companySchema.cast(values);\n      trimedValues.companyCode = values.companyCode.toLowerCase();\n\n      let createCompanyReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(trimedValues),\n      };\n\n      fetch(\"/api/company/create-company\",createCompanyReq)\n         .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            this.disableSubmit = false;\n            return; \n          }\n          if (response.ok){\n            this.$emit(\"company-created\");\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.createCompany.bind(this, values));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n          this.disableSubmit = false;\n\n        });\n    },\n\n  },\n\n};\n</script>\n<style scoped>\n\n</style>\n","import { render } from \"./CompanyCreateForm.vue?vue&type=template&id=ba35b57e\"\nimport script from \"./CompanyCreateForm.vue?vue&type=script&lang=js\"\nexport * from \"./CompanyCreateForm.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./CompanyCreate.vue?vue&type=template&id=ecf4442a\"\nimport script from \"./CompanyCreate.vue?vue&type=script&lang=js\"\nexport * from \"./CompanyCreate.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./Companies.vue?vue&type=template&id=4a60a3d6\"\nimport script from \"./Companies.vue?vue&type=script&lang=js\"\nexport * from \"./Companies.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"container-fluid\">\n\n    <div class=\"position-relative my-3\">\n        \n      <div class=\"float-end d-flex align-items-center mb-2\">\n        <div class=\"lookup lookup-circle lookup-right mdi mdi-magnify fs-25\">\n          <input type=\"text\" v-model=\"dataTableRequest.searchKeyWord\" @blur=\"search()\" @keyup.enter=\"search()\" required class=\"text-default fs-14\">\n        </div>\n        <i class=\"mdi mdi-alert-circle-outline text-lighter  fs-18 ms-3\" \n        v-tippy=\"{ content: `<span class=fs-11>Chercher un client par:</span> <ul class=fs-11><li>Nom</li> <li>Prénom</li>  <li>Société</li> </ul>`\n          , placement:'right'}\" />\n      </div>  \n      \n        <!--The ClientTable component -->\n        <ClientTable :dataTableResponse=\"dataTableResponse\" :tableConfig=\"tableConfig\" v-on:order=\"order\"/>\n\n        <!-- pagination -->\n        <pagination\n          v-bind:rootPageLength=\"dataTableRequest.pageLength\"\n          v-bind:totalPages=\"dataTableResponse.totalPages\"\n          v-bind:totalRecords=\"dataTableResponse.totalRecords\"\n          v-on:pageLength=\"pageLengthHandler\"\n          v-on:fetchData=\"fetchDataHandler\"\n          v-bind:pageLengths=\"pageLengths\"\n          v-bind:initPageStart=\"initPageStart\"\n        />\n\n        <div v-show=\"loading\" class=\"loading reveal\">\n          <span class=\"spinner-border\" role=\"status\"></span>\n        </div>\n\n    </div>\n\n    <!-- error message -->\n    <CustomMessage v-if=\"message\" :message=\"message\" :type=\"'error'\" @close=\"this.message = ''\"/>\n\n  </div>\n\n</template>\n\n<script>\nimport ClientTable from \"./ClientDataTable.vue\";\nimport { TableConfig } from \"../../beans/ClientTableConfig.js\";\nimport pagination from \"../pagination/Pagination.vue\";\nimport CustomMessage from '../common/CustomMessage.vue';\n\nexport default {\n  name: \"Clients\",\n\n  components: {\n    ClientTable,\n    pagination,\n    CustomMessage\n  },\n\n  data() {\n    return {\n      pageFrom: 0,\n      pageTo: 0,\n      loading:false,\n      dataTableRequest: {\n        searchKeyWord:'',\n        companyCode: this.$store.state.auth.user.companyCode,\n        fields: [\n          \"creationDate\",\n          \"clientCode\",\n          \"companyCode\",\n          \"clientName\",\n          \"clientFirstName\",\n          \"clientSocietyName\",\n          \"address\",\n          \"mobile\",\n          \"email\",\n          \"origin\"\n        ],\n        sortField: \"creationDate\", // sort field  \"clientCode\",\n        sortDirection: \"desc\", // sort der\n        serverSide: true, //server side\n        pageLength: 10, // page length\n        pageStart: 0,\n      },\n      pageLengths: [5, 10, 25, 50],\n      dataTableResponse: {},\n      tableConfig: new TableConfig(),\n      initPageStart:1,\n      message:\"\"\n    };\n  },\n  methods: {\n\n    search(){\n      this.dataTableRequest.pageStart = 0;\n      this.initPageStart +=1;\n      this.fetchData();\n    },\n\n    // Page start handler of child value emitted value is startPage\n    fetchDataHandler(value) {\n      this.dataTableRequest.pageStart = value;\n      this.fetchData(\"fetchDataHandler\");\n    },\n\n    // Page length handler of child value emitted\n    pageLengthHandler(value) {\n\n      //console.log(\"pageLengthHandler\")\n      this.dataTableRequest.pageStart = 0;\n      this.dataTableRequest.pageLength = value;\n      this.fetchData(\"pageLengthHandler\");\n\n    },\n\n    fetchData() {\n      this.loading=true;\n      let dataTableReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(this.dataTableRequest),\n      };\n\n      fetch(\"/api/client/get-clients\", dataTableReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok) {\n            this.dataTableResponse = await response.json();\n            return;\n          } \n          return Promise.reject(response);\n        })\n        .catch( (response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.fetchData.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n      if (this.dataTableRequest.pageStart - 1 > 0)\n        this.pageFrom =\n          (this.dataTableRequest.pageStart - 1) *\n          this.dataTableRequest.pageLength;\n          this.loading=false;\n    },\n\n    order(order) {\n      this.loading=true;\n      this.dataTableRequest.sortDirection =order.direction;\n      this.dataTableRequest.sortField = order.column;\n\n      let dataTableReq = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(this.dataTableRequest),\n      };\n\n      fetch(\"/api/client/get-clients\", dataTableReq)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok) {\n            this.dataTableResponse = await response.json();\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch( (response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.order.bind(this, order));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n\n      if (this.dataTableRequest.pageStart - 1 > 0)\n        this.pageFrom =\n          (this.dataTableRequest.pageStart - 1) *\n          this.dataTableRequest.pageLength;\n          this.loading=false;\n    },\n\n  },\n\n};\n</script>\n\n<style lang=\"css\" scoped>\n\n\n</style>\n\n\n\n\n","<template>\n\n\n  <table class=\"table bg-white m-0\" v-if=\"dataTableResponse.totalRecords != undefined && dataTableResponse.data\" v-auto-animate>\n    <thead>\n      <tr>\n\n        <!--  show reference only fo SUPER-USER-->\n        <th v-if=\"hasPrivilege('DISPLAY_CLIENT_CODE') == true\">\n          <div v-on:click=\"(sortedField.name = 'clientCode'), order()\" >\n            <span class=\"\"> Référence</span>\n            <span v-if=\"sortedField.clicked == 0 && sortedField.name == ''\" class=\"float-end\">\n              <i class=\"mdi mdi-swap-vertical\"/>\n            </span>\n            <span v-if=\"sortedField.name == 'clientCode' && sortedField.clicked == 1\" class=\"float-end\">\n              <i class=\"mdi mdi-arrow-up-thin\"/>\n            </span>\n            <span v-if=\"sortedField.name == 'clientCode' && sortedField.clicked == 2\" class=\"float-end\">\n              <i class=\"mdi mdi-arrow-down-thin\"/>\n            </span>\n          </div>\n        </th>\n\n        <!-- show other fields -->\n        <th class=\"fw-600 fs-15\" v-for=\"field in tableConfig.fields\" :key=\"field\">\n          <div v-on:click=\"(sortedField.name = field.name), order()\" v-if=\"field.name != 'clientCode'\">\n            <span class=\"\"> {{ field.title }}</span>\n            <span v-if=\"sortedField.clicked == 0 && sortedField.name == ''\" class=\"float-end\">\n              <i class=\"mdi mdi-swap-vertical\"/>\n            </span>\n            <span v-if=\"sortedField.name == field.name && sortedField.clicked == 1\" class=\"float-end\">\n              <i class=\"mdi mdi-arrow-up-thin\"/>\n            </span>\n            <span v-if=\"sortedField.name == field.name && sortedField.clicked == 2\" class=\"float-end\">\n              <i class=\"mdi mdi-arrow-down-thin\"/>\n            </span>\n          </div>\n        </th>\n\n      </tr>\n    </thead>\n\n    <!-- Loop through the list get the each client data -->\n    <tbody>\n      \n      <tr v-for=\"item in dataTableResponse.data\" :key=\"item\" @click=\"clientRedirect(item.clientCode)\">\n\n          <td v-if=\"hasPrivilege('DISPLAY_CLIENT_CODE') == true\" > {{item.clientCode}}</td>\n          <td> <span v-if=\"item.creationDate\">{{item.creationDate}}</span> </td>\n          <td> <span v-if=\"item.clientName\">{{item.clientName.toUpperCase()}}</span></td>\n          <td> <span v-if=\"item.clientFirstName\">{{item.clientFirstName.toUpperCase()}} </span></td>\n          <td> <span v-if=\"item.clientSocietyName\">{{item.clientSocietyName.toUpperCase()}}</span></td>\n          <td> <span v-if=\"item.mobile\">{{item.mobile}}</span></td>\n          <td class=\"\"> <span v-if=\"item.email\">{{item.email}}</span> </td>\n          <td class=\"ps-4 fs-14\"> <span v-if=\"item.address && item.address.zipCode\"> {{item.address.zipCode}} </span> </td>\n\n          <td  class=\"text-gray fs-25 ps-4\">\n            <i v-if=\"item.origin == 'MANAGER' \" class=\"mdi mdi-face-agent\"\n              v-tippy=\"{ content: '<span class='+'fs-11'+'>Interface Manager</span>' , placement:'right' }\"/>\n            <i  v-else-if=\"item.origin == 'WEB_INTERFACE' \" class=\"mdi mdi-web\" \n              v-tippy=\"{ content: '<span class='+'fs-11'+'>Interface Web</span>' , placement:'right'}\" />\n          </td>\n\n      </tr>\n    </tbody>\n    \n  </table>\n  \n    <div v-if=\"dataTableResponse.totalRecords != undefined && dataTableResponse.totalRecords <= 0\" class=\"card text-center min-height-200\">\n      <div class=\"min-height-200 d-flex align-items-center\"> \n        <div class=\"text-center w-100 \"><i class=\"mdi mdi-alert-outline fs-50\"/> <br/> <span class=\"text-muted fs-14\"> Aucun client </span> </div>\n      </div>\n  </div>\n\n</template>\n\n<script>\nimport { TableConfig } from \"../../beans/ClientTableConfig.js\";\nimport { hasPrivilege } from \"../../services/user.service.js\";\n\nexport default {\n\n  name: \"ClientDataTable\",\n\n  data() {\n    return {\n      sortedField: { name: \"\", clicked: 0 },\n    };\n  },\n\n  emits: [\"order\"],\n\n  methods: {\n    hasPrivilege: hasPrivilege,\n\n    clientRedirect(clientCode){\n      this.$router.push({name:\"client\", params:{clientCode : clientCode} });\n    },\n\n    order() {\n      this.sortedField.clicked = this.sortedField.clicked + 1;\n      if (this.sortedField.clicked == 1) {\n        this.$emit(\"order\", {\n          column: this.sortedField.name,\n          direction: \"asc\",\n        });\n      }\n      if (this.sortedField.clicked == 2) {\n        this.$emit(\"order\", {\n          column: this.sortedField.name,\n          direction: \"desc\",\n        });\n      }\n      if (this.sortedField.clicked == 3) {\n        this.sortedField.clicked = 0;\n        this.sortedField.name = \"\";\n      }\n    },\n  },\n  \n  props: {\n    dataTableResponse: {\n      type: Object,\n    },\n\n    tableConfig: {\n      type: TableConfig,\n      default() {\n        return new TableConfig();\n      },\n    },\n  },\n\n\n};\n</script>\n\n<style lang=\"css\" scoped>\n.table {\n  color: #00203f;\n  border-color: #f2f2f2;\n}\n.table > :not(:first-child) {\n  border-top: 1px solid #f2f2f2;\n}\n.table > thead > tr > th {\n  cursor: pointer;\n}\n.table tbody tr:hover td, .table tbody tr:hover th {\n  cursor: pointer;\n  background-color: #f7fafc !important;\n}\n\n</style>\n","export class TableConfig {\n  constructor(\n    fields = [\n      {name: \"creationDate\", title: \"Date de création\", visible: true },\n      { name: \"clientName\", title: \"Nom\", visible: false },\n      { name: \"clientFirstName\", title: \"Prénom\", visible: false },\n      { name: \"clientSocietyName\", title: \"Société\", visible: false },\n      { name: \"mobile\", title: \"Téléphone\", visible: true },\n      { name: \"email\", title: \"Email\", visible: false },\n      { name: \"address\", title: \"Code postal\", visible: true },\n      { name: \"origin\", title: \"Provenance\", visible: true },\n    ],\n\n    sortField = \"Code\",\n    sortDirection = \"ASEC\",\n    pageLength = 5,\n    pageLengths = [5, 10, 25, 50],\n    pageStart = 0,\n    totalRecords = 0,\n    totalPages = 0,\n    url = \"/api/client/get-clients\",\n    serverSide = true\n  ) {\n    this.fields = fields;\n    this.sortField = sortField;\n    this.sortDirection = sortDirection;\n    this.pageLength = pageLength;\n    this.pageLengths = pageLengths;\n    this.pageStart = pageStart;\n    this.totalRecords = totalRecords;\n    this.totalPages = totalPages;\n    this.url = url;\n    this.serverSide = serverSide;\n  }\n}\n","import { render } from \"./ClientDataTable.vue?vue&type=template&id=f092aea2&scoped=true\"\nimport script from \"./ClientDataTable.vue?vue&type=script&lang=js\"\nexport * from \"./ClientDataTable.vue?vue&type=script&lang=js\"\n\nimport \"./ClientDataTable.vue?vue&type=style&index=0&id=f092aea2&lang=css&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f092aea2\"]])\n\nexport default __exports__","import { render } from \"./Clients.vue?vue&type=template&id=2f76fb58\"\nimport script from \"./Clients.vue?vue&type=script&lang=js\"\nexport * from \"./Clients.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"container-fluid\">\n\n  \n    <div class=\"fab fab-fixed\" v-if=\"hasPrivilege('CREATE_EVENT')\"\n      v-tippy=\"{ content: 'Ajouter un événement' , placement:'top'}\" >\n      <a class=\"btn btn-float\" @click=\"redirectToCreateEvent()\"  >\n        <i class=\"mdi mdi-plus\" />\n      </a>\n    </div>\n\n    <div class=\"header-bar justify-content-between my-3 fs-20\" >Fiche client</div>\n    \n    <!-- custom message -->\n    <CustomMessage v-if=\"message\" :cssClass=\"'mt-3'\" :message=\"message\" :type=\"this.canUserCreateEvent ? 'error' : 'warning'\" @close=\"this.message = ''\"/>\n\n    <div class=\"flexbox my-3\" v-if=\"client.companyCode\">\n\n      <!-- client box -->\n      <div class=\"col-lg-3 ps-0 pe-2\">\n        <ClientBox :client=\"client\" /> \n      </div>\n\n      <!-- event list -->\n      <div class=\" col-lg-9 p-0\">\n        <div class=\"card card-body p-0\" v-if=\"events && events.length>0 \">\n          <EventsList v-bind:events=\"events\" />\n          <div v-show=\"loading\" class=\"loading reveal\">\n            <span class=\"spinner-border\" role=\"status\"></span>\n          </div>\n        </div>\n\n        <div v-else-if=\"!events || events.length == 0 \" class=\"card card-body p-0 \">\n          <div class=\"min-height-150 d-flex align-items-center\"> \n            <div class=\"text-center w-100 \">\n              <i class=\"mdi mdi-alert-outline fs-40\"/> \n              <br/> \n              <span class=\"text-muted fs-13\"> \n                Pas d'événement\n              </span> \n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n\n  </div>\n</template>\n\n<script>\nimport { useRoute } from \"vue-router\";\nimport EventsList from \"../event/events/EventsList.vue\";\nimport { hasPrivilege } from \"../../services/user.service.js\";\nimport ClientBox from \"./client/ClientBox.vue\"\nimport CustomMessage from '../common/CustomMessage.vue';\n\nexport default {\n\n  name:'client',\n\n  setup() {\n    let clientCode = useRoute().params.clientCode;\n    return { clientCode };\n  },\n\n  components:{\n   EventsList,\n   ClientBox,\n   CustomMessage\n  },\n\n  data(){\n    return{\n      loading:false,\n      client: {},\n      dataRequest: {\n        companyCode: this.$store.state.auth.user.companyCode,\n        workshopCode: this.$store.state.auth.user.workshopCode,\n        sortField: \"eventDate\",\n        sortDirection: \"Asc\",\n        serverSide: true, \n        pageLength: 10, \n        pageStart: 1,\n      },\n      firstAvailability: null,\n      events: [],\n      message: \"\",\n      canUserCreateEvent : true,\n    }\n  },\n\n  created(){\n    this.loadClient();\n    this.loadEvents();\n    if(this.dataRequest.workshopCode && this.dataRequest.companyCode && this.hasPrivilege('CREATE_EVENT'))\n      this.loadFirstAvailability();\n  },\n\n  methods:{\n\n    hasPrivilege: hasPrivilege,\n\n    redirectToCreateEvent(){\n\n      if(this.$store.state.auth.user.workshopCode && !this.firstAvailability){\n        this.canUserCreateEvent = false;\n        this.message = \"Votre atelier ne dispose d'aucune disponibilité\";\n        return;\n      }\n\n      if(!this.$store.state.auth.user.workshopCode)\n        this.$router.push({ name: 'event-create', params: { clientCode: this.clientCode}});\n\n      else if(this.firstAvailability) \n         this.$router.push({ name: 'event-create', params: { workshopCode: this.dataRequest.workshopCode , workshopCalendarId: this.firstAvailability.workshopCalendarId,\n          clientCode: this.clientCode} });\n\n    },\n\n    // load client \n    loadClient() {\n\n      this.loading = true;\n      let loadClientReq = {\n        method: \"GET\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()}\n      };\n      fetch(\"/api/client/get-client/\"+this.dataRequest.companyCode+\"/\"+this.clientCode, loadClientReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if (response.ok){\n            this.client = await response.json();\n            this.loading = false;\n            return;\n          }\n          return Promise.reject(response);\n          \n        })\n        .catch((response) => {\n          if (response.status == 401){\n            this.$authTokenService.refreshToken(this.loadClient.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    /*\n    * push event either existing day or in new day\n    */\n    pushEvents(events) {\n      for(const index in events)\n          this.events.push(events[index]);\n      this.events[this.events.length - 1].setBackgroundColor = true;\n    },\n\n    loadEvents() {\n\n      this.dataRequest.clientCode = this.clientCode;\n      this.loading = true;\n\n      let request = {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: this.$authTokenService.authToken(),\n        },\n        body: JSON.stringify(this.dataRequest),\n      };\n\n      fetch(\"/api/event/search\", request)\n        .then(async (response) => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if(response.ok) {\n            const data = await response.json();\n            this.pushEvents(data.events);\n            this.loading = false;\n            return;\n          }\n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          this.loading = false;\n          if(response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadEvents.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    },\n\n    loadFirstAvailability(){\n\n      let firstAvailabilityObject = {\n        workshopCode: this.dataRequest.workshopCode,\n        companyCode: this.dataRequest.companyCode \n      };\n\n      let firstAvailabilityReq = {\n        method: \"POST\",\n        headers: {\"Content-Type\": \"application/json\", Authorization: this.$authTokenService.authToken()},\n        body: JSON.stringify(firstAvailabilityObject),\n      };\n\n      fetch(\"/api/workshop-calendar/first-availability\", firstAvailabilityReq)\n        .then( async response => {\n          if(response.status == 400){\n            this.message = response.status + \" \" + response.statusText + \" : \" + await response.text();\n            return; \n          }\n          if(response.status == 204){\n            // no content\n            this.firstAvailability = null;\n            return;\n          }\n          if (response.ok){\n            this.firstAvailability = await response.json();\n            return;\n          } \n          return Promise.reject(response);\n        })\n        .catch((response) => {\n          if (response.status == 401) {\n            this.$authTokenService.refreshToken(this.loadFirstAvailability.bind(this));\n            return;\n          }\n          this.message = this.$authTokenService.handleErrorResponse(response);\n        });\n    }\n  },\n\n}\n</script>\n\n<style scoped>\n\n</style>","<template>\n  \n    <div class=\"card p-0\" >\n\n      <div class=\"media-list media-list-sx media-list-divided \">\n\n        <div class=\"media\">\n          <span class=\"fs-16 fs-15 ps-1 text-capitalize fw-600 \">\n            {{client.clientFirstName}}\n            <span>{{client.clientName.toUpperCase()}} </span>\n          </span>\n        </div>\n\n        <a class=\"media flexbox align-items-center\" v-if=\"hasPrivilege('DISPLAY_CLIENT_CODE') == true\" >\n          <span class=\"fs-14\">Référence:</span>\n          <span class=\"fs-15\">{{client.clientCode}}</span>\n        </a>\n\n        <a class=\"media flexbox align-items-center\" v-if=\"client.clientName\">\n          <span class=\"fs-14\">Nom:</span>\n          <span class=\"fs-15 text-capitalize\" v-if=\"client.clientName\">{{client.clientName}}</span>\n        </a>\n\n        <a class=\"media flexbox align-items-center\" v-if=\"client.clientFirstName\">\n          <span class=\"fs-14\">Prénom:</span>\n          <span class=\"fs-15 text-capitalize\" v-if=\"client.clientFirstName\">{{client.clientFirstName}}</span>\n        </a>\n\n        <a class=\"media flexbox align-items-center\" v-if=\"client.clientSocietyName\">\n          <span class=\"fs-14\">Société:</span>\n          <span class=\"fs-15 text-capitalize\" v-if=\"client.clientSocietyName\">{{client.clientSocietyName}}</span>\n        </a>\n\n        <a class=\"media flexbox align-items-center\" >\n          <span class=\"fs-14\">Téléphone:</span>\n          <span class=\"fs-15\">{{client.mobile}}</span>\n        </a>\n\n        <a class=\"media flexbox align-items-center\" >\n          <span class=\"fs-14\">Email:</span>\n          <span class=\"fs-15\">{{client.email}}</span>\n        </a>\n\n        <a class=\"media flexbox align-items-center\" v-if=\"client.address\">\n          <span class=\"fs-14\">Adresse:</span>\n          <div class=\"fs-14 float-end\" >\n            <span v-if=\"client.address.address1\" >{{client.address.address1 }}</span> \n            <span v-if=\"client.address.address2\" class=\"ps-1\">{{ client.address.address2 }}</span> <br>\n            <span v-if=\"client.address.zipCode\" class=\"ps-1\">{{ client.address.zipCode}}</span>\n            <span v-if=\"client.address.city\" class=\"ps-1\">{{client.address.city}}</span> \n            <span v-if=\"client.address.country\" class=\"ps-1\">{{ client.address.country  }}</span> \n          </div>\n        </a>\n\n        <a class=\"media flexbox align-items-center\" >\n          <span class=\"fs-14\">Date de création:</span>\n          <span class=\"fs-15\">{{client.creationDate}}</span>\n        </a>\n\n        <a class=\"media flexbox align-items-center\" >\n          <span class=\"fs-14\">Provenance:</span>\n          <span class=\"align-items-center fs-15\">\n            <span v-if=\"client.origin == 'MANAGER' \"> <i class=\"mdi mdi-face-agent fs-17\"/> MANAGER </span>\n            <span v-else-if=\"client.origin == 'WEB_INTERFACE' \"> <i class=\"mdi mdi-web fs-17\" /> WEB </span>\n          </span>\n        </a>\n\n      </div>\n    \n    </div>\n    \n</template>\n\n<script>\nimport { hasPrivilege } from \"../../../services/user.service.js\";\n\nexport default {\n  name :'clientBox',\n\n  props:{\n    client:{\n      type:Object\n\n    }\n  },\n  methods:{\n    hasPrivilege: hasPrivilege\n  }\n\n}\n</script>\n\n<style scoped>\n\n</style>","import { render } from \"./ClientBox.vue?vue&type=template&id=4c5e3850\"\nimport script from \"./ClientBox.vue?vue&type=script&lang=js\"\nexport * from \"./ClientBox.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./Client.vue?vue&type=template&id=788b4874\"\nimport script from \"./Client.vue?vue&type=script&lang=js\"\nexport * from \"./Client.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n  <div class=\"container\">\n\n    <div class=\"col-12 p-4 m-4 text-center\">\n        <br/>\n        <br/>\n      <div class=\"card card-transparent p-4 m-4 mx-auto\">\n\n        <h1 class=\"text-secondary \" style=\"font-size: 100px\">404</h1>\n        <h4 class=\"text-uppercase\">Page non trouvée!</h4>\n\n        <p>Il semble que vous avez suivi un lien brisé ou entré une URL qui n'existe pas sur le site.</p>\n      </div>\n\n    </div>\n  </div>\n    \n</template>\n\n<script>\nexport default {\n\n  name:\"NotFound\",\n\n}\n</script>\n\n<style scoped>\n\n.card-transparent {\n  box-shadow: none;\n  background-color: transparent;\n}\n</style>","import { render } from \"./NotFound.vue?vue&type=template&id=10128256&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=10128256&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-10128256\"]])\n\nexport default __exports__","\nimport { createWebHistory, createRouter } from \"vue-router\";\n\n// auth\nimport Login              from \"@/components/auth/Login.vue\";\nimport Activation         from \"@/components/auth/Activation.vue\";\nimport Profile            from \"@/components/auth/Profile.vue\";\nimport ForgottenPassword  from \"@/components/auth/ForgottenPassword.vue\"\n\n// event\nimport Events \t          from \"@/components/event/Events.vue\";\nimport Event \t            from \"@/components/event/Event.vue\";\nimport EventCreate        from \"@/components/event/EventCreate.vue\"; \nimport EventMove          from \"@/components/event/EventMove.vue\";\n\n//user\nimport Users \t            from \"@/components/user/Users.vue\";\nimport UserCalendars from \"@/components/user/UserCalendars.vue\";\nimport UserAbsences       from \"@/components/user/UserAbsences.vue\";\n\n// workshop\nimport Workshops          from \"@/components/workshop/Workshops.vue\";\nimport Workshop           from \"@/components/workshop/Workshop.vue\";\nimport WorkshopPlannings  from \"@/components/workshop/WorkshopPlannings.vue\";\nimport WorkshopCalendars  from \"@/components/workshop/WorkshopCalendars.vue\";\nimport WorkshopTeam       from \"@/components/workshop/WorkshopTeam.vue\";\n\n\n// reporting\nimport Reporting from \"@/components/reporting/Reporting.vue\"\n\n//others\nimport Companies          from \"@/components/company/Companies.vue\";\nimport Clients \t          from \"@/components/client/Clients.vue\";\nimport Client \t          from \"@/components/client/Client.vue\";\nimport NotFound           from \"@/components/common/NotFound.vue\";\n\nimport { hasPrivilege, hasNotPrivilege } from \"../services/user.service.js\";\n\nconst routes = [\n  {\n    path: \"/\",\n    redirect: {\n      name: 'events',\n      component: Events\n    }\n  },\n  {\n    path: \"/app/\",\n    redirect: {\n      name: 'events',\n      component: Events\n    }\n  },\n  // auth\n  {\n    path: \"/login\",\n    name: \"login\",\n    component: Login,\n  },\n  {\n    path: \"/activate\",\n    name: \"activate\",\n    component: Activation,\n  },\n\n  { \n    path:\"/forgotten-password\",\n    name :\"forgotten-password\",\n    component :ForgottenPassword\n\n  },\n  {\n    path: \"/app/profile\",\n    name: \"profile\",\n    component: Profile,\n  },\n  // event\n  {\n    path: \"/app/events/:startDate(\\\\d+)?/:endDate(\\\\d+)?\",\n    name: \"events\",\n    component: Events,\n    \n  },\n  {\n    path: \"/app/event-create/:workshopCode?/:workshopCalendarId?/:clientCode?\",\n    name: \"event-create\",\n    component: EventCreate,\n  },\n  {\n    path: \"/app/event/:eventCode\",\n    name: \"event\",\n    component: Event,\n  },\n  {\n    path: \"/app/event-move/:workshopCode/:eventCode\",\n    name: \"event-move\",\n    component: EventMove,\n  },\n  // user\n  {\n    path: \"/app/users\",\n    name: \"users\",\n    component: Users,\n  },\n  {\n    path: \"/app/user-calendars/:companyCode/:workshopCode/:userCode\",\n    name: \"user-calendars\",\n    component: UserCalendars,\n  },\n  {\n    path: \"/app/user-absences/:userCode\",\n    name: \"user-absences\",\n    component: UserAbsences,\n  },\n  // workshop\n  {\n    path: \"/app/workshops\",\n    name: \"workshops\",\n    component: Workshops,\n  },\n  {\n    path: \"/app/workshop/:workshopCode\",\n    name: \"workshop\",\n    component: Workshop,\n  },\n  {\n    path: \"/app/workshop-calendars/:companyCode/:workshopCode\",\n    name: \"workshop-calendars\",\n    component: WorkshopCalendars,\n  },\n  {\n    path: \"/app/workshop-plannings/:companyCode/:workshopCode\",\n    name: \"workshop-plannings\",\n    component: WorkshopPlannings,\n  },\n  {\n    path: \"/app/workshop-team/:companyCode/:workshopCode\",\n    name: \"workshop-team\",\n    component: WorkshopTeam,\n  },\n  // company\n  {\n    path: \"/app/companies\",\n    name: \"companies\",\n    component: Companies,\n  },\n  // client\n  {\n    path: \"/app/clients\",\n    name: \"clients\",\n    component: Clients,\n  },\n  {\n    path: \"/app/client/:clientCode\",\n    name: \"client\",\n    component: Client,\n  },\n\n   //reporting\n  {\n    path: \"/app/reporting\",\n    name: \"reporting\",\n    component: Reporting,\n  },\n\n  {\n    path: '/app/error',\n    name: 'NotFound',\n    component: NotFound\n  },\n\n  // other \n  { path: '/:pathMatch(.*)*',\n    name: 'NotFound',\n    component: NotFound\n  },\n   \n];\n\nconst router = createRouter({\n  history: createWebHistory(),\n  routes,\n  //linkActiveClass: 'active-link',\n  linkExactActiveClass: 'active-link',\n});\n\nrouter.beforeEach((to, from, next) => {\n\n  const loggedIn = localStorage.getItem('kit4planning.user');\n  \n  // not logged in & trying to access a restricted page : redirect to login\n  if (!loggedIn) {\n    const publicPages = ['/login', '/activate', '/forgotten-password'];\n    const authRequired = !publicPages.includes(to.path);\n    if(authRequired)\n      next('/login');\n  }\n   \n  if(loggedIn){\n    var loggedInJson=  JSON.parse(loggedIn);\n    if(loggedInJson != null){\n      const companyCode = loggedInJson.companyCode\n\n      // redirect to companies page if no companyCode is set\n      if(shouldRedirectToCompanies(companyCode, to.name)){\n        next({ name:'companies'}).catch(error => { console.info(error.message)});\n      }\n\n      // redirect to event page from login if logged\n      if(from.name == \"login\" && to.name == \"events\" && from.redirectedFrom != undefined && from.redirectedFrom.name == \"event\"){\n        next({ \n          name:'event',\n          params: { eventCode: from.redirectedFrom.params.eventCode }\n        }).catch(error => { console.info(error.message)});\n      }\n      \n    }\n  }\n\n  //default navigation\n  next();\n  \n});\n\nfunction shouldRedirectToCompanies(companyCode, toName) {\n  const displayCompaniesPrivilege = 'DISPLAY_COMPANIES';\n  const displayMyCompaniesPrivilege = 'DISPLAY_MY_COMPANIES';\n\n  //if the companyCode is set and not empty, do not redirect\n  if(companyCode)\n    return false;\n\n   // if the next page is already \"companies\", do not redirect\n  if(toName == \"companies\")\n    return false;\n\n  // if the user does not have the necessary privileges, do not redirect\n  if(hasNotPrivilege(displayCompaniesPrivilege) && hasNotPrivilege(displayMyCompaniesPrivilege))\n    return false;\n  \n  return true;\n}\n\nexport default router;","import { auth } from \"../store/auth.module\";\nimport router from '../router/routes.js';\n\nexport function hasPrivilege(privilege) {\n  if(auth.state.user && auth.state.user.privileges.indexOf(privilege) >= 0)\n    return true;\n  return false;\n}\n\nexport function hasNotPrivilege(privilege){\n  if(auth.state.user && auth.state.user.privileges.indexOf(privilege) == -1)\n    return true;\n  return false;\n}\n\nexport function loggedInRedirection(){\n  \n  // logged in\n  if(auth.state.status.loggedIn == true){\n\n    if(hasPrivilege('DISPLAY_COMPANIES')){\n      router.push({name: \"companies\"});\n      return;\n    }\n\n    if(hasPrivilege('DISPLAY_MY_COMPANIES') && !auth.state.user.companyCode){\n      router.push({name: \"companies\"});\n      return;\n    }\n    \n    if(auth.state.user.companyCode){\n      router.push({name: \"events\" });\n      return;\n    }\n\n    router.go(-1);    \n    return;  \n  } \n  \n  // not logged in\n  document.body.classList.remove('bg-light');\n  \n}\n\n","import { render } from \"./Header.vue?vue&type=template&id=6c5c65b8\"\nimport script from \"./Header.vue?vue&type=script&lang=js\"\nexport * from \"./Header.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n\n  <div class=\"card card-container \">\n\n    <!-- logo -->\n    <div class=\"text-center mb-5\">\n      <img v-if=\"logo\" :src=\"`/images/`+logo\" class=\"logo-img-card\" alt=\"kit4planning manager\" />\n    </div>\n\n    <!-- label -->\n    <div class=\"text-center mb-1 \">\n      <h5>Affichage mobile non supporté</h5> <br>\n      <i class=\"mdi mdi-cellphone-remove fs-50\"></i>\n    </div>\n    \n\n  </div>\n\n\n</template>\n\n<script>\nexport default {\n\n  name:\"MobileNotSupported\",\n\n  computed: {\n    logo() {\n      return this.$store.state.metadata.logo;\n    },\n  },\n}\n</script>\n\n<style scoped>\n\n\n.card-container.card {\n  margin: 10% auto;\n  border: none;\n  background-color: transparent ;\n  box-shadow: none;\n}\n\n</style>","import { render } from \"./MobileNotSupported.vue?vue&type=template&id=2214df8b&scoped=true\"\nimport script from \"./MobileNotSupported.vue?vue&type=script&lang=js\"\nexport * from \"./MobileNotSupported.vue?vue&type=script&lang=js\"\n\nimport \"./MobileNotSupported.vue?vue&type=style&index=0&id=2214df8b&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2214df8b\"]])\n\nexport default __exports__","<template>\n\n  <div class=\"footer\" >\n\n    <div class=\"fs-13\">\n      <a href=\"https://www.keepintuch.com/\" target=\"_blank\">\n        <i class=\"mdi mdi-copyright\" aria-hidden=\"true\"></i> Keepintuch 2023\n      </a>\n    </div>\n\n    <div class=\"fs-13\">\n      <a href=\"https://ksrservices.co\" target=\"_blank\">\n        <i class=\"mdi mdi-chevron-right\" aria-hidden=\"true\"></i> KSR Services\n      </a>\n    </div>\n\n  </div>\n\n</template>\n\n<script>\n\nexport default {\n  \n  name: \"Footer\",\n\n};\n</script>\n\n<style scoped>\n\n/*\n * footer\n */\n.footer {\n  display: flex;\n  justify-content: space-between;\n  position: relative;\n  left: 0;\n  bottom: 0;\n  width: 100%;\n  background-color: #FFFFFF;\n  font-size: 12px;\n  color: #616a78;\n  border-top: 1px solid #f1f2f3;\n  padding: 15px 30px;\n  min-width: inherit;\n}\n\n</style>\n\n","import { render } from \"./Footer.vue?vue&type=template&id=1a35ab41&scoped=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=js\"\nexport * from \"./Footer.vue?vue&type=script&lang=js\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=1a35ab41&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1a35ab41\"]])\n\nexport default __exports__","import { render } from \"./App.vue?vue&type=template&id=b8288ebc\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createStore } from \"vuex\";\nimport { auth } from \"./auth.module\";\n\nexport default createStore({\n    modules: {\n        auth,\n    },\n    state: {\n        metadata: {\n            logo: '',\n            brand: ''\n        },\n        copyright: 'copyright KSR Services'\n    },\n    actions: {\n        loadingMetadata() {\n            fetch(\"/api/application/get-metadata\")\n            .then((response) => response.json())\n            .then((data) => {\n                this.state.metadata = data;\n            });\n        },\n    },\n    mutations: {\n    \n    },\n    getters: {\n    \n    }\n})","import store from '../store/store';\nimport router from '../router/routes';\n\nexport function authToken() {\n  let user = JSON.parse(localStorage.getItem('kit4planning.user'));\n  if (user && user.token) {\n    return 'Bearer ' + user.token;\n  } else {\n    return '';\n  }\n}\n\nexport async function refreshToken(originalRequest) {\n  \n  let user = JSON.parse(localStorage.getItem('kit4planning.user'));\n\n  if(!user)\n    logout();\n\n  let bodyData =  {\n    username : user.username,\n    refreshToken: user.refreshToken\n  };\n   \n  let refreshTokenRequest = {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\"\n    },\n    body: JSON.stringify(bodyData),\n  };\n  \n  fetch(\"/api/auth/refreshtoken\", refreshTokenRequest)\n    .then( async response => {\n      if (response.ok){\n        const dataResponse = await response.json();\n        user.token = dataResponse.token;\n        user.refreshToken = dataResponse.refreshToken;\n        localStorage.setItem('kit4planning.user', JSON.stringify(user));\n        originalRequest();\n        return;\n      }\n      return Promise.reject();\n    })\n    .catch( () => {\n      logout();\n    });\n}\n\nexport function logout(){\n  store.dispatch(\"auth/logout\");\n  router.push({name: \"login\"});\n}\n\nexport function handleErrorResponse(response) {\n  if(response.status === undefined)\n    return \"Une erreur s'est produite, merci de contacter le service support.\";\n  return response.status + \" \" + response.statusText;  \n}","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n  register(`${process.env.BASE_URL}service-worker.js`, {\n    ready () {\n      console.info('App is being served from cache by a service worker.')\n    },\n    registered () {\n      console.info('Service worker has been registered.')\n    },\n    cached () {\n      console.info('Content has been cached for offline use.')\n    },\n    updatefound () {\n      console.info('New content is downloading.')\n    },\n    updated () {\n      console.info('New content is available; please refresh.')\n    },\n    offline () {\n      console.info('No internet connection found. App is running in offline mode.')\n    },\n    error (error) {\n      console.info('Error during service worker registration:', error)\n    }\n  })\n}\n","import { createApp } from 'vue'\nimport App from './App.vue';\nimport router from './router/routes.js'\nimport store from \"./store/store.js\"\nimport \"bootstrap/dist/js/bootstrap.min.js\"\nimport \"bootstrap/dist/js/bootstrap.esm.min.js\"\nimport 'bootstrap/dist/js/bootstrap.bundle.min.js'\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport \"@mdi/font/css/materialdesignicons.min.css\"\nimport { autoAnimatePlugin } from '@formkit/auto-animate/vue'\nimport \"./assets/css/fonts/icon-sav/icon-sav.css\"\nimport \"./assets/css/main.css\";\nimport './services/register.service.worker.js'\n\n// auth.token.service\nimport * as authTokenService from \"./services/auth.token.service.js\";\n\n// tippy\nimport { plugin as VueTippy } from 'vue-tippy'\nimport 'tippy.js/dist/tippy.css'\nimport 'tippy.js/animations/scale.css'\nimport 'tippy.js/themes/light-border.css'\n\n// chart\nimport VueApexCharts from \"vue3-apexcharts\";\n\nconst vueTippyConfig = {\n  directive: 'tippy',\n  component: 'tippy', \n  componentSingleton: 'tippy-singleton', \n  defaultProps: {\n    placement: 'auto',\n    allowHTML: true,\n    theme: 'light-border',\n    animation: 'scale',\n    arrow: true,\n    interactive: true,\n    touch: true,\n    zIndex: 9999,\n  },\n}\n\nconst app = createApp(App);\napp.config.unwrapInjectedRef = true;\n\napp.config.globalProperties.$authTokenService = authTokenService;\n\napp.use(router)\napp.use(store)\napp.use(autoAnimatePlugin)\napp.use( VueTippy, vueTippyConfig)\napp.use(VueApexCharts)\napp.mount('#app');\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkkit4planning\"] = self[\"webpackChunkkit4planning\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(2639); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","class","isMobile","installPWA","dismissPrompt","currentUser","href","role","src","logo","alt","height","loading","undefined","privileges","companyCode","hasPrivilege","to","name","this","workshopCode","style","iconColor","firstName","substring","toUpperCase","lastName","userCode","displayCompanyHeader","logOut","companyName","redirectToCompanies","content","placement","AuthService","login","user","username","password","then","response","data","token","localStorage","setItem","JSON","stringify","activate","activationKey","passwordConfirmation","logout","removeItem","setUserPassword","resetPasswordKey","forgottenPasswordKey","blockUser","parse","getItem","initialState","status","loggedIn","auth","namespaced","state","actions","commit","Promise","error","reject","mutations","loginSuccess","loginFailure","setUserPasswordFailure","activationSuccess","blockingUserSuccess","for","handleLogin","schema","errors","userNameSetted","userNameHandler","type","userName","required","hidden","userIsBlocked","clearUserName","nonValidePassword","showPassword","loginAttempts","forgottenPassword","disabled","validateLogin","initMessage","message","emits","setup","shape","components","Form","Field","ErrorMessage","methods","loginReq","method","headers","fetch","async","ok","userStatus","text","$emit","$router","push","__exports__","UserNameLogin","created","loggedInRedirection","$store","computed","metadata","watch","newValue","oldValue","dispatch","document","body","classList","add","toString","keyHolder","successful","handleActivation","passwordType","lowUpperCase","oneNnumber","oneSpecialChar","eightCharacter","confirmationPasswordType","showConfirmationPassword","errorMessage","checkKey","validate","autofocus","onPaste","setNextFocus","$event","ref","key1","key2","key3","key4","key5","length","timer","expired","interval","sendCode","directives","maska","min","max","props","String","require","Boolean","handler","value","setTimeout","time","secondToMinute","immediate","key","clipboardData","getData","isNaN","seconds","minutes","parseInt","second","loginWithoutSpaces","trim","verificationKeyReq","url","location","reload","inputKey","target","indexOf","$refs","$el","focus","select","preventDefault","CheckKey","matches","test","parent","$route","query","u","match","userFirstName","userLastName","roleValue","size","email","mobile","phone","simpleWorkshop","workshopName","superior","cssClass","description","Number","alertClass","closeMessage","closable","default","UserStatus","CustomMessage","roleName","loadUser","loadUserReq","Authorization","$authTokenService","authToken","json","statusText","catch","handleErrorResponse","refreshToken","bind","forgottenPasswordSchema","passwordKeyHolder","setPasswordHandler","PasswordModification","numberOfRequest","forgottenPasswordReq","displayFilter","onFilterUpdated","disableSubmit","clearFilter","canUserCreateEvent","redirectToCreateEvent","dataRequest","fetchComingEvents","fetchTodayEvents","initData","fetchGoneEvents","fetchDateRangeEvents","events","eventStartDate","inputFormat","datePickerStyle","typeable","placeholder","upperLimit","language","eventStartDateChanged","eventEndDate","lowerLimit","eventEndDateChanged","dataResponse","totalRecords","loadEvents","endRecords","event","index","formatDate","eventDate","isToday","isSameWithPreviousDate","eventStatusName","displayEventPage","eventCode","formatTime","eventTime","workshop","client","clientName","clientFirstName","vehicle","mark","model","registrationNumber","localFormatTime","eventDuration","eventCharge","formatTooltipContent","prestations","originName","eventStatusValue","HelperService","minute","result","hours","Math","abs","moment","locale","Array","note","beforeUnmount","observer","eventList","eventItem","lastEvent","unobserve","updated","rootElement","mediaEventContainer","IntersectionObserver","entries","isIntersecting","root","threshold","observe","pattern","format","now","isSame","params","element","filterSchema","workshops","handleChange","modelValue","createFilter","options","classStyle","clearable","eventStatuses","checked","selectedStatuses","addToSelectedStatus","eventOrigins","origin","selectedOrigins","addToSelectedOrigin","icon","selectedValue","selectedOptionText","selectOption","option","label","displayError","$_veeValidate","autoSelected","selectedOption","find","DropdownMenu","remove","CustomSelect","loadWorkshops","Status","removeStatusOnce","splice","removeOriginOnce","filterRequest","eventStatus","workshopsReq","results","EventsList","EventFilter","Datepicker","nullable","typeError","when","isValid","startOf","sortField","sortDirection","serverSide","pageLength","pageStart","firstAvailability","startDate","endDate","loadFirstAvailability","toDate","isBefore","filter","endOf","values","request","totalPages","firstAvailabilityObject","workshopCalendarId","formatDateText","displayMoveEvent","updateEventDate","minuteToHour","workshopAddress","redirectToClientPage","clientSocietyName","kilometers","vin","inServiceDate","creationDate","originValue","prestation","eventComment","eventActions","eventAction","action","validationActionEnabled","revocationActionEnabled","duration","loadEvent","handleEventActionValidate","eventValidateFormSchema","inputMinute","updateEventCharge","limit","eventAffectedUserCode","usersForAttribution","as","rows","maxlength","availibaleChargeSchema","incrementHour","incrementMinute","helpToolTip","decrementHour","decrementMinute","minutesToHour","newHour","oldHour","hoursTomin","newMin","oldMin","res","TimePicker","mounted","loadUsersForAttribution","usersForAttributionReq","buildUserResponse","eventActionValidateReq","users","handleEventRevocationForm","eventRevocationFormSchema","comment","eventActionRevocateReq","actionTypeName","actionTypeValue","eventPreviousDate","eventAffectedUser","EventValidateForm","EventRevocationForm","EventAction","passedEventBeforeTenDays","beforeNow","subtract","beforeToday","clientCode","loadEventReq","loadEventAction","companyStatus","canChangeWorkshop","eventCreated","changeWorkshop","selectedTimeSlotObject","date","dateFormat","startTime","changeTimeSlot","currentPosition","position","positionChanged","currentComponent","stepChangedHandler","sections","section","selectedSection","workshopItem","selectWorkshop","showErrorMessage","firstAvailibility","hour","loadFirstAvailibility","tinyWorkshop","local","firstAvailibilityObject","return","SimpleWorkshopElementList","activated","previousEnabled","getPreviousCalendars","disableNextWeekNavigation","getNextCalendars","week","day","workshopClosure","displayAll","heightOfDisplayAll","timeSlots","onTimeSlotSelected","maxTimeSlots","maxLengthOfTimeSlots","isEmptyTimeSlots","displayAllTimeSlots","timeSlotsIndex","i","availability","onSelectedTimeSlot","selectedTimeSlot","range","timeSlot","include","workshopCapacity","workshopLoad","toFixed","workshopAvailability","workshopClosureReasonValue","EventCreateDateChooserTimeSlots","EventCreateDateChooserDayWidget","workshopCalendars","daysName","startOfWeek","endOfWeek","loadAvailabilities","maxLength","today","Date","clone","loadAvailabilitiesReqBody","loadAvailabilitiesReq","hasWorkshopCalendarId","item","buildEventChooser","calendarStartDate","weekDays","isAfter","dayOfWeek","workshopCalendar","workshopCalendarByDate","workshopCharge","workshopEventsSize","areAllTimeSlotsEmpty","isArray","submitVehicleForm","vehicleSchema","isTablet","handleRegistrationNumberChange","vehicleCategory","category","initialCountry","country","selectMark","marks","selectModel","models","energy","energies","vinIsValid","vinValidation","displayCountryName","updatableCountry","selectedIso","toLowerCase","countries","countryItem","selectCountry","iso2","isValidRegistrationNumber","getRegistrationNumberMask","registrationNumberValidation","clearRegistrationNumber","RegistrationNumber","NEW_IMMAT_MASK","OLD_IMMAT_MASK","registrationNumberIsValid","cleanRegistrationNumber","registrationNumberCleaned","letter","formmaterNewRegistrationNumber","formmatedRegistrationNumber","formmaterOldRegistrationNumber","mask","isNewRegistrationNumberFormat","isOldRegistrationNumberFormat","isFni","fniFlag","re","RegExp","fni","replace","isSiv","sivFlag","siv","isCyclo","cycloFlag","cyclo","isValidFrance","isValidImmat","isValidMonacoAutoAndMoto","isValidItalyAutoAndMoto","slice","isValidBelgiumAutoAndMoto","isValidSpainAutoAndMoto","isValiLuxembourgAutoAndMoto","isValiNetherlandAutoAndMoto","isValiGermanyAutoAndMoto","isValiAustriaAutoAndMoto","isValiSwitzerlandAutoAndMoto","isValiAndorraAutoAndMoto","console","eager","updateSelectedIso","immat","isNewImmatFormat","isOldImmatFormat","pastedText","countryIso2","registrationNumberValidator","inject","RegistrationNumberInput","is","buildResult","loadModels","vinMatch","loadEnergies","bodyReq","marque","loadModelsReq","modele","loadEnergiesReq","selectPrestation","existPrestation","submitPrestations","selectedPrestations","loadEnabledPrestation","loadPrestationsReq","prestationName","pristationNames","uncheckedPrestation","presta","info","vehicleLoaner","updateChecked","cols","submitInfoSection","$attrs","Switch","check","submitClientSection","clientSchema","clientEditable","selectedPhone","phoneType","hasVehicleOwner","vehicleOwner","callingCode","isValidPhone","phoneNumberMask","phoneValidation","phoneTypeLabel","phoneShema","phoneMask","mobileMask","number","formatNational","countryCallingCode","filtredCountries","selectPhoneNumberMask","selectedCountry","isValidPhoneNumber","isPhoneNumber","isPossiblePhoneNumber","getType","valid","pastedPhoneNumber","PhoneInput","nationalPrefix","Stepper","EventCreateWorkshopChooser","CreateEventDateChooser","CreateEventVehicle","PrestationsChooser","CreateEventInfo","CreateEventClient","CreateEventConfirmation","loadClient","loadWorkshopCalendar","loadWorkshop","createEventObject","object","updateClient","createEvent","eventCreateReq","inServiceDateFormatted","eventCreateReqBody","loadWorkshopCalendarReq","loadWorkshopReq","updateClientReq","loadClientReq","show","showModal","selectedDay","selectedTime","highetOfDisplayAll","EventMoveDateChooserDayWidget","startOfweek","EventMoveDateChooser","EventMoveConfirmation","firstAvalibilityObject","eventReqBody","eventUpdateReq","showQuickView","dataListResponse","dataListRequest","order","fetchData","initPageStart","rootPageLength","pageLengthHandler","pageLengths","fetchDataHandler","closeQuickView","dataListItems","listConfig","sortedFields","field","title","showUserSettingsModal","displayUserCalendars","displayUserAbsences","isLoading","isUserSettingsModalOpen","updateUser","ListConfig","constructor","fields","visible","concat","UserRole","resendActivationEmail","successfulSendingMail","activeTab","exist","toolTipMessage","loadUserConfiguration","userConfiguration","regularWeeks","configuration","enableModification","enableUpdate","cancelUpdateUser","userSettingsUpdateSchema","emittedPhone","selectedPhoneCountry","emittedMobile","selectedMobileCountry","colorList","color","rgbToHex","selectRole","inferiorRoles","mandatoryWorkshopCode","superiorCode","superiors","cancelUpdate","canChooseSuperior","loadInferiorRoles","loadSimpleCompany","r","g","b","componentToHex","c","hex","companyReq","company","companyCountry","inferiorRolesReq","inferiorRole","loadSuperiors","selectedWorkshopCode","superiorsReq","validator","userForm","updateUserReqBody","cast","updateUserReq","UserInfoUpdate","privilegeList","privilege","immutable","handlePrivilege","embeddedPrivileges","embeddedPrivilege","handleEmbeddedPrivilege","loadAllPrivileges","loadPrivilegesReq","checkedPrivilege","addPrivilege","deletePrivilege","deleteEmbeddedPrivileges","excludePrivileges","parentPrivilege","privilegeName","addPrivilegeReq","deletePrivilegeReq","excludedPrivileges","forEach","excludedName","excludedPrivilege","p","capacity","regularWeek","dayInFr","openningTimeSlots","endTime","dayTimeSpace","effectiveCapacity","cases","userCompanies","displayDates","companyStatusResp","displayConfirmation","loadCompanies","companiesName","selectCompany","selectedCompany","addCompany","showDeletingConfirmation","deleteCompany","redirectToWebInterface","companyUrlWebInterface","address","companyEmail","companyPhone","companyCreationDate","companyActivationStartDate","companyActivationEndDate","window","open","companyAddress1","companyAddress2","companyZipCode","companyCity","filteredOptions","array","includes","CompanyStatus","CompanyListElement","EditableSelect","UserCompaniesDeleteConfirmation","companies","showCompanies","loadUserCompanies","companyRequest","companiesCode","companiesReq","addCompanyCodeReq","deleteComapnyCodeReq","NavItem","UserInfo","UserPrivileges","UserConfigurationInfo","UserCompanies","resendEmailRequest","workshopRegularWeek","regularWeekHeaderReq","UserSettings","selectedItem","direction","isOpen","UserListElement","UserSettingsModal","startRecords","pageCount","hidePrevNext","loadData","noLiSurround","containerClass","selectFirstPage","pageLinkClass","firstPageSelected","disabledClass","tabindex","firstButtonText","prevPage","prevLinkClass","prevText","pages","page","breakViewText","handlePageSelected","selected","activeClass","lastPageSelected","nextPage","nextLinkClass","nextText","selectLastPage","lastButtonText","pageClass","prevClass","breakView","breakViewClass","breakViewLinkClass","nextClass","innerValue","initialPage","forcePage","clickHandler","Function","pageRange","marginPages","firstLastButton","get","set","items","halfPageRange","floor","setPageItem","setBreakView","selectedRangeLow","selectedRangeHigh","beforeMount","beforeUpdate","paginate","updateStartAndEndRecords","newVal","oldVal","handleCreateUser","userCreateFormSchema","selectedMobile","createUserReqBody","createUserReq","closed","UserCreateForm","selectedRoles","toggleRole","selectedStatus","toggleStatus","toggleItem","list","roles","UserList","Pagination","UserCreate","UserFilter","dataListReq","fieldName","updatePageLength","transferredStartDate","userAbsenceDate","limitTime","workingCapacity","existUserAbsence","existeUserAbsence","absenceTypeTransferred","absenceType","showUserAbsence","relaodUserCalendar","defaultDisplay","showNav","decrementMonth","incrementMonth","days","monthWeeks","weekDay","calendarDay","addUserAbsence","createUserAbsence","userAbsenceSchema","partialAbsence","holidaysType","setStartDateShowingLabelTrue","startDateKeyPressed","startDateLabelDisplay","startDateChangeDate","startDateShowLabel","setEndDateShowingLabelTrue","endDateKeyPressed","endDateLabelDisplay","endDateChangeDate","endDateShowLabel","timeSpace","updateTimeSpace","startDateMessage","endDateMessage","selectedHolidayType","newDate","oldOld","dateInMoment","year","month","userCreatorCode","resul","dayOfDate","isCurrentMonth","isPast","canDeclareAbsence","userAbsence","absenceTypeValue","absenceTimeSpace","hasNotPrivilege","existsUser","display","UserAbsenceForm","UserCalendarCell","CalendarHeader","planning","currentMonth","loadUserCalendars","userAbsenceReq","scrollTo","planningReq","loadUserCalendarsReq","buildMonthWeeks","userCalendar","userCapacityByDate","isToDay","workingRate","workingHours","jsonObject","deleteUserAbsence","deletedUserAbsence","absenceCategory","userCreatorResp","userResp","canDeleteAbsence","resultat","yesterday","userAbsencesReq","userAbsenceCode","UserAbsenceListElement","UserAbsenceList","pageFrom","pageTo","loadWorkshopsHandler","workshopListConfig","WorkshopListConfig","workshopStatusResp","workshopAddress1","address2","workshopZipCode","workshopEmail","workshopPhone","workshopCreationDate","redirectToWorkshop","redirectToTeam","displayWorkshopClosure","handleActivatedButton","activatedButtonLabel","displayTeamItem","displayPlanningItem","displayConfigItem","isWorkshopClosureModalOpen","closeModal","cancelWorkshopClosure","displayDeleteModal","showDeleteModal","workshopClosureReq","workshopClosureDeleteReq","WorkshopClosureCancelConfirmation","WorkshopClosureListElement","WorkshopClosureList","loadWorkshopClosures","WorkshopClosures","WorkshopStatus","WorkshopClosureModal","workshopAddress2","reDirectToPlanning","path","WorkshopListElement","createWorkshop","createUserschema","workshopCity","countryUpdated","workshopCountry","categoryUpdated","categories","allMarks","tags","activationStartDate","selectTag","filterTags","selectedTags","tag","removeTag","allTags","selectedTag","selectedTagIndex","sort","tagIndex","MultiTagSelect","emittedWorkshopPhone","loadMarks","loadAllMarksReq","workshopActivationStartDate","trimedValues","createWorkshopReq","WorkshopCreateForm","WorkshopList","WorkshopCreate","workshopCreatedHandler","dataTableReq","isLoaded","regularWeekTitle","existTimeSlot","existConfiguration","existRegularWeek","workshopRegularWeekUsers","existingDefaultCapacity","loadWorkshopRegularWeekUsers","enbledPrestation","workshopSelected","changeWorkshopName","loadingTransferred","validateWorkshop","regularWeekCreatedHandler","workshopConfig","workshopConfiguration","configurationCreatedHandler","workshopStatus","updateRegularWeeks","enablePrestation","handleUpdate","workshopSchema","initPhone","workshopUpdated","createConf","createConfiguration","createConfigSchema","nbCarenceDays","onlineMaxLoad","availabilityIntervals","availabilityInterval","availabilityIntervalsSize","availabilityIntervalSize","dateRange","carenceDayErrorMessage","onlineMaxLoadErrorMessage","availabilityIntervalErrorMessage","availabilityIntervalSizeErrorMessage","eventDurationErrorMessage","dateRangeErrorMessage","createConfigurationReq","updateConfiguration","updateConfigSchema","loadConfig","confReq","loadConfigurationReq","updateConfigurationReq","WorkshopConfigurationCreate","WorkshopConfigurationUpdate","regularWeeksItems","existedTimeSlot","addDayToApplyCopy","isUnchecked","dayInFrenchTranslator","insertRegularWeek","insert","copyAndApply","successfulUpdated","isTimeFormat","timeUpdated","textSelected","TimeInput","stratTime","daysToApplyCopy","existingTimeSlot","isValidFormat","removeItemOnce","newItem","regular","isValidTimeSlot","currentTimeSlot","isValidRegularWeek","duplicatedTimeSlot","isBetween","updateRegularWeekReq","indexOfDay","openningTimeSlotsToCopy","timeSolotIndex","defaultCapacity","updateCapacity","selectedDefaultCapacity","updateDefaultCapacity","mode","loadWorkshopPrestationCategory","disableWorkshopPrestationCategory","sortingTable","enableWorkshopPrestationCategory","prestationReq","prestationCode","workshopPrestationCode","a","userDetailsVisible","toggleUserDetails","userEffectiveCapacity","WorkshopUpdate","WorkshopRegularWeek","WorkshopConfiguration","WorkshopRegularWeekAvailability","WorkshopPrestationCategory","WorkshopRegularWeekUsers","regularWeekCreated","configurationCreated","screenWidth","updateScreenWidth","onScreenResize","addEventListener","innerWidth","isEnabled","loadWorkshopUsersReq","plannings","planningTypeValue","planningName","planningRedirect","loadPlanning","loadPlanningReq","showWorkshopClosureForm","closeWorkshop","decrementWeek","incrementWeek","decrementDay","incrementDay","selectedDateHandler","selectedMonthlyDisplay","selectedWeeklyDisplay","selectedDailyDisplay","calendars","addWorkshopClosure","workshopClosureSchema","workshopClosureReasons","workshopClosureReason","closureStartDate","closureEndDate","oldDate","getWorkshopClosureReason","workshopClosureReasonReq","closeWorkshopReq","getRegularWeek","getCalendarDayBackgroundCssClass","hasActions","displayEvents","displayCreateEvent","addEvent","displayAvailability","load","eventsSize","notWorkingDayName","progressBarClass","WorkshopCalendarProgressBar","calendar","WorkshopCalendarInfo","toDay","linkActiveClass","WorkshopCalendarCell","daysNumber","formatDay","WorkshopCalendarWeeklyDay","split","join","calculateChargeRate","redirectToEvent","WorkshopClosureForm","WorkshopCalendarMonth","WorkshopCalendarWeek","WorkshopCalendarDay","workshopCapacityByDate","workshopTeamInfoMessage","emptyAttachedUserMessage","workshopPlanningUsers","refreshUsersWorkshopTeam","displayActions","isWorkshopEnabled","selectedUser","selectedUserItem","configurationTransferred","configUpdated","updateConfig","capacityEffective","updateUserConfiguration","editable","selectedOnlineCharge","activateUser","userConfigurationCode","updateupdateConfigReq","UserConfigurationUpdateForm","addUserToPlanning","configureUser","showDetachModal","detacheUserFromPlanning","UserConfigurationDetachConfirmation","updateUserPlanningConfig","eventToEmit","updateUserPlanningConfigReq","updateUserPlanning","UserConfigurationUpdate","UserConfigurationListElement","UserConfigurationList","loadUsersWorkshopTeam","checkEmptyAttachedUsers","enabledConfigurations","allUsersBelowThreshold","every","onFilterChange","disablingSubmit","defaultDisplayMode","reporting","comparativeIndex","eventsComparativeIndex","previousPeriodStartDate","previousPeriodEndDate","cssClassBgColor","eventsWebInterface","eventsWebInterfaceComparativeIndex","iconName","eventsManager","eventsManagerComparativeIndex","eventsDone","eventsDoneComparativeIndex","cssClassBorderLeftColor","eventsRevocated","eventsRevocatedComparativeIndex","eventsPreviousPeriod","eventsWebInterfacePreviousPeriod","eventsManagerPreviousPeriod","eventsDonePreviousPeriod","eventsRevocatedPreviousPeriod","dataSet","initialSeries","series","reportingMaxEventsDone","cssClassTextColor","selectedIcon","tooltipMessage","icons","cssClassName","doFilter","filterShema","currentDaySelected","displayCurrentDay","currentWeekSelected","displayCurrentWeek","currentMonthSelected","displayCurrentMonth","invalideDateMessage","deleteEventStartDate","deleteEventEndDate","activeItem","changeData","width","chartOptions","plotOptions","bar","columnWidth","borderRadius","chart","animations","enabled","easing","speed","animateGradually","delay","dynamicAnimation","toolbar","dataLabels","fill","colors","formatter","val","offsetY","fontSize","xaxis","axisBorder","axisTicks","crosshairs","gradient","colorFrom","colorTo","stops","opacityFrom","opacityTo","yaxis","forceNiceScale","labels","grid","borderColor","strokeDashArray","lines","row","opacity","column","floating","align","tooltip","x","ReportingWidget","ReportingFilter","ReportingBusyScheduleChart","busyScheduleReporting","fetchStatistics","reportingRequest","dataReq","fetchReportingBusySchedule","dataPreparation","diff","daysOfWeek","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY","dayItem","getDayEventsDone","eventsDoneArray","timeSlotIndex","loadCompaniesByKeyWord","loadCompaniesHandler","CompanyListConfig","searchByKeyWord","searchKeyWord","showCompanySettingsModal","isCompanySettingsModalOpen","updateCompany","currentCompany","existToolTip","loadCompany","displayDisablingForm","initialCompany","companyTransferred","cancelUpdateCompany","companySchema","urlRegex","transform","v","excludeEmptyString","createCompanyReq","CompanyInfoUpdate","disablingCompany","displayCompanyDisablingConfirmation","companyDisablingSchema","showDisablingConfirmation","activationEndDate","disableCompany","disableRequest","disableCompanyReq","CompanyDisablingConfirmation","CompanyDisablingForm","companyDesactivationDate","CompanyInfo","CompanyDisabling","CompanyHistory","showDisablingForm","CompanySettings","CompanySettingsModal","createCompany","companyCreated","CompanyCreateForm","CompanyList","CompanyCreate","keyWordSearch","search","companyCreatedHandler","keyWord","dataTableRequest","dataTableResponse","tableConfig","sortedField","clicked","clientRedirect","zipCode","TableConfig","ClientTable","pagination","address1","city","ClientBox","pushEvents","setBackgroundColor","firstAvailabilityReq","routes","redirect","component","Events","Login","Activation","ForgottenPassword","Profile","EventCreate","Event","EventMove","Users","UserCalendars","UserAbsences","Workshops","Workshop","WorkshopCalendars","WorkshopPlannings","WorkshopTeam","Companies","Clients","Client","Reporting","NotFound","router","history","linkExactActiveClass","shouldRedirectToCompanies","toName","displayCompaniesPrivilege","displayMyCompaniesPrivilege","beforeEach","from","next","publicPages","authRequired","loggedInJson","redirectedFrom","go","Header","MobileNotSupported","Footer","shown","isDesktop","provide","installEvent","screenDevice","unmounted","removeEventListener","matchMedia","prompt","userChoice","choice","outcome","render","modules","brand","copyright","loadingMetadata","getters","originalRequest","bodyData","refreshTokenRequest","store","ready","registered","cached","updatefound","offline","vueTippyConfig","directive","componentSingleton","defaultProps","allowHTML","theme","animation","arrow","interactive","touch","zIndex","app","App","config","unwrapInjectedRef","globalProperties","use","mount","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","n","getter","__esModule","d","definition","defineProperty","enumerable","globalThis","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}