{"version":3,"sources":["./$_lazy_route_resource lazy namespace object","./src/app/app.component.html","./src/app/calendar/admin-calendar.component.html","./src/app/calendar/admin-inquiry-calendar/admin-inquiry-calendar.component.html","./src/app/calendar/booking-calendar/booking-calendar.component.html","./src/app/calendar/booking-calendar/shortbooking-list/shortBooking-list.component.html","./src/app/calendar/client-calendar.component.html","./src/app/calendar/employee-calendar.component.html","./src/app/calendar/employee-inquiry-calender/employee-inquiry-calender.component.html","./src/app/calendar/long-booking/long-booking.component.html","./src/app/calendar/long-booking/longbooking-list/longbooking-list.component.html","./src/app/calendar/long-booking/template-list/template-list.component.html","./src/app/calendar/superclient-calendar/superclient-calendar.component.html","./src/app/config/booking-unit/booking-unit.component.html","./src/app/config/config.component.html","./src/app/config/experience-area/experience-area.component.html","./src/app/config/file-upload/file-upload.component.html","./src/app/config/legitimations/legitimations.component.html","./src/app/config/pharmacy-system/pharmacy-system.component.html","./src/app/config/time-periods/time-periods.component.html","./src/app/report/admin-report.component.html","./src/app/report/superclient-report/superclient-report.component.html","./src/app/report/user-report.component.html","./src/app/security/forgot-password/forgot-password.component.html","./src/app/security/login.component.html","./src/app/security/reset-password/reset-password.component.html","./src/app/shared/components/footer/footer.component.html","./src/app/shared/nav.component.html","./src/app/shared/superclient-client-list/superclient-client-list.component.html","./src/app/shared/user-client-list.component.html","./src/app/user/myprofile.component.html","./src/app/user/superclient-user-edit/superclient-user-edit.component.html","./src/app/user/superclient-user-list/superclient-user-list.component.html","./src/app/user/superclient-user-view/superclient-user-view.component.html","./src/app/user/user-edit.component.html","./src/app/user/user-list.component.html","./src/app/user/user-view.component.html","./src/app/app-routing.module.ts","./src/app/app.component.css","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/calendar/admin-calendar.component.css","./src/app/calendar/admin-calendar.component.ts","./src/app/calendar/admin-inquiry-calendar/admin-inquiry-calendar.component.css","./src/app/calendar/admin-inquiry-calendar/admin-inquiry-calendar.component.ts","./src/app/calendar/alliocation-model.ts","./src/app/calendar/booking-calendar/booking-calendar.component.css","./src/app/calendar/booking-calendar/booking-calendar.component.ts","./src/app/calendar/booking-calendar/shortbooking-list/shortBooking-list.component.css","./src/app/calendar/booking-calendar/shortbooking-list/shortbooking-list.component.ts","./src/app/calendar/calendar.module.ts","./src/app/calendar/calendar.service.ts","./src/app/calendar/client-calendar.component.css","./src/app/calendar/client-calendar.component.ts","./src/app/calendar/employee-calendar.component.css","./src/app/calendar/employee-calendar.component.ts","./src/app/calendar/employee-inquiry-calender/employee-inquiry-calender.component.css","./src/app/calendar/employee-inquiry-calender/employee-inquiry-calender.component.ts","./src/app/calendar/long-booking/long-booking.component.css","./src/app/calendar/long-booking/long-booking.component.ts","./src/app/calendar/long-booking/longbooking-list/longbooking-list.component.css","./src/app/calendar/long-booking/longbooking-list/longbooking-list.component.ts","./src/app/calendar/long-booking/template-list/template-list.component.css","./src/app/calendar/long-booking/template-list/template-list.component.ts","./src/app/calendar/superclient-calendar/superclient-calendar.component.css","./src/app/calendar/superclient-calendar/superclient-calendar.component.ts","./src/app/config/booking-unit/booking-unit.component.css","./src/app/config/booking-unit/booking-unit.component.ts","./src/app/config/config.component.css","./src/app/config/config.component.ts","./src/app/config/config.module.ts","./src/app/config/experience-area/experience-area.component.css","./src/app/config/experience-area/experience-area.component.ts","./src/app/config/file-upload/file-upload.component.css","./src/app/config/file-upload/file-upload.component.ts","./src/app/config/file-upload/file-upload.service.ts","./src/app/config/legitimations/legitimations.component.css","./src/app/config/legitimations/legitimations.component.ts","./src/app/config/pharmacy-system/pharmacy-system.component.css","./src/app/config/pharmacy-system/pharmacy-system.component.ts","./src/app/config/time-periods/time-periods.component.css","./src/app/config/time-periods/time-periods.component.ts","./src/app/report/admin-report.component.css","./src/app/report/admin-report.component.ts","./src/app/report/client-report.component.ts","./src/app/report/employee-report.component.ts","./src/app/report/report.module.ts","./src/app/report/superclient-report/superclient-report.component.css","./src/app/report/superclient-report/superclient-report.component.ts","./src/app/report/user-report.component.css","./src/app/security/app-user-auth.ts","./src/app/security/app-user.ts","./src/app/security/auth.guard.ts","./src/app/security/forgot-password/forgot-password.component.css","./src/app/security/forgot-password/forgot-password.component.ts","./src/app/security/has-claim.directive.ts","./src/app/security/http-interceptor-module.ts","./src/app/security/login.component.css","./src/app/security/login.component.ts","./src/app/security/reset-password/reset-password.component.css","./src/app/security/reset-password/reset-password.component.ts","./src/app/security/security.service.ts","./src/app/shared/components/footer/footer.component.css","./src/app/shared/components/footer/footer.component.ts","./src/app/shared/constants/enums/action-names.ts","./src/app/shared/constants/swedishHolidays.ts","./src/app/shared/generic-validator.ts","./src/app/shared/models/long-booking/long-booking-employee-model.ts","./src/app/shared/models/long-booking/long-booking-shift-day.ts","./src/app/shared/models/long-booking/long-booking-shift.model.ts","./src/app/shared/models/long-booking/long-booking-template.model.ts","./src/app/shared/models/long-booking/long-booking.model.ts","./src/app/shared/nav.component.css","./src/app/shared/nav.component.ts","./src/app/shared/pipes/safe-html.pipe.ts","./src/app/shared/services/common/host.service.ts","./src/app/shared/services/common/signalr.service.ts","./src/app/shared/services/config.service.ts","./src/app/shared/services/domain/booking/long-booking.service.ts","./src/app/shared/shared.module.ts","./src/app/shared/superclient-client-list/superclient-client-list.component.css","./src/app/shared/superclient-client-list/superclient-client-list.component.ts","./src/app/shared/user-client-list.component.css","./src/app/shared/user-client-list.component.ts","./src/app/user/myprofile.component.css","./src/app/user/myprofile.component.ts","./src/app/user/superclient-user-edit/superclient-user-edit.component.css","./src/app/user/superclient-user-edit/superclient-user-edit.component.ts","./src/app/user/superclient-user-list/superclient-user-list.component.css","./src/app/user/superclient-user-list/superclient-user-list.component.ts","./src/app/user/superclient-user-view/superclient-user-view.component.css","./src/app/user/superclient-user-view/superclient-user-view.component.ts","./src/app/user/user-edit.component.css","./src/app/user/user-edit.component.ts","./src/app/user/user-list.component.css","./src/app/user/user-list.component.ts","./src/app/user/user-view.component.css","./src/app/user/user-view.component.ts","./src/app/user/user.module.ts","./src/app/user/user.service.ts","./src/app/window.providers.ts","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":"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AE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;SACnD;QAED,2BAAsB,GAAU;YAC5B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;YAC7C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;YAC9C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;YAC9C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;YAC9C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;SACnD;QAED,yBAAoB,GAAU;YAC1B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;YAC7C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;YAC9C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;YAC9C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;YAC9C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;YAC/C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAChD,EAAE,KAAK,EAAE,O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,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAA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GAAU;YACxB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;Y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,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAA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YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,OAAO,EAAE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AE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;YAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;YAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;YAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OA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AI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;YA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","file":"main-es2015.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","module.exports = \"
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
768)\\\" style=\\\"margin-top: 6px;\\\" >\\r\\n

\\r\\n {{'booking.bookings' |translate}}\\r\\n {{'booking.inquiries' |translate}}\\r\\n \\r\\n : {{selectedUserFullName}}\\r\\n {{selectedUserAllocationTimes}}\\r\\n \\r\\n

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
768) }\\\" role=\\\"group\\\" *ngIf=\\\"userType === 'Client' && userId != 'all' && !isInquiryCalendarSelected\\\">\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ (selectedUserFullName.length>25)? (selectedUserFullName | slice:0:25)+'..':(selectedUserFullName)}}\\r\\n {{selectedUserAllocationTimes}}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Available\\r\\n
\\r\\n
Not\\r\\n Available\\r\\n
\\r\\n
Allocated\\r\\n
\\r\\n
Time\\r\\n Reported\\r\\n
\\r\\n
Time Report\\r\\n Missing\\r\\n
\\r\\n
Inquiry\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{resource.displayLetter}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{resource.displayName}}\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
User Information
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'booking.inquiryInformation' |translate}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{allocation.empName}} - \\r\\n Pharmacist\\r\\n Cashier\\r\\n
\\r\\n \\r\\n {{allocation.empJobCategory}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{allocation.clientName}} - ({{allocation.clientContactName}})
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Allocation\\r\\n
\\r\\n
\\r\\n Date: {{allocation.start.toLocaleDateString('sv-SE', { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' })}}
\\r\\n Time: {{allocation.title}}
\\r\\n Lunch: {{allocation.lunch}}min\\r\\n
\\r\\n Total: {{allocation.bookingTotal}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Address{{allocation.clientAddress}}
Phone{{allocation.clientPhone}}
Email{{allocation.clientEmail}}
Message{{allocation.message}}
Experience Areas{{allocation.expAreasDisplay}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n View History\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
TimeDescriptionUser
{{item?.date}}{{item?.description}}{{item?.userName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Time Logs\\r\\n (Total{{allocation.timeLogTotal}})
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
{{allocation.isInquiry? 'Assign':'Swap'}} Employee
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
0)||(allocation.isInquiry)\\\">\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
0)||(allocation.isInquiry)\\\">\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
There are no employees available\\r\\n on the selected day
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Delete Booking
\\r\\n
Delete Inquiry
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Are you sure you want to delete this booking?\\r\\n
\\r\\n
\\r\\n Are you sure you want to delete this inquiry?\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
#: clientName #: #: empName #
\\r\\n
\\r\\n
\\r\\n
#: clientName # : #: title #
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n # var color = 'white'#\\r\\n # var styleStr = timeLoggedClass=='slot-has-check'? 'ml-0':'ml-1' #\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n #: resourceTypeIconLetter # \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
#: title #
\\r\\n
 
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\"","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n # var color = colorClass=='slot-blue'? 'white':(colorClass=='slot-yellow'? 'red':'white') #\\r\\n # var styleStr = timeLoggedClass=='slot-has-check'? 'ml-0':'ml-1' #\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n #: resourceTypeIconLetter #\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
#: title #
\\r\\n
 
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'booking.inquiryInformation' |translate}}
\\r\\n
{{'booking.bookingInformation' |translate}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{allocation.empName}} -\\r\\n {{getResourceNameById(allocation.resourceTypeId)}}\\r\\n \\r\\n
\\r\\n \\r\\n {{allocation.empJobCategory}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{allocation.clientName}} - ({{allocation.clientContactName}})\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{allocation.clientName}} -\\r\\n ({{allocation.clientContactName}})
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{'booking.allocation' |translate}}\\r\\n
\\r\\n
\\r\\n Date:\\r\\n {{allocation.start.toLocaleDateString('sv-SE', { weekday: 'short',\\r\\n year: 'numeric', month: 'short', day: 'numeric' })}}
\\r\\n Time: {{allocation.title}}
\\r\\n Lunch:\\r\\n {{allocation.lunch}}min\\r\\n
\\r\\n Total:\\r\\n {{allocation.bookingTotal}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
{{'users.address' |translate}}\\r\\n {{allocation.clientAddress}}
{{'users.phone' |translate}}{{allocation.clientPhone}}
{{'users.email' |translate}}\\r\\n {{allocation.clientEmail}}
{{'booking.experienceAreas' |translate}}\\r\\n {{allocation.expAreasDisplay}}
Message\\r\\n \\r\\n {{allocation.message}}
Email Status\\r\\n {{allocation.emailStatus}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Time\\r\\n \\r\\n DescriptionUser\\r\\n
{{item?.date}}{{item?.description}}{{item?.userName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Time Logs \\r\\n (Total: {{allocation.timeLogTotal}}h\\r\\n )\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
Time Logs
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
StartEndLunch (min)TotalDistanceTravel Time
{{allocation.timeLogStartTime}}{{allocation.timeLogEndTime}} {{allocation.timeLogLunch}}{{allocation.timeLogTotal}}{{allocation.distance}}{{allocation.travelTime}}
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{'booking.assignEmployee' |translate}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
0)||(allocation.isInquiry)\\\">\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
0)||(allocation.isInquiry)\\\">\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
There are no employees available on the selected day\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'booking.deleteBooking' |translate}}
\\r\\n
{{'booking.deleteinquiry' |translate}}
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n {{'booking.deleteBookingMsg' |translate}}\\r\\n\\r\\n
\\r\\n
\\r\\n {{'booking.deleteinquiryMsg' |translate}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{'booking.makeBooking' |translate}}\\r\\n
\\r\\n
\\r\\n {{'booking.makeInquiry' |translate}}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{'booking.mostBookedTime'\\r\\n |translate}} \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n 0)\\\"\\r\\n i18n=\\\"@@admin_cal_booking_info_new_common_times_notfound\\\"\\r\\n class=\\\"mt-1 ml-1\\\"> {{'shared.noRecordsFound' |translate}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
0) && (role=='Admin'|| role =='SuperClient')\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{this.bookingModalHeader}}
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Update Availability
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Update\\r\\n Availability Time : {{selectedPartialAvlDate}}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Employees\\r\\n Unavailable
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n No employees are available\\r\\n for {{allocationTryTime}}, \\r\\n the only availabilities are\\r\\n
{{item.fromTime + '-'+\\r\\n item.toTime}}.
\\r\\n What do you want to do?\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{'booking.expAreasValidationFailedMsgHeader' | translate}}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{'booking.expAreasValidationFailedMsg' | translate}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n
#: clientName #: #: empName #
\\r\\n
\\r\\n
\\r\\n
#: clientName # : #: empName # : #: title #
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'shared.warnning' |translate}}
\\r\\n \\r\\n
\\r\\n
\\r\\n {{'booking.deleteLongBookingModal' |translate}}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Update Sick & Vacation Availability ({{this.selectedUserFullName}})
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Add Comment ({{this.selectedUserFullName}})
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Add Self Booking
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
ClientClient MobileClient EmailEmployeeEmployee EmailDateTimeMessage
{{bookings.client.clientName}}{{bookings.client.phoneNumber}}{{bookings.client.email}}{{bookings.employee.userName}}{{bookings.employee.email}}{{bookings.sDate | date}}{{bookings.title}}{{bookings.message}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{this.bookingModalHeader}}
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n
768)\\\" style=\\\"margin-top: 10px;\\\" >\\r\\n

\\r\\n {{'booking.bookings' |translate}}\\r\\n \\r\\n : {{selectedUserFullName}}\\r\\n \\r\\n

\\r\\n
\\r\\n \\r\\n
768)\\\" style=\\\"margin-top: 0px;\\\" >\\r\\n \\r\\n \\r\\n \\r\\n
768) }\\\" role=\\\"group\\\">\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ (selectedUserFullName.length>25)? (selectedUserFullName | slice:0:25)+'..':(selectedUserFullName)}}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n # var color = (colorClass=='slot-yellow'? 'red':'white') #\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n #: resourceTypeIconLetter # \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
#: title #
\\r\\n
 
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Available\\r\\n Not\\r\\n Available\\r\\n Booked\\r\\n Inquiry\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{resource.displayName | slice:0:1}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{resource.displayName}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
#: empName #
\\r\\n
\\r\\n\\r\\n
\\r\\n
#: empName # : #: title #
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{'booking.makeBooking' |translate}}
\\r\\n
Make an Inquiry\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Most booked times \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n 0)\\\" i18n=\\\"@@admin_cal_booking_info_new_common_times_notfound\\\" class=\\\"mt-1 ml-1\\\">No records found.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'booking.bookingInformation' |translate}}
\\r\\n
{{'booking.inquiryInformation' |translate}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{allocation.empName}} - \\r\\n {{getResourceNameById(allocation.resourceTypeId)}} \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Date & Time\\r\\n
\\r\\n
\\r\\n Date: {{allocation.start.toLocaleDateString('sv-SE', { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' })}}
\\r\\n Time: {{allocation.title}}
\\r\\n Lunch: {{allocation.lunch}}min\\r\\n
\\r\\n Total: {{allocation.bookingTotal}}\\r\\n \\r\\n
\\r\\n
\\r\\n
Resource{{getResourceNameById(allocation.resourceTypeId)}}
Phone{{allocation.empPhone}}
Email{{allocation.empEmail}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n View History\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
TimeDescriptionUser
{{item?.date}}{{item?.description}}{{item?.userName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Delete Inquiry
\\r\\n \\r\\n
\\r\\n
\\r\\n Are you sure you want to delete this inquiry?\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Favourite Employees
\\r\\n \\r\\n
\\r\\n
\\r\\n Are you sure you want to {{isfavEmpTypeRemove? 'remove':'add'}} this employee {{isfavEmpTypeRemove? 'from':'to'}} favourite employees?\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
User information
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Employees Unavailable
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n No employees are available for {{allocationTryTime}}, the only availabilities are\\r\\n
{{item.fromTime + '-'+ item.toTime}}.
\\r\\n What do you want to do? \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{user.fullName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
768)\\\" style=\\\"margin-top: 10px;\\\" >\\r\\n

\\r\\n \\r\\n {{'booking.bookings' |translate}} ({{selectedUserInfo.actualHoursBooked}} timmar)\\r\\n \\r\\n {{'booking.inquiries' |translate}}\\r\\n \\r\\n : {{selectedUserFullName}}\\r\\n \\r\\n

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n  \\r\\n {{ (selectedUserFullName.length>25)? (selectedUserFullName | slice:0:25)+'..':(selectedUserFullName)}}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Available\\r\\n Not\\r\\n Available\\r\\n Allocated\\r\\n Time\\r\\n Reported\\r\\n Time\\r\\n Report Missing\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
#: clientName #
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'booking.inquiryInformation' |translate}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{allocation.clientName}} - ({{allocation.clientContactName}})\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Allocation\\r\\n \\r\\n
\\r\\n
\\r\\n Date: {{allocation.start.toLocaleDateString('sv-SE', { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' })}}
\\r\\n Time: {{allocation.title}}
\\r\\n Lunch: {{allocation.lunch}}min\\r\\n
\\r\\n Total: {{allocation.bookingTotal}}\\r\\n \\r\\n
\\r\\n
\\r\\n
Address{{allocation.clientAddress}}
Phone{{allocation.clientPhone}}
Email{{allocation.clientEmail}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n View History\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
TimeDescriptionUser
{{item?.date}}{{item?.description}}{{item?.userName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
#: title #
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
#: clientName # : #: title #
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Start Date is required\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n End Date is required\\r\\n \\r\\n \\r\\n {{allocationFormLongBooking['controls'].longBookingEndDate?.errors}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n text\\r\\n \\r\\n \\r\\n ({{this.uniqueShiftTimeDetails[i]?.totalTimeInHours}}) \\r\\n \\r\\n
\\r\\n {{t?.errors}}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n isMobile - {{isMobile}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Ej giltig sluttid\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n {{'booking.validationMsg1'\\r\\n |translate}}\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Please select\\r\\n Longbooking Start date and End date to before fill the following\\r\\n sections.\\r\\n \\r\\n
\\r\\n
Avvikande dagar\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

\\r\\n \\r\\n \\r\\n

\\r\\n \\r\\n \\r\\n Date is required\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Start time is required\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n End time is required\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Date is required\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Please fill the required fields marked with red!\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{excludeitem.date |\\r\\n date:\\r\\n 'dd/MM'}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{'booking.validationMsg2' |translate}}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

Skift {{shiftTime.id}} {{i+1}}:\\r\\n \\r\\n {{shiftTime.totalTimeInHours}}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Hela perioden\\r\\n {{totalShiftTimeCalculatedText}}\\r\\n\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n {{'booking.validationMsg3' |translate}}
\\r\\n
\\r\\n
\\r\\n \\r\\n At least one employee should be selected\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Employee availability
\\r\\n
Processing
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Anställd {{item.employee.label}} är inte\\r\\n tillgänglig de följande\\r\\n dagarna \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n

    {{date|date : 'fullDate'}}

    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Please wait ... Long booking is being created

\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{'booking.EditLongBookingTemplates' |translate}}
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{'booking.longbookingAddShiftValidationErrorHeader' | translate}}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{'booking.longbookingAddShiftValidationError' | translate}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'booking.deleteBooking' |translate}}
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n {{'booking.deleteBookingMsg' |translate}}\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'booking.deleteTemplate' |translate}}
\\r\\n \\r\\n
\\r\\n
\\r\\n {{'booking.deleteTemplateMsg' |translate}}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
ClientClient MobileClient EmailStart DateEnd Date
{{bookings.client.clientName}}{{bookings.client.phoneNumber}}{{bookings.client.email}}{{bookings.startDate | date}}{{bookings.endDate | date}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{this.bookingModalHeader}}
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{'booking.Name' |translate}}{{'booking.Numberofshifts' |translate}}
{{template.name}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n {{template?.shifts?.length }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

No templates found !

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
768)\\\" style=\\\"margin-top: 10px;\\\">\\r\\n

\\r\\n Allocations\\r\\n Inquiries\\r\\n \\r\\n : {{selectedUserFullName}}\\r\\n \\r\\n

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
768) }\\\" role=\\\"group\\\" *ngIf=\\\"userType === 'Client' && userId != 'all' && !isInquiryCalendarSelected\\\">\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ (selectedUserFullName.length>25)? (selectedUserFullName | slice:0:25)+'..':(selectedUserFullName)}}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n # var imgName = resourceTypeClass=='F'? (colorClass=='slot-blue'? 'F_white.svg':(colorClass=='slot-yellow'? 'F_black.svg':'')):(colorClass=='slot-blue'? 'K_white.svg':(colorClass=='slot-yellow'? 'K_black.svg':'')); #\\r\\n # var styleStr = timeLoggedClass=='slot-has-check'? 'ml-0':'ml-1' #\\r\\n \\\"\\\"\\r\\n \\r\\n
\\r\\n
#: title #
\\r\\n
 
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Available\\r\\n Not\\r\\n Available\\r\\n Allocated\\r\\n Time\\r\\n Reported\\r\\n Time Report\\r\\n Missing\\r\\n Inquiry\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{resource.displayLetter}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{resource.displayName}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
User information
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \"\\r\\n
Booking Unit
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n # {{i+1}}\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Please fill the required fields marked with red!\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n

System Configurations

\\r\\n
\\r\\n
Resource Types
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n # {{i+1}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
Matching Algorithemn Criterias
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Please fill the required fields marked with red!\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
Add a Logo
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Add a Favicon
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
Site Configurations
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n
Experience Areas
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n # {{i+1}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n Please fill the required fields marked with red!\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Warning ! \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Are you sure want to delete the experience area ? This will cause removing all references related to this.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n # \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
{{ errorMessage }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
Legitimations
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n # {{i+1}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Please fill the required fields marked with red!\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Warning ! \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Are you sure want to delete the legitimation ? This will cause removing all references related to this.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \"
IT System
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n # {{i+1}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Please fill the required fields marked with red!\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Confirm Removal \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Are you sure want to delete the IT-System ? This will cause removing all references related to this.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \"\\r\\n
Over Time Rules
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n # {{k+1}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n Please fill the required fields marked with red!\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Reports

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Salary has not been payed out\\r\\n \\r\\n \\r\\n \\r\\n Invoice has not been sent\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
0\\\">\\r\\n

{{getResourceTypeName(reportInfo.key)}}

\\r\\n
\\r\\n\\r\\n\\r\\n
0\\\">\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\"> \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n 0\\\"> \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\"> \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n 0\\\"> \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
DateClient{{ bookingUnitName }}EmployeeStart(Hrs)End(Hrs)Lunch (min)TotalOT Hours\\r\\n \\r\\n Övertid\\r\\n \\r\\n \\r\\n \\r\\n {{ column.percentage === 0 ? \\\"Normal Hours\\\" : \\\"+\\\" + column.percentageType + \\\"%\\\" }}\\r\\n \\r\\n
\\r\\n {{tl.date}} \\r\\n {{tl.date}} \\r\\n \\r\\n {{tl.name}} \\r\\n {{tl.name}} \\r\\n \\r\\n {{tl.startLogged}}\\r\\n ({{tl.startBooked}})\\r\\n \\r\\n {{tl.endLogged}}\\r\\n ({{tl.endBooked}})\\r\\n \\r\\n {{tl.lunchLogged}} \\r\\n ({{tl.lunchBooked}})\\r\\n \\r\\n {{tl.totalLogged}} \\r\\n {{tl.totalLogged}} \\r\\n \\r\\n \\r\\n 0\\\"> {{tl.difference}} \\r\\n N/A \\r\\n\\r\\n \\r\\n \\r\\n {{ checkItemExists(tl.hourlyWorkedPecentages, row.percentage) }}
Summary of hours{{reportInfo.value.totalLogged}}{{ hours.totalHours }}
Total Adjusted{{hours.totalHours}}
Total{{reportInfo.value.total}}{{totalAmount}} SEK\\r\\n ( {{empHourlyRate}} - Hourly Rate )\\r\\n
\\r\\n \\r\\n Total Difference Booked and Reported\\r\\n \\r\\n \\r\\n \\r\\n {{reportInfo.value.totalDifference}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n There is no time log records found for the selected search criteria.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Update Missing Time Logs
\\r\\n \\r\\n
\\r\\n
\\r\\n Are you sure you want to update all missing time logs?\\r\\n
\\r\\n
\\r\\n This will replace all timelogs in current year with default times of the booking. \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Reports

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
0\\\">\\r\\n

{{getResourceTypeName(reportInfo.key)}}

\\r\\n
\\r\\n\\r\\n\\r\\n
0\\\">\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\"> \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n 0\\\"> \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n 0\\\"> \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n 0\\\"> \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Date{{bookingUnitName}}EmployeeStart(Hrs)End(Hrs)Lunch (min)Total {{ column.percentage === 0 ? \\\"Normal Hours\\\" : \\\"+\\\" + column.percentageType + \\\"%\\\" }}
{{tl.date}}{{tl.name}}\\r\\n {{tl.startLogged}}\\r\\n ({{tl.startBooked}})\\r\\n \\r\\n {{tl.endLogged}}\\r\\n ({{tl.endBooked}})\\r\\n \\r\\n {{tl.lunchLogged}}\\r\\n ({{tl.lunchBooked}})\\r\\n {{tl.totalLogged}}\\r\\n {{ checkItemExists(tl.hourlyWorkedPecentages, row.percentage) }}
Summary of hours{{reportInfo.value.totalLogged}}{{ hours.totalHours }}
Total Adjusted{{hours.totalHours}}
Total{{reportInfo.value.total}}
\\r\\n \\r\\n Total Difference Booked and Reported\\r\\n \\r\\n \\r\\n \\r\\n {{reportInfo.value.totalDifference}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n There is no time log records found for the selected search criteria.\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Reports

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
0\\\">\\r\\n

{{getResourceTypeName(reportInfo.key)}}

\\r\\n
\\r\\n\\r\\n\\r\\n
0\\\">\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n 0\\\"> \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n\\r\\n 0\\\"> \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n 0\\\"> \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n 0\\\"> \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
DateClient{{ bookingUnitName }}EmployeeStart(Hrs)End(Hrs)Lunch (min)Total {{ column.percentage === 0 ? \\\"Normal Hours\\\" : \\\"+\\\" + column.percentageType + \\\"%\\\" }}
{{tl.date}}{{tl.name}}\\r\\n {{tl.startLogged}}\\r\\n ({{tl.startBooked}})\\r\\n \\r\\n {{tl.endLogged}}\\r\\n ({{tl.endBooked}})\\r\\n \\r\\n {{tl.lunchLogged}}\\r\\n ({{tl.lunchBooked}})\\r\\n {{tl.totalLogged}}\\r\\n {{ checkItemExists(tl.hourlyWorkedPecentages, row.percentage) }}
Summary of hours{{reportInfo.value.totalLogged}}{{ hours.totalHours }}
Total Adjusted{{hours.totalHours}}
Total{{reportInfo.value.total}}
\\r\\n \\r\\n Total Difference Booked and Reported\\r\\n \\r\\n \\r\\n \\r\\n {{reportInfo.value.totalDifference}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n There is no time log records found for the selected search criteria.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Enter your email to get the\\r\\n password reset link

\\r\\n
\\r\\n \\r\\n
\\r\\n Email is\\r\\n required.\\r\\n Please enter valid\\r\\n email.\\r\\n
\\r\\n
\\r\\n

You will get a password reset link to this email if this email is linked with any an account.

\\r\\n

{{email.value}}

\\r\\n
\\r\\n \\r\\n
E-mail submitted successfully. Please check your e-mail.
\\r\\n
E-mail submission error! Please re-submit your e-mail.
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Designed and Developed by Edge Associates\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n username is required\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n password is required\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

Invalid Username/Password

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Set new password to your account

\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Password is\\r\\n required.\\r\\n Password should contain at leaset 6 charactors.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Confirm password is required.\\r\\n \\r\\n Password does not match! \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Password reset Success!

\\r\\n

Redirecting to login page...

\\r\\n
\\r\\n
\\r\\n

Password reset Failed!

\\r\\n

Please try again.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Designed and Developed by Edge Associates\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"
\\r\\n
\\r\\n Designed and Developed by Edge Associates \\r\\n
\\r\\n
\\r\\n \"","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
...
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{user.fullName}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{user.actualHoursBooked +'/'+ user.totalCalculatedHours}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{user.jobCategory}}\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
...
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{'users.updateProfile' |translate}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{'users.personalInformations' |translate}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.clientName}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.firstName}}\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.lastName}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.phoneNumber}}\\r\\n \\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.phoneNumber}}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.address}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.email}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.city}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.zip}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.aboutMe}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{'users.profileInformations' |translate}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.pharmacyId}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.legitimationId}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.experienceAreas}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.yearsOfExperience}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.pharmacySystems}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'users.updateProfile' |translate}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.languages}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.skillLevel}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0)\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{'users.language' |translate}}{{'users.skillLevel' |translate}}{{'shared.action' |translate}}
{{getLangNameById(item.languageId)}}{{getSkillLevelNameById(item.skillLevelId)}}
{{'shared.noRecordsFound' |translate}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'users.countiesAndMuna' |translate}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.county}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.municipality}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.municipality}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

0\\\">\\r\\n 0\\\" >\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{'users.county' |translate}}{{'users.municipality' |translate}}{{'shared.action' |translate}}
{{item.c.name}} \\r\\n {{'users.upallMunicipalitydateProfile' |translate}}\\r\\n \\r\\n {{m.name}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n

0)\\\" i18n=\\\"@@emp_mp_no_record_found\\\">\\r\\n {{'shared.noRecordsFound' |translate}}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'users.files' |translate}}
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n {{item.id}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n Remove\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{'users.profileImage' |translate}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Use english language \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayResetPwdMessage.resetpassword}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{'users.passwordNotMatch' |translate}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n {{'shared.requiredFieldErrMsg' |translate}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{pageTitle}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.userTypeId}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Personal Informations

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.clientName}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.firstName}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.lastName}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.userName}}\\r\\n \\r\\n \\r\\n duplicate username\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.phoneNumber}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.address}}\\r\\n \\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.email}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.city}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.zip}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Profile Informations

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.pharmacyId}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.county}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.municipality}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n Remove\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Profile Image\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.userName}}\\r\\n \\r\\n \\r\\n duplicate username\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.password}}\\r\\n \\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n Passwords does not match\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Reset Password\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayResetPwdMessage.resetpassword}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Passwords does not match\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Please fill the required fields marked with red!\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

User List

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
User TypeNameEmailPhoneJob CategoryUsername
AnställdEnhet\\r\\n {{user.fullName}}\\r\\n {{user.email}}{{user.phoneNumber}}{{user.jobCategory}}{{user.userName}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Deactivate User : {{selectedUser.fullName}}
\\r\\n \\r\\n
\\r\\n
\\r\\n Are you sure you want to deactivate the user?\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Activate User : {{selectedUser.fullName}}
\\r\\n \\r\\n
\\r\\n
\\r\\n Are you sure you want to activate the user?\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

{{userInfo.firstName}} {{userInfo.lastName}}

{{userInfo.firstName}} {{userInfo.lastName}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

= 768)) || (isViewModal && (deviceWidth >= 768))\\\" i18n=\\\"@@emp_uv_header_personal_info\\\">Personal Informations

\\r\\n

Personal Informations

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.phoneNumber}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.email}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.aboutMe? userForm.value.aboutMe:'-' }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.address}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.city}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.zip}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.email}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

= 768)) || (isViewModal && (deviceWidth >= 768))\\\" i18n=\\\"@@emp_uv_heading_profile_info\\\">Profile Informations

\\r\\n

Profile Informations

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.pharmacyId? userForm.value.pharmacyId :'-'}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.employeeNo? userForm.value.employeeNo :'-'}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.userTypeId=='2'? 'Anställd':(userForm.value.userTypeId=='3'? 'Enhet':(userForm.value.userTypeId=='4'? 'Super Client':'-'))}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{empResourceType.displayName}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.jobCategoryId=='1'? 'Heltid':'Deltid'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{getExperience()}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{getExperienceAreas()? getExperienceAreas():'-' }}\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{getLeditimationName()}}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n 0)\\\">\\r\\n -\\r\\n \\r\\n 0\\\">\\r\\n \\r\\n {{getLanguageById(lang.languageId)}} - {{getSkillLevelById(lang.skillLevelId)}} \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.isStaredEmployeesOnly? 'Yes':'No'}}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

= 768)) || (isViewModal && (deviceWidth >= 768))\\\" i18n=\\\"@@emp_uv_countyandmunicipalities\\\">Counties and Municipalities

\\r\\n
Counties and Municipalities
\\r\\n
\\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
{{ item.isAll? 'Alla Kommuner':getMunicipalities(item.m) }}
\\r\\n
\\r\\n
\\r\\n

0)\\\" i18n=\\\"@@emp_uv_no_recored_found\\\">\\r\\n No records found!\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{getCountyName()}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{getMunicipalityName()}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{pageTitle}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.userTypeId}}\\r\\n \\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.jobCategoryId}}\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.resourceTypeId}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Personal Informations

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.clientName}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.firstName}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.lastName}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.userName}}\\r\\n \\r\\n \\r\\n duplicate username\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.phoneNumber}}\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.address}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.email}}\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.city}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.zip}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.aboutMe}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Profile Informations

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{displayMessage.subClients}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n *\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.pharmacyId}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.yearsOfExperience}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.experienceAreas}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.legitimationId}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.pharmacySystems}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Admin Configurations

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Language and Skill Levels
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.languages}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.skillLevel}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0)\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
LanguageSkill LevelAction
{{getLangNameById(item.languageId)}}{{getSkillLevelNameById(item.skillLevelId)}}
No records found!
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Counties and Municipalities
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.county}}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.municipality}}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{displayMessage.municipality}}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

0\\\">\\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
CountyMunicipalityAction
{{item.c.name}} \\r\\n All Municipalities\\r\\n \\r\\n {{m.name}} \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n

0)\\\" i18n=\\\"@@emp_uf_no_record_found\\\">\\r\\n No records found!\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n Remove\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Profile Image\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.userName}}\\r\\n \\r\\n \\r\\n duplicate username\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayMessage.password}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n Passwords does not match\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Reset Password\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n {{displayResetPwdMessage.resetpassword}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n *\\r\\n \\r\\n \\r\\n Passwords does not match\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Please fill the required fields marked with red!\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\"","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{'users.userList' |translate}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
{{'users.userType' |translate}}{{'users.name' |translate}}{{'users.email' |translate}}{{'users.phone' |translate}}{{'users.jobCategory' |translate}}{{'users.username' |translate}}
AdministratörAnställd{{ bookingUnitName }}Super Enhet\\r\\n {{user.userType!='Administrator'? user.fullName : user.firstName+' '+user.lastName}}\\r\\n \\r\\n {{user.email}}{{user.phoneNumber}}{{user.jobCategory}}{{user.userName}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'users.deactivateUserTitle' |translate}} : {{selectedUser.fullName}}
\\r\\n \\r\\n
\\r\\n
\\r\\n {{'users.deactivateUser' |translate}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{'users.activateUserTitle' |translate}} : {{selectedUser.fullName}}
\\r\\n \\r\\n
\\r\\n
\\r\\n {{'users.activateUser' |translate}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

{{userInfo.firstName}} {{userInfo.lastName}}

{{userInfo.firstName}} {{userInfo.lastName}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

= 768)) || (isViewModal && (deviceWidth >= 768))\\\" i18n=\\\"@@emp_uv_header_personal_info\\\">Personal Informations

\\r\\n

Personal Informations

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.phoneNumber}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.email}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.address}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.city}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.zip}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.email}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.aboutMe? userForm.value.aboutMe:'-' }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

= 768)) || (isViewModal && (deviceWidth >= 768))\\\" i18n=\\\"@@emp_uv_heading_profile_info\\\">Profile Informations

\\r\\n

Profile Informations

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{getLeditimationName()}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
{{getPharmacySystems()? getPharmacySystems():'-'}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n 0)\\\">\\r\\n -\\r\\n \\r\\n 0\\\">\\r\\n \\r\\n {{getLanguageById(lang.languageId)}} - {{getSkillLevelById(lang.skillLevelId)}} \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{getFavouriteEmployees()}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{subClient.get('clientName').value}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.pharmacyId? userForm.value.pharmacyId :'-'}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.employeeNo? userForm.value.employeeNo :'-'}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.userTypeId=='2'? 'Anställd':(userForm.value.userTypeId=='3'? 'Enhet':(userForm.value.userTypeId=='4'? 'Super Enhet':(userForm.value.userTypeId=='1'? 'Administratör':'-')))}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{empResourceType.displayName}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{userForm.value.jobCategoryId=='1'? 'Heltid':'Deltid'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
{{getExperience()}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
{{getExperienceAreas()? getExperienceAreas():'-' }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

= 768)) || (isViewModal && (deviceWidth >= 768))\\\" i18n=\\\"@@emp_uv_countyandmunicipalities\\\">Counties and Municipalities

\\r\\n
Counties and Municipalities
\\r\\n
\\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
{{ item.isAll? 'Alla Kommuner':getMunicipalities(item.m)}}
\\r\\n
\\r\\n
\\r\\n

0)\\\" i18n=\\\"@@emp_uv_no_recored_found\\\">\\r\\n No records found!\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
{{getCountyName()}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
{{getMunicipalityName()}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

= 768)) || (isViewModal && (deviceWidth >= 768))\\\" >Admin Configurations

\\r\\n

Admin Configurations

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
0\\\" class=\\\"col-4\\\">\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{configClientLongBookingPeriod}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{notificationModal.header}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{notificationModal.description}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { LoginComponent } from './security/login.component';\r\nimport { UserListComponent } from './user/user-list.component';\r\nimport { UserViewComponent } from './user/user-view.component';\r\nimport { UserEditComponent } from './user/user-edit.component';\r\nimport { AdminReportComponent } from './report/admin-report.component';\r\nimport { AdminCalendarComponent } from './calendar/admin-calendar.component';\r\nimport { SuperclientCalendarComponent } from './calendar/superclient-calendar/superclient-calendar.component';\r\nimport { SuperclientUserListComponent } from './user/superclient-user-list/superclient-user-list.component';\r\nimport { SuperclientUserEditComponent } from './user/superclient-user-edit/superclient-user-edit.component';\r\nimport { ClientCalendarComponent } from './calendar/client-calendar.component';\r\nimport { AuthGuard } from './security/auth.guard';\r\nimport { EmployeeCalendarComponent } from './calendar/employee-calendar.component';\r\nimport { EmployeeReportComponent } from './report/employee-report.component';\r\nimport { ClientReportComponent } from './report/client-report.component';\r\nimport { MyprofileComponent } from './user/myprofile.component';\r\nimport { SuperclientReportComponent } from './report/superclient-report/superclient-report.component';\r\nimport { SuperclientUserViewComponent } from './user/superclient-user-view/superclient-user-view.component';\r\nimport { ForgotPasswordComponent } from './security/forgot-password/forgot-password.component';\r\nimport { ResetPasswordComponent } from './security/reset-password/reset-password.component';\r\nimport { BookingCalendarComponent } from './calendar/booking-calendar/booking-calendar.component';\r\nimport { AdminInquiryCalendarComponent } from './calendar/admin-inquiry-calendar/admin-inquiry-calendar.component';\r\nimport { EmployeeInquiryCalenderComponent } from './calendar/employee-inquiry-calender/employee-inquiry-calender.component';\r\nimport { ConfigComponent } from './config/config.component';\r\nimport { LongBookingComponent } from './calendar/long-booking/long-booking.component';\r\nimport { LongBookingListComponent } from './calendar/long-booking/longbooking-list/longbooking-list.component';\r\nimport { ShortBookingListComponent } from './calendar/booking-calendar/shortbooking-list/shortbooking-list.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'login',\r\n component: LoginComponent\r\n },\r\n {\r\n path: 'users',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessAdminFeatures' },\r\n component: UserListComponent\r\n },\r\n {\r\n path: 'user/:userid',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessAdminFeatures' },\r\n component: UserViewComponent\r\n },\r\n {\r\n path: 'user/update/:id',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessAdminFeatures' },\r\n component: UserEditComponent\r\n },\r\n {\r\n path: 'users/calendar',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessAdminFeatures' },\r\n component: AdminCalendarComponent,\r\n children:[\r\n {path:'', redirectTo:'bookings', pathMatch:'full'},\r\n {path:'bookings',component:BookingCalendarComponent ,data: { role: 'Admin' }},\r\n {path:'inquiries',component:AdminInquiryCalendarComponent,data: { role: 'Admin' }}\r\n ]\r\n },\r\n {\r\n path: 'reports',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessAdminFeatures' },\r\n component: AdminReportComponent\r\n },\r\n {\r\n path: 'clients/calendar',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessSuperClientFeatures' },\r\n component: SuperclientCalendarComponent,\r\n children:[\r\n {path:'', redirectTo:'bookings', pathMatch:'full'},\r\n {path:'bookings',component:BookingCalendarComponent ,data: { role: 'SuperClient' }},\r\n {path:'inquiries',component:AdminInquiryCalendarComponent,data: { role: 'SuperClient' }}\r\n ]\r\n },\r\n {\r\n path: 'clients/users',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessSuperClientFeatures' },\r\n component: SuperclientUserListComponent\r\n },\r\n {\r\n path: 'clients/user/:userid',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessSuperClientFeatures' },\r\n component: SuperclientUserViewComponent\r\n },\r\n {\r\n path: 'clients/user/update/:id',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessSuperClientFeatures' },\r\n component: SuperclientUserEditComponent\r\n },\r\n {\r\n path: 'clients/reports',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessSuperClientFeatures' },\r\n component: SuperclientReportComponent\r\n },\r\n {\r\n path: 'calendar',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessClientFeatures' },\r\n component: ClientCalendarComponent\r\n },\r\n {\r\n path: 'longbookings',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessAdminFeatures' },\r\n component: LongBookingListComponent\r\n },\r\n {\r\n path: 'shortbookings',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessAdminFeatures' },\r\n component: ShortBookingListComponent\r\n },\r\n \r\n {\r\n path: 'bookings',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessEmployeeFeatures' },\r\n component: EmployeeCalendarComponent,\r\n children:[\r\n {path:'', redirectTo:'bookings', pathMatch:'full'},\r\n {path:'bookings',component:BookingCalendarComponent ,data: { role: 'Employee' }},\r\n {path:'inquiries',component:EmployeeInquiryCalenderComponent,data: { role: 'Employee' }}\r\n ]\r\n },\r\n {\r\n path: 'employee/reports',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessEmployeeFeatures' },\r\n component: EmployeeReportComponent\r\n },\r\n {\r\n path: 'client/reports',\r\n canActivate: [AuthGuard],\r\n data: { claimType: 'CanAccessClientFeatures' },\r\n component: ClientReportComponent\r\n },\r\n {\r\n path: 'profile',\r\n canActivate: [AuthGuard],\r\n data: { claimType: ['CanAccessAdminFeatures','CanAccessClientFeatures','CanAccessEmployeeFeatures','CanAccessSuperClientFeatures'] },\r\n component: MyprofileComponent\r\n },\r\n {\r\n path: 'forgotpassword',\r\n component: ForgotPasswordComponent\r\n },\r\n {\r\n path: 'account/reset',\r\n component: ResetPasswordComponent\r\n },\r\n {\r\n path: 'site/config',\r\n canActivate: [AuthGuard],\r\n component: ConfigComponent,\r\n data: { claimType: 'CanAccessAdminFeatures' },\r\n },\r\n {\r\n path: 'config',\r\n redirectTo :'site/config'\r\n },\r\n {\r\n path: 'long',\r\n component :LongBookingComponent\r\n },\r\n {\r\n path: '**',\r\n component: LoginComponent\r\n },\r\n {\r\n path: '',\r\n component: LoginComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\r\nimport { HostService } from './shared/services/common/host.service';\r\nimport { ConfigService } from './shared/services/config.service';\r\nimport { Title } from \"@angular/platform-browser\";\r\nimport { SignalrService } from './shared/services/common/signalr.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'wfm-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent implements OnInit {\r\n hostName: string;\r\n faviconUrl: string;\r\n logoUrl: string;\r\n favIcon: HTMLLinkElement = document.querySelector('#appIcon');\r\n\r\n constructor(private translate: TranslateService, private signalRService: SignalrService, private hostService: HostService, private configService: ConfigService, private title: Title) {\r\n this.signalRService.initializeSignalRConnection();\r\n let isSwLanguage = localStorage.getItem(\"isSwLanguage\");\r\n if (isSwLanguage == null || isSwLanguage == undefined) {\r\n localStorage.setItem(\"isSwLanguage\", \"true\");\r\n translate.setDefaultLang('sw')\r\n } else if (isSwLanguage == \"true\") {\r\n localStorage.setItem(\"isSwLanguage\", \"true\");\r\n translate.setDefaultLang('sw')\r\n } else {\r\n localStorage.setItem(\"isSwLanguage\", \"false\");\r\n translate.setDefaultLang('en')\r\n }\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.hostName = this.hostService.getHostname();\r\n this.title.setTitle(this.hostName);\r\n //this.favIcon.href = \"https://teamplanstorage.blob.core.windows.net/24transport/favicon.ico\"; \r\n\r\n this.faviconUrl = \"https://teamplanstorage.blob.core.windows.net/prodimages/logo.png\"// res.configuration.faviconImagePath;\r\n this.favIcon.href = \"https://teamplanstorage.blob.core.windows.net/prodimages/pharmatch favico icon.ico\"; \r\n\r\n this.configService.getConfigData().subscribe((res) => {\r\n\r\n // this.faviconUrl = \"https://teamplanstorage.blob.core.windows.net/24transport/logo.png\"// res.configuration.faviconImagePath;\r\n // this.favIcon.href = \"https://teamplanstorage.blob.core.windows.net/24transport/favicon.ico\"; \r\n // this.faviconUrl = res.configuration.faviconImagePath;\r\n this.logoUrl = res.configuration.logoImagePath;\r\n localStorage.setItem(\"logoImageUrl\", this.logoUrl);\r\n localStorage.setItem(\"faviconImageUrl\", this.faviconUrl);\r\n // this.favIcon.href = this.faviconUrl; \r\n\r\n });\r\n }\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { UserModule } from './user/user.module';\r\nimport { HttpInterceptorModule } from './security/http-interceptor-module';\r\nimport { ReportModule } from './report/report.module';\r\nimport { CalendarModuleA } from './calendar/calendar.module';\r\nimport { ConfigModule } from './config/config.module';\r\nimport { AppComponent } from './app.component';\r\nimport { LoginComponent } from './security/login.component';\r\nimport { AuthGuard } from './security/auth.guard';\r\nimport { NgxSpinnerModule } from 'ngx-spinner';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { ForgotPasswordComponent } from './security/forgot-password/forgot-password.component';\r\nimport { ResetPasswordComponent } from './security/reset-password/reset-password.component';\r\n\r\nimport { WINDOW_PROVIDERS } from './window.providers';\r\nimport { HostService } from './shared/services/common/host.service';\r\nimport { SafeHTmlPipe } from './shared/pipes/safe-html.pipe';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { LongBookingService } from './shared/services/domain/booking/long-booking.service';\r\nimport { DatePipe } from '@angular/common';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CalendarModule } from \"primeng/calendar\";\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { StarRatingModule } from 'angular-star-rating';\r\n\r\n//import { FileUploadComponent } from './config/file-upload/file-upload.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n LoginComponent,\r\n ForgotPasswordComponent,\r\n ResetPasswordComponent,\r\n SafeHTmlPipe,\r\n //FileUploadComponent,\r\n ],\r\n imports: [\r\n ToastrModule.forRoot(),\r\n NgSelectModule,\r\n FormsModule,\r\n BrowserAnimationsModule,\r\n BrowserModule,\r\n AppRoutingModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n HttpInterceptorModule,\r\n SharedModule,\r\n UserModule,\r\n ReportModule,\r\n CalendarModuleA,\r\n CalendarModule,\r\n ConfigModule,\r\n NgxSpinnerModule,\r\n StarRatingModule.forRoot(),\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: HttpLoaderFactory,\r\n deps: [HttpClient]\r\n }\r\n })\r\n ],\r\n exports: [TranslateModule],\r\n providers: [AuthGuard, WINDOW_PROVIDERS, HostService, LongBookingService, DatePipe\r\n],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n\r\nexport function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader {\r\n return new TranslateHttpLoader(http);\r\n}\r\n\r\n\r\n","module.exports = \".slot-yellow {\\r\\n background-color: yellow !important;\\r\\n color: red;\\r\\n cursor: pointer;\\r\\n padding-bottom: 6px;\\r\\n}\\r\\n\\r\\n.slot-blue {\\r\\n background-color: #53afea !important;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.slot-orange {\\r\\n background-color: orange !important;\\r\\n cursor: pointer;\\r\\n padding-bottom: 6px;\\r\\n}\\r\\n\\r\\n.slot-no-check {\\r\\n display: none;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.resrcgrpbtn {\\r\\n background-color: #1ca368;\\r\\n border-color: #1ca368 !important;\\r\\n color: white;\\r\\n}\\r\\n\\r\\n.display-none {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n#btnPharmacistSm {\\r\\n margin-left: 5px;\\r\\n}\\r\\n\\r\\n.btn-light {\\r\\n border-color: #cdd4cf !important;\\r\\n background-color: #cdd4cf;\\r\\n}\\r\\n\\r\\n/* .card-header .accordion-toggle:after span {\\r\\n content: \\\"\\\\e006\\\";\\r\\n}\\r\\n.card-header .accordion-toggle.collapsed:after span {\\r\\n content: \\\"\\\\e004\\\";\\r\\n} */\\r\\n\\r\\n/* .k-scheduler-content{\\r\\n height: unset;\\r\\n}\\r\\n.k-scheduler-monthview .k-scheduler-content {\\r\\n overflow-y: unset;\\r\\n} */\\r\\n\\r\\n.k-widget.k-timepicker.kendo-time.form-control-style {\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n.user-type-image {\\r\\n margin-top: -1px !important;\\r\\n}\\r\\n\\r\\n.resourceBtn {\\r\\n text-overflow: ellipsis !important;\\r\\n overflow: hidden !important;\\r\\n padding: 0.2rem 0.2rem !important;\\r\\n min-width: 75px !important;\\r\\n font-size: 12px;\\r\\n margin-left: .1em!important;\\r\\n}\\r\\n\\r\\n.resourceBtnMobile {\\r\\n text-overflow: ellipsis !important;\\r\\n overflow: hidden !important;\\r\\n padding: 0.1rem 0.1rem !important;\\r\\n width: 75px !important;\\r\\n font-size: 12px;\\r\\n margin-left: .1em!important;\\r\\n\\r\\n border-bottom-right-radius: .25rem !important;\\r\\n border-top-right-radius: .25rem !important;\\r\\n border-bottom-left-radius: .25rem !important;\\r\\n border-top-left-radius: .25rem !important;\\r\\n}\\r\\n\\r\\n.btn-calendar {\\r\\n min-width: 105px !important;\\r\\n width: 105px !important;\\r\\n font-size: 12px;\\r\\n padding: 0.23rem 0.2rem !important;\\r\\n}\\r\\n\\r\\n.resourceBtn.lastResource{\\r\\n border-bottom-right-radius: .25rem !important;\\r\\n border-top-right-radius: .25rem !important;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2FsZW5kYXIvYWRtaW4tY2FsZW5kYXIuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLG1DQUFtQztFQUNuQyxVQUFVO0VBQ1YsZUFBZTtFQUNmLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLG9DQUFvQztFQUNwQyxlQUFlO0FBQ2pCOztBQUVBO0VBQ0UsbUNBQW1DO0VBQ25DLGVBQWU7RUFDZixtQkFBbUI7QUFDckI7O0FBQ0E7RUFDRSxhQUFhO0VBQ2IsZUFBZTtBQUNqQjs7QUFFQTtFQUNFLHlCQUF5QjtFQUN6QixnQ0FBZ0M7RUFDaEMsWUFBWTtBQUNkOztBQUVBO0VBQ0UsYUFBYTtBQUNmOztBQUVBO0VBQ0UsZ0JBQWdCO0FBQ2xCOztBQUVBO0VBQ0UsZ0NBQWdDO0VBQ2hDLHlCQUF5QjtBQUMzQjs7QUFDQTs7Ozs7R0FLRzs7QUFFSDs7Ozs7R0FLRzs7QUFFSDtFQUNFLFdBQVc7QUFDYjs7QUFDQTtFQUNFLDJCQUEyQjtBQUM3Qjs7QUFFQTtFQUNFLGtDQUFrQztFQUNsQywyQkFBMkI7RUFDM0IsaUNBQWlDO0VBQ2pDLDBCQUEwQjtFQUMxQixlQUFlO0VBQ2YsMkJBQTJCO0FBQzdCOztBQUNBO0VBQ0Usa0NBQWtDO0VBQ2xDLDJCQUEyQjtFQUMzQixpQ0FBaUM7RUFDakMsc0JBQXNCO0VBQ3RCLGVBQWU7RUFDZiwyQkFBMkI7O0VBRTNCLDZDQUE2QztFQUM3QywwQ0FBMEM7RUFDMUMsNENBQTRDO0VBQzVDLHlDQUF5QztBQUMzQzs7QUFFQTtFQUNFLDJCQUEyQjtFQUMzQix1QkFBdUI7RUFDdkIsZUFBZTtFQUNmLGtDQUFrQztBQUNwQzs7QUFFQTtFQUNFLDZDQUE2QztFQUM3QywwQ0FBMEM7QUFDNUMiLCJmaWxlIjoic3JjL2FwcC9jYWxlbmRhci9hZG1pbi1jYWxlbmRhci5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNsb3QteWVsbG93IHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3cgIWltcG9ydGFudDtcclxuICBjb2xvcjogcmVkO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBwYWRkaW5nLWJvdHRvbTogNnB4O1xyXG59XHJcblxyXG4uc2xvdC1ibHVlIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTNhZmVhICFpbXBvcnRhbnQ7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uc2xvdC1vcmFuZ2Uge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZSAhaW1wb3J0YW50O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBwYWRkaW5nLWJvdHRvbTogNnB4O1xyXG59XHJcbi5zbG90LW5vLWNoZWNrIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLnJlc3JjZ3JwYnRuIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWNhMzY4O1xyXG4gIGJvcmRlci1jb2xvcjogIzFjYTM2OCAhaW1wb3J0YW50O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLmRpc3BsYXktbm9uZSB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuI2J0blBoYXJtYWNpc3RTbSB7XHJcbiAgbWFyZ2luLWxlZnQ6IDVweDtcclxufVxyXG5cclxuLmJ0bi1saWdodCB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjY2RkNGNmICFpbXBvcnRhbnQ7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NkZDRjZjtcclxufVxyXG4vKiAuY2FyZC1oZWFkZXIgLmFjY29yZGlvbi10b2dnbGU6YWZ0ZXIgc3BhbiB7XHJcbiBjb250ZW50OiBcIlxcZTAwNlwiO1xyXG59XHJcbi5jYXJkLWhlYWRlciAuYWNjb3JkaW9uLXRvZ2dsZS5jb2xsYXBzZWQ6YWZ0ZXIgc3BhbiB7XHJcbiAgY29udGVudDogXCJcXGUwMDRcIjtcclxufSAqL1xyXG5cclxuLyogLmstc2NoZWR1bGVyLWNvbnRlbnR7XHJcbiAgaGVpZ2h0OiB1bnNldDtcclxufVxyXG4uay1zY2hlZHVsZXItbW9udGh2aWV3IC5rLXNjaGVkdWxlci1jb250ZW50IHtcclxuICBvdmVyZmxvdy15OiB1bnNldDtcclxufSAqL1xyXG5cclxuLmstd2lkZ2V0LmstdGltZXBpY2tlci5rZW5kby10aW1lLmZvcm0tY29udHJvbC1zdHlsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuLnVzZXItdHlwZS1pbWFnZSB7XHJcbiAgbWFyZ2luLXRvcDogLTFweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ucmVzb3VyY2VCdG4ge1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzICFpbXBvcnRhbnQ7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xyXG4gIHBhZGRpbmc6IDAuMnJlbSAwLjJyZW0gIWltcG9ydGFudDtcclxuICBtaW4td2lkdGg6IDc1cHggIWltcG9ydGFudDtcclxuICBmb250LXNpemU6IDEycHg7XHJcbiAgbWFyZ2luLWxlZnQ6IC4xZW0haW1wb3J0YW50O1xyXG59XHJcbi5yZXNvdXJjZUJ0bk1vYmlsZSB7XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXMgIWltcG9ydGFudDtcclxuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XHJcbiAgcGFkZGluZzogMC4xcmVtIDAuMXJlbSAhaW1wb3J0YW50O1xyXG4gIHdpZHRoOiA3NXB4ICFpbXBvcnRhbnQ7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIG1hcmdpbi1sZWZ0OiAuMWVtIWltcG9ydGFudDtcclxuXHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50O1xyXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDtcclxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDtcclxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDtcclxufVxyXG5cclxuLmJ0bi1jYWxlbmRhciB7XHJcbiAgbWluLXdpZHRoOiAxMDVweCAhaW1wb3J0YW50O1xyXG4gIHdpZHRoOiAxMDVweCAhaW1wb3J0YW50O1xyXG4gIGZvbnQtc2l6ZTogMTJweDtcclxuICBwYWRkaW5nOiAwLjIzcmVtIDAuMnJlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ucmVzb3VyY2VCdG4ubGFzdFJlc291cmNle1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDtcclxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7XHJcbn1cclxuIl19 */\"","import { Component, OnInit, AfterViewInit, ElementRef, ViewChildren, OnDestroy } from '@angular/core';\r\nimport * as jQuery from 'jquery';\r\nimport { CalendarService } from './calendar.service';\r\nimport { AllocationInfo } from './allocation-info';\r\nimport { AvailabilityModel } from './availability-model';\r\nimport { AvailabilityInfo } from './availability-info';\r\nimport { BookingInfo } from './booking-info';\r\nimport { IUserInfo } from '../user/user-info';\r\nimport { FormBuilder, FormGroup, Validators, FormControlName } from '@angular/forms';\r\nimport { TimeLogModel } from './time-log-model';\r\nimport { ClientBookingInfo } from './client-booking-info';\r\nimport { AvailabilityUpdateModel } from './availability-update-model';\r\nimport { GenericValidator } from '../shared/generic-validator';\r\nimport { Observable, fromEvent, merge, Subscription, Subject } from 'rxjs';\r\nimport { debounceTime, filter } from 'rxjs/operators';\r\nimport { PartialAvailabilityModel } from './partial-availability-model';\r\nimport { PartialAvailabilityInfo } from './partial-availability-info';\r\nimport { AlliocationModel } from './alliocation-model';\r\nimport { UserService } from '../user/user.service';\r\nimport { Event, NavigationEnd, NavigationStart, Router } from '@angular/router';\r\nimport { SignalrService } from '../shared/services/common/signalr.service';\r\ndeclare var kendo: any;\r\n\r\n@Component({\r\n selector: 'wfm-admin-calendar',\r\n templateUrl: './admin-calendar.component.html',\r\n styleUrls: ['./admin-calendar.component.css']\r\n})\r\nexport class AdminCalendarComponent implements OnInit, OnDestroy {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n userId: string;\r\n userType: string;\r\n availabilityCheckDates: AvailabilityModel[];\r\n errorMessage: string;\r\n allocation: BookingInfo;\r\n visibleTimeLogs = false;\r\n updateAllocationId: number;\r\n isSwapEmployeeSelected: boolean;\r\n swapUserList: any[];\r\n swapUserForm: FormGroup;\r\n allocationTimeLogsForm: FormGroup;\r\n allocationForm: FormGroup;\r\n allocationTimeUpdateForm: FormGroup;\r\n selectedUserFullName: string;\r\n selectedUserAllocationTimes: string;\r\n notificationModal: any;\r\n availabilityForm: FormGroup;\r\n availabilityUpdateModel: AvailabilityUpdateModel;\r\n currentDate = new Date();\r\n isWeekend = true;\r\n displayValidationMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n subscription: Subscription;\r\n partialAvailabilityForm: FormGroup;\r\n selectedPartialAvlDate: string;\r\n partialAvailableListForDay: PartialAvailabilityInfo[];\r\n allocationTryDate: Date;\r\n allocationTryTime: string;\r\n allocationTryLunch: number;\r\n selectedResourceTypeId = 1;\r\n resourceTypeForAvalReq = 1;\r\n resourceTypes: any[];\r\n selectedCalendarMonth: Subject = new Subject();\r\n availabilityData: AvailabilityInfo[];\r\n isBookingSelected = true;\r\n isBookingFromPartialAvailability: boolean = false;\r\n swedishHolidays: any\r\n holidayLastMonth: string\r\n availableEmployees: any[] = []\r\n preSystemSelectedEmployeeId: Subject = new Subject();\r\n clientCommonTimes: any[] = []\r\n isAllocationTimeEdit: boolean;\r\n allocationHistory: any\r\n showHistory: boolean = false\r\n swapAccessed: boolean = false\r\n isInquiryCalendarSelected: boolean = false\r\n employeeProfileId: Subject = new Subject();\r\n isPartialBooking: boolean = true;\r\n IsOnChangeEvent: boolean = false;\r\n isLoadOnSubscription: boolean = false;\r\n sendRequest: any\r\n selectedUserIdSub: Subscription\r\n newSelectedUserSub: Subscription\r\n routeSubscription: Subscription\r\n currentURL: any\r\n Infinity = Infinity;\r\n\r\n deviceWidth: number = window.innerWidth;\r\n deviceHight: number = window.innerHeight;\r\n\r\n selectedUserId: Subject = new Subject()\r\n selectedUserType: Subject = new Subject()\r\n userListAction: Subject = new Subject()\r\n selectedDate: Date = new Date(new Date().setHours(0, 0, 0, 0));\r\n\r\n timePickerTimeList: any[] = [\r\n { value: '00:00', label: '00:00', intval: 0 },\r\n { value: '00:15', label: '00:15', intval: 15 },\r\n { value: '00:30', label: '00:30', intval: 30 },\r\n { value: '00:45', label: '00:45', intval: 45 },\r\n { value: '01:00', label: '01:00', intval: 100 },\r\n { value: '01:15', label: '01:15', intval: 115 },\r\n { value: '01:30', label: '01:30', intval: 130 },\r\n { value: '01:45', label: '01:45', intval: 145 },\r\n { value: '02:00', label: '02:00', intval: 200 },\r\n { value: '02:15', label: '02:15', intval: 215 },\r\n { value: '02:30', label: '02:30', intval: 230 },\r\n { value: '02:45', label: '02:45', intval: 245 },\r\n { value: '03:00', label: '03:00', intval: 300 },\r\n { value: '03:15', label: '03:15', intval: 315 },\r\n { value: '03:30', label: '03:30', intval: 330 },\r\n { value: '03:45', label: '03:45', intval: 345 },\r\n { value: '04:00', label: '04:00', intval: 400 },\r\n { value: '04:15', label: '04:15', intval: 415 },\r\n { value: '04:30', label: '04:30', intval: 430 },\r\n { value: '04:45', label: '04:45', intval: 445 },\r\n { value: '05:00', label: '05:00', intval: 500 },\r\n { value: '05:15', label: '05:15', intval: 515 },\r\n { value: '05:30', label: '05:30', intval: 530 },\r\n { value: '05:45', label: '05:45', intval: 545 },\r\n { value: '06:00', label: '06:00', intval: 600 },\r\n { value: '06:15', label: '06:15', intval: 615 },\r\n { value: '06:30', label: '06:30', intval: 630 },\r\n { value: '06:45', label: '06:45', intval: 645 },\r\n { value: '07:00', label: '07:00', intval: 700 },\r\n { value: '07:15', label: '07:15', intval: 715 },\r\n { value: '07:30', label: '07:30', intval: 730 },\r\n { value: '07:45', label: '07:45', intval: 745 },\r\n { value: '08:00', label: '08:00', intval: 800 },\r\n { value: '08:15', label: '08:15', intval: 815 },\r\n { value: '08:30', label: '08:30', intval: 830 },\r\n { value: '08:45', label: '08:45', intval: 845 },\r\n { value: '09:00', label: '09:00', intval: 900 },\r\n { value: '09:15', label: '09:15', intval: 915 },\r\n { value: '09:30', label: '09:30', intval: 930 },\r\n { value: '09:45', label: '09:45', intval: 945 },\r\n { value: '10:00', label: '10:00', intval: 1000 },\r\n { value: '10:15', label: '10:15', intval: 1015 },\r\n { value: '10:30', label: '10:30', intval: 1030 },\r\n { value: '10:45', label: '10:45', intval: 1045 },\r\n { value: '11:00', label: '11:00', intval: 1100 },\r\n { value: '11:15', label: '11:15', intval: 1115 },\r\n { value: '11:30', label: '11:30', intval: 1130 },\r\n { value: '11:45', label: '11:45', intval: 1145 },\r\n { value: '12:00', label: '12:00', intval: 1200 },\r\n { value: '12:15', label: '12:15', intval: 1215 },\r\n { value: '12:30', label: '12:30', intval: 1230 },\r\n { value: '12:45', label: '12:45', intval: 1245 },\r\n { value: '13:00', label: '13:00', intval: 1300 },\r\n { value: '13:15', label: '13:15', intval: 1315 },\r\n { value: '13:30', label: '13:30', intval: 1330 },\r\n { value: '13:45', label: '13:45', intval: 1345 },\r\n { value: '14:00', label: '14:00', intval: 1400 },\r\n { value: '14:15', label: '14:15', intval: 1415 },\r\n { value: '14:30', label: '14:30', intval: 1430 },\r\n { value: '14:45', label: '14:45', intval: 1445 },\r\n { value: '15:00', label: '15:00', intval: 1500 },\r\n { value: '15:15', label: '15:15', intval: 1515 },\r\n { value: '15:30', label: '15:30', intval: 1530 },\r\n { value: '15:45', label: '15:45', intval: 1545 },\r\n { value: '16:00', label: '16:00', intval: 1600 },\r\n { value: '16:15', label: '16:15', intval: 1615 },\r\n { value: '16:30', label: '16:30', intval: 1630 },\r\n { value: '16:45', label: '16:45', intval: 1645 },\r\n { value: '17:00', label: '17:00', intval: 1700 },\r\n { value: '17:15', label: '17:15', intval: 1715 },\r\n { value: '17:30', label: '17:30', intval: 1730 },\r\n { value: '17:45', label: '17:45', intval: 1745 },\r\n { value: '18:00', label: '18:00', intval: 1800 },\r\n { value: '18:15', label: '18:15', intval: 1815 },\r\n { value: '18:30', label: '18:30', intval: 1830 },\r\n { value: '18:45', label: '18:45', intval: 1845 },\r\n { value: '19:00', label: '19:00', intval: 1900 },\r\n { value: '19:15', label: '19:15', intval: 1915 },\r\n { value: '19:30', label: '19:30', intval: 1930 },\r\n { value: '19:45', label: '19:45', intval: 1945 },\r\n { value: '20:00', label: '20:00', intval: 2000 },\r\n { value: '20:15', label: '20:15', intval: 2015 },\r\n { value: '20:30', label: '20:30', intval: 2030 },\r\n { value: '20:45', label: '20:45', intval: 2045 },\r\n { value: '21:00', label: '21:00', intval: 2100 },\r\n { value: '21:15', label: '21:15', intval: 2115 },\r\n { value: '21:30', label: '21:30', intval: 2130 },\r\n { value: '21:45', label: '21:45', intval: 2145 },\r\n { value: '22:00', label: '22:00', intval: 2200 },\r\n { value: '22:15', label: '22:15', intval: 2215 },\r\n { value: '22:30', label: '22:30', intval: 2230 },\r\n { value: '22:45', label: '22:45', intval: 2245 },\r\n { value: '23:00', label: '23:00', intval: 2300 },\r\n { value: '23:15', label: '23:15', intval: 2315 },\r\n { value: '23:30', label: '23:30', intval: 2330 },\r\n { value: '23:45', label: '23:45', intval: 2345 },\r\n ]\r\n\r\n timePickerTimeListFrom: any[] = [\r\n { value: '00:00', label: '00:00', intval: 0 },\r\n { value: '00:15', label: '00:15', intval: 15 },\r\n { value: '00:30', label: '00:30', intval: 30 },\r\n { value: '00:45', label: '00:45', intval: 45 },\r\n { value: '01:00', label: '01:00', intval: 100 },\r\n { value: '01:15', label: '01:15', intval: 115 },\r\n { value: '01:30', label: '01:30', intval: 130 },\r\n { value: '01:45', label: '01:45', intval: 145 },\r\n { value: '02:00', label: '02:00', intval: 200 },\r\n { value: '02:15', label: '02:15', intval: 215 },\r\n { value: '02:30', label: '02:30', intval: 230 },\r\n { value: '02:45', label: '02:45', intval: 245 },\r\n { value: '03:00', label: '03:00', intval: 300 },\r\n { value: '03:15', label: '03:15', intval: 315 },\r\n { value: '03:30', label: '03:30', intval: 330 },\r\n { value: '03:45', label: '03:45', intval: 345 },\r\n { value: '04:00', label: '04:00', intval: 400 },\r\n { value: '04:15', label: '04:15', intval: 415 },\r\n { value: '04:30', label: '04:30', intval: 430 },\r\n { value: '04:45', label: '04:45', intval: 445 },\r\n { value: '05:00', label: '05:00', intval: 500 },\r\n { value: '05:15', label: '05:15', intval: 515 },\r\n { value: '05:30', label: '05:30', intval: 530 },\r\n { value: '05:45', label: '05:45', intval: 545 },\r\n { value: '06:00', label: '06:00', intval: 600 },\r\n { value: '06:15', label: '06:15', intval: 615 },\r\n { value: '06:30', label: '06:30', intval: 630 },\r\n { value: '06:45', label: '06:45', intval: 645 },\r\n { value: '07:00', label: '07:00', intval: 700 },\r\n { value: '07:15', label: '07:15', intval: 715 },\r\n { value: '07:30', label: '07:30', intval: 730 },\r\n { value: '07:45', label: '07:45', intval: 745 },\r\n { value: '08:00', label: '08:00', intval: 800 },\r\n { value: '08:15', label: '08:15', intval: 815 },\r\n { value: '08:30', label: '08:30', intval: 830 },\r\n { value: '08:45', label: '08:45', intval: 845 },\r\n { value: '09:00', label: '09:00', intval: 900 },\r\n { value: '09:15', label: '09:15', intval: 915 },\r\n { value: '09:30', label: '09:30', intval: 930 },\r\n { value: '09:45', label: '09:45', intval: 945 },\r\n { value: '10:00', label: '10:00', intval: 1000 },\r\n { value: '10:15', label: '10:15', intval: 1015 },\r\n { value: '10:30', label: '10:30', intval: 1030 },\r\n { value: '10:45', label: '10:45', intval: 1045 },\r\n { value: '11:00', label: '11:00', intval: 1100 },\r\n { value: '11:15', label: '11:15', intval: 1115 },\r\n { value: '11:30', label: '11:30', intval: 1130 },\r\n { value: '11:45', label: '11:45', intval: 1145 },\r\n { value: '12:00', label: '12:00', intval: 1200 },\r\n { value: '12:15', label: '12:15', intval: 1215 },\r\n { value: '12:30', label: '12:30', intval: 1230 },\r\n { value: '12:45', label: '12:45', intval: 1245 },\r\n { value: '13:00', label: '13:00', intval: 1300 },\r\n { value: '13:15', label: '13:15', intval: 1315 },\r\n { value: '13:30', label: '13:30', intval: 1330 },\r\n { value: '13:45', label: '13:45', intval: 1345 },\r\n { value: '14:00', label: '14:00', intval: 1400 },\r\n { value: '14:15', label: '14:15', intval: 1415 },\r\n { value: '14:30', label: '14:30', intval: 1430 },\r\n { value: '14:45', label: '14:45', intval: 1445 },\r\n { value: '15:00', label: '15:00', intval: 1500 },\r\n { value: '15:15', label: '15:15', intval: 1515 },\r\n { value: '15:30', label: '15:30', intval: 1530 },\r\n { value: '15:45', label: '15:45', intval: 1545 },\r\n { value: '16:00', label: '16:00', intval: 1600 },\r\n { value: '16:15', label: '16:15', intval: 1615 },\r\n { value: '16:30', label: '16:30', intval: 1630 },\r\n { value: '16:45', label: '16:45', intval: 1645 },\r\n { value: '17:00', label: '17:00', intval: 1700 },\r\n { value: '17:15', label: '17:15', intval: 1715 },\r\n { value: '17:30', label: '17:30', intval: 1730 },\r\n { value: '17:45', label: '17:45', intval: 1745 },\r\n { value: '18:00', label: '18:00', intval: 1800 },\r\n { value: '18:15', label: '18:15', intval: 1815 },\r\n { value: '18:30', label: '18:30', intval: 1830 },\r\n { value: '18:45', label: '18:45', intval: 1845 },\r\n { value: '19:00', label: '19:00', intval: 1900 },\r\n { value: '19:15', label: '19:15', intval: 1915 },\r\n { value: '19:30', label: '19:30', intval: 1930 },\r\n { value: '19:45', label: '19:45', intval: 1945 },\r\n { value: '20:00', label: '20:00', intval: 2000 },\r\n { value: '20:15', label: '20:15', intval: 2015 },\r\n { value: '20:30', label: '20:30', intval: 2030 },\r\n { value: '20:45', label: '20:45', intval: 2045 },\r\n { value: '21:00', label: '21:00', intval: 2100 },\r\n { value: '21:15', label: '21:15', intval: 2115 },\r\n { value: '21:30', label: '21:30', intval: 2130 },\r\n { value: '21:45', label: '21:45', intval: 2145 },\r\n { value: '22:00', label: '22:00', intval: 2200 },\r\n { value: '22:15', label: '22:15', intval: 2215 },\r\n { value: '22:30', label: '22:30', intval: 2230 },\r\n { value: '22:45', label: '22:45', intval: 2245 },\r\n { value: '23:00', label: '23:00', intval: 2300 },\r\n { value: '23:15', label: '23:15', intval: 2315 },\r\n { value: '23:30', label: '23:30', intval: 2330 },\r\n { value: '23:45', label: '23:45', intval: 2345 },\r\n ]\r\n\r\n timePickerTimeListTo: any[] = [\r\n { value: '00:00', label: '00:00', intval: 0 },\r\n { value: '00:15', label: '00:15', intval: 15 },\r\n { value: '00:30', label: '00:30', intval: 30 },\r\n { value: '00:45', label: '00:45', intval: 45 },\r\n { value: '01:00', label: '01:00', intval: 100 },\r\n { value: '01:15', label: '01:15', intval: 115 },\r\n { value: '01:30', label: '01:30', intval: 130 },\r\n { value: '01:45', label: '01:45', intval: 145 },\r\n { value: '02:00', label: '02:00', intval: 200 },\r\n { value: '02:15', label: '02:15', intval: 215 },\r\n { value: '02:30', label: '02:30', intval: 230 },\r\n { value: '02:45', label: '02:45', intval: 245 },\r\n { value: '03:00', label: '03:00', intval: 300 },\r\n { value: '03:15', label: '03:15', intval: 315 },\r\n { value: '03:30', label: '03:30', intval: 330 },\r\n { value: '03:45', label: '03:45', intval: 345 },\r\n { value: '04:00', label: '04:00', intval: 400 },\r\n { value: '04:15', label: '04:15', intval: 415 },\r\n { value: '04:30', label: '04:30', intval: 430 },\r\n { value: '04:45', label: '04:45', intval: 445 },\r\n { value: '05:00', label: '05:00', intval: 500 },\r\n { value: '05:15', label: '05:15', intval: 515 },\r\n { value: '05:30', label: '05:30', intval: 530 },\r\n { value: '05:45', label: '05:45', intval: 545 },\r\n { value: '06:00', label: '06:00', intval: 600 },\r\n { value: '06:15', label: '06:15', intval: 615 },\r\n { value: '06:30', label: '06:30', intval: 630 },\r\n { value: '06:45', label: '06:45', intval: 645 },\r\n { value: '07:00', label: '07:00', intval: 700 },\r\n { value: '07:15', label: '07:15', intval: 715 },\r\n { value: '07:30', label: '07:30', intval: 730 },\r\n { value: '07:45', label: '07:45', intval: 745 },\r\n { value: '08:00', label: '08:00', intval: 800 },\r\n { value: '08:15', label: '08:15', intval: 815 },\r\n { value: '08:30', label: '08:30', intval: 830 },\r\n { value: '08:45', label: '08:45', intval: 845 },\r\n { value: '09:00', label: '09:00', intval: 900 },\r\n { value: '09:15', label: '09:15', intval: 915 },\r\n { value: '09:30', label: '09:30', intval: 930 },\r\n { value: '09:45', label: '09:45', intval: 945 },\r\n { value: '10:00', label: '10:00', intval: 1000 },\r\n { value: '10:15', label: '10:15', intval: 1015 },\r\n { value: '10:30', label: '10:30', intval: 1030 },\r\n { value: '10:45', label: '10:45', intval: 1045 },\r\n { value: '11:00', label: '11:00', intval: 1100 },\r\n { value: '11:15', label: '11:15', intval: 1115 },\r\n { value: '11:30', label: '11:30', intval: 1130 },\r\n { value: '11:45', label: '11:45', intval: 1145 },\r\n { value: '12:00', label: '12:00', intval: 1200 },\r\n { value: '12:15', label: '12:15', intval: 1215 },\r\n { value: '12:30', label: '12:30', intval: 1230 },\r\n { value: '12:45', label: '12:45', intval: 1245 },\r\n { value: '13:00', label: '13:00', intval: 1300 },\r\n { value: '13:15', label: '13:15', intval: 1315 },\r\n { value: '13:30', label: '13:30', intval: 1330 },\r\n { value: '13:45', label: '13:45', intval: 1345 },\r\n { value: '14:00', label: '14:00', intval: 1400 },\r\n { value: '14:15', label: '14:15', intval: 1415 },\r\n { value: '14:30', label: '14:30', intval: 1430 },\r\n { value: '14:45', label: '14:45', intval: 1445 },\r\n { value: '15:00', label: '15:00', intval: 1500 },\r\n { value: '15:15', label: '15:15', intval: 1515 },\r\n { value: '15:30', label: '15:30', intval: 1530 },\r\n { value: '15:45', label: '15:45', intval: 1545 },\r\n { value: '16:00', label: '16:00', intval: 1600 },\r\n { value: '16:15', label: '16:15', intval: 1615 },\r\n { value: '16:30', label: '16:30', intval: 1630 },\r\n { value: '16:45', label: '16:45', intval: 1645 },\r\n { value: '17:00', label: '17:00', intval: 1700 },\r\n { value: '17:15', label: '17:15', intval: 1715 },\r\n { value: '17:30', label: '17:30', intval: 1730 },\r\n { value: '17:45', label: '17:45', intval: 1745 },\r\n { value: '18:00', label: '18:00', intval: 1800 },\r\n { value: '18:15', label: '18:15', intval: 1815 },\r\n { value: '18:30', label: '18:30', intval: 1830 },\r\n { value: '18:45', label: '18:45', intval: 1845 },\r\n { value: '19:00', label: '19:00', intval: 1900 },\r\n { value: '19:15', label: '19:15', intval: 1915 },\r\n { value: '19:30', label: '19:30', intval: 1930 },\r\n { value: '19:45', label: '19:45', intval: 1945 },\r\n { value: '20:00', label: '20:00', intval: 2000 },\r\n { value: '20:15', label: '20:15', intval: 2015 },\r\n { value: '20:30', label: '20:30', intval: 2030 },\r\n { value: '20:45', label: '20:45', intval: 2045 },\r\n { value: '21:00', label: '21:00', intval: 2100 },\r\n { value: '21:15', label: '21:15', intval: 2115 },\r\n { value: '21:30', label: '21:30', intval: 2130 },\r\n { value: '21:45', label: '21:45', intval: 2145 },\r\n { value: '22:00', label: '22:00', intval: 2200 },\r\n { value: '22:15', label: '22:15', intval: 2215 },\r\n { value: '22:30', label: '22:30', intval: 2230 },\r\n { value: '22:45', label: '22:45', intval: 2245 },\r\n { value: '23:00', label: '23:00', intval: 2300 },\r\n { value: '23:15', label: '23:15', intval: 2315 },\r\n { value: '23:30', label: '23:30', intval: 2330 },\r\n { value: '23:45', label: '23:45', intval: 2345 },\r\n ]\r\n\r\n lunchTimeList: any[] = [\r\n { value: 0, label: '0' },\r\n { value: 15, label: '15' },\r\n { value: 20, label: '20' },\r\n { value: 30, label: '30' },\r\n { value: 45, label: '45' },\r\n { value: 60, label: '60' },\r\n ]\r\n\r\n constructor(private fb: FormBuilder, private calendarService: CalendarService, private signalRService: SignalrService, private userservice: UserService, private router: Router,\r\n private elementRef: ElementRef) {\r\n this.validationMessages = {\r\n month: {\r\n required: 'month is required'\r\n },\r\n startDate: {\r\n required: 'start is required'\r\n },\r\n endDate: {\r\n required: 'end is required'\r\n }\r\n };\r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n\r\n this.subscription = this.signalRService.receiveCalendarUpdates().subscribe(st => {\r\n if (st) {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n scheduler.refresh();\r\n }\r\n });\r\n\r\n this.resourceTypes = [];\r\n\r\n this.routeSubscription = this.router.events.subscribe((event: Event) => {\r\n this.currentURL = ''\r\n if (event instanceof NavigationStart) {\r\n this.currentURL = ''\r\n }\r\n if (event instanceof NavigationEnd) {\r\n this.currentURL = event.url.split('?')[0]\r\n\r\n if (\r\n (this.currentURL == '/users/calendar/inquiries') ||\r\n (this.currentURL == '/clients/calendar/inquiries') ||\r\n (this.currentURL == '/bookings/inquiries')\r\n ) {\r\n this.isInquiryCalendarSelected = true\r\n } else {\r\n this.isInquiryCalendarSelected = false\r\n }\r\n }\r\n })\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n // unsubscribe to ensure no memory leaks\r\n this.subscription.unsubscribe();\r\n this.newSelectedUserSub.unsubscribe()\r\n this.routeSubscription.unsubscribe();\r\n }\r\n\r\n onClickMakeInquiry():void{\r\n this.calendarService.emmitOnClickMakeInquiry();\r\n\r\n }\r\n\r\n setCustomVallidations() {\r\n const month = this.availabilityForm.get('month');\r\n const start = this.availabilityForm.get('startDate');\r\n const end = this.availabilityForm.get('endDate');\r\n\r\n this.availabilityForm.get('changeTypeId').valueChanges\r\n .subscribe(changeType => {\r\n if (changeType === '1') {\r\n month.setValidators([Validators.required]);\r\n start.clearValidators();\r\n end.clearValidators();\r\n } else if (changeType === '2') {\r\n start.setValidators([Validators.required]);\r\n end.setValidators([Validators.required]);\r\n month.clearValidators();\r\n } else if (changeType === '3') {\r\n start.setValidators([Validators.required]);\r\n month.clearValidators();\r\n end.clearValidators();\r\n }\r\n month.updateValueAndValidity();\r\n start.updateValueAndValidity();\r\n end.updateValueAndValidity();\r\n });\r\n\r\n }\r\n\r\n ngOnInit() {\r\n kendo.culture('sv-SE');\r\n this.currentDate.setHours(0, 0, 0, 0);\r\n this.allocation = {\r\n isExpAreaValidationFail: null,\r\n id: 0,\r\n title: '',\r\n sDate: '',\r\n eDate: '',\r\n lunch: 0,\r\n isPastDate: false,\r\n bookingTotal: 0,\r\n start: new Date(),\r\n end: new Date(),\r\n empName: '',\r\n empImage: '',\r\n empJobCategoryId: 0,\r\n empJobCategory: '',\r\n clientName: '',\r\n clientContactName: '',\r\n clientAddress: '',\r\n clientPhone: '',\r\n clientEmail: '',\r\n isTimeLogged: false,\r\n timeLogStartTime: '',\r\n timeLogEndTime: '',\r\n timeLogLunch: 0,\r\n timeLogTotal: 0,\r\n colorClass: 'slot-blue',\r\n timeLoggedClass: 'slot-no-check',\r\n empImagePath: '',\r\n clientImagePath: '',\r\n resourceTypeId: 1,\r\n resourceTypeClass: '',\r\n isInquiry: null,\r\n clientId: '',\r\n resourceTypeIconLetter: ''\r\n };\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.newSelectedUserSub = this.userservice.newSelectedUser.subscribe((data) => {\r\n this.loadCalendar(data);\r\n })\r\n this.getCurrentConfigData();\r\n }\r\n\r\n\r\n getJsonDateFormat(date: Date): string {\r\n return date.getFullYear() + '' + (date.getMonth() + 1 > 9 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1))\r\n }\r\n\r\n loadCalendar(data: any): void {\r\n // Values when tab select\r\n // 1 - Phamacists\r\n // 2 - Cashiers\r\n // null - Clients\r\n\r\n // Userdata when user selects\r\n // { \r\n // userId,\r\n // userType,\r\n // fullName,\r\n // actualHoursBooked,\r\n // totalCalculatedHours\r\n // }\r\n var reloadRequired = true;\r\n if (data != null) {\r\n // if (data == 1 || data == 2 || this.userId === data.userId) {\r\n if (typeof (data) == \"number\" || this.userId === data.userId) {\r\n this.userId = 'all';\r\n this.selectedUserFullName = null;\r\n // $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n // $('.k-scheduler-table td').removeClass('cell-celected');\r\n\r\n // Set resource type for availability request according to the tab selected\r\n // if (data == 1) {\r\n // reloadRequired = false\r\n // this.onResourceTypeChange('1');\r\n // } else if (data == 2) {\r\n // reloadRequired = false\r\n // this.onResourceTypeChange('2');\r\n // } else {\r\n // // Code will reach here when user deselect - set resource type to null(Same as Client tab selected)\r\n // this.resourceTypeForAvalReq = null;\r\n // }\r\n // this.userservice.emmitSelectedUserId({ id: this.userId, type: 'all' })\r\n this.selectedUserType.next('all')\r\n } else {\r\n // Uncomment following block to reset resource type to 1st resource on user select\r\n if (data.userType == \"Client\" && this.userId == 'all') {\r\n this.selectedResourceTypeId = 1;\r\n // this.resourceTypeForAvalReq = '1';\r\n }\r\n\r\n this.userId = data.userId;\r\n this.selectedUserFullName = data.fullName;\r\n this.selectedUserAllocationTimes = data.totalCalculatedHours + '/' + data.actualHoursBooked;\r\n this.userType = data.userType;\r\n\r\n //\r\n // this.userservice.emmitSelectedUserId({ id: this.userId, type: this.userType })\r\n this.selectedUserType.next(data.userType)\r\n }\r\n } else {\r\n this.userId = 'all';\r\n this.selectedUserFullName = null;\r\n // $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n // $('.k-scheduler-table td').removeClass('cell-celected');\r\n // this.userservice.emmitSelectedUserId({ id: this.userId, type: 'all' })\r\n this.selectedUserType.next('all')\r\n\r\n // reloadRequired = false\r\n // this.onResourceTypeChange('3');\r\n }\r\n\r\n // this.userId = data.userId;\r\n // if (!this.isInquiryCalendarSelected && reloadRequired) {\r\n // const scheduler = $('#scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n // scheduler.refresh();\r\n // }\r\n }\r\n\r\n openDeleteConfirmModal(allocationId: number): void {\r\n this.updateAllocationId = allocationId;\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n ($('#allocationDeleteModal') as any).modal('show');\r\n }\r\n\r\n removeAllocation(): void {\r\n ($('#allocationDeleteModal') as any).modal('hide');\r\n\r\n this.calendarService.removeAllocation(this.updateAllocationId).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n scheduler.refresh();\r\n this.setNotificationData('remove', status, this.allocation.isInquiry ? 'inquiry' : 'booking');\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n getEmployeeList(allocationId: number, allocation): void {\r\n this.swapUserForm.patchValue({\r\n allocationId\r\n });\r\n var dataObj = {\r\n clientId: allocation.clientId,\r\n employeeId: null,\r\n endDate: allocation.end,\r\n isInquiry: true,\r\n resourceTypeId: this.selectedResourceTypeId,\r\n startDate: allocation.start,\r\n weekdayEnd: allocation.eDate.slice(11, 16),\r\n weekdayStart: allocation.sDate.slice(11, 16),\r\n weekdayLunch: allocation.lunch,\r\n weekendEnd: null,\r\n weekendLunch: null,\r\n weekendStart: null\r\n }\r\n this.userservice.getInquiryAssignUserList(dataObj).subscribe(\r\n (userList: IUserInfo[]) => {\r\n this.swapUserList = userList;\r\n this.isSwapEmployeeSelected = true;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n updateSwap(isInquiry: boolean): void {\r\n if (this.swapUserForm.get('swapUserId').value) {\r\n if (this.swapUserForm.get('swapType').value == 1 || isInquiry) {\r\n this.swapUserForm.patchValue({\r\n isInquiry: isInquiry\r\n });\r\n if (isInquiry) {\r\n this.swapUserForm.patchValue({\r\n swapType: '1'\r\n });\r\n }\r\n\r\n this.calendarService.swapAllocationEmployee(this.swapUserForm.value).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n scheduler.refresh();\r\n\r\n this.swapUserForm.patchValue({\r\n swapUserId: [],\r\n isInquiry: []\r\n });\r\n\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n this.setNotificationData('swap', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n } else if (this.swapUserForm.get('swapType').value == 2) {\r\n\r\n var dataObject\r\n this.swapUserList.find((obj) => {\r\n if (obj.value == this.swapUserForm.get('swapUserId').value) {\r\n dataObject = {\r\n alliocationId: this.allocation.id,\r\n employeeId: this.allocation.empName,\r\n swapWithAllocationId: this.swapUserForm.get('swapUserId').value,\r\n swapWithEmployeeId: obj.employeeId,\r\n }\r\n }\r\n })\r\n this.calendarService.onSameDaySwapEmployees(dataObject).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n scheduler.refresh();\r\n\r\n this.swapUserForm.patchValue({\r\n swapUserId: [],\r\n isInquiry: []\r\n });\r\n\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n this.setNotificationData('swap', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n }\r\n updateAllocationTimeLogs(): void {\r\n\r\n\r\n const validator = ($('#allocationTimeLogsFormContent') as any).kendoValidator().data('kendoValidator');\r\n if (validator.validate()) {\r\n const timeLogsForm = this.allocationTimeLogsForm;\r\n const timeLogModel = {} as TimeLogModel;\r\n timeLogModel.allocationId = timeLogsForm.get('allocationId').value;\r\n timeLogModel.startTime = timeLogsForm.get('startTime').value;\r\n timeLogModel.endTime = timeLogsForm.get('endTime').value;\r\n timeLogModel.lunch = timeLogsForm.get('lunchTime').value;\r\n\r\n var day = 60 * 60 * 24 * 1000;\r\n var isAllocationDateHoliday = this.calendarService.isHoliday(this.allocation.start);\r\n var nextDate = new Date(this.allocation.start.getTime() + day);\r\n var prevDate = new Date(this.allocation.start.getTime() - day);\r\n var isNextDateHoliday = this.calendarService.isHoliday(nextDate);\r\n var isPrevDateHoliday = this.calendarService.isHoliday(prevDate);\r\n\r\n //var holidayStr: string = isAllocationDateHoliday ? 'Holiday' : ((isNextDateHoliday && isPrevDateHoliday) ? 'InBetween' : (isPrevDateHoliday ? 'AfterHoliday' : (isNextDateHoliday ? 'BeforeHoliday' : 'NotHoliday')));\r\n\r\n var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n var holidayStr: string = isAllocationDateHoliday ? 'Holiday' :\r\n ((isNextDateHoliday && !isAllocationDateHoliday) ? 'DayBeforeHoliday' : (\r\n (isPrevDateHoliday && !isAllocationDateHoliday) ? 'DayAfterHoliday' : days[this.allocation.start.getDay()])); // 0 = Sunday, 6 = Saturday\r\n\r\n timeLogModel.holidays = holidayStr;\r\n\r\n this.calendarService.updateTimeLogs(timeLogModel).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.setNotificationData('timelog', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');;\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n\r\n requestAllocation(): void {\r\n\r\n this.isBookingFromPartialAvailability = false;\r\n\r\n const validator = ($('#allocationFormContent') as any).kendoValidator().data('kendoValidator');\r\n if (validator.validate()) {\r\n this.allocationForm.patchValue({\r\n clientId: this.userId,\r\n isInquiry: !this.isBookingSelected\r\n });\r\n\r\n this.calendarService.requestAdminAllocations(this.allocationForm.value).subscribe(\r\n (allocationInfo: BookingInfo) => {\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n ($('#requestAllocationModal') as any).modal('hide');\r\n this.onAllocationRequestComplete(allocationInfo, this.allocationForm.value);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n\r\n onAllocationRequestComplete(allocationInfo: BookingInfo, allocationForm: AlliocationModel): void {\r\n\r\n $('#kendo-end-date').data('kendoDatePicker').value('');\r\n $('#kendo-wd-start').data('kendoTimePicker').value('');\r\n $('#kendo-wd-end').data('kendoTimePicker').value('');\r\n\r\n\r\n\r\n if (allocationInfo != null) {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.allocation = allocationInfo;\r\n\r\n this.isSwapEmployeeSelected = false;\r\n ($('#employeeBookingModal') as any).modal('show');\r\n this.signalRService.broadcastCalendarUpdates();\r\n\r\n this.IsOnChangeEvent = true\r\n this.allocationForm.patchValue({\r\n startDate: '',\r\n endDate: '',\r\n weekdayStart: '',\r\n weekdayEnd: '',\r\n weekdayLunch: 0,\r\n employeeId: ''\r\n });\r\n\r\n } else {\r\n this.calendarService.getPartialAvailabilityList(allocationForm).subscribe(\r\n (partialList: PartialAvailabilityInfo[]) => {\r\n if (partialList != null && partialList.length > 0) {\r\n this.partialAvailableListForDay = partialList;\r\n this.allocationTryDate = allocationForm.startDate;\r\n this.allocationTryLunch = allocationForm.weekdayLunch;\r\n this.allocationTryTime = allocationForm.weekdayStart + '-' + allocationForm.weekdayEnd;\r\n ($('#partialAvailabilityListModal') as any).modal('show');\r\n } else {\r\n this.setNotificationData('booking', false);\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n this.calendarService.emmitUserListAction('refresh');;\r\n }\r\n\r\n updateAvailability(): void {\r\n ($('#updateAvailabilityModal') as any).modal('hide');\r\n\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n const container = scheduler.view().element;\r\n const cells = container.find('td[role=gridcell]');\r\n this.availabilityCheckDates = [];\r\n\r\n for (let i = 0; i < cells.length; i++) {\r\n const cell = $(cells[i]);\r\n const slot = scheduler.slotByElement(cell);\r\n const avl = {} as AvailabilityModel;\r\n avl.category = scheduler.view().name;\r\n avl.startTime = slot.startDate;\r\n avl.endTime = slot.endDate;\r\n avl.startTimeString = avl.startTime.getFullYear() + '-' + (avl.startTime.getMonth() + 1) + '-' + avl.startTime.getDate();\r\n avl.endTimeString = avl.endTime.getFullYear() + '-' + (avl.endTime.getMonth() + 1) + '-' + avl.endTime.getDate();\r\n avl.resourceTypeId = this.selectedResourceTypeId;\r\n this.availabilityCheckDates.push(avl);\r\n }\r\n\r\n const avlForm = this.availabilityForm;\r\n\r\n this.availabilityUpdateModel = {} as AvailabilityUpdateModel;\r\n this.availabilityUpdateModel.changeType = avlForm.get('changeTypeId').value;\r\n this.availabilityUpdateModel.month = avlForm.get('month').value;\r\n this.availabilityUpdateModel.fromDate = avlForm.get('startDate').value;\r\n this.availabilityUpdateModel.toDate = avlForm.get('endDate').value;\r\n this.availabilityUpdateModel.availability = avlForm.get('availabilityId').value;\r\n this.availabilityUpdateModel.dateList = this.availabilityCheckDates;\r\n this.availabilityUpdateModel.employeeId = this.userId;\r\n\r\n if (this.availabilityUpdateModel.changeType === '1') {\r\n const month = this.availabilityUpdateModel.month;\r\n this.availabilityUpdateModel.monthString = month.getFullYear() + '-' + (month.getMonth() + 1) + '-' + month.getDate();\r\n } else if (this.availabilityUpdateModel.changeType === '2') {\r\n const fromDate = this.availabilityUpdateModel.fromDate;\r\n const toDate = this.availabilityUpdateModel.toDate;\r\n this.availabilityUpdateModel.fromDateString = fromDate.getFullYear() + '-' + (fromDate.getMonth() + 1) + '-' + fromDate.getDate();\r\n this.availabilityUpdateModel.toDateString = toDate.getFullYear() + '-' + (toDate.getMonth() + 1) + '-' + toDate.getDate();\r\n } else {\r\n const fromDate = this.availabilityUpdateModel.fromDate;\r\n this.availabilityUpdateModel.fromDateString = fromDate.getFullYear() + '-' + (fromDate.getMonth() + 1) + '-' + fromDate.getDate();\r\n }\r\n\r\n this.calendarService.updateAvailability(this.availabilityUpdateModel).subscribe(\r\n (avlData: AvailabilityInfo[]) => {\r\n //this.initializeForms();\r\n //this.setCustomVallidations();\r\n $('#kendo-avl-month').data('kendoDatePicker').value('');\r\n $('#kendo-avl-start-date').data('kendoDatePicker').value('');\r\n $('#kendo-avl-end-date').data('kendoDatePicker').value('');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.setNotificationData('availability', true);\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n }\r\n\r\n setNotificationData(flow, status, type?): void {\r\n if (flow === 'booking') {\r\n this.notificationModal.header = 'Bokning misslyckades';\r\n this.notificationModal.description = 'Tyvärr så kunde vi inte hitta en tillgänglig resurs för det valda datumet';\r\n this.notificationModal.type = 'danger';\r\n } else if (flow === 'swap') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Byte av resurs genomfördes';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Byte av resurs misslyckades! Kontrollera anställdas tillgänglighet';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'remove') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = type == 'inquiry' ? 'Förfrågan raderades' : 'Bokningen raderades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Borttaggning av ' + (type == 'inquiry' ? 'förfrågan ' : 'bokningen') + ' misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'availability') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tillgänglighet uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tillgänglighet misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'timelog') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tidrapportering uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'TUppdatering av tidrapportering misslyckades! Var god och försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'partialavl') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tillgänglighet uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tillgänglighet misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'assign') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';// Success\r\n this.notificationModal.description = 'Den anställde tilldelades förfrågan och e-post skickades. '; //'Employee was assigned successfully for inquiry and email sent.';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; //'Failed';\r\n this.notificationModal.description = 'Tilldelning av passet till den anställda misslyckades. Vänligen försök igen. '; //'Employee assign process failed! Please try again.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'timeupdate') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';// Success\r\n this.notificationModal.description = 'Booking time slot has been updated';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; //'Failed';\r\n this.notificationModal.description = 'Booking time slot updating failed! Please try again.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'inquiry') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';// Success\r\n this.notificationModal.description = 'Inquiry added successfully!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; //'Failed';\r\n this.notificationModal.description = 'Inquiry adding failed! Please try again.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#notificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#notificationModal') as any).modal('hide');\r\n }, 3000);\r\n }\r\n\r\n\r\n scrollToHour(hour): void {\r\n const time = new Date();\r\n time.setHours(hour);\r\n time.setMinutes(0);\r\n time.setSeconds(0);\r\n time.setMilliseconds(0);\r\n\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n const contentDiv = scheduler.element.find('div.k-scheduler-content');\r\n const rows = contentDiv.find('tr');\r\n\r\n for (let i = 0; i < rows.length; i++) {\r\n const element = $(rows[i]);\r\n const slot = scheduler.slotByElement(element);\r\n\r\n const slotTime = kendo.toString(slot.startDate, 'HH:mm');\r\n const targetTime = kendo.toString(time, 'HH:mm');\r\n\r\n if (targetTime === slotTime) {\r\n contentDiv.scrollTop(0);\r\n\r\n const elementTop = element.offset().top;\r\n const containerTop = contentDiv.offset().top;\r\n\r\n contentDiv.scrollTop(elementTop - containerTop);\r\n }\r\n }\r\n }\r\n\r\n\r\n bookFromPartialAvailability(partialAvailabilityData: PartialAvailabilityInfo): void {\r\n ($('#partialAvailabilityListModal') as any).modal('hide');\r\n this.allocationForm.patchValue({\r\n startDate: this.allocationTryDate,\r\n endDate: this.allocationTryDate,\r\n weekdayStart: partialAvailabilityData.fromTime,\r\n weekdayEnd: partialAvailabilityData.toTime,\r\n weekdayLunch: this.allocationTryLunch,\r\n isPartialBooking: true\r\n });\r\n\r\n $('#kendo-end-date').data('kendoDatePicker').value(this.allocationTryDate);\r\n $('#kendo-end-date').data('kendoDatePicker').enable(false);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(partialAvailabilityData.fromTime);\r\n $('#kendo-wd-start').data('kendoTimePicker').enable(false);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(partialAvailabilityData.toTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').enable(false);\r\n\r\n this.isBookingFromPartialAvailability = true;\r\n ($('#requestAllocationModal') as any).modal('show');\r\n }\r\n\r\n onResourceTypeChange(resourceTypeId: number): void {\r\n this.calendarService.emmitOnResourceTypeChange(resourceTypeId);\r\n // if (resourceTypeId!=='3') {\r\n // this.selectedResourceTypeId = resourceTypeId;\r\n // } else {\r\n // this.selectedResourceTypeId = '1';\r\n // }\r\n\r\n this.selectedResourceTypeId = resourceTypeId;\r\n\r\n // if (resourceTypeId!=='3') {\r\n // this.resourceTypeForAvalReq = null;\r\n // this.availabilityCheckDates.forEach(x => x.resourceTypeId = this.resourceTypeForAvalReq);\r\n // const scheduler = $('#scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n // } else {\r\n // this.selectedResourceTypeId = resourceTypeId;\r\n // this.resourceTypeForAvalReq = resourceTypeId;\r\n // this.allocationForm.patchValue({\r\n // resourceTypeId: resourceTypeId\r\n // });\r\n // this.availabilityCheckDates.forEach(x => x.resourceTypeId = this.resourceTypeForAvalReq);\r\n // const scheduler = $('#scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n // }\r\n }\r\n\r\n onSelectSwapType(swapType: number): void {\r\n // this.swapUserForm.reset()\r\n if (swapType == 1) {\r\n $('.availBtn').removeClass('btn-secondary')\r\n $('.availBtn').addClass('btn-primary')\r\n $('.sameDayBtn').removeClass('btn-primary')\r\n $('.sameDayBtn').addClass('btn-secondary')\r\n this.swapUserForm.patchValue({\r\n swapType: 1\r\n })\r\n this.getAvailableSwapEmployees(this.allocation.id)\r\n } else if (swapType == 2) {\r\n $('.sameDayBtn').removeClass('btn-secondary')\r\n $('.sameDayBtn').addClass('btn-primary')\r\n $('.availBtn').removeClass('btn-primary')\r\n $('.availBtn').addClass('btn-secondary')\r\n this.swapUserForm.patchValue({\r\n swapType: 2\r\n })\r\n this.getSameDaySwapEmployees()\r\n }\r\n this.swapAccessed = true\r\n }\r\n\r\n getAvailableSwapEmployees(allocationId: number): void {\r\n this.swapUserForm.patchValue({\r\n swapUserId: null,\r\n allocationId: this.allocation.id\r\n });\r\n this.calendarService.getAllocationSwapUserList(allocationId).subscribe(\r\n (userList: IUserInfo[]) => {\r\n this.swapUserList = userList;\r\n for (let [key, value] of Object.entries(this.swapUserList)) {\r\n value['value'] = value.userId;\r\n value['label'] = value.fullName;\r\n }\r\n // let firstUserId = this.swapUserList.length>0? this.swapUserList[0].value:''\r\n // this.swapUserForm.patchValue({\r\n // swapUserId:firstUserId\r\n // })\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n getSameDaySwapEmployees(): void {\r\n this.swapUserForm.patchValue({\r\n swapUserId: null,\r\n allocationId: this.allocation.id\r\n })\r\n var dataset = {\r\n allocationId: this.allocation.id,\r\n startDate: this.allocation.sDate,\r\n endDate: this.allocation.eDate,\r\n clientId: this.allocation.clientId\r\n }\r\n this.calendarService.getSameDaySwapEmployeesList(dataset).subscribe(\r\n (userList: IUserInfo[]) => {\r\n this.swapUserList = userList;\r\n // let firstUserId = this.swapUserList.length>0? this.swapUserList[0].value:''\r\n // this.swapUserForm.patchValue({\r\n // swapUserId:firstUserId\r\n // })\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n onSwapBtnClick() {\r\n this.isSwapEmployeeSelected = true;\r\n }\r\n onEditAllocationTimes(): void {\r\n if ($('#partialTimeUpdateNotifyModal')) {\r\n ($('#partialTimeUpdateNotifyModal') as any).modal('hide');\r\n }\r\n if (this.isPartialBooking) {\r\n ($('#employeeBookingModal') as any).modal('show');\r\n }\r\n var startTimeStr = this.allocation.sDate.substring(11, 16);\r\n var endTimeStr = this.allocation.eDate.substring(11, 16);\r\n\r\n this.allocationTimeUpdateForm.patchValue({\r\n allocationId: this.allocation.id,\r\n startDate: startTimeStr,\r\n endDate: endTimeStr,\r\n lunchTime: this.allocation.lunch\r\n })\r\n this.isAllocationTimeEdit = true\r\n }\r\n\r\n onUpdateAllocationTimes(): void {\r\n var allocationDate = this.allocation.sDate\r\n var newStartDate = allocationDate.substring(0, 11) + this.allocationTimeUpdateForm.get('startDate').value + allocationDate.substring(16, allocationDate.length);\r\n var newEndDate = allocationDate.substring(0, 11) + this.allocationTimeUpdateForm.get('endDate').value + allocationDate.substring(16, allocationDate.length);\r\n\r\n var dataObj = {\r\n allocationId: this.allocation.id,\r\n startDate: newStartDate,\r\n endDate: newEndDate,\r\n lunch: this.allocationTimeUpdateForm.get('lunchTime').value,\r\n weekdayStart: this.allocationTimeUpdateForm.get('startDate').value,\r\n weekdayEnd: this.allocationTimeUpdateForm.get('endDate').value,\r\n };\r\n\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n this.calendarService.updateAllocationTime(dataObj).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.setNotificationData('timeupdate', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n )\r\n }\r\n\r\n setCommonTimes(item): void {\r\n this.allocationForm.patchValue({\r\n weekdayStart: item.startTime,\r\n weekdayEnd: item.endTime,\r\n weekdayLunch: item.lunch,\r\n });\r\n // $('#kendo-start-date').data('kendoDatePicker').value(eventStartDate);\r\n // $('#kendo-end-date').data('kendoDatePicker').value(item.endDate);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(item.startTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(item.endTime);\r\n }\r\n\r\n onViewHistoryBtnClick(allocationId: number) {\r\n this.toggleSendRequest();\r\n if (this.sendRequest) {\r\n this.calendarService.getAllocationHistory(allocationId).subscribe(\r\n (res) => {\r\n this.allocationHistory = res;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n }\r\n toggleSendRequest() {\r\n this.sendRequest = !this.sendRequest\r\n }\r\n\r\n onCalendarChange(calendar: string): void {\r\n if (calendar === 'inquiry') {\r\n this.isInquiryCalendarSelected = true\r\n } else {\r\n this.isInquiryCalendarSelected = false;\r\n this.selectedResourceTypeId = 1;\r\n }\r\n }\r\n onMobileTabSelect(event) {\r\n if (event == 'userlist') {\r\n $('#myTab').css('display', 'flex')\r\n $('#myTabContent').css('display', 'block')\r\n } else if (event == 'bookings') {\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n $('.btn-calendar-booking').click()\r\n } else if (event == 'inquiry') {\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n $('.btn-calendar-inquiry').click()\r\n }\r\n }\r\n\r\n addInquiryOnpartial(allocationData) {\r\n this.allocationForm.patchValue({\r\n clientId: this.userId,\r\n isInquiry: true\r\n });\r\n this.calendarService.requestAdminAllocations(this.allocationForm.value).subscribe(\r\n (allocationInfo: BookingInfo) => {\r\n if (allocationInfo != null) {\r\n ($('#partialAvailabilityListModal') as any).modal('hide');\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.setNotificationData('inquiry', true);\r\n this.allocationForm.patchValue({\r\n startDate: '',\r\n endDate: '',\r\n weekdayStart: '',\r\n weekdayEnd: '',\r\n weekdayLunch: 0,\r\n employeeId: ''\r\n });\r\n this.calendarService.emmitUserListAction('refresh');;\r\n } else {\r\n this.setNotificationData('inquiry', false);\r\n }\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n // this.onAllocationRequestComplete(allocationInfo, this.allocationForm.value);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n openProfileViewModal(event) {\r\n this.employeeProfileId.next(event);\r\n\r\n }\r\n\r\n onClickMakeBooking() {\r\n this.calendarService.emmitOnClickMakeBooking();\r\n\r\n // this.clientCommonTimes = []\r\n // if (this.isBookingSelected) {\r\n // this.calendarService.getClientCommonTimes(this.userId).subscribe((response) => {\r\n // this.clientCommonTimes = response;\r\n // this.setAvailableEmployees(); \r\n // })\r\n // }else{\r\n // this.setAvailableEmployees();\r\n // }\r\n }\r\n\r\n onClickMakeLongBooking() {\r\n this.calendarService.emmitOnClickMakeLongBooking(true);\r\n }\r\n\r\n setAvailableEmployees() {\r\n if (!this.IsOnChangeEvent) {\r\n if (this.userType && this.userType === 'Client' && this.userId != 'all' && this.isBookingSelected) {\r\n this.allocationForm.patchValue({\r\n clientId: this.userId,\r\n isInquiry: !this.isBookingSelected\r\n });\r\n this.calendarService.getAvailableEmployees(this.allocationForm.value).subscribe((availableEmpList) => {\r\n if (availableEmpList) {\r\n this.availableEmployees = availableEmpList\r\n if (availableEmpList.length > 0) {\r\n var preSystemSelectedEmployee = availableEmpList.find(element => {\r\n return element.isDefaultMatched == true\r\n });\r\n }\r\n if (preSystemSelectedEmployee) {\r\n setTimeout(() => {\r\n this.allocationForm.get(\"employeeId\").setValue(preSystemSelectedEmployee.value);\r\n }, 200);\r\n }\r\n } else {\r\n this.allocationForm.patchValue({\r\n employeeId: '',\r\n });\r\n this.availableEmployees = []\r\n }\r\n ($('#requestAllocationModal') as any).modal('show');\r\n })\r\n } else {\r\n ($('#requestAllocationModal') as any).modal('show');\r\n }\r\n }\r\n this.IsOnChangeEvent = false;\r\n }\r\n showEditAllocationTime() {\r\n if (this.isPartialBooking) {\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n ($('#partialTimeUpdateNotifyModal') as any).modal('show');\r\n } else {\r\n this.onEditAllocationTimes();\r\n }\r\n }\r\n rejectTimeEditModal() {\r\n ($('#partialTimeUpdateNotifyModal') as any).modal('hide');\r\n ($('#employeeBookingModal') as any).modal('show');\r\n }\r\n\r\n setMinToTime() {\r\n var currentFromTime = this.partialAvailabilityForm.get('avlStart').value\r\n this.timePickerTimeList.forEach((item) => {\r\n if (item.value == currentFromTime) {\r\n this.disableLessThan(item.intval);\r\n }\r\n })\r\n }\r\n\r\n setMaxFromTime() {\r\n var currentToTime = this.partialAvailabilityForm.get('avlEnd').value\r\n this.timePickerTimeListFrom.forEach((item) => {\r\n if (item.value == currentToTime) {\r\n this.disableGreaterThan(item.intval);\r\n }\r\n })\r\n }\r\n\r\n disableLessThan(CurrentFrom) {\r\n this.timePickerTimeListTo.forEach((item) => {\r\n if (item.intval <= CurrentFrom) {\r\n item.disabled = true;\r\n } else {\r\n item.disabled = false;\r\n }\r\n })\r\n }\r\n disableGreaterThan(CurrentTo) {\r\n this.timePickerTimeListFrom.forEach((item) => {\r\n if (item.intval >= CurrentTo) {\r\n item.disabled = true;\r\n } else {\r\n item.disabled = false;\r\n }\r\n })\r\n }\r\n\r\n getCurrentConfigData(): void {\r\n this.userservice.getConfigData().subscribe((res) => {\r\n this.resourceTypes = res.resourceTypes\r\n\r\n })\r\n }\r\n}\r\n","module.exports = \".slot-yellow {\\r\\n background-color: yellow !important;\\r\\n color: red;\\r\\n cursor: pointer;\\r\\n padding-bottom: 6px;\\r\\n }\\r\\n \\r\\n \\r\\n .slot-blue {\\r\\n background-color: #53afea !important;\\r\\n cursor: pointer;\\r\\n }\\r\\n \\r\\n \\r\\n .slot-orange {\\r\\n background-color: orange !important;\\r\\n cursor: pointer;\\r\\n padding-bottom: 6px;\\r\\n }\\r\\n \\r\\n \\r\\n .slot-no-check{\\r\\n display: none;\\r\\n cursor: pointer;\\r\\n }\\r\\n \\r\\n \\r\\n .form-control-style {\\r\\n height: calc(1.5em + .75rem + 2px)\\r\\n }\\r\\n \\r\\n \\r\\n .resrcgrpbtn {\\r\\n background-color: #1CA368;\\r\\n border-color: #1CA368 !important;\\r\\n color: white;\\r\\n }\\r\\n \\r\\n \\r\\n .btn-light {\\r\\n background-color: #cdd4cf;\\r\\n }\\r\\n \\r\\n \\r\\n .display-none {\\r\\n display: none;\\r\\n }\\r\\n \\r\\n \\r\\n #btnPharmacistSm {\\r\\n margin-left: 5px;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2FsZW5kYXIvYWRtaW4taW5xdWlyeS1jYWxlbmRhci9hZG1pbi1pbnF1aXJ5LWNhbGVuZGFyLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxtQ0FBbUM7SUFDbkMsVUFBVTtJQUNWLGVBQWU7SUFDZixtQkFBbUI7RUFDckI7OztFQUdBO0lBQ0Usb0NBQW9DO0lBQ3BDLGVBQWU7RUFDakI7OztFQUVBO0lBQ0UsbUNBQW1DO0lBQ25DLGVBQWU7SUFDZixtQkFBbUI7RUFDckI7OztFQUNBO0lBQ0UsYUFBYTtJQUNiLGVBQWU7RUFDakI7OztFQUVBO0lBQ0U7RUFDRjs7O0VBRUE7SUFDRSx5QkFBeUI7SUFDekIsZ0NBQWdDO0lBQ2hDLFlBQVk7RUFDZDs7O0VBRUE7SUFDRSx5QkFBeUI7RUFDM0I7OztFQUdBO0lBQ0UsYUFBYTtFQUNmOzs7RUFFQTtJQUNFLGdCQUFnQjtFQUNsQiIsImZpbGUiOiJzcmMvYXBwL2NhbGVuZGFyL2FkbWluLWlucXVpcnktY2FsZW5kYXIvYWRtaW4taW5xdWlyeS1jYWxlbmRhci5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNsb3QteWVsbG93IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdyAhaW1wb3J0YW50O1xyXG4gICAgY29sb3I6IHJlZDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHBhZGRpbmctYm90dG9tOiA2cHg7XHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIC5zbG90LWJsdWUge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzUzYWZlYSAhaW1wb3J0YW50O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIH1cclxuICBcclxuICAuc2xvdC1vcmFuZ2Uge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlICFpbXBvcnRhbnQ7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNnB4O1xyXG4gIH1cclxuICAuc2xvdC1uby1jaGVja3tcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgfVxyXG4gIFxyXG4gIC5mb3JtLWNvbnRyb2wtc3R5bGUge1xyXG4gICAgaGVpZ2h0OiBjYWxjKDEuNWVtICsgLjc1cmVtICsgMnB4KVxyXG4gIH1cclxuICBcclxuICAucmVzcmNncnBidG4ge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFDQTM2ODtcclxuICAgIGJvcmRlci1jb2xvcjogIzFDQTM2OCAhaW1wb3J0YW50O1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gIH1cclxuICBcclxuICAuYnRuLWxpZ2h0IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNjZGQ0Y2Y7XHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIC5kaXNwbGF5LW5vbmUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcbiAgXHJcbiAgI2J0blBoYXJtYWNpc3RTbSB7XHJcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xyXG4gIH0iXX0= */\"","import { Component, OnInit, AfterViewInit, ElementRef, ViewChildren, OnDestroy, Input } from '@angular/core';\r\nimport * as jQuery from 'jQuery';\r\nimport { CalendarService } from './../calendar.service';\r\nimport { AllocationInfo } from './../allocation-info';\r\nimport { AvailabilityModel } from './../availability-model';\r\nimport { AvailabilityInfo } from './../availability-info';\r\nimport { BookingInfo } from './../booking-info';\r\nimport { IUserInfo } from '../../user/user-info';\r\nimport { FormBuilder, FormGroup, Validators, FormControlName } from '@angular/forms';\r\nimport { TimeLogModel } from './../time-log-model';\r\nimport { ClientBookingInfo } from './../client-booking-info';\r\nimport { AvailabilityUpdateModel } from './../availability-update-model';\r\nimport { GenericValidator } from '../../shared/generic-validator';\r\nimport { Observable, fromEvent, merge, Subscription, Subject } from 'rxjs';\r\nimport { debounceTime, filter } from 'rxjs/operators';\r\nimport { PartialAvailabilityModel } from './../partial-availability-model';\r\nimport { PartialAvailabilityInfo } from '.././partial-availability-info';\r\nimport { AlliocationModel } from './../alliocation-model';\r\nimport { UserService } from '../../user/user.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { SignalrService } from 'src/app/shared/services/common/signalr.service';\r\nimport SwedishHolidays from 'src/app/shared/constants/swedishHolidays';\r\ndeclare var kendo: any;\r\n\r\n@Component({\r\n selector: 'wfm-admin-inquiry-calendar',\r\n templateUrl: './admin-inquiry-calendar.component.html',\r\n styleUrls: ['./admin-inquiry-calendar.component.css']\r\n})\r\nexport class AdminInquiryCalendarComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n\r\n @Input() selectedUserId: Subject\r\n @Input() selectedUserType: Subject\r\n\r\n showExpAreaDetails: boolean;\r\n swedishHolidays: typeof SwedishHolidays;\r\n role: string\r\n userId: string = ''\r\n userType: string = 'all'\r\n availabilityCheckDates: AvailabilityModel[];\r\n errorMessage: string;\r\n allocation: BookingInfo;\r\n visibleTimeLogs = false;\r\n updateAllocationId: number;\r\n isSwapEmployeeSelected: boolean;\r\n swapUserList: any[];\r\n swapUserForm: FormGroup;\r\n allocationTimeLogsForm: FormGroup;\r\n allocationForm: FormGroup;\r\n allocationTimeUpdateForm: FormGroup;\r\n selectedUserFullName: string;\r\n notificationModal: any;\r\n availabilityForm: FormGroup;\r\n availabilityUpdateModel: AvailabilityUpdateModel;\r\n currentDate = new Date();\r\n isWeekend = true;\r\n displayValidationMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n subscription: Subscription;\r\n partialAvailabilityForm: FormGroup;\r\n selectedPartialAvlDate: string;\r\n partialAvailableListForDay: PartialAvailabilityInfo[];\r\n allocationTryDate: Date;\r\n allocationTryTime: string;\r\n allocationTryLunch: number;\r\n selectedResourceTypeId = 1;\r\n resourceTypes: any[];\r\n selectedCalendarMonth: Subject = new Subject();\r\n availabilityData: AvailabilityInfo[];\r\n isBookingSelected = true;\r\n isBookingFromPartialAvailability: boolean = false;\r\n holidayLastMonth: string\r\n availableEmployees: any[] = []\r\n preSystemSelectedEmployeeId: Subject = new Subject();\r\n clientCommonTimes: any[] = []\r\n isAllocationTimeEdit: boolean;\r\n allocationHistory: any\r\n showHistory: boolean = false\r\n isInquiryCalendarSelected: boolean = false\r\n isLoadOnSubscription: boolean = false\r\n selectedCalendarMonthStr: string = new Date().toISOString()\r\n selectedUserIdSub: Subscription\r\n routeParamSubscription: Subscription\r\n newSelectedUserSub: Subscription\r\n\r\n // viewStartDate:Date\r\n // viewEndDate:Date\r\n\r\n deviceWidth: number = window.innerWidth;\r\n deviceHight: number = window.innerHeight;\r\n\r\n timePickerTimeList: any[] = [\r\n { value: '00:00', label: '00:00' },\r\n { value: '00:15', label: '00:15' },\r\n { value: '00:30', label: '00:30' },\r\n { value: '00:45', label: '00:45' },\r\n { value: '01:00', label: '01:00' },\r\n { value: '01:15', label: '01:15' },\r\n { value: '01:30', label: '01:30' },\r\n { value: '01:45', label: '01:45' },\r\n { value: '02:00', label: '02:00' },\r\n { value: '02:15', label: '02:15' },\r\n { value: '02:30', label: '02:30' },\r\n { value: '02:45', label: '02:45' },\r\n { value: '03:00', label: '03:00' },\r\n { value: '03:15', label: '03:15' },\r\n { value: '03:30', label: '03:30' },\r\n { value: '03:45', label: '03:45' },\r\n { value: '04:00', label: '04:00' },\r\n { value: '04:15', label: '04:15' },\r\n { value: '04:30', label: '04:30' },\r\n { value: '04:45', label: '04:45' },\r\n { value: '05:00', label: '05:00' },\r\n { value: '05:15', label: '05:15' },\r\n { value: '05:30', label: '05:30' },\r\n { value: '05:45', label: '05:45' },\r\n { value: '06:00', label: '06:00' },\r\n { value: '06:15', label: '06:15' },\r\n { value: '06:30', label: '06:30' },\r\n { value: '06:45', label: '06:45' },\r\n { value: '07:00', label: '07:00' },\r\n { value: '07:15', label: '07:15' },\r\n { value: '07:30', label: '07:30' },\r\n { value: '07:45', label: '07:45' },\r\n { value: '08:00', label: '08:00' },\r\n { value: '08:15', label: '08:15' },\r\n { value: '08:30', label: '08:30' },\r\n { value: '08:45', label: '08:45' },\r\n { value: '09:00', label: '09:00' },\r\n { value: '09:15', label: '09:15' },\r\n { value: '09:30', label: '09:30' },\r\n { value: '09:45', label: '09:45' },\r\n { value: '10:00', label: '10:00' },\r\n { value: '10:15', label: '10:15' },\r\n { value: '10:30', label: '10:30' },\r\n { value: '10:45', label: '10:45' },\r\n { value: '11:00', label: '11:00' },\r\n { value: '11:15', label: '11:15' },\r\n { value: '11:30', label: '11:30' },\r\n { value: '11:45', label: '11:45' },\r\n { value: '12:00', label: '12:00' },\r\n { value: '12:15', label: '12:15' },\r\n { value: '12:30', label: '12:30' },\r\n { value: '12:45', label: '12:45' },\r\n { value: '13:00', label: '13:00' },\r\n { value: '13:15', label: '13:15' },\r\n { value: '13:30', label: '13:30' },\r\n { value: '13:45', label: '13:45' },\r\n { value: '14:00', label: '14:00' },\r\n { value: '14:15', label: '14:15' },\r\n { value: '14:30', label: '14:30' },\r\n { value: '14:45', label: '14:45' },\r\n { value: '15:00', label: '15:00' },\r\n { value: '15:15', label: '15:15' },\r\n { value: '15:30', label: '15:30' },\r\n { value: '15:45', label: '15:45' },\r\n { value: '16:00', label: '16:00' },\r\n { value: '16:15', label: '16:15' },\r\n { value: '16:30', label: '16:30' },\r\n { value: '16:45', label: '16:45' },\r\n { value: '17:00', label: '17:00' },\r\n { value: '17:15', label: '17:15' },\r\n { value: '17:30', label: '17:30' },\r\n { value: '17:45', label: '17:45' },\r\n { value: '18:00', label: '18:00' },\r\n { value: '18:15', label: '18:15' },\r\n { value: '18:30', label: '18:30' },\r\n { value: '18:45', label: '18:45' },\r\n { value: '19:00', label: '19:00' },\r\n { value: '19:15', label: '19:15' },\r\n { value: '19:30', label: '19:30' },\r\n { value: '19:45', label: '19:45' },\r\n { value: '20:00', label: '20:00' },\r\n { value: '20:15', label: '20:15' },\r\n { value: '20:30', label: '20:30' },\r\n { value: '20:45', label: '20:45' },\r\n { value: '21:00', label: '21:00' },\r\n { value: '21:15', label: '21:15' },\r\n { value: '21:30', label: '21:30' },\r\n { value: '21:45', label: '21:45' },\r\n { value: '22:00', label: '22:00' },\r\n { value: '22:15', label: '22:15' },\r\n { value: '22:30', label: '22:30' },\r\n { value: '22:45', label: '22:45' },\r\n { value: '23:00', label: '23:00' },\r\n { value: '23:15', label: '23:15' },\r\n { value: '23:30', label: '23:30' },\r\n { value: '23:45', label: '23:45' },\r\n ]\r\n\r\n lunchTimeList: any[] = [\r\n { value: 0, label: '0' },\r\n { value: 15, label: '15' },\r\n { value: 20, label: '20' },\r\n { value: 30, label: '30' },\r\n { value: 45, label: '45' },\r\n { value: 60, label: '60' },\r\n ]\r\n\r\n constructor(private fb: FormBuilder, private calendarService: CalendarService, private signalRService: SignalrService, private userservice: UserService, private route: ActivatedRoute,\r\n private elementRef: ElementRef) {\r\n this.validationMessages = {\r\n month: {\r\n required: 'month is required'\r\n },\r\n startDate: {\r\n required: 'start is required'\r\n },\r\n endDate: {\r\n required: 'end is required'\r\n }\r\n };\r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n\r\n this.subscription = this.signalRService.receiveCalendarUpdates().subscribe(st => {\r\n if (st) {\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n scheduler.refresh();\r\n }\r\n });\r\n\r\n this.resourceTypes = [\r\n { id: '1', name: 'USK' },\r\n { id: '2', name: 'SSK' }\r\n ];\r\n }\r\n\r\n ngOnDestroy() {\r\n // unsubscribe to ensure no memory leaks\r\n this.subscription.unsubscribe();\r\n // this.selectedUserIdSub.unsubscribe();\r\n this.newSelectedUserSub.unsubscribe();\r\n }\r\n\r\n setCustomVallidations() {\r\n const month = this.availabilityForm.get('month');\r\n const start = this.availabilityForm.get('startDate');\r\n const end = this.availabilityForm.get('endDate');\r\n\r\n this.availabilityForm.get('changeTypeId').valueChanges\r\n .subscribe(changeType => {\r\n if (changeType === '1') {\r\n month.setValidators([Validators.required]);\r\n start.clearValidators();\r\n end.clearValidators();\r\n } else if (changeType === '2') {\r\n start.setValidators([Validators.required]);\r\n end.setValidators([Validators.required]);\r\n month.clearValidators();\r\n } else if (changeType === '3') {\r\n start.setValidators([Validators.required]);\r\n month.clearValidators();\r\n end.clearValidators();\r\n }\r\n month.updateValueAndValidity();\r\n start.updateValueAndValidity();\r\n end.updateValueAndValidity();\r\n });\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.swedishHolidays = SwedishHolidays;\r\n kendo.culture('sv-SE');\r\n this.currentDate.setHours(0, 0, 0, 0);\r\n this.allocation = {\r\n expAreasDisplay:'',\r\n inquiryExperienceAreas:null,\r\n isExpAreaValidationFail: null,\r\n id: 0,\r\n title: '',\r\n sDate: '',\r\n eDate: '',\r\n lunch: 0,\r\n isPastDate: false,\r\n bookingTotal: 0,\r\n start: new Date(),\r\n end: new Date(),\r\n empName: '',\r\n empImage: '',\r\n empJobCategoryId: 0,\r\n empJobCategory: '',\r\n clientName: '',\r\n clientContactName: '',\r\n clientAddress: '',\r\n clientPhone: '',\r\n clientEmail: '',\r\n isTimeLogged: false,\r\n timeLogStartTime: '',\r\n timeLogEndTime: '',\r\n timeLogLunch: 0,\r\n timeLogTotal: 0,\r\n colorClass: 'slot-blue',\r\n timeLoggedClass: 'slot-no-check',\r\n empImagePath: '',\r\n clientImagePath: '',\r\n resourceTypeId: 1,\r\n resourceTypeClass: '',\r\n isInquiry: null,\r\n clientId: '',\r\n resourceTypeIconLetter: ''\r\n };\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n this.initializeForms();\r\n\r\n this.setCustomVallidations();\r\n\r\n this.partialAvailabilityForm.get('avlTypeId').valueChanges\r\n .subscribe(avlType => {\r\n if (avlType === '1') {\r\n $('#kendo-prl-start').data('kendoTimePicker').value('');\r\n $('#kendo-prl-end').data('kendoTimePicker').value('');\r\n $('#kendo-prl-start').data('kendoTimePicker').enable(false);\r\n $('#kendo-prl-end').data('kendoTimePicker').enable(false);\r\n } else {\r\n $('#kendo-prl-start').data('kendoTimePicker').enable(true);\r\n $('#kendo-prl-end').data('kendoTimePicker').enable(true);\r\n }\r\n });\r\n\r\n $(window).resize(() => {\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId, userType: this.userType, month:this.selectedCalendarMonthStr, role:this.role });\r\n scheduler.refresh();\r\n })\r\n\r\n // this.selectedUserIdSub = this.userservice.selectedUserId.subscribe((res)=>{\r\n // this.userId = res.id\r\n // this.userType = res.type\r\n // if (res && res.id && res.type && this.isLoadOnSubscription) {\r\n // const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId, userType: this.userType, month:this.selectedCalendarMonthStr, role:this.role });\r\n // scheduler.refresh();\r\n // }\r\n\r\n // })\r\n\r\n this.routeParamSubscription = this.route.data.subscribe(data => {\r\n this.role = data.role\r\n });\r\n this.newSelectedUserSub = this.userservice.newSelectedUser.subscribe((data) => {\r\n if (this.isLoadOnSubscription) {\r\n setTimeout(() => {\r\n this.loadCalendar(data);\r\n }, 100);\r\n } else if (data && data.userId) {\r\n this.userId = data.userId\r\n this.userType = data.userType\r\n }\r\n\r\n })\r\n // var date = new Date();\r\n // this.viewStartDate = new Date(date.getFullYear(), date.getMonth(), 1);\r\n // this.viewEndDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\r\n }\r\n\r\n initializeForms(): void {\r\n this.allocationForm = this.fb.group({\r\n startDate: [],\r\n endDate: ['', Validators.required],\r\n weekdayStart: ['', Validators.required],\r\n weekdayEnd: ['', Validators.required],\r\n weekdayLunch: ['', Validators.required],\r\n weekendStart: [],\r\n weekendEnd: [],\r\n weekendLunch: [],\r\n clientId: [],\r\n resourceTypeId: ['1'],\r\n isInquiry: [],\r\n employeeId: []\r\n });\r\n\r\n this.swapUserForm = this.fb.group({\r\n allocationId: [],\r\n swapUserId: [],\r\n swapType: []\r\n });\r\n\r\n this.allocationTimeLogsForm = this.fb.group({\r\n allocationId: [],\r\n isTimeLogged: [],\r\n startTime: [],\r\n endTime: [],\r\n lunchTime: []\r\n });\r\n\r\n this.availabilityForm = this.fb.group({\r\n changeTypeId: ['1'],\r\n month: ['', Validators.required],\r\n startDate: [''],\r\n endDate: [''],\r\n availabilityId: ['1']\r\n });\r\n\r\n this.partialAvailabilityForm = this.fb.group({\r\n avlTypeId: [],\r\n avlDate: [],\r\n avlStart: [],\r\n avlEnd: []\r\n });\r\n\r\n this.allocationTimeUpdateForm = this.fb.group({\r\n allocationId: [],\r\n startDate: [],\r\n endDate: [],\r\n lunchTime: []\r\n })\r\n\r\n }\r\n\r\n // get f() { return this.swapUserForm.controls; }\r\n\r\n\r\n ngAfterViewInit() {\r\n const calendarService = this.calendarService;\r\n let userId = this.userId;\r\n let userType = this.userType;\r\n let role = this.role;\r\n let selectedCalendarMonthStr = this.selectedCalendarMonthStr;\r\n // let viewStartDate = this.viewStartDate\r\n // let viewEndDate = this.viewEndDate\r\n const customAgenda = kendo.ui.AgendaView.extend({\r\n endDate() {\r\n const date = kendo.ui.AgendaView.fn.startDate.call(this);\r\n return kendo.date.addDays(date, 30);\r\n }\r\n });\r\n\r\n // const customMonthView = kendo.ui.MonthView.extend({\r\n // });\r\n\r\n var eventHeight: number\r\n var eventsPerDay = 2\r\n var isAdaptiveSlotHeight: boolean\r\n if (this.deviceWidth < 576) {\r\n eventHeight = 60\r\n isAdaptiveSlotHeight = true\r\n } else if (this.deviceWidth < 768) {\r\n eventHeight = 43\r\n isAdaptiveSlotHeight = true\r\n } else if (this.deviceWidth < 992) {\r\n eventHeight = 43\r\n isAdaptiveSlotHeight = false\r\n } else if (this.deviceWidth < 1200) {\r\n eventHeight = 31\r\n isAdaptiveSlotHeight = false\r\n } else {\r\n isAdaptiveSlotHeight = false\r\n eventHeight = 30\r\n }\r\n\r\n $('.mob-bookings').removeClass('btn-success');\r\n $('.mob-bookings').addClass('tab-inactive');\r\n\r\n ($('#admin-inquiry-scheduler') as any).kendoScheduler({\r\n views: [\r\n {\r\n type: 'month',\r\n eventsPerDay: eventsPerDay,\r\n eventHeight: eventHeight,\r\n adaptiveSlotHeight: isAdaptiveSlotHeight,\r\n },\r\n { type: 'day', allDaySlot: false, eventTemplate: $('#event-day-template').html() },\r\n {\r\n type: customAgenda,\r\n title: 'Agenda',\r\n eventTemplate: $('#event-agenda-template').html(),\r\n selectedDateFormat: \"{0:dd/MM/yyyy} - {1:dd/MM/yyyy}\",\r\n selectedShortDateFormat: \"{0:dd/MM} - {1:dd/MM}\"\r\n }],\r\n // { type: 'agenda', eventTemplate: $('#event-agenda-template').html() }],\r\n eventTemplate: ($('#event-slot-template') as any).html(),\r\n timezone: 'Europe/Stockholm',\r\n majorTimeHeaderTemplate: kendo.template('#=kendo.toString(date, \\'HH:mm\\')#'),\r\n dateHeaderTemplate: kendo.template(\"#=kendo.toString(date, 'ddd dd/M')#\"),\r\n selectable: true,\r\n editable: {\r\n destroy: false,\r\n move: false,\r\n resize: false,\r\n create: false\r\n },\r\n dataSource:\r\n {\r\n transport: {\r\n read(o) {\r\n let loadData = false;\r\n loadData = true;\r\n let finalUserId\r\n let finalUserType\r\n\r\n if (o.data.userId && o.data.userType) {\r\n finalUserId = o.data.userId\r\n finalUserType = o.data.userType\r\n } else if (!o.data.userId && !o.data.userType && userId) {\r\n finalUserId = userId\r\n finalUserType = userType\r\n } else {\r\n finalUserId = 'all'\r\n finalUserType = 'all'\r\n }\r\n // viewStartDate = o.data.viewStartDate? o.data.viewStartDate : viewStartDate\r\n // viewEndDate = o.data.viewEndDate? o.data.viewEndDate : viewEndDate\r\n if (loadData) {\r\n calendarService.getAdminInquiryList(o.data.month, finalUserId, finalUserType, role)\r\n .subscribe(\r\n (allocations: BookingInfo[]) => {\r\n o.success(allocations);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n } else {\r\n o.success([]);\r\n }\r\n\r\n }\r\n\r\n }\r\n },\r\n toolbar: ['pdf'],\r\n pdf: {\r\n fileName: 'Bookings-Export.pdf',\r\n }\r\n });\r\n\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n\r\n\r\n scheduler.wrapper.on('mouseup', '.k-scheduler-table td, .k-event', function (e) {\r\n const target = $(e.currentTarget);\r\n if (target.hasClass('k-event')) {\r\n const event = scheduler.occurrenceByUid(target.data('uid'));\r\n scheduler.editEvent(event);\r\n }\r\n });\r\n\r\n scheduler.bind('edit', (event) => {\r\n event.preventDefault();\r\n this.schedulerEdit(event);\r\n });\r\n\r\n scheduler.bind('dataBound', (e) => {\r\n this.schedulerDataBound(scheduler);\r\n setTimeout(() => {\r\n $('.k-scheduler-navigation').css('pointer-events', 'all');\r\n $('.k-scheduler-navigation').css('opacity', '1');\r\n $('.k-state-default.k-header.k-nav-prev').removeClass('k-state-hover');\r\n $('.k-state-default.k-header.k-nav-next').removeClass('k-state-hover');\r\n }, 500);\r\n });\r\n scheduler.bind('navigate', (e) => {\r\n // this.setViewDateRange(e);\r\n if (e.action == 'next') {\r\n $('.k-state-default.k-header.k-nav-next').addClass('k-state-hover');\r\n }\r\n if (e.action == 'previous') {\r\n $('.k-state-default.k-header.k-nav-prev').addClass('k-state-hover');\r\n }\r\n });\r\n\r\n\r\n\r\n this.initializeKendoComponents();\r\n $('.k-scheduler-tools').hide();\r\n $('#admin-inquiry-scheduler .k-scheduler-views').append('
  • Skriv ut
  • ')\r\n $('#admin-inquiry-scheduler .mobile-export').click(() => {\r\n $('#admin-inquiry-scheduler .k-pdf').click();\r\n });\r\n if (kendo.support.mobileOS) {\r\n $('.k-sm-date-format').css('font-size', '100%');\r\n }\r\n\r\n $('#employeeBookingModal').on('hide.bs.modal', () => {\r\n this.allocationTimeUpdateForm.patchValue({\r\n allocationId: '',\r\n startDate: '',\r\n endDate: '',\r\n lunchTime: '',\r\n })\r\n this.swapUserForm.reset()\r\n this.isAllocationTimeEdit = false\r\n this.showHistory = false\r\n })\r\n\r\n\r\n this.isLoadOnSubscription = true;\r\n\r\n }\r\n\r\n onClickMakeBooking() {\r\n ($('#requestAllocationModal') as any).modal('show');\r\n }\r\n\r\n setAvailableEmployees() { }\r\n\r\n\r\n initializeKendoComponents(): void {\r\n // ($('.admin-inquiry #kendo-end-date') as any).kendoDatePicker({\r\n // format: 'yyyy-MM-dd',\r\n // min: new Date(),\r\n // change: (val) => {\r\n // this.isWeekend = (val.sender._value.getDay() === 6) || (val.sender._value.getDay() === 0);\r\n // const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n // const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n // const lunch = (this.isWeekend ? '0' : '45');\r\n\r\n // this.allocationForm.patchValue({\r\n // startDate: val.sender._value,\r\n // endDate: val.sender._value,\r\n // weekdayStart: startTime,\r\n // weekdayEnd: endTime,\r\n // weekdayLunch: lunch\r\n // });\r\n\r\n // $('.admin-inquiry #kendo-wd-start').data('kendoTimePicker').value(startTime);\r\n // $('.admin-inquiry #kendo-wd-end').data('kendoTimePicker').value(endTime);\r\n // }\r\n // });\r\n\r\n // ($('.admin-inquiry .kendo-time-al') as any).kendoTimePicker({\r\n // format: 'HH:mm',\r\n // interval: 15,\r\n // change: (val) => {\r\n // const dt = new Date(val.sender._value);\r\n // const hours = dt.getHours();\r\n // const minutes = dt.getMinutes();\r\n // const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n // const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n // this.allocationForm.get(formControlName).setValue(formattedTime);\r\n // }\r\n // });\r\n\r\n ($('.admin-inquiry .kendo-time') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n const dt = new Date(val.sender._value);\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.allocationTimeLogsForm.get(formControlName).setValue(formattedTime);\r\n },\r\n close: (val) => {\r\n }\r\n });\r\n\r\n ($('.kendo-time-tu-start') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n // const dt = new Date(val.sender._value);\r\n var dt: any\r\n if (val.sender._value) {\r\n dt = new Date(val.sender._value);\r\n } else {\r\n var timeStr = val.sender._oldText\r\n dt = new Date(2000, 0, 0, parseInt(timeStr.slice(0, 2)), parseInt(timeStr.slice(3, 5)), 0);\r\n }\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n this.setEndTimeMin(dt, 'tu');\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.allocationTimeUpdateForm.get(formControlName).setValue(formattedTime);\r\n }\r\n });\r\n ($('.kendo-time-tu-end') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n // const dt = new Date(val.sender._value);\r\n var dt: any\r\n if (val.sender._value) {\r\n dt = new Date(val.sender._value);\r\n } else {\r\n var timeStr = val.sender._oldText\r\n dt = new Date(2000, 0, 0, parseInt(timeStr.slice(0, 2)), parseInt(timeStr.slice(3, 5)), 0);\r\n }\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n this.setStartTimeMax(dt, 'tu');\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.allocationTimeUpdateForm.get(formControlName).setValue(formattedTime);\r\n }\r\n });\r\n\r\n // ($('.admin-inquiry .kendo-time-prl') as any).kendoTimePicker({\r\n // format: 'HH:mm',\r\n // interval: 15,\r\n // change: (val) => {\r\n // const dt = new Date(val.sender._value);\r\n // const hours = dt.getHours();\r\n // const minutes = dt.getMinutes();\r\n // const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n // const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n // this.partialAvailabilityForm.get(formControlName).setValue(formattedTime);\r\n // },\r\n // open: (val) => {\r\n // if (val.sender._value === null) {\r\n // $(val.sender.element).data('kendoTimePicker').value('12:00');\r\n // }\r\n // }\r\n // });\r\n\r\n // ($('.admin-inquiry #kendo-avl-start-date') as any).kendoDatePicker({\r\n // format: 'yyyy-MM-dd',\r\n // min: new Date(),\r\n // change: (val) => {\r\n // this.availabilityForm.patchValue({\r\n // startDate: val.sender._value\r\n // });\r\n // }\r\n // });\r\n\r\n // ($('.admin-inquiry #kendo-avl-end-date') as any).kendoDatePicker({\r\n // format: 'yyyy-MM-dd',\r\n // min: new Date(),\r\n // change: (val) => {\r\n // this.availabilityForm.patchValue({\r\n // endDate: val.sender._value\r\n // });\r\n // }\r\n // });\r\n // ($('.admin-inquiry #kendo-avl-month') as any).kendoDatePicker({\r\n // format: 'MMMM yyyy',\r\n // min: new Date(),\r\n // start: 'year',\r\n // depth: 'year',\r\n // change: (val) => {\r\n // this.availabilityForm.patchValue({\r\n // month: val.sender._value\r\n // });\r\n // }\r\n // });\r\n\r\n // ($('.admin-inquiry .kendo-picker') as any).bind('focus', function () {\r\n // $(this).data('kendoDatePicker').open();\r\n // });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n schedulerEdit(event): void {\r\n this.isSwapEmployeeSelected = false;\r\n this.showExpAreaDetails = false;\r\n if (event.event.id != 0) {\r\n this.allocationTimeLogsForm.patchValue({\r\n allocationId: event.event.id,\r\n isTimeLogged: event.event.isTimeLogged,\r\n startTime: event.event.timeLogStartTime,\r\n endTime: event.event.timeLogEndTime,\r\n lunchTime: event.event.timeLogLunch\r\n });\r\n $('.admin-inquiry #kendo-tl-start').data('kendoTimePicker').value(event.event.timeLogStartTime);\r\n $('.admin-inquiry #kendo-tl-end').data('kendoTimePicker').value(event.event.timeLogEndTime);\r\n\r\n this.allocation = event.event;\r\n if (this.allocation.inquiryExperienceAreas && this.allocation.inquiryExperienceAreas.length) {\r\n this.showExpAreaDetails = true;\r\n let displayExpAreas = '';\r\n this.allocation.inquiryExperienceAreas.forEach(item => {\r\n displayExpAreas = displayExpAreas + ' ' + item.experienceArea;\r\n })\r\n this.allocation.expAreasDisplay = displayExpAreas;\r\n }\r\n\r\n if (this.allocation.start <= new Date()) {\r\n this.visibleTimeLogs = true;\r\n } else {\r\n this.visibleTimeLogs = false;\r\n }\r\n ($('#employeeBookingModal') as any).modal('show');\r\n }\r\n }\r\n\r\n schedulerDataBound(scheduler): void {\r\n const schView = scheduler.view().name;\r\n\r\n\r\n if (schView === 'month') {\r\n\r\n $('.k-scheduler-navigation').css('pointer-events', 'none');\r\n $('.k-scheduler-navigation').css('opacity', '0.5');\r\n\r\n const container = scheduler.view().element;\r\n const cells = container.find('td[role=gridcell]');\r\n\r\n $('.slot-orange').parent().addClass('dayview-slot-orange');\r\n $('.slot-yellow').parent().addClass('dayview-slot-yellow');\r\n $('.slot-blue').parent().addClass('dayview-slot-blue');\r\n $('.slot-yellow .font-weight-bold').css('border-color', 'red');\r\n\r\n this.availabilityCheckDates = [];\r\n for (let i = 0; i < cells.length; i++) {\r\n const cell = $(cells[i]);\r\n const slot = scheduler.slotByElement(cell);\r\n const avl = {} as AvailabilityModel;\r\n avl.category = scheduler.view().name;\r\n avl.startTime = slot.startDate;\r\n avl.endTime = slot.endDate;\r\n avl.userId = (this.userId && this.userId !== 'all') ? this.userId : '';\r\n avl.startTimeString = avl.startTime.getFullYear() + '-' + (avl.startTime.getMonth() + 1) + '-' + avl.startTime.getDate();\r\n avl.endTimeString = avl.endTime.getFullYear() + '-' + (avl.endTime.getMonth() + 1) + '-' + avl.endTime.getDate();\r\n avl.resourceTypeId = this.selectedResourceTypeId;\r\n this.availabilityCheckDates.push(avl);\r\n }\r\n\r\n\r\n this.calendarService.checkAllAvailability(this.availabilityCheckDates).subscribe(\r\n (avlData: AvailabilityInfo[]) => {\r\n this.availabilityData = avlData\r\n for (let i = 0; i < cells.length; i++) {\r\n const cell = $(cells[i]);\r\n const slot = scheduler.slotByElement(cell);\r\n if (slot) {\r\n const slotStartDate = slot.startDate as Date;\r\n const slotEndDate = slot.endDate as Date;\r\n const filterData = avlData.find(function (data) {\r\n return (data.startTime.toDateString() === slotStartDate.toDateString()\r\n && data.endTime.toDateString() === slotEndDate.toDateString());\r\n });\r\n if (filterData) {\r\n var holidayArr: any[];\r\n var slotDateJsonFormat = this.getJsonDateFormat(slot.startDate);\r\n if (this.holidayLastMonth !== slotDateJsonFormat) {\r\n this.holidayLastMonth = slotDateJsonFormat\r\n holidayArr = this.swedishHolidays[slotDateJsonFormat]\r\n\r\n }\r\n\r\n // Mark Sundays & saturdays with different color using CSS class\r\n if (slotStartDate.getDay() == 0) {\r\n cell.addClass('cell-sunday')\r\n }\r\n if (slotStartDate.getDay() == 6) {\r\n cell.addClass('cell-saturday')\r\n }\r\n\r\n if (filterData && filterData.startTime >= this.currentDate) {\r\n if (filterData.isAvailable) {\r\n cell.css('background-image', 'linear-gradient(225deg, #85BD3C, #85BD3C 30px, transparent 0px, transparent)');\r\n cell.css('position', 'relative');\r\n if (this.userType && this.userType === 'Employee' && this.userId !== 'all') {\r\n if (!filterData.hasAllocations) {\r\n // Full day button and removed considering feednack comments\r\n // if (filterData.isPartial) {\r\n // cell.html('' + slotStartDate.getDate() + '');\r\n // } else {\r\n // cell.html('' + slotStartDate.getDate() + '');\r\n // }\r\n\r\n // Same logic added for is block\r\n cell.html('' + slotStartDate.getDate() + '');\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n } else {\r\n // cell.html('' + slotStartDate.getDate() +\r\n // '' +\r\n // filterData.currentAvailabileCount + '/' + filterData.totalAvailableCount +\r\n // '');\r\n\r\n if (this.role == 'Admin') {\r\n cell.html('' + slotStartDate.getDate() +\r\n '' +\r\n filterData.currentAvailabileCount + '/' + filterData.totalAvailableCount +\r\n '');\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n }\r\n } else {\r\n cell.css('background-image', 'linear-gradient(225deg, #FF6161, #FF6161 30px, transparent 0px, transparent)');\r\n cell.css('position', 'relative');\r\n if (this.userType && this.userType === 'Employee' && this.userId !== 'all') {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n } else {\r\n // cell.html('' + slotStartDate.getDate() +\r\n // '' +\r\n // filterData.currentAvailabileCount + '/' + filterData.totalAvailableCount +\r\n // '');\r\n\r\n if (this.role == 'Admin') {\r\n cell.html('' + slotStartDate.getDate() +\r\n '' +\r\n filterData.currentAvailabileCount + '/' + filterData.totalAvailableCount +\r\n '');\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n }\r\n }\r\n if (holidayArr) {\r\n var holidayObj = holidayArr.find(e => e.date == slot.startDate.getDate())\r\n if (holidayObj) {\r\n cell.addClass('holiday')\r\n if (cell.children('.badge-info.holiday-name').length == 0) {\r\n cell.append(`${holidayObj.holiday}`);\r\n }\r\n }\r\n }\r\n } else {\r\n cell.css('position', 'relative');\r\n if (this.userType && this.userType === 'Employee' && this.userId !== 'all') {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n } else {\r\n // cell.html('' + slotStartDate.getDate() +\r\n // '' +\r\n // filterData.currentAvailabileCount + '/' + filterData.totalAvailableCount +\r\n // '');\r\n\r\n if (this.role == 'Admin') {\r\n cell.html('' + slotStartDate.getDate() +\r\n '' +\r\n filterData.currentAvailabileCount + '/' + filterData.totalAvailableCount +\r\n '');\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n }\r\n cell.css('background-image', 'linear-gradient(225deg, #d1d1d1, #d1d1d1 30px, transparent 0px, transparent)');\r\n if (holidayArr) {\r\n var holidayObj = holidayArr.find(e => e.date == slot.startDate.getDate())\r\n if (holidayObj) {\r\n cell.addClass('holiday')\r\n if (cell.children('.badge-info.holiday-name').length == 0) {\r\n cell.append(`${holidayObj.holiday}`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Check for monthname\r\n var isFirstDay: boolean\r\n if (slotStartDate.getDate() == 1) {\r\n isFirstDay = true\r\n var month = slotStartDate.toLocaleString('sv-SE', { month: 'long' });\r\n var monthCapitalized = month.charAt(0).toUpperCase() + month.slice(1)\r\n } else {\r\n isFirstDay = false\r\n }\r\n\r\n // Display month first day label if not holiday\r\n if (!holidayObj && isFirstDay) {\r\n if (cell.children('.badge-info.holiday-name').length == 0) {\r\n cell.append(`Första ${monthCapitalized}`);\r\n }\r\n }\r\n\r\n // Dispaly week number for every monday\r\n if (slotStartDate.getDay() == 1) {\r\n var weekNoArr = this.calendarService.getWeekNumber(slotStartDate)\r\n cell.append(`V.${weekNoArr[1]}`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n } if (schView === 'day') {\r\n $('.slot-orange.day-view').parent().addClass('dayview-slot-orange');\r\n $('.slot-yellow.day-view').parent().addClass('dayview-slot-yellow');\r\n $('.slot-blue.day-view').parent().addClass('dayview-slot-blue');\r\n }\r\n $('.k-scheduler-navigation').css('pointer-events', 'all');\r\n $('.k-scheduler-navigation').css('opacity', '1');\r\n\r\n if (this.deviceWidth < 768) {\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(1)').text('Mån');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(2)').text('Tis');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(3)').text('Ons');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(4)').text('Tor');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(5)').text('Fre');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(6)').text('Lör');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(7)').text('Sön');\r\n }\r\n }\r\n\r\n getJsonDateFormat(date: Date): string {\r\n return date.getFullYear() + '' + (date.getMonth() + 1 > 9 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1))\r\n }\r\n\r\n loadCalendar(data: any): void {\r\n if (data == null || this.userId === data.userId) {\r\n this.userId = 'all';\r\n this.selectedUserFullName = null;\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n this.selectedResourceTypeId = 1;\r\n\r\n } else {\r\n this.userId = data.userId;\r\n this.selectedUserFullName = data.fullName;\r\n this.userType = data.userType;\r\n }\r\n // this.userId = data.userId;\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n // scheduler.refresh();\r\n }\r\n\r\n openDeleteConfirmModal(allocationId: number): void {\r\n this.updateAllocationId = allocationId;\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n ($('#allocationDeleteModal') as any).modal('show');\r\n }\r\n\r\n removeAllocation(): void {\r\n ($('#allocationDeleteModal') as any).modal('hide');\r\n\r\n this.calendarService.removeAllocation(this.updateAllocationId).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n scheduler.refresh();\r\n this.setNotificationData('remove', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n\r\n getEmployeeList(allocationId: number, allocation): void {\r\n this.swapUserForm.patchValue({\r\n allocationId\r\n });\r\n var dataObj = {\r\n clientId: allocation.clientId,\r\n employeeId: null,\r\n endDate: allocation.end,\r\n isInquiry: true,\r\n resourceTypeId: allocation.resourceTypeClass == 'F' ? 1 : 2,\r\n startDate: allocation.start,\r\n weekdayEnd: allocation.eDate.slice(11, 16),\r\n weekdayStart: allocation.sDate.slice(11, 16),\r\n weekdayLunch: allocation.lunch,\r\n weekendEnd: null,\r\n weekendLunch: null,\r\n weekendStart: null\r\n }\r\n this.userservice.getInquiryAssignUserList(dataObj).subscribe(\r\n (userList: IUserInfo[]) => {\r\n this.swapUserList = userList;\r\n this.isSwapEmployeeSelected = true;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n updateSwap(isInquiry: boolean): void {\r\n if (this.swapUserForm.get('swapUserId').value) {\r\n if (this.swapUserForm.get('swapType').value == 1 || isInquiry) {\r\n this.swapUserForm.patchValue({\r\n isInquiry: isInquiry\r\n });\r\n if (isInquiry) {\r\n this.swapUserForm.patchValue({\r\n swapType: '1'\r\n });\r\n }\r\n\r\n this.calendarService.swapAllocationEmployee(this.swapUserForm.value).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n scheduler.refresh();\r\n\r\n this.swapUserForm.patchValue({\r\n swapUserId: [],\r\n isInquiry: []\r\n });\r\n\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n this.setNotificationData('swap', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n } else if (this.swapUserForm.get('swapType').value == 2) {\r\n\r\n var dataObject\r\n this.swapUserList.find((obj) => {\r\n if (obj.value == this.swapUserForm.get('swapUserId').value) {\r\n dataObject = {\r\n alliocationId: this.allocation.id,\r\n employeeId: this.allocation.empName,\r\n swapWithAllocationId: this.swapUserForm.get('swapUserId').value,\r\n swapWithEmployeeId: obj.employeeId,\r\n }\r\n }\r\n })\r\n this.calendarService.onSameDaySwapEmployees(dataObject).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n scheduler.refresh();\r\n\r\n this.swapUserForm.patchValue({\r\n swapUserId: [],\r\n isInquiry: []\r\n });\r\n\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n this.setNotificationData('swap', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n }\r\n updateAllocationTimeLogs(): void {\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n\r\n const validator = ($('#allocationTimeLogsFormContent') as any).kendoValidator().data('kendoValidator');\r\n if (validator.validate()) {\r\n const timeLogsForm = this.allocationTimeLogsForm;\r\n const timeLogModel = {} as TimeLogModel;\r\n timeLogModel.allocationId = timeLogsForm.get('allocationId').value;\r\n timeLogModel.startTime = timeLogsForm.get('startTime').value;\r\n timeLogModel.endTime = timeLogsForm.get('endTime').value;\r\n timeLogModel.lunch = timeLogsForm.get('lunchTime').value;\r\n\r\n var day = 60 * 60 * 24 * 1000;\r\n var isAllocationDateHoliday = this.calendarService.isHoliday(this.allocation.start);\r\n var nextDate = new Date(this.allocation.start.getTime() + day);\r\n var prevDate = new Date(this.allocation.start.getTime() - day);\r\n var isNextDateHoliday = this.calendarService.isHoliday(nextDate);\r\n var isPrevDateHoliday = this.calendarService.isHoliday(prevDate);\r\n\r\n //var holidayStr:string = isAllocationDateHoliday? 'Holiday':((isNextDateHoliday && isPrevDateHoliday)? 'InBetween': (isPrevDateHoliday? 'AfterHoliday':(isNextDateHoliday? 'BeforeHoliday':'NotHoliday')));\r\n var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n var holidayStr: string = isAllocationDateHoliday ? 'Holiday' :\r\n ((isNextDateHoliday && !isAllocationDateHoliday) ? 'DayBeforeHoliday' : (\r\n (isPrevDateHoliday && !isAllocationDateHoliday) ? 'DayAfterHoliday' : days[this.allocation.start.getDay()])); // 0 = Sunday, 6 = Saturday\r\n\r\n timeLogModel.holidays = holidayStr;\r\n\r\n this.calendarService.updateTimeLogs(timeLogModel).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.setNotificationData('timelog', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n\r\n requestAllocation(): void {\r\n ($('#requestAllocationModal') as any).modal('hide');\r\n this.isBookingFromPartialAvailability = false;\r\n\r\n const validator = ($('#allocationFormContent') as any).kendoValidator().data('kendoValidator');\r\n if (validator.validate()) {\r\n this.allocationForm.patchValue({\r\n clientId: this.userId,\r\n isInquiry: !this.isBookingSelected\r\n });\r\n\r\n this.calendarService.requestAdminAllocations(this.allocationForm.value).subscribe(\r\n (allocationInfo: BookingInfo) => {\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n this.onAllocationRequestComplete(allocationInfo, this.allocationForm.value);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n\r\n onAllocationRequestComplete(allocationInfo: BookingInfo, allocationForm: AlliocationModel): void {\r\n\r\n $('#kendo-end-date').data('kendoDatePicker').value('');\r\n $('#kendo-wd-start').data('kendoTimePicker').value('');\r\n $('#kendo-wd-end').data('kendoTimePicker').value('');\r\n\r\n this.allocationForm.patchValue({\r\n startDate: '',\r\n endDate: '',\r\n weekdayStart: '',\r\n weekdayEnd: '',\r\n weekdayLunch: 0,\r\n employeeId: ''\r\n });\r\n\r\n if (allocationInfo != null) {\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.allocation = allocationInfo;\r\n this.isSwapEmployeeSelected = false;\r\n ($('#employeeBookingModal') as any).modal('show');\r\n this.signalRService.broadcastCalendarUpdates();\r\n } else {\r\n this.calendarService.getPartialAvailabilityList(allocationForm).subscribe(\r\n (partialList: PartialAvailabilityInfo[]) => {\r\n if (partialList != null && partialList.length > 0) {\r\n this.partialAvailableListForDay = partialList;\r\n this.allocationTryDate = allocationForm.startDate;\r\n this.allocationTryLunch = allocationForm.weekdayLunch;\r\n this.allocationTryTime = allocationForm.weekdayStart + '-' + allocationForm.weekdayEnd;\r\n ($('#partialAvailabilityListModal') as any).modal('show');\r\n } else {\r\n this.setNotificationData('booking', false);\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n\r\n updateAvailability(): void {\r\n ($('#updateAvailabilityModal') as any).modal('hide');\r\n\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n const container = scheduler.view().element;\r\n const cells = container.find('td[role=gridcell]');\r\n this.availabilityCheckDates = [];\r\n\r\n for (let i = 0; i < cells.length; i++) {\r\n const cell = $(cells[i]);\r\n const slot = scheduler.slotByElement(cell);\r\n const avl = {} as AvailabilityModel;\r\n avl.category = scheduler.view().name;\r\n avl.startTime = slot.startDate;\r\n avl.endTime = slot.endDate;\r\n avl.startTimeString = avl.startTime.getFullYear() + '-' + (avl.startTime.getMonth() + 1) + '-' + avl.startTime.getDate();\r\n avl.endTimeString = avl.endTime.getFullYear() + '-' + (avl.endTime.getMonth() + 1) + '-' + avl.endTime.getDate();\r\n avl.resourceTypeId = this.selectedResourceTypeId;\r\n this.availabilityCheckDates.push(avl);\r\n }\r\n\r\n const avlForm = this.availabilityForm;\r\n\r\n this.availabilityUpdateModel = {} as AvailabilityUpdateModel;\r\n this.availabilityUpdateModel.changeType = avlForm.get('changeTypeId').value;\r\n this.availabilityUpdateModel.month = avlForm.get('month').value;\r\n this.availabilityUpdateModel.fromDate = avlForm.get('startDate').value;\r\n this.availabilityUpdateModel.toDate = avlForm.get('endDate').value;\r\n this.availabilityUpdateModel.availability = avlForm.get('availabilityId').value;\r\n this.availabilityUpdateModel.dateList = this.availabilityCheckDates;\r\n this.availabilityUpdateModel.employeeId = this.userId;\r\n\r\n if (this.availabilityUpdateModel.changeType === '1') {\r\n const month = this.availabilityUpdateModel.month;\r\n this.availabilityUpdateModel.monthString = month.getFullYear() + '-' + (month.getMonth() + 1) + '-' + month.getDate();\r\n } else if (this.availabilityUpdateModel.changeType === '2') {\r\n const fromDate = this.availabilityUpdateModel.fromDate;\r\n const toDate = this.availabilityUpdateModel.toDate;\r\n this.availabilityUpdateModel.fromDateString = fromDate.getFullYear() + '-' + (fromDate.getMonth() + 1) + '-' + fromDate.getDate();\r\n this.availabilityUpdateModel.toDateString = toDate.getFullYear() + '-' + (toDate.getMonth() + 1) + '-' + toDate.getDate();\r\n } else {\r\n const fromDate = this.availabilityUpdateModel.fromDate;\r\n this.availabilityUpdateModel.fromDateString = fromDate.getFullYear() + '-' + (fromDate.getMonth() + 1) + '-' + fromDate.getDate();\r\n }\r\n\r\n this.calendarService.updateAvailability(this.availabilityUpdateModel).subscribe(\r\n (avlData: AvailabilityInfo[]) => {\r\n //this.initializeForms();\r\n //this.setCustomVallidations();\r\n $('#kendo-avl-month').data('kendoDatePicker').value('');\r\n $('#kendo-avl-start-date').data('kendoDatePicker').value('');\r\n $('#kendo-avl-end-date').data('kendoDatePicker').value('');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.setNotificationData('availability', true);\r\n this.signalRService.broadcastCalendarUpdates();\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'booking') {\r\n this.notificationModal.header = 'Förfrågan misslyckades';\r\n this.notificationModal.description = 'Tyvärr så kunde vi inte hitta en tillgänglig resurs för det valda datumet';\r\n this.notificationModal.type = 'danger';\r\n } else if (flow === 'swap') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Byte av resurs genomfördes';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Byte av resurs misslyckades! Kontrollera anställdas tillgänglighet';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'remove') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Förfrågan raderades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Borttaggning av förfrågan misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'availability') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tillgänglighet uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tillgänglighet misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'timelog') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tidrapportering uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'TUppdatering av tidrapportering misslyckades! Var god och försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'partialavl') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tillgänglighet uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tillgänglighet misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'assign') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';// Success\r\n this.notificationModal.description = 'Den anställde tilldelades förfrågan och e-post skickades. '; //'Employee was assigned successfully for inquiry and email sent.';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; //'Failed';\r\n this.notificationModal.description = 'Tilldelning av passet till den anställda misslyckades. Vänligen försök igen. '; //'Employee assign process failed! Please try again.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'timeupdate') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';// Success\r\n this.notificationModal.description = 'Förfrågan tider har uppdaterats.'; //'Booking time slot has been updated';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; //'Failed';\r\n this.notificationModal.description = 'Uppdateringen av förfrågan misslyckades! Var god försök igen.'; //'Booking time slot updating failed! Please try again.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#notificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#notificationModal') as any).modal('hide');\r\n }, 3000);\r\n }\r\n\r\n\r\n scrollToHour(hour): void {\r\n const time = new Date();\r\n time.setHours(hour);\r\n time.setMinutes(0);\r\n time.setSeconds(0);\r\n time.setMilliseconds(0);\r\n\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n const contentDiv = scheduler.element.find('div.k-scheduler-content');\r\n const rows = contentDiv.find('tr');\r\n\r\n for (let i = 0; i < rows.length; i++) {\r\n const element = $(rows[i]);\r\n const slot = scheduler.slotByElement(element);\r\n\r\n const slotTime = kendo.toString(slot.startDate, 'HH:mm');\r\n const targetTime = kendo.toString(time, 'HH:mm');\r\n\r\n if (targetTime === slotTime) {\r\n contentDiv.scrollTop(0);\r\n\r\n const elementTop = element.offset().top;\r\n const containerTop = contentDiv.offset().top;\r\n\r\n contentDiv.scrollTop(elementTop - containerTop);\r\n }\r\n }\r\n }\r\n\r\n\r\n bookFromPartialAvailability(partialAvailabilityData: PartialAvailabilityInfo): void {\r\n ($('#partialAvailabilityListModal') as any).modal('hide');\r\n this.allocationForm.patchValue({\r\n startDate: this.allocationTryDate,\r\n endDate: this.allocationTryDate,\r\n weekdayStart: partialAvailabilityData.fromTime,\r\n weekdayEnd: partialAvailabilityData.toTime,\r\n weekdayLunch: this.allocationTryLunch,\r\n });\r\n\r\n $('#kendo-end-date').data('kendoDatePicker').value(this.allocationTryDate);\r\n $('#kendo-end-date').data('kendoDatePicker').enable(false);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(partialAvailabilityData.fromTime);\r\n $('#kendo-wd-start').data('kendoTimePicker').enable(false);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(partialAvailabilityData.toTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').enable(false);\r\n\r\n this.isBookingFromPartialAvailability = true;\r\n ($('#requestAllocationModal') as any).modal('show');\r\n }\r\n\r\n onResourceTypeChange(resourceTypeId: number): void {\r\n this.selectedResourceTypeId = resourceTypeId;\r\n this.allocationForm.patchValue({\r\n resourceTypeId: resourceTypeId\r\n });\r\n this.availabilityCheckDates.forEach(x => x.resourceTypeId = resourceTypeId);\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n }\r\n\r\n onSelectSwapType(swapType: number): void {\r\n // this.swapUserForm.reset()\r\n if (swapType == 1) {\r\n this.getAvailableSwapEmployees(this.allocation.id)\r\n } else if (swapType == 2) {\r\n this.getSameDaySwapEmployees()\r\n }\r\n }\r\n\r\n getAvailableSwapEmployees(allocationId: number): void {\r\n this.swapUserForm.patchValue({\r\n swapUserId: null,\r\n allocationId: this.allocation.id\r\n });\r\n this.calendarService.getAllocationSwapUserList(allocationId).subscribe(\r\n (userList: IUserInfo[]) => {\r\n this.swapUserList = userList;\r\n for (let [key, value] of Object.entries(this.swapUserList)) {\r\n value['value'] = value.userId;\r\n value['label'] = value.fullName;\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n getSameDaySwapEmployees(): void {\r\n this.swapUserForm.patchValue({\r\n swapUserId: null,\r\n allocationId: this.allocation.id\r\n })\r\n var dataset = {\r\n allocationId: this.allocation.id,\r\n startDate: this.allocation.sDate,\r\n endDate: this.allocation.eDate,\r\n clientId: this.allocation.clientId\r\n }\r\n this.calendarService.getSameDaySwapEmployeesList(dataset).subscribe(\r\n (userList: IUserInfo[]) => {\r\n this.swapUserList = userList;\r\n\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n onSwapBtnClick() {\r\n this.isSwapEmployeeSelected = true;\r\n }\r\n onEditAllocationTimes(): void {\r\n var startTimeStr = this.allocation.sDate.substring(11, 16);\r\n var endTimeStr = this.allocation.eDate.substring(11, 16);\r\n\r\n var startTLTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endTLTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n this.setEndTimeMin(startTLTime, 'tu');\r\n this.setStartTimeMax(endTLTime, 'tu');\r\n\r\n this.allocationTimeUpdateForm.patchValue({\r\n allocationId: this.allocation.id,\r\n startDate: startTimeStr,\r\n endDate: endTimeStr,\r\n lunchTime: this.allocation.lunch\r\n })\r\n this.isAllocationTimeEdit = true\r\n\r\n $('#kendo-tu-start').data('kendoTimePicker').value(startTimeStr);\r\n $('#kendo-tu-end').data('kendoTimePicker').value(endTimeStr);\r\n }\r\n\r\n onUpdateAllocationTimes(): void {\r\n\r\n const validator = ($('#allocationTimeUpdateFormContent') as any).kendoValidator({\r\n\r\n rules: {\r\n matches: function (input) {\r\n if (input.data('greaterthan') == 'kendo-tu-start') {\r\n var startTimeStr = $('#kendo-tu-start').val() as string;\r\n var endTimeStr = $('#kendo-tu-end').val() as string;\r\n var startTUTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endTUTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n\r\n if (startTUTime < endTUTime) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return true\r\n }\r\n }\r\n },\r\n }).data('kendoValidator');\r\n\r\n if (validator.validate()) {\r\n\r\n var allocationDate = this.allocation.sDate\r\n var newStartDate = allocationDate.substring(0, 11) + this.allocationTimeUpdateForm.get('startDate').value + allocationDate.substring(16, allocationDate.length);\r\n var newEndDate = allocationDate.substring(0, 11) + this.allocationTimeUpdateForm.get('endDate').value + allocationDate.substring(16, allocationDate.length);\r\n\r\n var dataObj = {\r\n allocationId: this.allocation.id,\r\n startDate: newStartDate,\r\n endDate: newEndDate,\r\n lunch: this.allocationTimeUpdateForm.get('lunchTime').value,\r\n weekdayStart: this.allocationTimeUpdateForm.get('startDate').value,\r\n weekdayEnd: this.allocationTimeUpdateForm.get('endDate').value,\r\n holidays: ''\r\n };\r\n\r\n var day = 60 * 60 * 24 * 1000;\r\n var isAllocationDateHoliday = this.calendarService.isHoliday(this.allocation.start);\r\n var nextDate = new Date(this.allocation.start.getTime() + day);\r\n var prevDate = new Date(this.allocation.start.getTime() - day);\r\n var isNextDateHoliday = this.calendarService.isHoliday(nextDate);\r\n var isPrevDateHoliday = this.calendarService.isHoliday(prevDate);\r\n\r\n //var holidayStr: string = isAllocationDateHoliday ? 'Holiday' : ((isNextDateHoliday && isPrevDateHoliday) ? 'InBetween' : (isPrevDateHoliday ? 'AfterHoliday' : (isNextDateHoliday ? 'BeforeHoliday' : 'NotHoliday')));\r\n\r\n var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n var holidayStr: string = isAllocationDateHoliday ? 'Holiday' :\r\n ((isNextDateHoliday && !isAllocationDateHoliday) ? 'DayBeforeHoliday' : (\r\n (isPrevDateHoliday && !isAllocationDateHoliday) ? 'DayAfterHoliday' : days[this.allocation.start.getDay()])); // 0 = Sunday, 6 = Saturday\r\n\r\n dataObj.holidays = holidayStr;\r\n\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n this.calendarService.updateAllocationTime(dataObj).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.setNotificationData('timeupdate', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n )\r\n }\r\n }\r\n\r\n setCommonTimes(item): void {\r\n var startTimeStr = item.startDate.substring(11, 16);\r\n var endTimeStr = item.endDate.substring(11, 16);\r\n this.allocationForm.patchValue({\r\n weekdayStart: startTimeStr,\r\n weekdayEnd: endTimeStr,\r\n weekdayLunch: item.lunch,\r\n });\r\n // $('#kendo-start-date').data('kendoDatePicker').value(eventStartDate);\r\n // $('#kendo-end-date').data('kendoDatePicker').value(item.endDate);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(startTimeStr);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(endTimeStr);\r\n }\r\n\r\n onViewHistoryBtnClick(allocationId: number) {\r\n if (this.showHistory) {\r\n this.showHistory = false\r\n } else {\r\n this.calendarService.getAllocationHistory(allocationId).subscribe(\r\n (res) => {\r\n this.allocationHistory = res;\r\n // ($('#viewHistoryModal') as any).modal('show');\r\n this.showHistory = true\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n\r\n onCalendarChange(calendar: string): void {\r\n if (calendar === 'inquiry') {\r\n $('.btn-calendar-booking').removeClass('btn-calendar-active')\r\n $('.btn-calendar-inquiry').addClass('btn-calendar-active')\r\n this.isInquiryCalendarSelected = true\r\n } else {\r\n $('.btn-calendar-inquiry').removeClass('btn-calendar-active')\r\n $('.btn-calendar-booking').addClass('btn-calendar-active')\r\n const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n scheduler.refresh();\r\n this.schedulerDataBound(scheduler);\r\n setTimeout(() => {\r\n this.schedulerDataBound(scheduler);\r\n }, 700);\r\n this.isInquiryCalendarSelected = false\r\n }\r\n }\r\n\r\n setEndTimeMin(dt, option?) {\r\n if (option == 'tl') {\r\n var endTimepicker = $(\"#kendo-tl-end\").data(\"kendoTimePicker\");\r\n } else if (option == 'tu') {\r\n var endTimepicker = $(\"#kendo-tu-end\").data(\"kendoTimePicker\");\r\n } else {\r\n var endTimepicker = $(\"#kendo-wd-end\").data(\"kendoTimePicker\");\r\n }\r\n endTimepicker.min(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate(), (dt.getMinutes() == 45 ? dt.getHours() + 1 : dt.getHours()), (dt.getMinutes() == 45 ? 0 : dt.getMinutes() + 15), 0));\r\n }\r\n setStartTimeMax(dt, option?) {\r\n if (option == 'tl') {\r\n var startTimepicker = $(\"#kendo-tl-start\").data(\"kendoTimePicker\");\r\n } else if (option == 'tu') {\r\n var startTimepicker = $(\"#kendo-tu-start\").data(\"kendoTimePicker\");\r\n } else {\r\n var startTimepicker = $(\"#kendo-wd-start\").data(\"kendoTimePicker\");\r\n }\r\n startTimepicker.max(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate(), (dt.getMinutes() == 0 ? dt.getHours() - 1 : dt.getHours()), (dt.getMinutes() == 0 ? 45 : dt.getMinutes() - 15), 0));\r\n }\r\n\r\n onTLstartChange(option?: string) {\r\n var picker: any\r\n if (option == 'tu') {\r\n picker = $('#kendo-tu-start')\r\n } else {\r\n picker = $('#kendo-tl-start')\r\n }\r\n if (picker.val().toString().length == 2 || picker.val().toString().length == 1) {\r\n\r\n if (picker.val().toString().length == 2) {\r\n let newVal = picker.val() + ':00'\r\n picker.val(newVal)\r\n picker.trigger('change')\r\n }\r\n if (picker.val().toString().length == 1) {\r\n let newVal = '0' + picker.val() + ':00'\r\n picker.val(newVal)\r\n picker.trigger('change')\r\n }\r\n }\r\n }\r\n\r\n onTLEndChange(option?: string) {\r\n var picker: any\r\n if (option == 'tu') {\r\n picker = $('#kendo-tu-end')\r\n } else {\r\n picker = $('#kendo-tl-end')\r\n }\r\n if (picker.val().toString().length == 2 || picker.val().toString().length == 1) {\r\n\r\n if (picker.val().toString().length == 2) {\r\n let newVal = picker.val() + ':00'\r\n picker.val(newVal)\r\n picker.trigger('change')\r\n }\r\n if (picker.val().toString().length == 1) {\r\n let newVal = '0' + picker.val() + ':00'\r\n picker.val(newVal)\r\n picker.trigger('change')\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n // setViewDateRange(e) {\r\n // var view = e.sender.view();\r\n\r\n // switch (e.view) {\r\n // case 'month':\r\n // this.viewStartDate = new Date(e.date.getFullYear(), e.date.getMonth(), 1);\r\n // this.viewEndDate = new Date(e.date.getFullYear(), e.date.getMonth() + 1, 0);\r\n\r\n // break;\r\n // case 'day':\r\n // this.viewStartDate = new Date(e.date.getFullYear(), e.date.getMonth(), 1);\r\n // this.viewEndDate = new Date(e.date.getFullYear(), e.date.getMonth() + 1, 0);\r\n // break;\r\n // case 'Agenda':\r\n // this.viewStartDate = new Date(e.date.getFullYear(), e.date.getMonth(), e.date.getDate());\r\n // this.viewEndDate = new Date(e.date.getFullYear(), e.date.getMonth() + 1, e.date.getDate());\r\n // break;\r\n // default:\r\n // break;\r\n // }\r\n\r\n // const scheduler = $('#admin-inquiry-scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId, userType: this.userType, viewStartDate: this.viewStartDate, viewEndDate: this.viewEndDate });\r\n\r\n // }\r\n}\r\n","export class AlliocationModel {\r\n id:any;\r\n startDate: Date;\r\n ClientId:any;\r\n IsPartial:boolean;\r\n endDate: Date;\r\n startDateString: string;\r\n endDateString: string;\r\n weekdayStart: string;\r\n weekdayEnd: string;\r\n weekdayLunch: number;\r\n weekendStart: string;\r\n weekendEnd: string;\r\n weekendLunch: number;\r\n resourceTypeId: number;\r\n isInquiry: boolean;\r\n}\r\n","module.exports = \".slot-yellow {\\r\\n background-color: yellow !important;\\r\\n color: red;\\r\\n cursor: pointer;\\r\\n padding-bottom: 6px;\\r\\n }\\r\\n .modal {\\r\\n text-align: left;\\r\\n }\\r\\n .disableExpAreasDropdown{\\r\\n pointer-events:none;\\r\\n }\\r\\n .slot-blue {\\r\\n background-color: #53afea !important;\\r\\n cursor: pointer;\\r\\n }\\r\\n .slot-orange {\\r\\n background-color: orange !important;\\r\\n cursor: pointer;\\r\\n padding-bottom: 6px;\\r\\n }\\r\\n .slot-no-check{\\r\\n display: none;\\r\\n cursor: pointer;\\r\\n }\\r\\n .resrcgrpbtn {\\r\\n background-color: #1CA368;\\r\\n border-color: #1CA368 !important;\\r\\n color: white;\\r\\n }\\r\\n .hand {\\r\\n cursor: pointer;\\r\\n }\\r\\n /* div{\\r\\n background-color: rgb(155, 155, 155);\\r\\n } */\\r\\n .display-none {\\r\\n display: none;\\r\\n }\\r\\n #btnPharmacistSm {\\r\\n margin-left: 5px;\\r\\n }\\r\\n .btn-light\\r\\n {\\r\\n border-color: #cdd4cf !important;\\r\\n background-color: #cdd4cf;\\r\\n }\\r\\n /* .card-header .accordion-toggle:after span {\\r\\n content: \\\"\\\\e006\\\";\\r\\n }\\r\\n .card-header .accordion-toggle.collapsed:after span {\\r\\n content: \\\"\\\\e004\\\";\\r\\n } */\\r\\n /* .k-scheduler-content{\\r\\n height: unset;\\r\\n }\\r\\n .k-scheduler-monthview .k-scheduler-content {\\r\\n overflow-y: unset;\\r\\n } */\\r\\n .k-widget.k-timepicker.kendo-time.form-control-style{\\r\\n width: 100%;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2FsZW5kYXIvYm9va2luZy1jYWxlbmRhci9ib29raW5nLWNhbGVuZGFyLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxtQ0FBbUM7SUFDbkMsVUFBVTtJQUNWLGVBQWU7SUFDZixtQkFBbUI7RUFDckI7RUFDQTtJQUNFLGdCQUFnQjtFQUNsQjtFQUVBO0lBQ0UsbUJBQW1CO0VBQ3JCO0VBRUE7SUFDRSxvQ0FBb0M7SUFDcEMsZUFBZTtFQUNqQjtFQUVBO0lBQ0UsbUNBQW1DO0lBQ25DLGVBQWU7SUFDZixtQkFBbUI7RUFDckI7RUFDQTtJQUNFLGFBQWE7SUFDYixlQUFlO0VBQ2pCO0VBRUE7SUFDRSx5QkFBeUI7SUFDekIsZ0NBQWdDO0lBQ2hDLFlBQVk7RUFDZDtFQUVBO0lBQ0UsZUFBZTtFQUNqQjtFQUdBOztLQUVHO0VBSUg7SUFDRSxhQUFhO0VBQ2Y7RUFFQTtJQUNFLGdCQUFnQjtFQUNsQjtFQUVBOztJQUVFLGdDQUFnQztJQUNoQyx5QkFBeUI7RUFDM0I7RUFDQTs7Ozs7S0FLRztFQUVIOzs7OztLQUtHO0VBRUg7SUFDRSxXQUFXO0VBQ2IiLCJmaWxlIjoic3JjL2FwcC9jYWxlbmRhci9ib29raW5nLWNhbGVuZGFyL2Jvb2tpbmctY2FsZW5kYXIuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5zbG90LXllbGxvdyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3cgIWltcG9ydGFudDtcclxuICAgIGNvbG9yOiByZWQ7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNnB4O1xyXG4gIH1cclxuICAubW9kYWwge1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICB9XHJcbiAgXHJcbiAgLmRpc2FibGVFeHBBcmVhc0Ryb3Bkb3due1xyXG4gICAgcG9pbnRlci1ldmVudHM6bm9uZTtcclxuICB9XHJcbiAgXHJcbiAgLnNsb3QtYmx1ZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTNhZmVhICFpbXBvcnRhbnQ7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgfVxyXG4gIFxyXG4gIC5zbG90LW9yYW5nZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2UgIWltcG9ydGFudDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHBhZGRpbmctYm90dG9tOiA2cHg7XHJcbiAgfVxyXG4gIC5zbG90LW5vLWNoZWNre1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICB9XHJcbiAgXHJcbiAgLnJlc3JjZ3JwYnRuIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICMxQ0EzNjg7XHJcbiAgICBib3JkZXItY29sb3I6ICMxQ0EzNjggIWltcG9ydGFudDtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICB9XHJcblxyXG4gIC5oYW5kIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICB9XHJcbiAgXHJcblxyXG4gIC8qIGRpdntcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1NSwgMTU1LCAxNTUpO1xyXG4gIH0gKi9cclxuICBcclxuICBcclxuICBcclxuICAuZGlzcGxheS1ub25lIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG4gIFxyXG4gICNidG5QaGFybWFjaXN0U20ge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcclxuICB9XHJcbiAgXHJcbiAgLmJ0bi1saWdodFxyXG4gIHtcclxuICAgIGJvcmRlci1jb2xvcjogI2NkZDRjZiAhaW1wb3J0YW50O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2NkZDRjZjtcclxuICB9XHJcbiAgLyogLmNhcmQtaGVhZGVyIC5hY2NvcmRpb24tdG9nZ2xlOmFmdGVyIHNwYW4ge1xyXG4gICBjb250ZW50OiBcIlxcZTAwNlwiO1xyXG4gIH1cclxuICAuY2FyZC1oZWFkZXIgLmFjY29yZGlvbi10b2dnbGUuY29sbGFwc2VkOmFmdGVyIHNwYW4ge1xyXG4gICAgY29udGVudDogXCJcXGUwMDRcIjtcclxuICB9ICovXHJcbiAgXHJcbiAgLyogLmstc2NoZWR1bGVyLWNvbnRlbnR7XHJcbiAgICBoZWlnaHQ6IHVuc2V0O1xyXG4gIH1cclxuICAuay1zY2hlZHVsZXItbW9udGh2aWV3IC5rLXNjaGVkdWxlci1jb250ZW50IHtcclxuICAgIG92ZXJmbG93LXk6IHVuc2V0O1xyXG4gIH0gKi9cclxuICBcclxuICAuay13aWRnZXQuay10aW1lcGlja2VyLmtlbmRvLXRpbWUuZm9ybS1jb250cm9sLXN0eWxle1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgfSJdfQ== */\"","import { Component, OnInit, AfterViewInit, ElementRef, ViewChildren, OnDestroy, Input } from '@angular/core';\r\nimport * as jQuery from 'jquery';\r\nimport { CalendarService } from './../calendar.service';\r\nimport { AllocationInfo } from './../allocation-info';\r\nimport { AvailabilityModel } from './../availability-model';\r\nimport { AvailabilityInfo } from './../availability-info';\r\nimport { BookingInfo } from './../booking-info';\r\nimport { IUserInfo } from '../../user/user-info';\r\nimport { FormBuilder, FormGroup, Validators, FormControlName } from '@angular/forms';\r\nimport { TimeLogModel } from './../time-log-model';\r\nimport { ClientBookingInfo } from './../client-booking-info';\r\nimport { AvailabilityUpdateModel } from './../availability-update-model';\r\nimport { GenericValidator } from '../../shared/generic-validator';\r\nimport { Observable, fromEvent, merge, Subscription, Subject, EMPTY } from 'rxjs';\r\nimport { catchError, debounceTime, filter } from 'rxjs/operators';\r\nimport { PartialAvailabilityModel } from './../partial-availability-model';\r\nimport { PartialAvailabilityInfo } from './../partial-availability-info';\r\nimport { AlliocationModel } from './../alliocation-model';\r\nimport { UserService } from '../../user/user.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { SignalrService } from 'src/app/shared/services/common/signalr.service';\r\nimport { ConfigService } from 'src/app/shared/services/config.service';\r\nimport { data } from 'jquery';\r\nimport SwedishHolidays from 'src/app/shared/constants/swedishHolidays';\r\nimport { LongBookingService } from 'src/app/shared/services/domain/booking/long-booking.service';\r\ndeclare var kendo: any;\r\n\r\n@Component({\r\n selector: 'wfm-booking-calendar',\r\n templateUrl: './booking-calendar.component.html',\r\n styleUrls: ['./booking-calendar.component.css']\r\n})\r\nexport class BookingCalendarComponent implements OnInit {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n\r\n\r\n // @Input() selectedUserId: Subject\r\n // @Input() selectedUserType: Subject\r\n // @Input() role: string\r\n showExpAreaDetails: boolean;\r\n bookingModalHeader = \"Make Long Bookings\";\r\n longBookingSelected: boolean;\r\n selectedExpAreas: any[] = [];\r\n swedishHolidays: typeof SwedishHolidays;\r\n role: string;\r\n userId: string;\r\n userType: string;\r\n availabilityCheckDates: AvailabilityModel[];\r\n errorMessage: string;\r\n allocation: BookingInfo;\r\n visibleTimeLogs = false;\r\n updateAllocationId: number;\r\n isSwapEmployeeSelected: boolean;\r\n swapUserList: any[];\r\n swapUserForm: FormGroup;\r\n allocationTimeLogsForm: FormGroup;\r\n allocationForm: FormGroup;\r\n allocationFormLongBooking: FormGroup;\r\n allocationTimeUpdateForm: FormGroup;\r\n selectedUserFullName: string;\r\n selectedUserAllocationTimes: string;\r\n notificationModal: any;\r\n xnotificationModal: any;\r\n\r\n availabilityForm: FormGroup;\r\n leaveForm: FormGroup;\r\n commentForm: FormGroup;\r\n selfBookingForm: FormGroup;\r\n\r\n startTime: any;\r\n endTime: any;\r\n\r\n availabilityUpdateModel: AvailabilityUpdateModel;\r\n currentDate = new Date();\r\n isWeekend = true;\r\n displayValidationMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n subscription: Subscription;\r\n\r\n partialAvailabilityForm: FormGroup;\r\n selectedPartialAvlDate: string;\r\n partialAvailableListForDay: PartialAvailabilityInfo[];\r\n allocationTryDate: Date;\r\n allocationTryTime: string;\r\n allocationTryLunch: number;\r\n selectedResourceTypeId = 1;\r\n resourceTypeForAvalReq = 1;\r\n resourceTypes: any[];\r\n selectedCalendarMonth: Subject = new Subject();\r\n availabilityData: AvailabilityInfo[];\r\n isBookingSelected = true;\r\n isBookingFromPartialAvailability: boolean = false;\r\n holidayLastMonth: string\r\n availableEmployees: any[] = []\r\n preSystemSelectedEmployeeId: Subject = new Subject();\r\n clientCommonTimes: any[] = []\r\n isAllocationTimeEdit: boolean;\r\n allocationHistory: any\r\n showHistory: boolean = false\r\n swapAccessed: boolean = false\r\n isInquiryCalendarSelected: boolean = false\r\n employeeProfileId: Subject = new Subject();\r\n isPartialBooking: boolean = true;\r\n IsOnChangeEvent: boolean = false;\r\n deviceWidth: number = window.innerWidth;\r\n deviceHight: number = window.innerHeight;\r\n Infinity = Infinity;\r\n isMobile: boolean = window.innerWidth < 768 ? true : false\r\n sendRequest: any;\r\n experienceAreas: any[];\r\n maxCallCOunt = 0;\r\n showExperienceAreas: boolean;\r\n disableExpAreasDropdown: boolean;\r\n\r\n isLoadOnSubscription: boolean = false\r\n selecteUserSubscription: Subscription;\r\n routeParamSubscription: Subscription;\r\n newSelectedUserSub: Subscription;\r\n onClickMakeBookingSub: Subscription;\r\n onClickMakeLongBookingSub: Subscription;\r\n onClickMakeInquirySub: Subscription;\r\n OnClickAvailabilityUpdateSub: Subscription;\r\n onResourceTypeChangeSub: Subscription;\r\n\r\n defaultSchedulerView: string = 'month'\r\n\r\n userListAction: Subject = new Subject()\r\n selectedDate: Date = new Date(new Date().setHours(0, 0, 0, 0));\r\n viewStartDate: Date\r\n viewEndDate: Date\r\n configClientIsAbleToSelectTheEmployeesInBooking: boolean = false;\r\n configDisableUpdatingEmpAvailability: boolean;\r\n configClientEditBookingTime: boolean;\r\n disableGetAvailableEmployees: boolean;\r\n timeSlots: any[] = [];\r\n clients: any[] = [];\r\n selfBookingStartDate: any;\r\n\r\n timePickerTimeList: any[] = [\r\n { value: '00:00', label: '00:00' },\r\n { value: '00:15', label: '00:15' },\r\n { value: '00:30', label: '00:30' },\r\n { value: '00:45', label: '00:45' },\r\n { value: '01:00', label: '01:00' },\r\n { value: '01:15', label: '01:15' },\r\n { value: '01:30', label: '01:30' },\r\n { value: '01:45', label: '01:45' },\r\n { value: '02:00', label: '02:00' },\r\n { value: '02:15', label: '02:15' },\r\n { value: '02:30', label: '02:30' },\r\n { value: '02:45', label: '02:45' },\r\n { value: '03:00', label: '03:00' },\r\n { value: '03:15', label: '03:15' },\r\n { value: '03:30', label: '03:30' },\r\n { value: '03:45', label: '03:45' },\r\n { value: '04:00', label: '04:00' },\r\n { value: '04:15', label: '04:15' },\r\n { value: '04:30', label: '04:30' },\r\n { value: '04:45', label: '04:45' },\r\n { value: '05:00', label: '05:00' },\r\n { value: '05:15', label: '05:15' },\r\n { value: '05:30', label: '05:30' },\r\n { value: '05:45', label: '05:45' },\r\n { value: '06:00', label: '06:00' },\r\n { value: '06:15', label: '06:15' },\r\n { value: '06:30', label: '06:30' },\r\n { value: '06:45', label: '06:45' },\r\n { value: '07:00', label: '07:00' },\r\n { value: '07:15', label: '07:15' },\r\n { value: '07:30', label: '07:30' },\r\n { value: '07:45', label: '07:45' },\r\n { value: '08:00', label: '08:00' },\r\n { value: '08:15', label: '08:15' },\r\n { value: '08:30', label: '08:30' },\r\n { value: '08:45', label: '08:45' },\r\n { value: '09:00', label: '09:00' },\r\n { value: '09:15', label: '09:15' },\r\n { value: '09:30', label: '09:30' },\r\n { value: '09:45', label: '09:45' },\r\n { value: '10:00', label: '10:00' },\r\n { value: '10:15', label: '10:15' },\r\n { value: '10:30', label: '10:30' },\r\n { value: '10:45', label: '10:45' },\r\n { value: '11:00', label: '11:00' },\r\n { value: '11:15', label: '11:15' },\r\n { value: '11:30', label: '11:30' },\r\n { value: '11:45', label: '11:45' },\r\n { value: '12:00', label: '12:00' },\r\n { value: '12:15', label: '12:15' },\r\n { value: '12:30', label: '12:30' },\r\n { value: '12:45', label: '12:45' },\r\n { value: '13:00', label: '13:00' },\r\n { value: '13:15', label: '13:15' },\r\n { value: '13:30', label: '13:30' },\r\n { value: '13:45', label: '13:45' },\r\n { value: '14:00', label: '14:00' },\r\n { value: '14:15', label: '14:15' },\r\n { value: '14:30', label: '14:30' },\r\n { value: '14:45', label: '14:45' },\r\n { value: '15:00', label: '15:00' },\r\n { value: '15:15', label: '15:15' },\r\n { value: '15:30', label: '15:30' },\r\n { value: '15:45', label: '15:45' },\r\n { value: '16:00', label: '16:00' },\r\n { value: '16:15', label: '16:15' },\r\n { value: '16:30', label: '16:30' },\r\n { value: '16:45', label: '16:45' },\r\n { value: '17:00', label: '17:00' },\r\n { value: '17:15', label: '17:15' },\r\n { value: '17:30', label: '17:30' },\r\n { value: '17:45', label: '17:45' },\r\n { value: '18:00', label: '18:00' },\r\n { value: '18:15', label: '18:15' },\r\n { value: '18:30', label: '18:30' },\r\n { value: '18:45', label: '18:45' },\r\n { value: '19:00', label: '19:00' },\r\n { value: '19:15', label: '19:15' },\r\n { value: '19:30', label: '19:30' },\r\n { value: '19:45', label: '19:45' },\r\n { value: '20:00', label: '20:00' },\r\n { value: '20:15', label: '20:15' },\r\n { value: '20:30', label: '20:30' },\r\n { value: '20:45', label: '20:45' },\r\n { value: '21:00', label: '21:00' },\r\n { value: '21:15', label: '21:15' },\r\n { value: '21:30', label: '21:30' },\r\n { value: '21:45', label: '21:45' },\r\n { value: '22:00', label: '22:00' },\r\n { value: '22:15', label: '22:15' },\r\n { value: '22:30', label: '22:30' },\r\n { value: '22:45', label: '22:45' },\r\n { value: '23:00', label: '23:00' },\r\n { value: '23:15', label: '23:15' },\r\n { value: '23:30', label: '23:30' },\r\n { value: '23:45', label: '23:45' },\r\n ]\r\n\r\n lunchTimeList: any[] = [\r\n { value: 0, label: '0' },\r\n { value: 15, label: '15' },\r\n { value: 20, label: '20' },\r\n { value: 30, label: '30' },\r\n { value: 45, label: '45' },\r\n { value: 60, label: '60' },\r\n ]\r\n\r\n @Input() bookingComponent: any\r\n constructor(\r\n private longBookingService: LongBookingService,\r\n private configService: ConfigService, private fb: FormBuilder, private userService: UserService, private calendarService: CalendarService, private signalRService: SignalrService, private userservice: UserService, private route: ActivatedRoute,\r\n private elementRef: ElementRef) {\r\n this.validationMessages = {\r\n month: {\r\n required: 'month is required'\r\n },\r\n startDate: {\r\n required: 'start is required'\r\n },\r\n endDate: {\r\n required: 'end is required'\r\n }\r\n };\r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n\r\n this.subscription = this.signalRService.receiveCalendarUpdates().subscribe(st => {\r\n if (st) {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n // scheduler.refresh();\r\n }\r\n });\r\n\r\n this.route.queryParams.subscribe(params => {\r\n if (params['view']) {\r\n this.defaultSchedulerView = params['view'];\r\n }\r\n });\r\n\r\n this.resourceTypes = [];\r\n }\r\n\r\n ngOnDestroy() {\r\n // unsubscribe to ensure no memory leaks\r\n this.subscription.unsubscribe();\r\n this.newSelectedUserSub.unsubscribe();\r\n this.routeParamSubscription.unsubscribe();\r\n this.onClickMakeBookingSub.unsubscribe();\r\n this.onClickMakeLongBookingSub.unsubscribe();\r\n this.OnClickAvailabilityUpdateSub.unsubscribe();\r\n this.onResourceTypeChangeSub.unsubscribe();\r\n }\r\n\r\n closeLongBookingModal() {\r\n setTimeout(() => {\r\n ($('#longBookingModal') as any).modal('show');\r\n\r\n }, 100);\r\n }\r\n\r\n closeDeleteLongBookingModal(response: boolean) {\r\n if (response) {\r\n ($('#requestAllocationForLongBookinModal') as any).modal('hide');\r\n // location.reload();\r\n }\r\n\r\n ($('#longBookingModal') as any).modal('hide');\r\n $('.modal-backdrop').remove();\r\n\r\n }\r\n\r\n setCustomVallidations() {\r\n const month = this.availabilityForm.get('month');\r\n const start = this.availabilityForm.get('startDate');\r\n const end = this.availabilityForm.get('endDate');\r\n\r\n this.availabilityForm.get('changeTypeId').valueChanges\r\n .subscribe(changeType => {\r\n if (changeType === '1') {\r\n month.setValidators([Validators.required]);\r\n start.clearValidators();\r\n end.clearValidators();\r\n } else if (changeType === '2') {\r\n start.setValidators([Validators.required]);\r\n end.setValidators([Validators.required]);\r\n month.clearValidators();\r\n } else if (changeType === '3') {\r\n start.setValidators([Validators.required]);\r\n month.clearValidators();\r\n end.clearValidators();\r\n }\r\n month.updateValueAndValidity();\r\n start.updateValueAndValidity();\r\n end.updateValueAndValidity();\r\n });\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.getClientList();\r\n\r\n this.timeSlots = [\r\n { id: '1', name: '00:00' },\r\n { id: '2', name: '00:15' },\r\n { id: '3', name: '00:30' },\r\n { id: '4', name: '00:45' },\r\n { id: '5', name: '01:00' },\r\n { id: '6', name: '01:15' },\r\n { id: '7', name: '01:30' },\r\n { id: '8', name: '01:45' },\r\n { id: '9', name: '02:00' },\r\n { id: '10', name: '02:15' },\r\n { id: '11', name: '02:30' },\r\n { id: '12', name: '02:45' },\r\n { id: '13', name: '03:00' },\r\n { id: '14', name: '03:15' },\r\n { id: '15', name: '03:30' },\r\n { id: '16', name: '03:45' },\r\n { id: '17', name: '04:00' },\r\n { id: '18', name: '04:15' },\r\n { id: '19', name: '04:30' },\r\n { id: '20', name: '04:45' },\r\n { id: '21', name: '05:00' },\r\n { id: '22', name: '05:15' },\r\n { id: '23', name: '05:30' },\r\n { id: '24', name: '05:45' },\r\n { id: '25', name: '06:00' },\r\n { id: '26', name: '06:15' },\r\n { id: '27', name: '06:30' },\r\n { id: '28', name: '06:45' },\r\n { id: '29', name: '07:00' },\r\n { id: '30', name: '07:15' },\r\n { id: '31', name: '07:30' },\r\n { id: '32', name: '07:45' },\r\n { id: '33', name: '08:00' },\r\n { id: '34', name: '08:15' },\r\n { id: '35', name: '08:30' },\r\n { id: '36', name: '08:45' },\r\n { id: '37', name: '09:00' },\r\n { id: '38', name: '09:15' },\r\n { id: '39', name: '09:30' },\r\n { id: '40', name: '09:45' },\r\n { id: '41', name: '10:00' },\r\n { id: '42', name: '10:15' },\r\n { id: '43', name: '10:30' },\r\n { id: '44', name: '10:45' },\r\n { id: '45', name: '11:00' },\r\n { id: '46', name: '11:15' },\r\n { id: '47', name: '11:30' },\r\n { id: '48', name: '11:45' },\r\n { id: '49', name: '12:00' },\r\n { id: '50', name: '12:15' },\r\n { id: '51', name: '12:30' },\r\n { id: '52', name: '12:45' },\r\n { id: '53', name: '13:00' },\r\n { id: '54', name: '13:15' },\r\n { id: '55', name: '13:30' },\r\n { id: '56', name: '13:45' },\r\n { id: '57', name: '14:00' },\r\n { id: '58', name: '14:15' },\r\n { id: '59', name: '14:30' },\r\n { id: '60', name: '14:45' },\r\n { id: '61', name: '15:00' },\r\n { id: '62', name: '15:15' },\r\n { id: '63', name: '15:30' },\r\n { id: '64', name: '15:45' },\r\n { id: '65', name: '16:00' },\r\n { id: '66', name: '16:15' },\r\n { id: '67', name: '16:30' },\r\n { id: '68', name: '16:45' },\r\n { id: '69', name: '17:00' },\r\n { id: '70', name: '17:15' },\r\n { id: '71', name: '17:30' },\r\n { id: '72', name: '17:45' },\r\n { id: '73', name: '18:00' },\r\n { id: '74', name: '18:15' },\r\n { id: '75', name: '18:30' },\r\n { id: '76', name: '18:45' },\r\n { id: '77', name: '19:00' },\r\n { id: '78', name: '19:15' },\r\n { id: '79', name: '19:30' },\r\n { id: '80', name: '19:45' },\r\n { id: '81', name: '20:00' },\r\n { id: '82', name: '20:15' },\r\n { id: '83', name: '20:30' },\r\n { id: '84', name: '20:45' },\r\n { id: '85', name: '21:00' },\r\n { id: '86', name: '21:15' },\r\n { id: '87', name: '21:30' },\r\n { id: '88', name: '21:45' },\r\n { id: '89', name: '22:00' },\r\n { id: '90', name: '22:15' },\r\n { id: '91', name: '22:30' },\r\n { id: '92', name: '22:45' },\r\n { id: '93', name: '23:00' },\r\n { id: '94', name: '23:15' },\r\n { id: '95', name: '23:30' },\r\n { id: '96', name: '23:45' }\r\n ];\r\n this.getAdminConfigurationDetails();\r\n this.getUserWiseAdminConfigurationDetails(null);\r\n this.onClickLongBooking();\r\n this.swedishHolidays = SwedishHolidays;\r\n kendo.culture('sv-SE');\r\n this.currentDate.setHours(0, 0, 0, 0);\r\n this.allocation = {\r\n isExpAreaValidationFail: null,\r\n id: 0,\r\n title: '',\r\n sDate: '',\r\n eDate: '',\r\n lunch: 0,\r\n isPastDate: false,\r\n bookingTotal: 0,\r\n start: new Date(),\r\n end: new Date(),\r\n empName: '',\r\n empImage: '',\r\n empJobCategoryId: 0,\r\n employeeId: '',\r\n empJobCategory: '',\r\n clientName: '',\r\n clientContactName: '',\r\n clientAddress: '',\r\n clientPhone: '',\r\n clientEmail: '',\r\n isTimeLogged: false,\r\n timeLogStartTime: '',\r\n timeLogEndTime: '',\r\n timeLogLunch: 0,\r\n timeLogTotal: 0,\r\n colorClass: 'slot-blue',\r\n timeLoggedClass: 'slot-no-check',\r\n empImagePath: '',\r\n clientImagePath: '',\r\n resourceTypeId: 1,\r\n resourceTypeClass: '',\r\n isInquiry: null,\r\n clientId: '',\r\n longBookingId: null,\r\n distance: null,\r\n travelTime: null,\r\n resourceTypeIconLetter: '',\r\n message: null\r\n };\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n this.initializeForms();\r\n\r\n this.setCustomVallidations();\r\n\r\n // Time auto fill on change allocation form\r\n $('#kendo-wd-start').on('change', () => {\r\n let loadData: boolean = true\r\n if ($('#kendo-wd-start').val().toString().length == 2 || $('#kendo-wd-start').val().toString().length == 1) {\r\n loadData = false\r\n if ($('#kendo-wd-start').val().toString().length == 2) {\r\n let newVal = $('#kendo-wd-start').val() + ':00'\r\n $('#kendo-wd-start').val(newVal)\r\n $('#kendo-wd-start').trigger('change')\r\n }\r\n if ($('#kendo-wd-start').val().toString().length == 1) {\r\n let newVal = '0' + $('#kendo-wd-start').val() + ':00'\r\n $('#kendo-wd-start').val(newVal)\r\n $('#kendo-wd-start').trigger('change')\r\n }\r\n }\r\n setTimeout(() => {\r\n if (loadData) {\r\n this.setAvailableEmployees()\r\n }\r\n }, 100);\r\n })\r\n\r\n $('#kendo-wd-end').on('change', () => {\r\n let loadData: boolean = true\r\n if ($('#kendo-wd-end').val().toString().length == 2 || $('#kendo-wd-end').val().toString().length == 1) {\r\n loadData = false\r\n if ($('#kendo-wd-end').val().toString().length == 2) {\r\n let newVal = $('#kendo-wd-end').val() + ':00'\r\n $('#kendo-wd-end').val(newVal)\r\n $('#kendo-wd-end').trigger('change')\r\n }\r\n if ($('#kendo-wd-end').val().toString().length == 1) {\r\n let newVal = '0' + $('#kendo-wd-end').val() + ':00'\r\n $('#kendo-wd-end').val(newVal)\r\n $('#kendo-wd-end').trigger('change')\r\n }\r\n }\r\n setTimeout(() => {\r\n if (loadData) {\r\n this.setAvailableEmployees()\r\n }\r\n }, 100);\r\n })\r\n\r\n $('#kendo-end-date').on('change', (event) => {\r\n\r\n let date = new Date((event.target).value);\r\n\r\n const filterData = this.availabilityData.find((data) => {\r\n return (data.startTime.toDateString() === date.toDateString());\r\n });\r\n\r\n // this.isBookingSelected = true;\r\n if (!filterData || !filterData.isAvailable) {\r\n this.isBookingSelected = false;\r\n }\r\n\r\n let scheduler = $(\"#scheduler\").data(\"kendoScheduler\");\r\n scheduler.select(null, null);\r\n\r\n if (!this.disableGetAvailableEmployees) {\r\n setTimeout(() => {\r\n this.setAvailableEmployees()\r\n }, 100);\r\n }\r\n })\r\n\r\n $(window).resize(() => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n if (scheduler) {\r\n scheduler.refresh();\r\n }\r\n })\r\n\r\n this.routeParamSubscription = this.route.data.subscribe(data => {\r\n this.role = data.role\r\n if (this.role == 'Employee') {\r\n this.userType = 'Employee'\r\n }\r\n });\r\n\r\n this.newSelectedUserSub = this.userservice.newSelectedUser.subscribe((data) => {\r\n if (this.isLoadOnSubscription) {\r\n setTimeout(() => {\r\n this.loadCalendar(data);\r\n }, 100);\r\n } else if (data && data.userId) {\r\n this.userId = data.userId\r\n this.userType = data.userType\r\n }\r\n })\r\n\r\n this.onClickMakeBookingSub = this.calendarService.onClickMakeBooking.subscribe((res) => {\r\n if (res) {\r\n this.disableGetAvailableEmployees = false;\r\n this.onClickMakeBooking()\r\n }\r\n })\r\n\r\n this.onClickMakeLongBookingSub = this.calendarService.onClickMakeLongBooking.subscribe((res) => {\r\n if (res) {\r\n this.disableGetAvailableEmployees = false;\r\n this.onClickMakeLongBooking()\r\n }\r\n })\r\n\r\n this.onClickMakeInquirySub = this.calendarService.onClickMakeInquiry.subscribe((res) => {\r\n if (res) {\r\n this.disableGetAvailableEmployees = true;\r\n this.directCreateInquiry()\r\n }\r\n })\r\n\r\n this.OnClickAvailabilityUpdateSub = this.calendarService.OnClickAvailabilityUpdate.subscribe((res) => {\r\n if (res) {\r\n this.disableGetAvailableEmployees = false;\r\n ($('#updateAvailabilityModal') as any).modal('show');\r\n }\r\n })\r\n this.onResourceTypeChangeSub = this.calendarService.onResourceTypeChange.subscribe((res: number) => {\r\n if (res) {\r\n this.onResourceTypeChange(res)\r\n }\r\n })\r\n\r\n var date = new Date();\r\n this.viewStartDate = new Date(date.getFullYear(), date.getMonth(), 1);\r\n this.viewEndDate = new Date(date.getFullYear(), date.getMonth() + 1, 1, 1);\r\n this.getCurrentConfigData();\r\n this.getMasterData();\r\n this.getAdminCOnfigurations();\r\n }\r\n\r\n DeleteLongBooking(id: number) {\r\n this.longBookingService.deleteLongBooking(id).pipe(catchError(() => {\r\n\r\n this.notificationModal.header = 'Failed'; // Failed\r\n this.notificationModal.description = 'Long booking delete failed !!!'; //Inquiry adding failed! Please try again.\r\n this.notificationModal.type = 'danger';\r\n return EMPTY;\r\n })).subscribe((data) => {\r\n ($('#allocationDeleteModal') as any).modal('hide');\r\n this.longBookingSelected = false;\r\n this.notificationModal.header = 'Long booking deleted'; // Failed\r\n this.notificationModal.description = 'Long booking deleted success !!!'; //Inquiry adding failed! Please try again.\r\n this.notificationModal.type = 'success';\r\n ($('#xnotificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#xnotificationModal') as any).modal('hide');\r\n }, 1000);\r\n });\r\n\r\n\r\n }\r\n\r\n onClickLongBooking() {\r\n this.calendarService.onClickMakeLongBooking.subscribe((data) => {\r\n this.bookingModalHeader = \"Skapa Långtidsbokning\";\r\n this.longBookingSelected = true;\r\n this.isBookingSelected = false;\r\n })\r\n }\r\n\r\n getClientList(): void {\r\n this.userService.getAdminUserList('client', new Date(), 0).subscribe(\r\n (res: IUserInfo[]) => {\r\n this.clients = res;\r\n },\r\n (error: any) => {\r\n this.errorMessage = error as any;\r\n }\r\n );\r\n }\r\n\r\n editLongBooking(allocation: any) {\r\n this.calendarService.emmitLongBookingDetails(allocation);\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n this.bookingModalHeader = \"Edit Long Booking\";\r\n this.longBookingSelected = true;\r\n setTimeout(() => {\r\n ($('#requestAllocationForLongBookinModal') as any).modal('show');\r\n }, 500);\r\n }\r\n\r\n getAdminCOnfigurations() {\r\n this.configService.getAdminCOnfigurations().subscribe(data => {\r\n if (data) {\r\n this.showExperienceAreas = !data.find(a => a.title === 'configDisableExperienceAreas').isActive;\r\n }\r\n })\r\n }\r\n\r\n\r\n initializeForms(): void {\r\n this.allocationForm = this.fb.group({\r\n startDate: [],\r\n experienceAreas: [] = [],\r\n endDate: ['', Validators.required],\r\n weekdayStart: ['', Validators.required],\r\n weekdayEnd: ['', Validators.required],\r\n weekdayLunch: ['', Validators.required],\r\n weekendStart: [],\r\n weekendEnd: [],\r\n weekendLunch: [],\r\n clientId: [],\r\n resourceTypeId: ['1'],\r\n holidays: [''],\r\n isInquiry: [],\r\n employeeId: [],\r\n employeeIds:[],\r\n message: null,\r\n isPartialBooking: [false]\r\n });\r\n\r\n\r\n this.swapUserForm = this.fb.group({\r\n allocationId: [],\r\n swapUserId: [],\r\n swapType: []\r\n });\r\n\r\n this.allocationTimeLogsForm = this.fb.group({\r\n allocationId: [],\r\n isTimeLogged: [],\r\n startTime: [],\r\n endTime: [],\r\n lunchTime: [],\r\n travelTime: 0,\r\n distance: 0\r\n });\r\n\r\n this.availabilityForm = this.fb.group({\r\n changeTypeId: ['1'],\r\n month: ['', Validators.required],\r\n startDate: [''],\r\n endDate: [''],\r\n availabilityId: ['1']\r\n });\r\n\r\n this.leaveForm = this.fb.group({\r\n leaveTypeId: ['1'],\r\n fromDate: ['', Validators.required],\r\n toDate: [''],\r\n comment: ''\r\n });\r\n\r\n this.commentForm = this.fb.group({\r\n fromDate: ['', Validators.required],\r\n toDate: [''],\r\n comment: ['', Validators.required]\r\n });\r\n\r\n this.selfBookingForm = this.fb.group({\r\n startDate: [],\r\n experienceAreas: [] = [],\r\n endDate: [''],\r\n weekdayStart: [''],\r\n weekdayEnd: [''],\r\n weekdayLunch: [''],\r\n weekendStart: [],\r\n weekendEnd: [],\r\n weekendLunch: [],\r\n clientId: [],\r\n resourceTypeId: ['1'],\r\n holidays: [''],\r\n isInquiry: [],\r\n employeeId: [],\r\n message: null,\r\n isPartialBooking: [false]\r\n });\r\n this.partialAvailabilityForm = this.fb.group({\r\n avlTypeId: [],\r\n avlDate: [],\r\n avlStart: [],\r\n avlEnd: []\r\n });\r\n\r\n this.allocationTimeUpdateForm = this.fb.group({\r\n allocationId: [],\r\n startDate: [],\r\n endDate: [],\r\n lunchTime: []\r\n })\r\n\r\n }\r\n\r\n // get f() { return this.swapUserForm.controls; }\r\n\r\n\r\n ngAfterViewInit() {\r\n\r\n\r\n $(document).ready(function () {\r\n $(window).scrollTop(0);\r\n\r\n if (!$('.mob-inquiry').hasClass('outside-click')) {\r\n $('.mob-bookings').removeClass('tab-inactive');\r\n $('.mob-bookings').addClass('btn-success');\r\n $('.mob-inquiry').removeClass('outside-click');\r\n }\r\n\r\n });\r\n\r\n // $('.k-scheduler-header .k-scheduler-table tr th:nth-child(1)').css('background-color', 'red');\r\n const calendarService = this.calendarService;\r\n let userId = this.userId;\r\n let role = this.role;\r\n let isInquiryCalendarSelected = this.isInquiryCalendarSelected;\r\n let viewStartDate = this.viewStartDate\r\n let viewEndDate = this.viewEndDate\r\n let patentThis = this\r\n\r\n\r\n const customAgenda = kendo.ui.AgendaView.extend({\r\n endDate() {\r\n const date = kendo.ui.AgendaView.fn.startDate.call(this);\r\n return kendo.date.addDays(date, 30);\r\n }\r\n });\r\n\r\n // const customMonthView = kendo.ui.MonthView.extend({\r\n // });\r\n var eventHeight: number\r\n var eventsPerDay = 2\r\n var isAdaptiveSlotHeight: boolean\r\n if (this.deviceWidth < 576) {\r\n eventHeight = 60\r\n isAdaptiveSlotHeight = true\r\n } else if (this.deviceWidth < 768) {\r\n eventHeight = 43\r\n isAdaptiveSlotHeight = true\r\n } else if (this.deviceWidth < 992) {\r\n eventHeight = 43\r\n isAdaptiveSlotHeight = false\r\n } else if (this.deviceWidth < 1200) {\r\n eventHeight = 31\r\n isAdaptiveSlotHeight = false\r\n } else {\r\n isAdaptiveSlotHeight = false\r\n eventHeight = 30\r\n }\r\n\r\n ($('#scheduler') as any).kendoScheduler({\r\n views: [\r\n {\r\n type: 'month',\r\n eventsPerDay: eventsPerDay,\r\n eventHeight: eventHeight,\r\n adaptiveSlotHeight: isAdaptiveSlotHeight,\r\n selected: this.defaultSchedulerView == 'month' ? true : false\r\n\r\n },\r\n {\r\n type: 'day',\r\n allDaySlot: false,\r\n eventTemplate: $('#event-day-template').html(),\r\n selected: this.defaultSchedulerView == 'day' ? true : false\r\n },\r\n {\r\n type: customAgenda,\r\n title: 'Agenda',\r\n eventTemplate: $('#event-agenda-template').html(),\r\n selectedDateFormat: \"{0:dd/MM/yyyy} - {1:dd/MM/yyyy}\",\r\n selectedShortDateFormat: \"{0:dd/MM} - {1:dd/MM}\",\r\n selected: this.defaultSchedulerView == 'agenda' ? true : false\r\n }\r\n ],\r\n // { type: 'agenda', eventTemplate: $('#event-agenda-template').html() }],\r\n eventTemplate: ($('#booking-event-slot-template') as any).html(),\r\n timezone: 'Europe/Stockholm',\r\n majorTimeHeaderTemplate: kendo.template('#=kendo.toString(date, \\'HH:mm\\')#'),\r\n dateHeaderTemplate: kendo.template(\"#=kendo.toString(date, 'ddd dd/M')#\"),\r\n selectable: true,\r\n editable: {\r\n destroy: false,\r\n move: false,\r\n resize: false,\r\n create: false\r\n },\r\n dataSource:\r\n {\r\n transport: {\r\n read(o) {\r\n let loadData = false;\r\n if (!o.data.userId && !userId) {\r\n loadData = true;\r\n userId = '';\r\n } else if (o.data.userId && !userId) {\r\n loadData = true;\r\n userId = o.data.userId;\r\n } else if (o.data.userId && userId) {\r\n loadData = true;\r\n userId = o.data.userId;\r\n } else if (!o.data.userId && userId) {\r\n loadData = true;\r\n }\r\n viewStartDate = o.data.viewStartDate ? o.data.viewStartDate : viewStartDate\r\n viewEndDate = o.data.viewEndDate ? o.data.viewEndDate : viewEndDate\r\n\r\n if (loadData) {\r\n calendarService.getAllocations(userId, role, viewStartDate, viewEndDate)\r\n .subscribe(\r\n (allocations: BookingInfo[]) => {\r\n o.success(allocations);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n } else {\r\n o.success([]);\r\n }\r\n\r\n }\r\n\r\n }\r\n },\r\n toolbar: ['pdf'],\r\n pdf: {\r\n fileName: 'Bookings-Export.pdf',\r\n }\r\n });\r\n\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n\r\n\r\n scheduler.wrapper.on('mouseup', '.k-scheduler-table td, .k-event', function (e) {\r\n const target = $(e.currentTarget);\r\n if (target.hasClass('k-event')) {\r\n const event = scheduler.occurrenceByUid(target.data('uid'));\r\n scheduler.editEvent(event);\r\n }\r\n });\r\n\r\n scheduler.bind('edit', (event) => {\r\n event.preventDefault();\r\n $('#kendo-tl-start').data('kendoTimePicker')\r\n $('#kendo-tl-end').data('kendoTimePicker')\r\n this.schedulerEdit(event);\r\n });\r\n\r\n scheduler.bind('navigate', (e) => {\r\n this.setViewDateRange(e)\r\n if (e.action == 'next') {\r\n $('.k-state-default.k-header.k-nav-next').addClass('k-state-hover');\r\n }\r\n if (e.action == 'previous') {\r\n $('.k-state-default.k-header.k-nav-prev').addClass('k-state-hover');\r\n }\r\n // this.selectedCalendarMonth.next(e.date);\r\n this.calendarService.emmitSelectedMonth(e.date)\r\n $('.k-scheduler-tools').hide();\r\n if (e.view === 'day') {\r\n e.sender.select(null);\r\n setTimeout(() => {\r\n this.scrollToHour(8);\r\n }, 200);\r\n }\r\n if (e.view === 'Agenda') {\r\n if (!kendo.support.mobileOS) {\r\n }\r\n }\r\n });\r\n\r\n scheduler.bind('dataBound', (e) => {\r\n if (!this.isInquiryCalendarSelected) {\r\n this.schedulerDataBound(scheduler);\r\n setTimeout(() => {\r\n $('.k-scheduler-navigation').css('pointer-events', 'all');\r\n $('.k-scheduler-navigation').css('opacity', '1');\r\n $('.k-state-default.k-header.k-nav-prev').removeClass('k-state-hover');\r\n $('.k-state-default.k-header.k-nav-next').removeClass('k-state-hover');\r\n }, 500);\r\n }\r\n });\r\n\r\n\r\n scheduler.bind('change', (event) => {\r\n const eventStartDate = new Date(event.start);\r\n const eventEndDate = new Date(event.end);\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n this.selectedDate = eventStartDate\r\n if (eventStartDate >= this.currentDate && (this.userType === 'Client' && this.userId != 'all') && role != 'Employee') {\r\n if (event != null && event.slots != null && event.slots.length > 0) {\r\n $(event.slots[0].element).addClass('cell-celected');\r\n }\r\n }\r\n\r\n const filterData = this.availabilityData.find((data) => {\r\n return (data.startTime.toDateString() === event.start.toDateString());\r\n });\r\n\r\n this.isBookingSelected = true;\r\n if (!filterData || !filterData.isAvailable) {\r\n this.isBookingSelected = false;\r\n }\r\n\r\n // Following is required because event end date is set to next day 00:00:00\r\n const endDate = new Date(eventEndDate.setDate(eventEndDate.getDate() + -1));\r\n\r\n this.isWeekend = (endDate.getDay() === 6) || (endDate.getDay() === 0);\r\n const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n const lunch = (this.isWeekend ? 0 : 45);\r\n\r\n if (this.isWeekend) {\r\n var startInitTime = new Date(2000, 0, 0, 10, 0, 0);\r\n var endInitTime = new Date(2000, 0, 0, 15, 0, 0);\r\n this.setEndTimeMin(startInitTime);\r\n this.setStartTimeMax(endInitTime);\r\n this.startTime = startInitTime;\r\n this.endTime = endInitTime;\r\n } else {\r\n var startInitTime = new Date(2000, 0, 0, 9, 0, 0);\r\n var endInitTime = new Date(2000, 0, 0, 18, 0, 0);\r\n this.setEndTimeMin(startInitTime);\r\n this.setStartTimeMax(endInitTime);\r\n this.startTime = startInitTime;\r\n this.endTime = endInitTime;\r\n }\r\n\r\n this.IsOnChangeEvent = true;\r\n this.allocationForm.patchValue({\r\n startDate: eventStartDate,\r\n endDate,\r\n // weekdayStart: startTime,\r\n // weekdayEnd: endTime,\r\n weekdayLunch: lunch,\r\n });\r\n\r\n // $('#kendo-start-date').data('kendoDatePicker').value(eventStartDate);\r\n $('#kendo-end-date').data('kendoDatePicker').value(endDate);\r\n // $('#kendo-wd-start').data('kendoTimePicker').value(startTime);\r\n // $('#kendo-wd-end').data('kendoTimePicker').value(endTime);\r\n\r\n });\r\n\r\n scheduler.element.on('dblclick', '.k-scheduler-content td', (e) => {\r\n if (this.configDisableUpdatingEmpAvailability) {\r\n return;\r\n }\r\n if ((this.userType && this.userType === 'Employee' && userId != 'all' && role == 'Admin') || role == 'Employee') {\r\n const slot = scheduler.slotByElement($(e.target));\r\n if (slot.startDate >= this.currentDate) {\r\n if (role == 'Employee') {\r\n userId = ''\r\n }\r\n\r\n calendarService.updateSingleAvailability(slot.startDate, userId).subscribe(\r\n (data: boolean) => {\r\n // scheduler.dataSource.read({ userId: userId });\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.signalRService.broadcastCalendarUpdates();\r\n if (role == 'Employee') {\r\n scheduler.refresh();\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n\r\n if (this.userType && this.userType === 'Client' && userId != 'all' && role != 'Employee') {\r\n const slot = scheduler.slotByElement($(e.target));\r\n if (slot.startDate >= this.currentDate) {\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n $(scheduler.slotByElement($(e.target)).element).addClass('cell-celected');\r\n const eventStartDate = slot.startDate;\r\n const eventEndDate = slot.endDate;\r\n // Following is required because event end date is set to next day 00:00:00\r\n const endDate = new Date(eventEndDate.setDate(eventEndDate.getDate() + -1));\r\n\r\n this.isWeekend = (endDate.getDay() === 6) || (endDate.getDay() === 0);\r\n const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n const lunch = (this.isWeekend ? 0 : 45);\r\n\r\n if (this.isWeekend) {\r\n var startInitTime = new Date(2000, 0, 0, 10, 0, 0);\r\n var endInitTime = new Date(2000, 0, 0, 15, 0, 0);\r\n this.setEndTimeMin(startInitTime);\r\n this.setStartTimeMax(endInitTime);\r\n } else {\r\n var startInitTime = new Date(2000, 0, 0, 9, 0, 0);\r\n var endInitTime = new Date(2000, 0, 0, 18, 0, 0);\r\n this.setEndTimeMin(startInitTime);\r\n this.setStartTimeMax(endInitTime);\r\n }\r\n this.IsOnChangeEvent = true;\r\n this.allocationForm.patchValue({\r\n startDate: eventStartDate,\r\n endDate,\r\n weekdayStart: startTime,\r\n weekdayEnd: endTime,\r\n weekdayLunch: lunch,\r\n resourceTypeId: this.selectedResourceTypeId,\r\n clientId: this.userId,\r\n isInquiry: !this.isBookingSelected,\r\n employeeId: ''\r\n });\r\n\r\n // $('#kendo-start-date').data('kendoDatePicker').value(eventStartDate);\r\n $('#kendo-end-date').data('kendoDatePicker').value(endDate);\r\n $('#kendo-end-date').data('kendoDatePicker').enable(true);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(startTime);\r\n $('#kendo-wd-start').data('kendoTimePicker').enable(true);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(endTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').enable(true);\r\n\r\n this.isBookingFromPartialAvailability = false;\r\n this.onClickMakeBooking();\r\n }\r\n }\r\n });\r\n\r\n this.initializeKendoComponents();\r\n $('.k-scheduler-tools').hide();\r\n $('.admin-booking-scheduler .k-scheduler-views').append('
  • Skriv ut
  • ')\r\n $('.admin-booking-scheduler .mobile-export').click(() => {\r\n $('.admin-booking-scheduler .k-pdf').click();\r\n });\r\n if (kendo.support.mobileOS) {\r\n $('.k-sm-date-format').css('font-size', '100%');\r\n }\r\n\r\n $('#employeeBookingModal').on('hide.bs.modal', () => {\r\n this.allocationTimeUpdateForm.patchValue({\r\n allocationId: '',\r\n startDate: '',\r\n endDate: '',\r\n lunchTime: '',\r\n })\r\n this.allocationTimeLogsForm.patchValue({\r\n startTime: '',\r\n endTime: '',\r\n lunchTime: '',\r\n travelTime: 0,\r\n distance: 0\r\n\r\n\r\n });\r\n this.swapUserForm.reset()\r\n this.isAllocationTimeEdit = false\r\n this.showHistory = false\r\n this.swapAccessed = false\r\n this.sendRequest = false\r\n $('.collapse').removeClass('show')\r\n $('.availBtn').removeClass('btn-primary')\r\n $('.availBtn').addClass('btn-secondary')\r\n $('.sameDayBtn').removeClass('btn-primary')\r\n $('.sameDayBtn').addClass('btn-secondary')\r\n })\r\n\r\n this.isLoadOnSubscription = true;\r\n }\r\n\r\n getUserWiseAdminConfigurationDetails(userId: string): void {\r\n this.configService.getUserWiseAdminCOnfigurations(userId).subscribe(data => {\r\n if (data.length) {\r\n if (data.find(a => a.title === 'configDisableUpdatingEmpAvailability')) {\r\n this.configDisableUpdatingEmpAvailability = data.find(a => a.title === 'configDisableUpdatingEmpAvailability').isActive;\r\n }\r\n if (data.find(a => a.title === 'configClientEditBookingTime')) {\r\n this.configClientEditBookingTime = data.find(a => a.title === 'configClientEditBookingTime').isActive;\r\n }\r\n }\r\n })\r\n }\r\n\r\n getMasterData() {\r\n this.userService.getInnitialMasterData().subscribe((data) => {\r\n this.experienceAreas = data.experienceAreas;\r\n for (let [key, value] of Object.entries(this.experienceAreas)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n })\r\n }\r\n\r\n initializeKendoComponents(): void {\r\n let loggedInUserRole: string;\r\n loggedInUserRole = localStorage.getItem('role');\r\n\r\n if (loggedInUserRole == 'Administrator') {\r\n ($('#kendo-end-date') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n change: (val) => {\r\n this.isWeekend = (val.sender._value.getDay() === 6) || (val.sender._value.getDay() === 0);\r\n const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n const lunch = (this.isWeekend ? 0 : 45);\r\n\r\n this.allocationForm.patchValue({\r\n startDate: val.sender._value,\r\n endDate: val.sender._value,\r\n weekdayStart: startTime,\r\n weekdayEnd: endTime,\r\n weekdayLunch: lunch,\r\n experienceAreas: []\r\n });\r\n this.startTime = startTime;\r\n this.endTime = endTime;\r\n\r\n $('#kendo-wd-start').data('kendoTimePicker').value(startTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(endTime);\r\n }\r\n });\r\n } else {\r\n ($('#kendo-end-date') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n min: new Date(),\r\n change: (val) => {\r\n this.isWeekend = (val.sender._value.getDay() === 6) || (val.sender._value.getDay() === 0);\r\n const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n const lunch = (this.isWeekend ? 0 : 45);\r\n\r\n this.allocationForm.patchValue({\r\n startDate: val.sender._value,\r\n endDate: val.sender._value,\r\n weekdayLunch: lunch,\r\n experienceAreas: []\r\n });\r\n this.startTime = startTime;\r\n this.endTime = endTime;\r\n\r\n $('#kendo-wd-start').data('kendoTimePicker').value(startTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(endTime);\r\n }\r\n });\r\n }\r\n // Time Picker initialization for allocation form\r\n ($('.kendo-time-al-start') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n // const dt = new Date(val.sender._value);\r\n var dt: any\r\n if (val.sender._value) {\r\n dt = new Date(val.sender._value);\r\n } else {\r\n var timeStr = val.sender._oldText\r\n dt = new Date(2000, 0, 0, parseInt(timeStr.slice(0, 2)), parseInt(timeStr.slice(3, 5)), 0);\r\n }\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n this.setEndTimeMin(dt);\r\n this.startTime = dt;\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.allocationForm.get(formControlName).setValue(formattedTime);\r\n }\r\n });\r\n ($('.kendo-time-al-end') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n // const dt = new Date(val.sender._value);\r\n var dt: any\r\n if (val.sender._value) {\r\n dt = new Date(val.sender._value);\r\n } else {\r\n var timeStr = val.sender._oldText\r\n dt = new Date(2000, 0, 0, parseInt(timeStr.slice(0, 2)), parseInt(timeStr.slice(3, 5)), 0);\r\n }\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n this.setStartTimeMax(dt);\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.allocationForm.get(formControlName).setValue(formattedTime);\r\n this.endTime = dt;\r\n\r\n }\r\n });\r\n\r\n // Time Picker initialization for time log form\r\n ($('.kendo-time-tl-start') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n // const dt = new Date(val.sender._value);\r\n var dt: any\r\n if (val.sender._value) {\r\n dt = new Date(val.sender._value);\r\n } else {\r\n var timeStr = val.sender._oldText\r\n dt = new Date(2000, 0, 0, parseInt(timeStr.slice(0, 2)), parseInt(timeStr.slice(3, 5)), 0);\r\n }\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n this.setEndTimeMin(dt, 'tl');\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.allocationTimeLogsForm.get(formControlName).setValue(formattedTime);\r\n }\r\n });\r\n ($('.kendo-time-tl-end') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n // const dt = new Date(val.sender._value);\r\n var dt: any\r\n if (val.sender._value) {\r\n dt = new Date(val.sender._value);\r\n } else {\r\n var timeStr = val.sender._oldText\r\n dt = new Date(2000, 0, 0, parseInt(timeStr.slice(0, 2)), parseInt(timeStr.slice(3, 5)), 0);\r\n }\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n this.setStartTimeMax(dt, 'tl');\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.allocationTimeLogsForm.get(formControlName).setValue(formattedTime);\r\n }\r\n });\r\n\r\n // Time Picker initialization for time update form\r\n ($('.kendo-time-tu-start') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n //const dt = new Date(val.sender._value);\r\n var dt: any\r\n if (val.sender._value) {\r\n dt = new Date(val.sender._value);\r\n } else {\r\n var timeStr = val.sender._oldText\r\n dt = new Date(2000, 0, 0, parseInt(timeStr.slice(0, 2)), parseInt(timeStr.slice(3, 5)), 0);\r\n }\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n this.setEndTimeMin(dt, 'tu');\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.allocationTimeUpdateForm.get(formControlName).setValue(formattedTime);\r\n }\r\n });\r\n ($('.kendo-time-tu-end') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n //const dt = new Date(val.sender._value);\r\n var dt: any\r\n if (val.sender._value) {\r\n dt = new Date(val.sender._value);\r\n } else {\r\n var timeStr = val.sender._oldText\r\n dt = new Date(2000, 0, 0, parseInt(timeStr.slice(0, 2)), parseInt(timeStr.slice(3, 5)), 0);\r\n }\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n this.setStartTimeMax(dt, 'tu');\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.allocationTimeUpdateForm.get(formControlName).setValue(formattedTime);\r\n }\r\n });\r\n\r\n\r\n // Time Picker initialization for availability update form\r\n ($('.kendo-time-au-start') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n var dt: any\r\n if (val.sender._value) {\r\n dt = new Date(val.sender._value);\r\n } else {\r\n var startTimeStr = val.sender._oldText\r\n dt = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n }\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n this.setEndTimeMin(dt, 'au');\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.partialAvailabilityForm.get(formControlName).setValue(formattedTime);\r\n }\r\n });\r\n ($('.kendo-time-au-end') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n var dt: any\r\n if (val.sender._value) {\r\n dt = new Date(val.sender._value);\r\n } else {\r\n var endTimeStr = val.sender._oldText\r\n dt = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n }\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n this.setStartTimeMax(dt, 'au');\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.partialAvailabilityForm.get(formControlName).setValue(formattedTime);\r\n }\r\n });\r\n\r\n ($('#kendo-avl-start-date') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n min: new Date(),\r\n change: (val) => {\r\n this.availabilityForm.patchValue({\r\n startDate: val.sender._value\r\n });\r\n }\r\n });\r\n\r\n ($('#kendo-avl-end-date') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n min: new Date(),\r\n change: (val) => {\r\n this.availabilityForm.patchValue({\r\n endDate: val.sender._value\r\n });\r\n }\r\n });\r\n ($('#kendo-avl-month') as any).kendoDatePicker({\r\n format: 'MMMM yyyy',\r\n min: new Date(),\r\n start: 'year',\r\n depth: 'year',\r\n change: (val) => {\r\n this.availabilityForm.patchValue({\r\n month: val.sender._value\r\n });\r\n }\r\n });\r\n\r\n ($('.kendo-picker') as any).bind('focus', function () {\r\n //console.log($(this));\r\n //console.log($(this).data('kendoDatePicker'));\r\n $(this).data('kendoDatePicker').open();\r\n });\r\n\r\n // leave form date pickers \r\n\r\n ($('#kendo-avl-start-date1') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n change: (val) => {\r\n this.leaveForm.patchValue({\r\n fromDate: val.sender._value\r\n });\r\n }\r\n });\r\n\r\n ($('#kendo-avl-end-date2') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n change: (val) => {\r\n this.leaveForm.patchValue({\r\n toDate: val.sender._value\r\n });\r\n }\r\n });\r\n\r\n ($('#kendo-avl-start-date4') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n change: (val) => {\r\n this.commentForm.patchValue({\r\n fromDate: val.sender._value\r\n });\r\n }\r\n });\r\n\r\n ($('#kendo-avl-end-date3') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n change: (val) => {\r\n this.commentForm.patchValue({\r\n toDate: val.sender._value\r\n });\r\n }\r\n });\r\n\r\n ($('#kendo-avl-start-date3') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n min: new Date(),\r\n change: (val) => {\r\n this.selfBookingStartDate = val.sender._value\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n setEndTimeMin(dt, option?) {\r\n if (option == 'tl') {\r\n var endTimepicker = $(\"#kendo-tl-end\").data(\"kendoTimePicker\");\r\n } else if (option == 'tu') {\r\n var endTimepicker = $(\"#kendo-tu-end\").data(\"kendoTimePicker\");\r\n } else if (option == 'au') {\r\n var endTimepicker = $(\"#kendo-au-end\").data(\"kendoTimePicker\");\r\n } else {\r\n var endTimepicker = $(\"#kendo-wd-end\").data(\"kendoTimePicker\");\r\n }\r\n endTimepicker.min(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate(), (dt.getMinutes() == 45 ? dt.getHours() + 1 : dt.getHours()), (dt.getMinutes() == 45 ? 0 : dt.getMinutes() + 15), 0));\r\n }\r\n\r\n setStartTimeMax(dt, option?) {\r\n if (option == 'tl') {\r\n var startTimepicker = $(\"#kendo-tl-start\").data(\"kendoTimePicker\");\r\n } else if (option == 'tu') {\r\n var startTimepicker = $(\"#kendo-tu-start\").data(\"kendoTimePicker\");\r\n } else if (option == 'au') {\r\n var startTimepicker = $(\"#kendo-au-start\").data(\"kendoTimePicker\");\r\n } else {\r\n var startTimepicker = $(\"#kendo-wd-start\").data(\"kendoTimePicker\");\r\n }\r\n startTimepicker.max(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate(), (dt.getMinutes() == 0 ? dt.getHours() - 1 : dt.getHours()), (dt.getMinutes() == 0 ? 45 : dt.getMinutes() - 15), 0));\r\n }\r\n\r\n schedulerEdit(event): void {\r\n this.isSwapEmployeeSelected = false;\r\n if (event.event.id != 0) {\r\n\r\n this.allocation = event.event;\r\n this.allocation.emailStatus = '';\r\n this.allocation.emailStatus = \"pågående\";\r\n\r\n if (this.allocation.clientEmailSendStatus == 1) {\r\n this.allocation.emailStatus = \"\";\r\n this.allocation.emailStatus = \"Kunden har meddelats. \"\r\n }\r\n if (this.allocation.employeeEmailSendStatus == 1) {\r\n this.allocation.emailStatus = this.allocation.emailStatus + ' ' + \"Arbetare har meddelats om pass. \"\r\n }\r\n\r\n this.isPartialBooking = event.event.isPartialBooking;\r\n this.allocationTimeLogsForm.patchValue({\r\n allocationId: event.event.id,\r\n isTimeLogged: event.event.isTimeLogged,\r\n });\r\n\r\n if (this.role == 'Admin' || this.role == \"Employee\") {\r\n if (this.allocation.start <= new Date()) {\r\n this.visibleTimeLogs = true;\r\n } else {\r\n this.visibleTimeLogs = false;\r\n }\r\n if (event.event.isTimeLogged) {\r\n if (this.role == 'Admin') {\r\n $('#allocationTimeLogsFormContent .k-invalid').removeClass('k-invalid');\r\n\r\n $('#kendo-tl-start').data('kendoTimePicker').value(event.event.timeLogStartTime);\r\n $('#kendo-tl-end').data('kendoTimePicker').value(event.event.timeLogEndTime);\r\n\r\n var startTLTime = new Date(2000, 0, 0, parseInt(event.event.timeLogStartTime.slice(0, 2)), parseInt(event.event.timeLogStartTime.slice(3, 5)), 0);\r\n var endTLTime = new Date(2000, 0, 0, parseInt(event.event.timeLogEndTime.slice(0, 2)), parseInt(event.event.timeLogEndTime.slice(3, 5)), 0);\r\n this.setEndTimeMin(startTLTime, 'tl');\r\n this.setStartTimeMax(endTLTime, 'tl');\r\n\r\n this.allocationTimeLogsForm.patchValue({\r\n startTime: event.event.timeLogStartTime,\r\n endTime: event.event.timeLogEndTime,\r\n lunchTime: event.event.timeLogLunch,\r\n travelTime: event.event.travelTime,\r\n distance: event.event.distance\r\n });\r\n }\r\n } else if (this.allocation.start <= new Date()) {\r\n $('#allocationTimeLogsFormContent .k-invalid').removeClass('k-invalid');\r\n var preFillStartTime: string = event.event.sDate.slice(11, 16);\r\n var preFillEndTime: string = event.event.eDate.slice(11, 16);\r\n\r\n var startTLTime = new Date(2000, 0, 0, parseInt(preFillStartTime.slice(0, 2)), parseInt(preFillStartTime.slice(3, 5)), 0);\r\n var endTLTime = new Date(2000, 0, 0, parseInt(preFillEndTime.slice(0, 2)), parseInt(preFillEndTime.slice(3, 5)), 0);\r\n\r\n $('#kendo-tl-start').data('kendoTimePicker').value(preFillStartTime);\r\n $('#kendo-tl-end').data('kendoTimePicker').value(preFillEndTime);\r\n this.setEndTimeMin(startTLTime, 'tl');\r\n this.setStartTimeMax(endTLTime, 'tl');\r\n\r\n this.allocationTimeLogsForm.patchValue({\r\n lunchTime: event.event.lunch,\r\n startTime: preFillStartTime,\r\n endTime: preFillEndTime,\r\n travelTime: 0,\r\n distance: 0\r\n });\r\n }\r\n }\r\n // $('#kendo-tl-start').data('kendoTimePicker').value(event.event.timeLogStartTime);\r\n // $('#kendo-tl-end').data('kendoTimePicker').value(event.event.timeLogEndTime);\r\n // this.allocation = event.event;\r\n // this.isPartialBooking = event.event.isPartialBooking;\r\n // if (this.allocation.start <= new Date()) {\r\n // this.visibleTimeLogs = true;\r\n // } else {\r\n // this.visibleTimeLogs = false;\r\n // }\r\n ($('#employeeBookingModal') as any).modal('show');\r\n }\r\n }\r\n\r\n schedulerDataBound(scheduler): void {\r\n const schView = scheduler.view().name;\r\n\r\n // $(\".k-scheduler-views li\").on(\"click\", function () {\r\n // if ($(this).hasClass('k-view-agenda')) {\r\n // setTimeout(() => {\r\n // $('.k-nav-current').addClass('agenda-date-header')\r\n // }, 200);\r\n // }else {\r\n // $('.k-nav-current').removeClass('agenda-date-header')\r\n // }\r\n // });\r\n if (schView === 'month') {\r\n $('.k-scheduler-navigation').css('pointer-events', 'none');\r\n $('.k-scheduler-navigation').css('opacity', '0.5');\r\n const container = scheduler.view().element;\r\n const cells = container.find('td[role=gridcell]');\r\n\r\n $('.slot-orange').parent().addClass('dayview-slot-orange');\r\n $('.slot-yellow').parent().addClass('dayview-slot-yellow');\r\n $('.slot-blue').parent().addClass('dayview-slot-blue');\r\n $('.slot-yellow .font-weight-bold').css('border-color', 'red');\r\n\r\n this.availabilityCheckDates = [];\r\n for (let i = 0; i < cells.length; i++) {\r\n const cell = $(cells[i]);\r\n const slot = scheduler.slotByElement(cell);\r\n const avl = {} as AvailabilityModel;\r\n avl.category = scheduler.view().name;\r\n\r\n if (slot) {\r\n avl.startTime = slot.startDate;\r\n avl.endTime = slot.endDate;\r\n }\r\n\r\n if (avl) {\r\n avl.userId = (this.userId && this.userId !== 'all') ? this.userId : '';\r\n if (avl.startTime) {\r\n avl.startTimeString = avl.startTime.getFullYear() + '-' + (avl.startTime.getMonth() + 1) + '-' + avl.startTime.getDate();\r\n }\r\n\r\n if (avl.endTime) {\r\n avl.endTimeString = avl.endTime.getFullYear() + '-' + (avl.endTime.getMonth() + 1) + '-' + avl.endTime.getDate();\r\n }\r\n\r\n }\r\n // avl.resourceTypeId = this.selectedResourceTypeId;\r\n avl.resourceTypeId = this.resourceTypeForAvalReq;\r\n this.availabilityCheckDates.push(avl);\r\n }\r\n\r\n\r\n this.calendarService.checkAllAvailability(this.availabilityCheckDates, this.role).subscribe(\r\n (avlData: AvailabilityInfo[]) => {\r\n this.availabilityData = avlData;\r\n for (let i = 0; i < cells.length; i++) {\r\n const cell = $(cells[i]);\r\n const slot = scheduler.slotByElement(cell);\r\n\r\n if (slot) {\r\n const slotStartDate = slot.startDate as Date;\r\n const slotEndDate = slot.endDate as Date;\r\n\r\n\r\n const filterData = avlData.find(function (data) {\r\n return (data.startTime.toDateString() === slotStartDate.toDateString()\r\n && data.endTime.toDateString() === slotEndDate.toDateString());\r\n });\r\n if (filterData) {\r\n if (filterData.startTime.toDateString() === this.selectedDate.toDateString()) {\r\n if (filterData.isAvailable != this.isBookingSelected) {\r\n this.isBookingSelected = filterData.isAvailable\r\n }\r\n }\r\n var holidayArr: any[];\r\n var slotDateJsonFormat = this.getJsonDateFormat(slot.startDate);\r\n if (this.holidayLastMonth !== slotDateJsonFormat) {\r\n this.holidayLastMonth = slotDateJsonFormat\r\n holidayArr = this.swedishHolidays[slotDateJsonFormat]\r\n\r\n }\r\n\r\n // Mark Sundays & saturdays with different color using CSS class\r\n if (slotStartDate.getDay() == 0) {\r\n cell.addClass('cell-sunday')\r\n }\r\n if (slotStartDate.getDay() == 6) {\r\n cell.addClass('cell-saturday')\r\n }\r\n\r\n if (filterData && filterData.startTime >= this.currentDate) {\r\n if (filterData.isAvailable) {\r\n cell.css('background-image', 'linear-gradient(225deg, #85BD3C, #85BD3C 30px, transparent 0px, transparent)');\r\n cell.css('position', 'relative');\r\n if ((this.userType && this.userType === 'Employee' && this.userId !== 'all' && this.role != 'Employee') || this.role == 'Employee') {\r\n if (!filterData.hasAllocations) {\r\n if (filterData.isPartial) {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n } else {\r\n let msg = \"\";\r\n if (filterData.message) {\r\n msg = filterData.message;\r\n }\r\n const text = \"Hel Dag \" + msg;\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n } else {\r\n // cell.html('' + slotStartDate.getDate() +\r\n // '' +\r\n // filterData.currentAvailabileCount + '/' + filterData.totalAvailableCount +\r\n // '');\r\n\r\n if (this.role == 'Admin') {\r\n cell.html('' + slotStartDate.getDate() +\r\n '' +\r\n filterData.currentAvailabileCount + '/' + filterData.totalAvailableCount +\r\n '');\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n }\r\n } else {\r\n cell.css('background-image', 'linear-gradient(225deg, #FF6161, #FF6161 30px, transparent 0px, transparent)');\r\n cell.css('position', 'relative');\r\n if (this.userType && this.userType === 'Employee' && this.userId !== 'all') {\r\n if (filterData.message) {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n\r\n } else {\r\n if (this.role == 'Admin') {\r\n cell.html('' + slotStartDate.getDate() +\r\n '' +\r\n filterData.currentAvailabileCount + '/' + filterData.totalAvailableCount +\r\n '');\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n\r\n }\r\n }\r\n if (holidayArr) {\r\n var holidayObj = holidayArr.find(e => e.date == slot.startDate.getDate())\r\n if (holidayObj) {\r\n cell.addClass('holiday')\r\n if (cell.children('.badge-info.holiday-name').length == 0) {\r\n cell.append(`${holidayObj.holiday}`);\r\n }\r\n }\r\n }\r\n } else {\r\n cell.css('position', 'relative');\r\n if (this.userType && this.userType === 'Employee' && this.userId !== 'all') {\r\n if (filterData.message) {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n } else {\r\n // cell.html('' + slotStartDate.getDate() +\r\n // '' +\r\n // filterData.currentAvailabileCount + '/' + filterData.totalAvailableCount +\r\n // '');\r\n\r\n if (this.role == 'Admin') {\r\n cell.html('' + slotStartDate.getDate() +\r\n '' +\r\n filterData.currentAvailabileCount + '/' + filterData.totalAvailableCount +\r\n '');\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n }\r\n cell.css('background-image', 'linear-gradient(225deg, #d1d1d1, #d1d1d1 30px, transparent 0px, transparent)');\r\n if (holidayArr) {\r\n var holidayObj = holidayArr.find(e => e.date == slot.startDate.getDate())\r\n if (holidayObj) {\r\n cell.addClass('holiday')\r\n if (cell.children('.badge-info.holiday-name').length == 0) {\r\n cell.append(`${holidayObj.holiday}`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Check for monthname\r\n var isFirstDay: boolean\r\n if (slotStartDate.getDate() == 1) {\r\n isFirstDay = true\r\n var month = slotStartDate.toLocaleString('sv-SE', { month: 'long' });\r\n var monthCapitalized = month.charAt(0).toUpperCase() + month.slice(1)\r\n } else {\r\n isFirstDay = false\r\n }\r\n\r\n // Display month first day label if not holiday\r\n if (!holidayObj && isFirstDay) {\r\n if (cell.children('.badge-info.holiday-name').length == 0) {\r\n cell.append(`Första ${monthCapitalized}`);\r\n }\r\n }\r\n\r\n // Dispaly week number for every monday\r\n if (slotStartDate.getDay() == 1) {\r\n var weekNoArr = this.calendarService.getWeekNumber(slotStartDate)\r\n cell.append(`V.${weekNoArr[1]}`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //const el = this.elementRef.nativeElement.querySelector('.avlful');\r\n $('.avlful').on(\"click\", (e) => {\r\n if (this.role == \"Admin\" || this.role == \"Employee\") {\r\n const sDate = $(e.target).data('sdate');\r\n this.partialAvailabilityClick(sDate);\r\n }\r\n });\r\n // if (el) {\r\n // el.addEventListener('click', this.partialAvailabilityClick.bind(this));\r\n // }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n\r\n } if (schView === 'day') {\r\n $('.slot-orange.day-view').parent().addClass('dayview-slot-orange');\r\n $('.slot-yellow.day-view').parent().addClass('dayview-slot-yellow');\r\n $('.slot-blue.day-view').parent().addClass('dayview-slot-blue');\r\n }\r\n $('.k-scheduler-navigation').css('pointer-events', 'all');\r\n $('.k-scheduler-navigation').css('opacity', '1');\r\n\r\n if (this.deviceWidth < 768) {\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(1)').text('Mån');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(2)').text('Tis');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(3)').text('Ons');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(4)').text('Tor');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(5)').text('Fre');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(6)').text('Lör');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(7)').text('Sön');\r\n }\r\n\r\n }\r\n\r\n getJsonDateFormat(date: Date): string {\r\n return date.getFullYear() + '' + (date.getMonth() + 1 > 9 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1))\r\n }\r\n\r\n loadCalendar(data: any): void {\r\n\r\n // Values when tab select\r\n // 1 - Phamacists\r\n // 2 - Cashiers\r\n // null - Clients\r\n\r\n // Userdata when user selects\r\n // { userId,userType,fullName,actualHoursBooked,totalCalculatedHours}\r\n\r\n var reloadRequired = true\r\n // when click on tab or user\r\n if (data != null) {\r\n\r\n // when click on a tab or same user\r\n if (typeof (data) == \"number\" || this.userId === data.userId) {\r\n\r\n this.userId = 'all';\r\n this.selectedUserFullName = null;\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n\r\n // if (data == 1) {\r\n // reloadRequired = false\r\n // this.onResourceTypeChange('1');\r\n // } else if (data == 2) {\r\n // reloadRequired = false\r\n // this.onResourceTypeChange('2');\r\n // } else if (data.userType == 'Client') {\r\n // reloadRequired = false\r\n // this.onResourceTypeChange('3');\r\n // }\r\n\r\n if (typeof (data) == \"number\") {\r\n reloadRequired = false\r\n this.onResourceTypeChange(data);\r\n } else if (data.userType == 'Client') {\r\n reloadRequired = false\r\n this.onResourceTypeChange(0);\r\n }\r\n\r\n\r\n // this.selectedUserId.next({ id: this.userId, type: 'all' })\r\n // this.selectedUserType.next('all')\r\n\r\n // whne click on different user\r\n } else {\r\n // Uncomment following block to reset resource type to phamacists on user select\r\n if (data.userType == \"Client\" && this.userId == 'all') {\r\n this.selectedResourceTypeId = 1;\r\n this.resourceTypeForAvalReq = 1;\r\n }\r\n\r\n this.userId = data.userId;\r\n this.selectedUserFullName = data.fullName;\r\n this.selectedUserAllocationTimes = data.totalCalculatedHours + '/' + data.actualHoursBooked;\r\n this.userType = data.userType;\r\n\r\n // this.selectedUserId.next({ id: this.userId, type: this.userType })\r\n // this.selectedUserType.next(data.userType)\r\n }\r\n } else {\r\n this.userId = 'all';\r\n this.selectedUserFullName = null;\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n // this.selectedUserId.next({ id: this.userId, type: 'all' })\r\n // this.selectedUserType.next('all')\r\n reloadRequired = false\r\n this.onResourceTypeChange(0);\r\n }\r\n\r\n // this.userId = data.userId;\r\n if (reloadRequired) {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n // scheduler.refresh();\r\n }\r\n }\r\n\r\n openDeleteConfirmModal(allocationId: number): void {\r\n this.updateAllocationId = allocationId;\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n ($('#allocationDeleteModal') as any).modal('show');\r\n }\r\n\r\n removeAllocation(): void {\r\n ($('#allocationDeleteModal') as any).modal('hide');\r\n\r\n this.calendarService.removeAllocation(this.updateAllocationId).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n // scheduler.refresh();\r\n this.setNotificationData('remove', status, this.allocation.isInquiry ? 'inquiry' : 'booking');\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n\r\n\r\n getEmployeeList(allocationId: number, allocation): void {\r\n this.swapUserForm.patchValue({\r\n allocationId\r\n });\r\n var dataObj = {\r\n clientId: allocation.clientId,\r\n employeeId: null,\r\n endDate: allocation.end,\r\n isInquiry: true,\r\n resourceTypeId: allocation.resourceTypeId,\r\n startDate: allocation.start,\r\n weekdayEnd: allocation.eDate.slice(11, 16),\r\n weekdayStart: allocation.sDate.slice(11, 16),\r\n weekdayLunch: allocation.lunch,\r\n weekendEnd: null,\r\n weekendLunch: null,\r\n weekendStart: null\r\n }\r\n this.userservice.getInquiryAssignUserList(dataObj).subscribe(\r\n (userList: IUserInfo[]) => {\r\n this.swapUserList = userList;\r\n this.isSwapEmployeeSelected = true;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n updateSwap(isInquiry: boolean): void {\r\n if (this.swapUserForm.get('swapUserId').value) {\r\n if (this.swapUserForm.get('swapType').value == 1 || isInquiry) {\r\n this.swapUserForm.patchValue({\r\n isInquiry: isInquiry\r\n });\r\n if (isInquiry) {\r\n this.swapUserForm.patchValue({\r\n swapType: '1'\r\n });\r\n }\r\n\r\n this.calendarService.swapAllocationEmployee(this.swapUserForm.value).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n // scheduler.refresh();\r\n\r\n this.swapUserForm.patchValue({\r\n swapUserId: [],\r\n isInquiry: []\r\n });\r\n\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n this.setNotificationData('swap', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n } else if (this.swapUserForm.get('swapType').value == 2) {\r\n\r\n var dataObject\r\n this.swapUserList.find((obj) => {\r\n if (obj.value == this.swapUserForm.get('swapUserId').value) {\r\n dataObject = {\r\n alliocationId: this.allocation.id,\r\n employeeId: this.allocation.empName,\r\n swapWithAllocationId: this.swapUserForm.get('swapUserId').value,\r\n swapWithEmployeeId: obj.employeeId,\r\n }\r\n }\r\n })\r\n this.calendarService.onSameDaySwapEmployees(dataObject).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n // scheduler.refresh();\r\n\r\n this.swapUserForm.patchValue({\r\n swapUserId: [],\r\n isInquiry: []\r\n });\r\n\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n this.setNotificationData('swap', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n }\r\n updateAllocationTimeLogs(): void {\r\n\r\n const validator = ($('#allocationTimeLogsFormContent') as any).kendoValidator({\r\n rules: {\r\n matches: function (input) {\r\n if (input.data('greaterthan') == 'kendo-tl-start') {\r\n var startTimeStr = $('#kendo-tl-start').val() as string;\r\n var endTimeStr = $('#kendo-tl-end').val() as string;\r\n\r\n var startTLTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endTLTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n\r\n if (startTLTime < endTLTime) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return true\r\n }\r\n\r\n\r\n }\r\n },\r\n }).data('kendoValidator');\r\n if (validator.validate()) {\r\n const timeLogsForm = this.allocationTimeLogsForm;\r\n const timeLogModel = {} as TimeLogModel;\r\n timeLogModel.allocationId = timeLogsForm.get('allocationId').value;\r\n timeLogModel.startTime = timeLogsForm.get('startTime').value;\r\n timeLogModel.endTime = timeLogsForm.get('endTime').value;\r\n timeLogModel.lunch = timeLogsForm.get('lunchTime').value;\r\n timeLogModel.travelTime = timeLogsForm.get('travelTime').value != null ? timeLogsForm.get('travelTime').value : 0;\r\n timeLogModel.distance = timeLogsForm.get('distance').value != null ? timeLogsForm.get('distance').value : 0;\r\n\r\n var day = 60 * 60 * 24 * 1000;\r\n var isAllocationDateHoliday = this.calendarService.isHoliday(this.allocation.start);\r\n var nextDate = new Date(this.allocation.start.getTime() + day);\r\n var prevDate = new Date(this.allocation.start.getTime() - day);\r\n var isNextDateHoliday = this.calendarService.isHoliday(nextDate);\r\n var isPrevDateHoliday = this.calendarService.isHoliday(prevDate);\r\n\r\n //var holidayStr: string = isAllocationDateHoliday ? 'Holiday' : ((isNextDateHoliday && isPrevDateHoliday) ? 'InBetween' : (isPrevDateHoliday ? 'AfterHoliday' : (isNextDateHoliday ? 'BeforeHoliday' : 'NotHoliday')));\r\n\r\n var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n var holidayStr: string = isAllocationDateHoliday ? 'Holiday' :\r\n ((isNextDateHoliday && !isAllocationDateHoliday) ? 'DayBeforeHoliday' : (\r\n (isPrevDateHoliday && !isAllocationDateHoliday) ? 'DayAfterHoliday' : days[this.allocation.start.getDay()])); // 0 = Sunday, 6 = Saturday\r\n timeLogModel.holidays = holidayStr;\r\n\r\n this.calendarService.updateTimeLogs(timeLogModel).subscribe(\r\n (status: boolean) => {\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.setNotificationData('timelog', status);\r\n this.allocationTimeLogsForm.reset();\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n\r\n getTimeString(date: any): any {\r\n const hours = date.getHours();\r\n const minutes = date.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n return formattedTime;\r\n }\r\n\r\n requestAllocation(): void {\r\n\r\n this.isBookingFromPartialAvailability = false;\r\n\r\n const validator = ($('#allocationFormContent') as any).kendoValidator({\r\n rules: {\r\n matches: function (input) {\r\n if (input.data('greaterthan') == 'kendo-wd-start') {\r\n var startTimeStr = $('#kendo-wd-start').val() as string;\r\n var endTimeStr = $('#kendo-wd-end').val() as string;\r\n\r\n var startWDTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endWDTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n\r\n if (startWDTime < endWDTime) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return true\r\n }\r\n }\r\n },\r\n }).data('kendoValidator');\r\n if (validator.validate()) {\r\n\r\n var allocationDate = this.allocationForm.get('startDate').value;\r\n var day = 60 * 60 * 24 * 1000;\r\n var isAllocationDateHoliday = this.calendarService.isHoliday(allocationDate);\r\n var nextDate = new Date(allocationDate.getTime() + day);\r\n var prevDate = new Date(allocationDate.getTime() - day);\r\n var isNextDateHoliday = this.calendarService.isHoliday(nextDate);\r\n var isPrevDateHoliday = this.calendarService.isHoliday(prevDate);\r\n\r\n //var holidayStr: string = isAllocationDateHoliday ? 'Holiday' : ((isNextDateHoliday && isPrevDateHoliday) ? 'InBetween' : (isPrevDateHoliday ? 'AfterHoliday' : (isNextDateHoliday ? 'BeforeHoliday' : 'NotHoliday')));\r\n var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n\r\n var holidayStr: string = isAllocationDateHoliday ? 'Holiday' :\r\n ((isNextDateHoliday && !isAllocationDateHoliday) ? 'DayBeforeHoliday' : (\r\n (isPrevDateHoliday && !isAllocationDateHoliday) ? 'DayAfterHoliday' : days[this.allocation.start.getDay()])); // 0 = Sunday, 6 = Saturday\r\n\r\n\r\n this.allocationForm.patchValue({\r\n clientId: this.userId,\r\n weekdayStart: this.getTimeString(this.startTime),\r\n weekdayEnd: this.getTimeString(this.endTime),\r\n isInquiry: !this.isBookingSelected,\r\n holidays: holidayStr\r\n });\r\n\r\n var employees:any[] = this.allocationForm.get('employeeIds').value;\r\n employees.forEach(item=>{\r\n\r\n this.allocationForm.patchValue({\r\n employeeId:item\r\n });\r\n\r\n if (this.role == 'Admin') {\r\n this.calendarService.requestAdminAllocations(this.allocationForm.value).subscribe(\r\n (allocationInfo: BookingInfo) => {\r\n\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n ($('#requestAllocationModal') as any).modal('hide');\r\n this.onAllocationRequestComplete(allocationInfo, this.allocationForm.value);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n } else if (this.role == 'SuperClient') {\r\n this.calendarService.requestSuperClientAllocations(this.allocationForm.value).subscribe(\r\n (allocationInfo: BookingInfo) => {\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n ($('#requestAllocationModal') as any).modal('hide');\r\n this.onAllocationRequestComplete(allocationInfo, this.allocationForm.value);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n })\r\n\r\n }\r\n }\r\n\r\n selfBookingrequestAllocation(): void {\r\n\r\n this.isBookingFromPartialAvailability = false;\r\n\r\n const validator = ($('#allocationFormContent') as any).kendoValidator({\r\n rules: {\r\n matches: function (input) {\r\n if (input.data('greaterthan') == 'kendo-wd-start') {\r\n var startTimeStr = $('#kendo-wd-start').val() as string;\r\n var endTimeStr = $('#kendo-wd-end').val() as string;\r\n\r\n var startWDTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endWDTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n\r\n if (startWDTime < endWDTime) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return true\r\n }\r\n }\r\n },\r\n }).data('kendoValidator');\r\n // if (validator.validate()) {\r\n\r\n var allocationDate = this.selfBookingStartDate;\r\n var day = 60 * 60 * 24 * 1000;\r\n var isAllocationDateHoliday = this.calendarService.isHoliday(allocationDate);\r\n var nextDate = new Date(allocationDate.getTime() + day);\r\n var prevDate = new Date(allocationDate.getTime() - day);\r\n var isNextDateHoliday = this.calendarService.isHoliday(nextDate);\r\n var isPrevDateHoliday = this.calendarService.isHoliday(prevDate);\r\n\r\n var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n\r\n var holidayStr: string = isAllocationDateHoliday ? 'Holiday' :\r\n ((isNextDateHoliday && !isAllocationDateHoliday) ? 'DayBeforeHoliday' : (\r\n (isPrevDateHoliday && !isAllocationDateHoliday) ? 'DayAfterHoliday' : days[this.allocation.start.getDay()])); // 0 = Sunday, 6 = Saturday\r\n\r\n // logged in user's id will be get from API\r\n\r\n this.selfBookingForm.patchValue({\r\n employeeId: 0,\r\n startDate: this.selfBookingStartDate,\r\n endDate: this.selfBookingStartDate,\r\n isInquiry: false,\r\n holidays: holidayStr\r\n });\r\n console.log(this.selfBookingForm);\r\n this.calendarService.requestAllocationByEmployee(this.selfBookingForm.value).subscribe(\r\n (allocationInfo: BookingInfo) => {\r\n ($('#updateSelfBookingModal') as any).modal('hide');\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n ($('#requestAllocationModal') as any).modal('hide');\r\n this.onAllocationRequestComplete(allocationInfo, this.selfBookingForm.value);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n // }\r\n }\r\n\r\n\r\n onAllocationRequestComplete(allocationInfo: BookingInfo, allocationForm: AlliocationModel): void {\r\n\r\n $('#kendo-end-date').data('kendoDatePicker').value('');\r\n $('#kendo-wd-start').data('kendoTimePicker').value('');\r\n $('#kendo-wd-end').data('kendoTimePicker').value('');\r\n if (allocationInfo != null && allocationInfo.isExpAreaValidationFail == true) {\r\n let startDate = this.allocationForm.get(\"startDate\").value;\r\n let weekdayEnd = this.allocationForm.get(\"weekdayEnd\").value;\r\n\r\n // weekdayEnd weekdayStart weekdayLunch\r\n $('#kendo-end-date').data('kendoDatePicker').value(startDate);\r\n this.allocationForm.patchValue({\r\n weekdayStart: weekdayEnd\r\n })\r\n this.allocationForm.patchValue({\r\n weekdayStart: weekdayEnd,\r\n });\r\n // $('#kendo-we-start-hd').data('kendoTextBox').value(weekdayEnd);\r\n\r\n // kendo-we-start-hd kendo-we-end-hd weekdayLunch\r\n\r\n ($('#bookingExpAreaFailedViewModal') as any).modal('show');\r\n }\r\n else if (allocationInfo != null) {\r\n\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.allocation = allocationInfo;\r\n this.showExpAreaDetails = false;\r\n if (this.allocation.inquiryExperienceAreas && this.allocation.inquiryExperienceAreas.length) {\r\n this.showExpAreaDetails = true;\r\n let displayExpAreas = '';\r\n this.allocation.inquiryExperienceAreas.forEach(item => {\r\n displayExpAreas = displayExpAreas + ' - ' + item.experienceArea;\r\n })\r\n this.allocation.expAreasDisplay = displayExpAreas;\r\n }\r\n\r\n this.isSwapEmployeeSelected = false;\r\n ($('#employeeBookingModal') as any).modal('show');\r\n this.signalRService.broadcastCalendarUpdates();\r\n\r\n this.IsOnChangeEvent = true\r\n this.allocationForm.patchValue({\r\n startDate: '',\r\n endDate: '',\r\n weekdayStart: '',\r\n weekdayEnd: '',\r\n weekdayLunch: 0,\r\n employeeId: '',\r\n message: null,\r\n experienceAreas: []\r\n });\r\n\r\n } else {\r\n\r\n this.calendarService.getPartialAvailabilityList(allocationForm).subscribe(\r\n (partialList: PartialAvailabilityInfo[]) => {\r\n if (partialList != null && partialList.length > 0) {\r\n this.partialAvailableListForDay = partialList;\r\n this.allocationTryDate = allocationForm.startDate;\r\n this.allocationTryLunch = allocationForm.weekdayLunch;\r\n this.allocationTryTime = allocationForm.weekdayStart + '-' + allocationForm.weekdayEnd;\r\n ($('#partialAvailabilityListModal') as any).modal('show');\r\n } else {\r\n this.setNotificationData('booking', false);\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n this.calendarService.emmitUserListAction('refresh');\r\n }\r\n\r\n updateAvailability(): void {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n const container = scheduler.view().element;\r\n const cells = container.find('td[role=gridcell]');\r\n this.availabilityCheckDates = [];\r\n\r\n for (let i = 0; i < cells.length; i++) {\r\n const cell = $(cells[i]);\r\n const slot = scheduler.slotByElement(cell);\r\n const avl = {} as AvailabilityModel;\r\n avl.category = scheduler.view().name;\r\n avl.startTime = slot.startDate;\r\n avl.endTime = slot.endDate;\r\n avl.startTimeString = avl.startTime.getFullYear() + '-' + (avl.startTime.getMonth() + 1) + '-' + avl.startTime.getDate();\r\n avl.endTimeString = avl.endTime.getFullYear() + '-' + (avl.endTime.getMonth() + 1) + '-' + avl.endTime.getDate();\r\n avl.resourceTypeId = this.selectedResourceTypeId;\r\n this.availabilityCheckDates.push(avl);\r\n }\r\n\r\n const avlForm = this.availabilityForm;\r\n\r\n this.availabilityUpdateModel = {} as AvailabilityUpdateModel;\r\n this.availabilityUpdateModel.changeType = avlForm.get('changeTypeId').value;\r\n this.availabilityUpdateModel.month = avlForm.get('month').value;\r\n this.availabilityUpdateModel.fromDate = avlForm.get('startDate').value;\r\n this.availabilityUpdateModel.toDate = avlForm.get('endDate').value;\r\n this.availabilityUpdateModel.availability = avlForm.get('availabilityId').value;\r\n this.availabilityUpdateModel.dateList = this.availabilityCheckDates;\r\n if (this.role != 'Employee') {\r\n this.availabilityUpdateModel.employeeId = this.userId;\r\n }\r\n\r\n if (this.availabilityUpdateModel.changeType === '1') {\r\n const month = this.availabilityUpdateModel.month;\r\n this.availabilityUpdateModel.monthString = month.getFullYear() + '-' + (month.getMonth() + 1) + '-' + month.getDate();\r\n } else if (this.availabilityUpdateModel.changeType === '2') {\r\n const fromDate = this.availabilityUpdateModel.fromDate;\r\n const toDate = this.availabilityUpdateModel.toDate;\r\n this.availabilityUpdateModel.fromDateString = fromDate.getFullYear() + '-' + (fromDate.getMonth() + 1) + '-' + fromDate.getDate();\r\n this.availabilityUpdateModel.toDateString = toDate.getFullYear() + '-' + (toDate.getMonth() + 1) + '-' + toDate.getDate();\r\n } else {\r\n const fromDate = this.availabilityUpdateModel.fromDate;\r\n this.availabilityUpdateModel.fromDateString = fromDate.getFullYear() + '-' + (fromDate.getMonth() + 1) + '-' + fromDate.getDate();\r\n }\r\n\r\n this.calendarService.updateAvailability(this.availabilityUpdateModel).subscribe(\r\n (avlData: AvailabilityInfo[]) => {\r\n ($('#updateAvailabilityModal') as any).modal('hide');\r\n //this.initializeForms();\r\n //this.setCustomVallidations();\r\n $('#kendo-avl-month').data('kendoDatePicker').value('');\r\n $('#kendo-avl-start-date').data('kendoDatePicker').value('');\r\n $('#kendo-avl-end-date').data('kendoDatePicker').value('');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.setNotificationData('availability', true);\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n }\r\n\r\n\r\n updateComment(): void {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n const container = scheduler.view().element;\r\n const cells = container.find('td[role=gridcell]');\r\n this.availabilityCheckDates = [];\r\n const commentForm = this.commentForm.value;\r\n commentForm.employeeId = this.userId;\r\n commentForm.changeType = 3;\r\n if (commentForm.toDate != \"\") {\r\n commentForm.changeType = 2;\r\n }\r\n\r\n this.availabilityUpdateModel = {} as AvailabilityUpdateModel;\r\n\r\n if (this.role != 'Employee') {\r\n this.availabilityUpdateModel.employeeId = this.userId;\r\n }\r\n\r\n this.calendarService.updateComment(commentForm).subscribe(\r\n (avlData: AvailabilityInfo[]) => {\r\n\r\n ($('#updateCommentModal') as any).modal('hide');\r\n $('#kendo-avl-start-date3').data('kendoDatePicker').value('');\r\n if (commentForm.toDate != \"\") {\r\n $('#kendo-avl-end-date4').data('kendoDatePicker').value('');\r\n }\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.commentForm.reset();\r\n this.setNotificationData('Comment', true);\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n }\r\n\r\n updateVacation(): void {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n const container = scheduler.view().element;\r\n const cells = container.find('td[role=gridcell]');\r\n this.availabilityCheckDates = [];\r\n const leaveForm = this.leaveForm.value;\r\n leaveForm.employeeId = this.userId;\r\n\r\n this.availabilityUpdateModel = {} as AvailabilityUpdateModel;\r\n\r\n if (this.role != 'Employee') {\r\n this.availabilityUpdateModel.employeeId = this.userId;\r\n }\r\n\r\n leaveForm.ChangeType = 3;\r\n if (leaveForm.toDate) {\r\n leaveForm.ChangeType = 2;\r\n }\r\n\r\n this.calendarService.updateVacationAndLeave(leaveForm).subscribe(\r\n (avlData: AvailabilityInfo[]) => {\r\n this.leaveForm.reset();\r\n if (avlData && avlData.length) {\r\n if (avlData.filter(item => item.message == 'EMPLOYEE_HAS_BOOKINGS').length > 0) {\r\n this.setNotificationData('EMPLOYEE_HAS_BOOKINGS', true);\r\n } else if (avlData.filter(item => item.message == 'UPDATED').length > 0) {\r\n this.setNotificationData('UPDATED', true);\r\n\r\n }\r\n }\r\n ($('#updateSickVacationModal') as any).modal('hide');\r\n $('#kendo-avl-start-date1').data('kendoDatePicker').value('');\r\n $('#kendo-avl-end-date2').data('kendoDatePicker').value('');\r\n // $('#kendo-avl-end-date3').data('kendoDatePicker').value('');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.leaveForm.reset();\r\n // this.setNotificationData('availability', true);\r\n this.signalRService.broadcastCalendarUpdates();\r\n // this.calendarService.emmitUserListAction('refresh');\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n }\r\n\r\n\r\n setNotificationData(flow, status, type?): void {\r\n if (flow === 'booking') {\r\n this.notificationModal.header = 'Bokning misslyckades';\r\n this.notificationModal.description = 'Tyvärr så kunde vi inte hitta en tillgänglig resurs för det valda datumet';\r\n this.notificationModal.type = 'danger';\r\n } else if (flow === 'swap') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Byte av resurs genomfördes';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Byte av resurs misslyckades! Kontrollera anställdas tillgänglighet';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'remove') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = type == 'inquiry' ? 'Förfrågan raderades' : 'Bokningen raderades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Borttaggning av ' + (type == 'inquiry' ? 'förfrågan ' : 'bokningen') + ' misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'availability') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tillgänglighet uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tillgänglighet misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'timelog') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tidrapportering uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'TUppdatering av tidrapportering misslyckades! Var god och försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'partialavl') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tillgänglighet uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tillgänglighet misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'assign') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';// Success\r\n this.notificationModal.description = 'Den anställde tilldelades förfrågan och e-post skickades. '; //'Employee was assigned successfully for inquiry and email sent.';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; //'Failed';\r\n this.notificationModal.description = 'Tilldelning av passet till den anställda misslyckades. Vänligen försök igen. '; //'Employee assign process failed! Please try again.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'timeupdate') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';// Success\r\n this.notificationModal.description = 'Bokningens tider har uppdaterats.'; //Booking time slot has been updated\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; // Failed\r\n this.notificationModal.description = 'Uppdateringen av bokningstiden misslyckades! Var god försök igen.'; // Booking time slot updating failed! Please try again.\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'inquiry') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades'; // Success\r\n this.notificationModal.description = 'Förfrågan har skapats.'; //Inquiry added successfully\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; // Failed\r\n this.notificationModal.description = 'Det gick inte att lägga till förfrågan! Var god försök igen.'; //Inquiry adding failed! Please try again.\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'EMPLOYEE_HAS_BOOKINGS') {\r\n this.notificationModal.header = 'Misslyckades'; //'Failed';\r\n this.notificationModal.description = 'This employee has booking(s) on selected date(s)'; //'Employee assign process failed! Please try again.';\r\n this.notificationModal.type = 'danger';\r\n } else if (flow === 'UPDATED') {\r\n this.notificationModal.header = 'Lyckades'; // Success\r\n this.notificationModal.description = 'Emplyee leave updated'; //Inquiry added successfully\r\n this.notificationModal.type = 'success';\r\n } else if(\"Comment\")\r\n {\r\n this.notificationModal.header = 'Lyckades'; // Success\r\n this.notificationModal.description = 'Comment updated'; //Inquiry added successfully\r\n this.notificationModal.type = 'success';\r\n }\r\n\r\n ($('#xnotificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#xnotificationModal') as any).modal('hide');\r\n }, 1500);\r\n }\r\n\r\n\r\n scrollToHour(hour): void {\r\n const time = new Date();\r\n time.setHours(hour);\r\n time.setMinutes(0);\r\n time.setSeconds(0);\r\n time.setMilliseconds(0);\r\n\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n const contentDiv = scheduler.element.find('div.k-scheduler-content');\r\n const rows = contentDiv.find('tr');\r\n\r\n for (let i = 0; i < rows.length; i++) {\r\n const element = $(rows[i]);\r\n const slot = scheduler.slotByElement(element);\r\n\r\n const slotTime = kendo.toString(slot.startDate, 'HH:mm');\r\n const targetTime = kendo.toString(time, 'HH:mm');\r\n\r\n if (targetTime === slotTime) {\r\n contentDiv.scrollTop(0);\r\n\r\n const elementTop = element.offset().top;\r\n const containerTop = contentDiv.offset().top;\r\n\r\n contentDiv.scrollTop(elementTop - containerTop);\r\n }\r\n }\r\n }\r\n\r\n partialAvailabilityClick(slotDate: string): void {\r\n $('#partialAvailabilityFormContent .k-invalid').removeClass('k-invalid')\r\n let dt = new Date(slotDate);\r\n this.selectedPartialAvlDate = dt.getFullYear() + '-' + (((dt.getMonth() + 1) > 9) ? '' + ((dt.getMonth() + 1)) : '0' + (dt.getMonth() + 1)) + '-' + ((dt.getDate() > 9) ? '' + dt.getDate() : '0' + dt.getDate());\r\n\r\n this.calendarService.checkSingleAvailability(this.userId, slotDate, this.role).subscribe(\r\n (sts: AvailabilityInfo) => {\r\n if (!sts.isPartial) {\r\n this.partialAvailabilityForm.patchValue({\r\n avlDate: slotDate,\r\n avlTypeId: 1,\r\n avlStart: '12:00',\r\n avlEnd: '20:00'\r\n });\r\n setTimeout(() => {\r\n $('#kendo-au-start').data('kendoTimePicker').value('12:00');\r\n $('#kendo-au-end').data('kendoTimePicker').value('20:00');\r\n }, 100);\r\n var startTimeStr = '12:00';\r\n var endTimeStr = '20:00';\r\n\r\n } else {\r\n this.partialAvailabilityForm.patchValue({\r\n avlDate: slotDate,\r\n avlTypeId: 2,\r\n avlStart: sts.partialFrom,\r\n avlEnd: sts.partialTo\r\n });\r\n setTimeout(() => {\r\n $('#kendo-au-start').data('kendoTimePicker').value(sts.partialFrom);\r\n $('#kendo-au-end').data('kendoTimePicker').value(sts.partialTo);\r\n }, 100);\r\n var startTimeStr = sts.partialFrom;\r\n var endTimeStr = sts.partialTo;\r\n }\r\n var startAUTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endAUTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n this.setEndTimeMin(startAUTime, 'au');\r\n this.setStartTimeMax(endAUTime, 'au');\r\n ($('#partialAvailabilityModal') as any).modal('show');\r\n\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n updatePartialAvailability(type: number): void {\r\n var validator = null;\r\n if (type == 2) {\r\n validator = ($('#partialAvailabilityFormContent') as any).kendoValidator({\r\n rules: {\r\n matches: function (input) {\r\n if (input.data('greaterthan') == 'kendo-au-start') {\r\n var startTimeStr = $('#kendo-au-start').val() as string;\r\n var endTimeStr = $('#kendo-au-end').val() as string;\r\n var startWDTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endWDTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n if (startWDTime < endWDTime) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return true\r\n }\r\n }\r\n },\r\n }).data('kendoValidator');\r\n }\r\n\r\n\r\n if (type == 2 && validator && validator.validate() || type == 1) {\r\n\r\n const partialAvailabilityModel = {} as PartialAvailabilityModel;\r\n partialAvailabilityModel.userId = this.userId;\r\n partialAvailabilityModel.avlDate = this.partialAvailabilityForm.get('avlDate').value;\r\n partialAvailabilityModel.avlType = type == 1 ? 1 : 2\r\n\r\n if (type == 2) {\r\n partialAvailabilityModel.avlFromTime = this.partialAvailabilityForm.get('avlStart').value;\r\n partialAvailabilityModel.avlToTime = this.partialAvailabilityForm.get('avlEnd').value;\r\n }\r\n\r\n this.calendarService.updatePartialAvailability(partialAvailabilityModel, this.role).subscribe(\r\n (status: boolean) => {\r\n ($('#partialAvailabilityModal') as any).modal('hide');\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n this.setNotificationData('partialavl', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n bookFromPartialAvailability(partialAvailabilityData: PartialAvailabilityInfo): void {\r\n ($('#partialAvailabilityListModal') as any).modal('hide');\r\n this.allocationForm.patchValue({\r\n startDate: this.allocationTryDate,\r\n endDate: this.allocationTryDate,\r\n weekdayStart: partialAvailabilityData.fromTime,\r\n weekdayEnd: partialAvailabilityData.toTime,\r\n weekdayLunch: this.allocationTryLunch,\r\n isPartialBooking: true\r\n });\r\n\r\n $('#kendo-end-date').data('kendoDatePicker').value(this.allocationTryDate);\r\n $('#kendo-end-date').data('kendoDatePicker').enable(false);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(partialAvailabilityData.fromTime);\r\n $('#kendo-wd-start').data('kendoTimePicker').enable(false);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(partialAvailabilityData.toTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').enable(false);\r\n\r\n this.isBookingFromPartialAvailability = true;\r\n ($('#requestAllocationModal') as any).modal('show');\r\n }\r\n\r\n\r\n\r\n onResourceTypeChange(resourceTypeId: number): void {\r\n if (resourceTypeId == 0) {\r\n this.resourceTypeForAvalReq = null;\r\n if (this.availabilityCheckDates) {\r\n this.availabilityCheckDates.forEach(x => x.resourceTypeId = this.resourceTypeForAvalReq);\r\n }\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n if (scheduler) {\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n }\r\n } else {\r\n this.selectedResourceTypeId = resourceTypeId;\r\n this.resourceTypeForAvalReq = resourceTypeId;\r\n\r\n this.allocationForm.patchValue({\r\n resourceTypeId: resourceTypeId\r\n });\r\n if (this.availabilityCheckDates) {\r\n this.availabilityCheckDates.forEach(x => x.resourceTypeId = this.resourceTypeForAvalReq);\r\n }\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n }\r\n }\r\n\r\n onSelectSwapType(swapType: number): void {\r\n // this.swapUserForm.reset()\r\n if (swapType == 1) {\r\n $('.availBtn').removeClass('btn-secondary')\r\n $('.availBtn').addClass('btn-primary')\r\n $('.sameDayBtn').removeClass('btn-primary')\r\n $('.sameDayBtn').addClass('btn-secondary')\r\n this.swapUserForm.patchValue({\r\n swapType: 1\r\n })\r\n this.getAvailableSwapEmployees(this.allocation.id)\r\n } else if (swapType == 2) {\r\n $('.sameDayBtn').removeClass('btn-secondary')\r\n $('.sameDayBtn').addClass('btn-primary')\r\n $('.availBtn').removeClass('btn-primary')\r\n $('.availBtn').addClass('btn-secondary')\r\n this.swapUserForm.patchValue({\r\n swapType: 2\r\n })\r\n this.getSameDaySwapEmployees()\r\n }\r\n this.swapAccessed = true\r\n }\r\n\r\n getAvailableSwapEmployees(allocationId: number): void {\r\n\r\n this.swapUserForm.patchValue({\r\n swapUserId: null,\r\n allocationId: this.allocation.id\r\n });\r\n this.calendarService.getAllocationSwapUserList(allocationId).subscribe(\r\n (userList: IUserInfo[]) => {\r\n this.swapUserList = userList;\r\n for (let [key, value] of Object.entries(this.swapUserList)) {\r\n value['value'] = value.userId;\r\n value['label'] = value.fullName;\r\n }\r\n // 35 When clicking on Swap Employee/Switch Employee, the first employee should be pre-selected.\r\n // add already booked employee to the avaialble emp dropwdonw\r\n\r\n // this.swapUserList.push({ value: this.allocation.employeeId, label: this.allocation.empName })\r\n // commented above line 2/15/2024 Shams Al Genaby (External)\r\n\r\n\r\n //end\r\n let user = this.swapUserList.length > 0 ? this.swapUserList.find(x => x.value == this.allocation.employeeId) : ''\r\n if (user) {\r\n this.swapUserForm.patchValue({\r\n swapUserId: user.userId\r\n })\r\n }\r\n\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n getSameDaySwapEmployees(): void {\r\n this.swapUserForm.patchValue({\r\n swapUserId: null,\r\n allocationId: this.allocation.id\r\n })\r\n var dataset = {\r\n allocationId: this.allocation.id,\r\n startDate: this.allocation.sDate,\r\n endDate: this.allocation.eDate,\r\n clientId: this.allocation.clientId\r\n }\r\n this.calendarService.getSameDaySwapEmployeesList(dataset).subscribe(\r\n (userList: IUserInfo[]) => {\r\n this.swapUserList = userList;\r\n // let firstUserId = this.swapUserList.length>0? this.swapUserList[0].value:''\r\n // this.swapUserForm.patchValue({\r\n // swapUserId:firstUserId\r\n // })\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n onSwapBtnClick() {\r\n this.isSwapEmployeeSelected = true;\r\n }\r\n onEditAllocationTimes(): void {\r\n $('#allocationTimeUpdateFormContent .k-invalid').removeClass('k-invalid')\r\n var startTimeStr = this.allocation.sDate.substring(11, 16);\r\n var endTimeStr = this.allocation.eDate.substring(11, 16);\r\n\r\n var startTLTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endTLTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n this.setEndTimeMin(startTLTime, 'tu');\r\n this.setStartTimeMax(endTLTime, 'tu');\r\n\r\n this.allocationTimeUpdateForm.patchValue({\r\n allocationId: this.allocation.id,\r\n startDate: startTimeStr,\r\n endDate: endTimeStr,\r\n lunchTime: this.allocation.lunch\r\n })\r\n this.isAllocationTimeEdit = true;\r\n\r\n $('#kendo-tu-start').data('kendoTimePicker').value(startTimeStr);\r\n $('#kendo-tu-end').data('kendoTimePicker').value(endTimeStr);\r\n\r\n }\r\n\r\n onUpdateAllocationTimes(): void {\r\n const validator = ($('#allocationTimeUpdateFormContent') as any).kendoValidator({\r\n\r\n rules: {\r\n matches: function (input) {\r\n if (input.data('greaterthan') == 'kendo-tu-start') {\r\n var startTimeStr = $('#kendo-tu-start').val() as string;\r\n var endTimeStr = $('#kendo-tu-end').val() as string;\r\n var startTUTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endTUTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n\r\n if (startTUTime < endTUTime) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return true\r\n }\r\n }\r\n },\r\n }).data('kendoValidator');\r\n if (validator.validate()) {\r\n var allocationDate = this.allocation.sDate\r\n var newStartDate = allocationDate.substring(0, 11) + this.allocationTimeUpdateForm.get('startDate').value + allocationDate.substring(16, allocationDate.length);\r\n var newEndDate = allocationDate.substring(0, 11) + this.allocationTimeUpdateForm.get('endDate').value + allocationDate.substring(16, allocationDate.length);\r\n\r\n var dataObj = {\r\n allocationId: this.allocation.id,\r\n startDate: newStartDate,\r\n endDate: newEndDate,\r\n lunch: this.allocationTimeUpdateForm.get('lunchTime').value,\r\n weekdayStart: this.allocationTimeUpdateForm.get('startDate').value,\r\n weekdayEnd: this.allocationTimeUpdateForm.get('endDate').value,\r\n holidays: ''\r\n };\r\n\r\n var day = 60 * 60 * 24 * 1000;\r\n var isAllocationDateHoliday = this.calendarService.isHoliday(this.allocation.start);\r\n var nextDate = new Date(this.allocation.start.getTime() + day);\r\n var prevDate = new Date(this.allocation.start.getTime() - day);\r\n var isNextDateHoliday = this.calendarService.isHoliday(nextDate);\r\n var isPrevDateHoliday = this.calendarService.isHoliday(prevDate);\r\n\r\n //var holidayStr: string = isAllocationDateHoliday ? 'Holiday' : ((isNextDateHoliday && isPrevDateHoliday) ? 'InBetween' : (isPrevDateHoliday ? 'AfterHoliday' : (isNextDateHoliday ? 'BeforeHoliday' : 'NotHoliday')));\r\n var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n var holidayStr: string = isAllocationDateHoliday ? 'Holiday' :\r\n ((isNextDateHoliday && !isAllocationDateHoliday) ? 'DayBeforeHoliday' : (\r\n (isPrevDateHoliday && !isAllocationDateHoliday) ? 'DayAfterHoliday' : days[this.allocation.start.getDay()])); // 0 = Sunday, 6 = Saturday\r\n dataObj.holidays = holidayStr;\r\n\r\n this.calendarService.updateAllocationTime(dataObj).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n this.setNotificationData('timeupdate', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n )\r\n }\r\n }\r\n\r\n setCommonTimes(item): void {\r\n this.startTime = new Date(2000, 0, 0, parseInt(item.startTime.slice(0, 2)), parseInt(item.startTime.slice(3, 5)), 0);\r\n this.endTime = new Date(2000, 0, 0, parseInt(item.endTime.slice(0, 2)), parseInt(item.endTime.slice(3, 5)), 0);\r\n this.setAvailableEmployees();\r\n this.allocationForm.patchValue({\r\n weekdayStart: item.startTime,\r\n weekdayEnd: item.endTime,\r\n weekdayLunch: item.lunch,\r\n });\r\n // $('#kendo-start-date').data('kendoDatePicker').value(eventStartDate);\r\n // $('#kendo-end-date').data('kendoDatePicker').value(item.endDate);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(item.startTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(item.endTime);\r\n }\r\n\r\n onViewHistoryBtnClick(allocationId: number) {\r\n this.toggleSendRequest();\r\n if (this.sendRequest) {\r\n this.calendarService.getAllocationHistory(allocationId).subscribe(\r\n (res) => {\r\n this.allocationHistory = res;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n }\r\n }\r\n\r\n toggleSendRequest() {\r\n this.sendRequest = !this.sendRequest\r\n }\r\n\r\n\r\n onMobileTabSelect(event) {\r\n if (event == 'userlist') {\r\n $('#myTab').css('display', 'flex')\r\n $('#myTabContent').css('display', 'block')\r\n } else if (event == 'bookings') {\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n $('.btn-calendar-booking').click()\r\n } else if (event == 'inquiry') {\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n $('.btn-calendar-inquiry').click()\r\n }\r\n }\r\n\r\n addInquiryOnpartial(allocationData) {\r\n this.allocationForm.patchValue({\r\n clientId: this.userId,\r\n isInquiry: true\r\n });\r\n this.calendarService.requestAdminAllocations(this.allocationForm.value).subscribe(\r\n (allocationInfo: BookingInfo) => {\r\n if (allocationInfo != null) {\r\n ($('#partialAvailabilityListModal') as any).modal('hide');\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.setNotificationData('inquiry', true);\r\n this.allocationForm.patchValue({\r\n startDate: '',\r\n endDate: '',\r\n weekdayStart: '',\r\n weekdayEnd: '',\r\n weekdayLunch: 0,\r\n employeeId: ''\r\n });\r\n this.calendarService.emmitUserListAction('refresh');\r\n } else {\r\n this.setNotificationData('inquiry', false);\r\n }\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n // this.onAllocationRequestComplete(allocationInfo, this.allocationForm.value);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n openProfileViewModal(event) {\r\n this.employeeProfileId.next(event);\r\n ($('#employeeProfileViewModal') as any).modal('show');\r\n }\r\n\r\n onClickMakeBooking() {\r\n console.log(\"booking-calendar-component-onClickMakeBooking\");\r\n this.clientCommonTimes = []\r\n if (this.isBookingSelected) {\r\n this.calendarService.getClientCommonTimes(this.userId).subscribe((response) => {\r\n this.clientCommonTimes = response;\r\n this.setAvailableEmployees();\r\n })\r\n } else {\r\n this.setAvailableEmployees();\r\n }\r\n }\r\n\r\n\r\n setAvailableEmployees() {\r\n const validator = ($('#allocationFormContent') as any).kendoValidator({\r\n rules: {\r\n matches: function (input) {\r\n if (input.data('greaterthan') == 'kendo-wd-start') {\r\n var startTimeStr = $('#kendo-wd-start').val() as string;\r\n var endTimeStr = $('#kendo-wd-end').val() as string;\r\n\r\n var startWDTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endWDTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n\r\n if (startWDTime < endWDTime) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return true\r\n }\r\n }\r\n },\r\n }).data('kendoValidator');\r\n if (true) {\r\n\r\n let date;\r\n const d = this.allocationForm.get('endDate').value;\r\n if (!d) {\r\n date = new Date();\r\n } else {\r\n date = d;\r\n }\r\n\r\n this.isWeekend = (date.getDay() === 6) || (date.getDay() === 0);\r\n const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n const lunch = (this.isWeekend ? 0 : 45);\r\n\r\n this.allocationForm.patchValue({\r\n startDate: date,\r\n endDate: date,\r\n // weekdayStart: startTime,\r\n // weekdayEnd: endTime,\r\n weekdayLunch: lunch,\r\n experienceAreas: []\r\n });\r\n\r\n // $('#kendo-wd-start').data('kendoTimePicker').value(startTime);\r\n // $('#kendo-wd-end').data('kendoTimePicker').value(endTime);\r\n\r\n // if (!this.IsOnChangeEvent) {\r\n this.selectedExpAreas = [];\r\n if (this.userType && this.userType === 'Client' && this.userId != 'all') {\r\n this.allocationForm.patchValue({\r\n clientId: this.userId,\r\n isInquiry: !this.isBookingSelected\r\n });\r\n this.resetModalValues();\r\n let resultsFetched: boolean = true;\r\n if (resultsFetched && this.role == 'Admin' || (this.role == 'SuperClient' && this.configClientIsAbleToSelectTheEmployeesInBooking == true)) {\r\n this.availableEmployees = [];\r\n this.calendarService.getAvailableEmployees(this.allocationForm.value).subscribe((availableEmpList) => {\r\n // ($('#requestAllocationModal') as any).modal('hide');\r\n resultsFetched = true;\r\n\r\n if (availableEmpList) {\r\n this.isBookingSelected = true\r\n this.allocationForm.patchValue({\r\n isInquiry: false\r\n });\r\n this.availableEmployees = availableEmpList\r\n if (availableEmpList.length > 0) {\r\n var preSystemSelectedEmployee = availableEmpList.find(element => {\r\n return element.isDefaultMatched == true\r\n });\r\n }\r\n if (preSystemSelectedEmployee) {\r\n // setTimeout(() => {\r\n this.allocationForm.get(\"employeeId\").setValue(preSystemSelectedEmployee.value);\r\n // }, 200);\r\n }\r\n } else {\r\n // this.isBookingSelected = false;\r\n this.allocationForm.patchValue({\r\n employeeId: '',\r\n isInquiry: true\r\n });\r\n this.availableEmployees = []\r\n }\r\n ($('#requestAllocationModal') as any).modal('show');\r\n // this.showExperienceAreas = true;\r\n })\r\n resultsFetched = false;\r\n } else {\r\n ($('#requestAllocationModal') as any).modal('show');\r\n }\r\n\r\n } else {\r\n ($('#requestAllocationModal') as any).modal('show');\r\n }\r\n // }\r\n }\r\n this.IsOnChangeEvent = false;\r\n }\r\n\r\n getAdminConfigurationDetails(): void {\r\n const userId = null; // logged in user's id will be get from API\r\n this.configService.getUserWiseAdminCOnfigurations(userId).subscribe(data => {\r\n if (data.length) {\r\n if (data.find(a => a.title === 'configClientIsAbleToSelectTheEmployeesInBooking')) {\r\n this.configClientIsAbleToSelectTheEmployeesInBooking = data.find(a => a.title === 'configClientIsAbleToSelectTheEmployeesInBooking').isActive;\r\n }\r\n }\r\n })\r\n }\r\n\r\n expAreaValidationFailedCreateInquiry() {\r\n ($('#bookingExpAreaFailedViewModal') as any).modal('hide');\r\n\r\n let expAreas: any = [];\r\n expAreas = this.allocationForm.get(\"experienceAreas\").value;\r\n // this.allocationForm.patchValue({\"experienceAreas\":[]});\r\n if (expAreas) {\r\n expAreas.forEach(element => {\r\n let expArea = this.experienceAreas.filter(item => item.value == element)[0];\r\n this.selectedExpAreas.push(expArea)\r\n });\r\n }\r\n this.isBookingSelected = false;\r\n $('#kendo-end-date').data('kendoDatePicker').enable(false);\r\n this.disableExpAreasDropdown = true;\r\n\r\n ($('#requestAllocationModal') as any).modal('show');\r\n }\r\n\r\n directCreateInquiry() {\r\n ($('#bookingExpAreaFailedViewModal') as any).modal('hide');\r\n\r\n\r\n this.isBookingSelected = false;\r\n this.disableExpAreasDropdown = true;\r\n\r\n ($('#requestAllocationModal') as any).modal('show');\r\n }\r\n\r\n resetModalValues() {\r\n this.allocationForm.patchValue({ \"experienceAreas\": [] });\r\n this.disableExpAreasDropdown = false;\r\n }\r\n\r\n onClickMakeLongBooking() {\r\n this.clientCommonTimes = []\r\n if (this.isBookingSelected) {\r\n this.calendarService.getClientCommonTimes(this.userId).subscribe((response) => {\r\n this.clientCommonTimes = response;\r\n this.setAvailableEmployeesForLongBooking();\r\n })\r\n } else {\r\n this.setAvailableEmployeesForLongBooking();\r\n }\r\n }\r\n\r\n setAvailableEmployeesForLongBooking() {\r\n const validator = ($('#allocationFormContentForLongBooking') as any).kendoValidator({\r\n rules: {\r\n matches: function (input) {\r\n if (input.data('greaterthan') == 'kendo-wd-start') {\r\n var startTimeStr = $('#kendo-wd-start').val() as string;\r\n var endTimeStr = $('#kendo-wd-end').val() as string;\r\n\r\n var startWDTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endWDTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n\r\n if (startWDTime < endWDTime) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return true\r\n }\r\n }\r\n },\r\n }).data('kendoValidator');\r\n if (validator.validate()) {\r\n if (!this.IsOnChangeEvent) {\r\n if (this.userType && this.userType === 'Client' && this.userId != 'all' && this.isBookingSelected) {\r\n this.allocationForm.patchValue({\r\n clientId: this.userId,\r\n isInquiry: !this.isBookingSelected\r\n });\r\n if (this.role == 'Admin') {\r\n this.calendarService.getAvailableEmployees(this.allocationForm.value).subscribe((availableEmpList) => {\r\n if (availableEmpList) {\r\n this.availableEmployees = availableEmpList\r\n if (availableEmpList.length > 0) {\r\n var preSystemSelectedEmployee = availableEmpList.find(element => {\r\n return element.isDefaultMatched == true\r\n });\r\n }\r\n if (preSystemSelectedEmployee) {\r\n // setTimeout(() => {\r\n this.allocationForm.get(\"employeeId\").setValue(preSystemSelectedEmployee.value);\r\n // }, 200);\r\n }\r\n } else {\r\n this.allocationForm.patchValue({\r\n employeeId: '',\r\n });\r\n this.availableEmployees = []\r\n }\r\n ($('#requestAllocationForLongBookinModal') as any).modal('show');\r\n })\r\n } else {\r\n ($('#requestAllocationForLongBookinModal') as any).modal('show');\r\n }\r\n\r\n } else {\r\n ($('#requestAllocationForLongBookinModal') as any).modal('show');\r\n }\r\n }\r\n }\r\n this.IsOnChangeEvent = false;\r\n }\r\n\r\n onTLstartChange(option?: string) {\r\n var picker: any\r\n if (option == 'tu') {\r\n picker = $('#kendo-tu-start')\r\n } else if (option == 'au') {\r\n picker = $('#kendo-au-start')\r\n } else {\r\n picker = $('#kendo-tl-start')\r\n }\r\n if (picker.val().toString().length == 2 || picker.val().toString().length == 1) {\r\n var newVal\r\n if (picker.val().toString().length == 2) {\r\n newVal = picker.val() + ':00'\r\n picker.val(newVal)\r\n picker.trigger('change', newVal)\r\n }\r\n if (picker.val().toString().length == 1) {\r\n newVal = '0' + picker.val() + ':00'\r\n picker.val(newVal)\r\n picker.trigger('change', newVal)\r\n }\r\n }\r\n }\r\n\r\n onTLEndChange(option?: string) {\r\n var picker: any\r\n if (option == 'tu') {\r\n picker = $('#kendo-tu-end')\r\n } else if (option == 'au') {\r\n picker = $('#kendo-au-end')\r\n } else {\r\n picker = $('#kendo-tl-end')\r\n }\r\n if (picker.val().toString().length == 2 || picker.val().toString().length == 1) {\r\n var newVal\r\n if (picker.val().toString().length == 2) {\r\n newVal = picker.val() + ':00'\r\n picker.val(newVal)\r\n picker.trigger('change', newVal)\r\n }\r\n if (picker.val().toString().length == 1) {\r\n newVal = '0' + picker.val() + ':00'\r\n picker.val(newVal)\r\n picker.trigger('change', newVal)\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n setViewDateRange(e) {\r\n var view = e.sender.view();\r\n\r\n switch (e.view) {\r\n case 'month':\r\n this.viewStartDate = new Date(e.date.getFullYear(), e.date.getMonth(), 1);\r\n this.viewEndDate = new Date(e.date.getFullYear(), e.date.getMonth() + 1, 1, 1);\r\n break;\r\n case 'day':\r\n this.viewStartDate = new Date(e.date.getFullYear(), e.date.getMonth(), 1);\r\n this.viewEndDate = new Date(e.date.getFullYear(), e.date.getMonth() + 1, 1, 1);\r\n break;\r\n case 'Agenda':\r\n this.viewStartDate = new Date(e.date.getFullYear(), e.date.getMonth(), e.date.getDate());\r\n this.viewEndDate = new Date(e.date.getFullYear(), e.date.getMonth() + 1, e.date.getDate());\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n\r\n if (this.role == \"Employee\") {\r\n\r\n setTimeout(() => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType, viewStartDate: this.viewStartDate, viewEndDate: this.viewEndDate });\r\n }, 500);\r\n\r\n } else {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType, viewStartDate: this.viewStartDate, viewEndDate: this.viewEndDate });\r\n }\r\n\r\n\r\n }\r\n getCurrentConfigData(): void {\r\n this.userservice.getConfigData().subscribe((res) => {\r\n this.resourceTypes = res.resourceTypes\r\n\r\n })\r\n }\r\n getResourceNameById(id) {\r\n var resource = this.resourceTypes.find(x => x.id == id)\r\n if (resource) {\r\n return resource.displayName\r\n } else {\r\n return '';\r\n }\r\n\r\n }\r\n\r\n}\r\n","module.exports = \".ngx-pagination li{\\r\\n background-color: white !important;\\r\\n }\\r\\n .ngx-pagination{\\r\\n padding: 0px !important;\\r\\n }\\r\\n .d-flex a {\\r\\n color: #1C1C1C !important;\\r\\n text-decoration: none !important;\\r\\n background-color: transparent !important;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2FsZW5kYXIvYm9va2luZy1jYWxlbmRhci9zaG9ydGJvb2tpbmctbGlzdC9zaG9ydEJvb2tpbmctbGlzdC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0lBQ0ksa0NBQWtDO0VBQ3BDO0VBQ0E7SUFDRSx1QkFBdUI7RUFDekI7RUFFQTtJQUNFLHlCQUF5QjtJQUN6QixnQ0FBZ0M7SUFDaEMsd0NBQXdDO0VBQzFDIiwiZmlsZSI6InNyYy9hcHAvY2FsZW5kYXIvYm9va2luZy1jYWxlbmRhci9zaG9ydGJvb2tpbmctbGlzdC9zaG9ydEJvb2tpbmctbGlzdC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm5neC1wYWdpbmF0aW9uIGxpe1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcclxuICB9XHJcbiAgLm5neC1wYWdpbmF0aW9ue1xyXG4gICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIFxyXG4gIC5kLWZsZXggYSB7XHJcbiAgICBjb2xvcjogIzFDMUMxQyAhaW1wb3J0YW50O1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG4gIH0iXX0= */\"","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { ConfigService } from 'src/app/shared/services/config.service';\r\nimport { UserService } from 'src/app/user/user.service';\r\nimport { CalendarService } from '../../calendar.service';\r\nimport { LongBookingService } from 'src/app/shared/services/domain/booking/long-booking.service';\r\n\r\n@Component({\r\n selector: 'short-booking-list',\r\n templateUrl: './shortBooking-list.component.html',\r\n styleUrls: ['./shortBooking-list.component.css']\r\n})\r\nexport class ShortBookingListComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Output() deleteTemplateFunc: EventEmitter = new EventEmitter();\r\n\r\n showEdit: boolean;\r\n selectedIndex: number;\r\n clicked: boolean;\r\n changedValue: boolean;\r\n updatedInProgress: boolean;\r\n userInfoList: any = [];\r\n searchCritera: any = {};\r\n config: any = {};\r\n shortbookings:any[]=[];\r\n\r\n bookingModalHeader = \"Make Long Bookings\";\r\n ShortBookingSelected: boolean;\r\n\r\n constructor(private longBookingService: LongBookingService, private userService: UserService, private configService: ConfigService) { }\r\n ngOnDestroy(): void {\r\n }\r\n\r\n ngOnInit() {\r\n this.searchCritera.pageNumber = 1;\r\n this.searchCritera.pageSize = 10;\r\n this.searchCritera.orderBy = 'FirstName';\r\n this.searchCritera.isAscending = true;\r\n this.searchCritera.isActive = true;\r\n\r\n this.config = {\r\n itemsPerPage: this.searchCritera.pageSize,\r\n currentPage: this.searchCritera.pageNumber,\r\n totalItems: 10\r\n };\r\n this.getShortBookings();\r\n }\r\n\r\n private getUsers(): void {\r\n this.userService.getAll(this.searchCritera).subscribe(\r\n pagedResult => {\r\n this.config.totalItems = pagedResult.totalNumberOfRecords;\r\n this.config.itemsPerPage = 10;\r\n this.config.currentPage = 1;\r\n\r\n this.userInfoList = pagedResult.results;\r\n },\r\n // error => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n// editShortBooking(allocation: any) {\r\n// this.calendarService.emmitShortBookingDetails(allocation);\r\n// ($('#employeeBookingModal') as any).modal('hide');\r\n// this.bookingModalHeader = \"Edit Long Booking\";\r\n// this.ShortBookingSelected = true;\r\n// setTimeout(() => {\r\n// ($('#requestAllocationForLongBookinModalType1') as any).modal('show');\r\n// }, 500);\r\n// }\r\n\r\n pageChanged(event): void {\r\n this.searchCritera.pageNumber = event;\r\n this.getShortBookings();\r\n this.config.currentPage = event;\r\n }\r\n\r\n getShortBookings(): void {\r\n this.longBookingService.getShortBookings(this.searchCritera).subscribe(data => {\r\n console.log(\"data-\", data.result);\r\n this.shortbookings = data.result.results;\r\n this.config.totalItems = data.result.totalNumberOfRecords;\r\n this.config.itemsPerPage = 10;\r\n this.config.currentPage = 1;\r\n })\r\n }\r\n\r\n close() {\r\n ($('#editTemplateForLongBookinModal') as any).modal('hide');\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdminCalendarComponent } from './admin-calendar.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { ClientCalendarComponent } from './client-calendar.component';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { EmployeeCalendarComponent } from './employee-calendar.component';\r\nimport { FilterPipeModule } from 'ngx-filter-pipe';\r\nimport { SuperclientCalendarComponent } from './superclient-calendar/superclient-calendar.component';\r\nimport { EmployeeInquiryCalenderComponent } from './employee-inquiry-calender/employee-inquiry-calender.component';\r\nimport { UserModule } from '../user/user.module';\r\nimport { Select2Module } from 'ng-select2-component';\r\nimport { AdminInquiryCalendarComponent } from './admin-inquiry-calendar/admin-inquiry-calendar.component';\r\nimport { BookingCalendarComponent } from './booking-calendar/booking-calendar.component';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { LongBookingComponent } from './long-booking/long-booking.component';\r\nimport { TemplateListComponent } from './long-booking/template-list/template-list.component';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { CalendarModule } from \"primeng/calendar\";\r\nimport { StarRatingModule } from 'angular-star-rating';\r\nimport { LongBookingListComponent } from './long-booking/longbooking-list/longbooking-list.component';\r\nimport { NgxPaginationModule } from 'ngx-pagination';\r\nimport { ShortBookingListComponent } from './booking-calendar/shortbooking-list/shortbooking-list.component';\r\n\r\n@NgModule({\r\n declarations: [ShortBookingListComponent,LongBookingListComponent,TemplateListComponent, AdminCalendarComponent, ClientCalendarComponent, EmployeeCalendarComponent, SuperclientCalendarComponent, EmployeeInquiryCalenderComponent, AdminInquiryCalendarComponent, BookingCalendarComponent, LongBookingComponent],\r\n imports: [\r\n\r\n StarRatingModule.forRoot(),\r\n ReactiveFormsModule,\r\n // DateInputsModule,\r\n NgSelectModule,\r\n CommonModule,\r\n SharedModule,\r\n FormsModule,\r\n FilterPipeModule,\r\n UserModule,\r\n Select2Module,\r\n CalendarModule,\r\n RouterModule,\r\n NgxPaginationModule\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class CalendarModuleA { }\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { AlliocationModel } from './alliocation-model';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { tap, catchError } from 'rxjs/operators';\r\nimport { AllocationInfo } from './allocation-info';\r\nimport { AvailabilityModel } from './availability-model';\r\nimport { AvailabilityInfo } from './availability-info';\r\nimport { AvailabilityUpdateModel } from './availability-update-model';\r\nimport { TimeLogModel } from './time-log-model';\r\nimport { SwapEmployeeModel } from './swap-employee-model';\r\nimport { BookingInfo } from './booking-info';\r\nimport { ClientBookingInfo } from './client-booking-info';\r\nimport { IUserInfo } from '../user/user-info';\r\nimport { environment } from '../../environments/environment';\r\nimport { PartialAvailabilityModel } from './partial-availability-model';\r\nimport { PartialAvailabilityInfo } from './partial-availability-info';\r\nimport SwedishHolidays from '../shared/constants/swedishHolidays';\r\n\r\nconst API_URL = environment.apiEndpoint;\r\n\r\nconst httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n }),\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CalendarService {\r\n\r\n swedishHolidays: typeof SwedishHolidays;\r\n\r\n constructor(private http: HttpClient) {\r\n this.swedishHolidays = SwedishHolidays;\r\n this.getConfigData().subscribe((res) => {\r\n this.resourceTypes = res.resourceTypes;\r\n })\r\n }\r\n\r\n public onClickMakeBooking = new Subject();\r\n public onClickMakeLongBooking = new Subject();\r\n public onClickMakeInquiry = new Subject();\r\n\r\n public OnClickAvailabilityUpdate = new Subject();\r\n public onResourceTypeChange = new Subject();\r\n public onSelectLongBooking = new Subject();\r\n\r\n public selectedMonth = new Subject();\r\n public userListAction = new Subject();\r\n // public swedishHolidays\r\n public resourceTypes\r\n\r\n\r\n getAllocations(userId: string, role: string, viewStartDate: Date, viewEndDate: Date): Observable {\r\n\r\n let url = ''\r\n let fromDate = viewStartDate.toISOString()\r\n let toDate = viewEndDate.toISOString()\r\n if (role == 'Admin') {\r\n url = 'allocations';\r\n } else if (role == 'SuperClient') {\r\n url = 'allocations/superclient/getallocations';\r\n } else if (role == 'Employee') {\r\n url = 'allocations/employee';\r\n }\r\n let queryParamStr = ''\r\n queryParamStr += '?fromDate=' + fromDate + '&toDate=' + toDate\r\n queryParamStr += (userId === '' || userId === 'all') ? '' : '&userId=' + userId\r\n\r\n return this.http.get(API_URL + url + queryParamStr, httpOptions).pipe(\r\n tap(resp => {\r\n // resp.reverse();\r\n // resp.length = 10;\r\n resp.forEach((r) => {\r\n r.start = new Date(r.sDate);\r\n r.end = new Date(r.eDate);\r\n\r\n if (r.start.toDateString() !== new Date().toDateString() && r.start < new Date()) {\r\n if (r.isTimeLogged) {\r\n r.colorClass = 'slot-blue';\r\n r.timeLoggedClass = 'slot-has-check';\r\n } else {\r\n r.colorClass = 'slot-yellow';\r\n r.timeLoggedClass = 'slot-no-check';\r\n }\r\n } else {\r\n if (r.isTimeLogged) {\r\n r.colorClass = 'slot-blue';\r\n r.timeLoggedClass = 'slot-has-check';\r\n } else {\r\n r.colorClass = 'slot-blue';\r\n r.timeLoggedClass = 'slot-no-check';\r\n }\r\n\r\n }\r\n if (r.isInquiry) {\r\n r.colorClass = 'slot-orange';\r\n }\r\n if (r.resourceTypeId === 1) {\r\n r.resourceTypeClass = 'F';\r\n } else {\r\n r.resourceTypeClass = 'K';\r\n }\r\n var letter = (this.resourceTypes.find(x => x.id == r.resourceTypeId)).displayLetter;\r\n r.resourceTypeIconLetter = letter;\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n superClientGetAllocations(userId: string): Observable {\r\n const url = (userId === '' || userId === 'all') ? 'allocations/superclient/getallocations' : 'allocations/superclient/getallocations?userId=' + userId;\r\n return this.http.get(API_URL + url, httpOptions).pipe(\r\n tap(resp => {\r\n resp.forEach((r) => {\r\n r.start = new Date(r.sDate);\r\n r.end = new Date(r.eDate);\r\n\r\n if (r.start.toDateString() !== new Date().toDateString() && r.start < new Date()) {\r\n if (r.isTimeLogged) {\r\n r.colorClass = 'slot-blue';\r\n r.timeLoggedClass = 'slot-has-check';\r\n } else {\r\n r.colorClass = 'slot-yellow';\r\n r.timeLoggedClass = 'slot-no-check';\r\n }\r\n } else {\r\n if (r.isTimeLogged) {\r\n r.colorClass = 'slot-blue';\r\n r.timeLoggedClass = 'slot-has-check';\r\n } else {\r\n r.colorClass = 'slot-blue';\r\n r.timeLoggedClass = 'slot-no-check';\r\n }\r\n\r\n }\r\n if (r.isInquiry) {\r\n r.colorClass = 'slot-orange';\r\n }\r\n if (r.resourceTypeId === 1) {\r\n r.resourceTypeClass = 'F';\r\n } else {\r\n r.resourceTypeClass = 'K';\r\n }\r\n var letter = (this.resourceTypes.find(x => x.id == r.resourceTypeId)).displayName.slice(0, 1);\r\n r.resourceTypeIconLetter = letter;\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n requestClientAllocations(allocationModel: AlliocationModel): Observable {\r\n const startDate = allocationModel.startDate;\r\n const endDate = allocationModel.endDate;\r\n\r\n allocationModel.startDateString = startDate.getFullYear() + '-' + (startDate.getMonth() + 1) + '-' + startDate.getDate();\r\n allocationModel.endDateString = endDate.getFullYear() + '-' + (endDate.getMonth() + 1) + '-' + endDate.getDate();\r\n return this.http.post(API_URL + 'allocations/client/add', allocationModel, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n if (data != null) {\r\n data.start = new Date(data.sDate);\r\n data.end = new Date(data.eDate);\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n requestAdminAllocations(allocationModel: AlliocationModel): Observable {\r\n const startDate = allocationModel.startDate;\r\n const endDate = allocationModel.endDate;\r\n\r\n allocationModel.startDateString = startDate.getFullYear() + '-' + ((startDate.getMonth() + 1) > 9 ? '' + (startDate.getMonth() + 1) : '0' + (startDate.getMonth() + 1)) + '-' + startDate.getDate();\r\n allocationModel.endDateString = endDate.getFullYear() + '-' + ((endDate.getMonth() + 1) > 9 ? '' + (endDate.getMonth() + 1) : '0' + (endDate.getMonth() + 1)) + '-' + endDate.getDate();\r\n return this.http.post(API_URL + 'allocations/admin/add', allocationModel, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n if (data != null) {\r\n data.start = new Date(data.sDate);\r\n data.end = new Date(data.eDate);\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n requestSuperClientAllocations(allocationModel: AlliocationModel): Observable {\r\n const startDate = allocationModel.startDate;\r\n const endDate = allocationModel.endDate;\r\n\r\n allocationModel.startDateString = startDate.getFullYear() + '-' + (startDate.getMonth() + 1) + '-' + startDate.getDate();\r\n allocationModel.endDateString = endDate.getFullYear() + '-' + (endDate.getMonth() + 1) + '-' + endDate.getDate();\r\n return this.http.post(API_URL + 'allocations/superclient/add', allocationModel, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n if (data != null) {\r\n data.start = new Date(data.sDate);\r\n data.end = new Date(data.eDate);\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n requestAllocationByEmployee(allocationModel: AlliocationModel): Observable {\r\n // employee self booking\r\n const startDate = allocationModel.startDate;\r\n const endDate = allocationModel.endDate;\r\n\r\n allocationModel.startDateString = startDate.getFullYear() + '-' + ((startDate.getMonth() + 1) > 9 ? '' + (startDate.getMonth() + 1) : '0' + (startDate.getMonth() + 1)) + '-' + startDate.getDate();\r\n allocationModel.endDateString = endDate.getFullYear() + '-' + ((endDate.getMonth() + 1) > 9 ? '' + (endDate.getMonth() + 1) : '0' + (endDate.getMonth() + 1)) + '-' + endDate.getDate();\r\n return this.http.post(API_URL + 'allocations/employeeselfbooking/add', allocationModel, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n if (data != null) {\r\n data.start = new Date(data.sDate);\r\n data.end = new Date(data.eDate);\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getClientAllocations(userId: string, viewStartDate: Date, viewEndDate: Date): Observable {\r\n\r\n let url = 'allocations/client'\r\n let fromDate = viewStartDate.toISOString()\r\n let toDate = viewEndDate.toISOString()\r\n\r\n let queryParamStr = ''\r\n queryParamStr += '?fromDate=' + fromDate + '&toDate=' + toDate\r\n queryParamStr += (userId === '' || userId === 'all') ? '' : '&userId=' + userId\r\n\r\n return this.http.get(API_URL + url + queryParamStr, httpOptions).pipe(\r\n tap(resp => {\r\n resp.forEach((r) => {\r\n r.start = new Date(r.sDate);\r\n r.end = new Date(r.eDate);\r\n if (r.resourceTypeId === 1) {\r\n r.description = 'F';\r\n } else {\r\n r.description = 'K';\r\n }\r\n\r\n if (!r.isInquiry) {\r\n r.colorClass = 'slot-blue';\r\n } else {\r\n r.colorClass = 'slot-orange';\r\n }\r\n var letter = (this.resourceTypes.find(x => x.id == r.resourceTypeId)).displayName.slice(0, 1);\r\n r.resourceTypeIconLetter = letter;\r\n\r\n\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n checkClientAvailability(data: AvailabilityModel[]): Observable {\r\n return this.http.post(API_URL + 'allocations/client/availability', data, httpOptions).pipe(\r\n tap(resp => {\r\n resp.forEach((r) => {\r\n r.startTime = new Date(r.start);\r\n r.endTime = new Date(r.end);\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n getEmployeeAllocations(userId: string): Observable {\r\n const url = (userId === '' || userId === 'all') ? 'allocations/employee' : 'allocations/employee?userId=' + userId;\r\n return this.http.get(API_URL + url, httpOptions).pipe(\r\n tap(resp => {\r\n resp.forEach((r) => {\r\n r.start = new Date(r.sDate);\r\n r.end = new Date(r.eDate);\r\n if (r.start.toDateString() !== new Date().toDateString() && r.start < new Date()) {\r\n if (r.isTimeLogged) {\r\n r.colorClass = 'slot-blue';\r\n r.timeLoggedClass = 'slot-has-check';\r\n } else {\r\n r.colorClass = 'slot-yellow';\r\n r.timeLoggedClass = 'slot-no-check';\r\n }\r\n } else {\r\n if (r.isTimeLogged) {\r\n r.colorClass = 'slot-blue';\r\n r.timeLoggedClass = 'slot-has-check';\r\n } else {\r\n r.colorClass = 'slot-blue';\r\n r.timeLoggedClass = 'slot-no-check';\r\n }\r\n\r\n }\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n checkEmployeeAvailability(data: AvailabilityModel[]): Observable {\r\n return this.http.post(API_URL + 'allocations/employee/availability', data, httpOptions).pipe(\r\n tap(resp => {\r\n resp.forEach((r) => {\r\n r.startTime = new Date(r.start);\r\n r.endTime = new Date(r.end);\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n updateAvailability(data: AvailabilityUpdateModel): Observable {\r\n return this.http.post(API_URL + 'allocations/employee/availability/update', data, httpOptions).pipe(\r\n tap(resp => {\r\n resp.forEach((r) => {\r\n r.startTime = new Date(r.start);\r\n r.endTime = new Date(r.end);\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateComment(data: any): Observable {\r\n return this.http.post(API_URL + 'allocations/employee/booking/addcomment', data, httpOptions).pipe(\r\n tap(resp => {\r\n resp.forEach((r) => {\r\n r.startTime = new Date(r.start);\r\n r.endTime = new Date(r.end);\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateVacationAndLeave(data: any): Observable {\r\n return this.http.post(API_URL + 'allocations/employee/vacationAndLeave/update', data, httpOptions).pipe(\r\n tap(resp => {\r\n resp.forEach((r) => {\r\n r.startTime = new Date(r.start);\r\n r.endTime = new Date(r.end);\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateSingleAvailability(date: Date, userId: string): Observable {\r\n const dateString = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();\r\n const url = userId !== '' ? ('allocations/availability/date?date=' + dateString + '&userId=' + userId)\r\n : ('allocations/availability/date?date=' + dateString);\r\n return this.http.post(API_URL + url, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateTimeLogs(data: TimeLogModel): Observable {\r\n if (!data.distance) {\r\n data.distance = \"0\";\r\n }\r\n if (!data.travelTime) {\r\n data.travelTime = \"0\";\r\n }\r\n return this.http.post(API_URL + 'allocations/employee/timelog/update', data, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n checkAllAvailability(data: AvailabilityModel[], role?: string): Observable {\r\n let endPoint = 'allocations/availability'\r\n if (role == 'Employee') {\r\n endPoint = 'allocations/employee/availability'\r\n }\r\n return this.http.post(API_URL + endPoint, data, httpOptions).pipe(\r\n tap(resp => {\r\n resp.forEach((r) => {\r\n r.startTime = new Date(r.start);\r\n r.endTime = new Date(r.end);\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n checkSuperClientAllAvailability(data: AvailabilityModel[]): Observable {\r\n return this.http.post(API_URL + 'allocations/superclient/availability', data, httpOptions).pipe(\r\n tap(resp => {\r\n resp.forEach((r) => {\r\n r.startTime = new Date(r.start);\r\n r.endTime = new Date(r.end);\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAllocationSwapUserList(allocationId: number): Observable {\r\n return this.http.get(API_URL + 'allocations/swap/employees?allocationId=' + allocationId, httpOptions).pipe(\r\n tap(resp => {\r\n\r\n resp.forEach((r) => {\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n swapAllocationEmployee(data: SwapEmployeeModel): Observable {\r\n return this.http.post(API_URL + 'allocations/swap/employees/update', data, httpOptions).pipe(\r\n tap(resp => {\r\n\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getSameDaySwapEmployeesList(allocationData): Observable {\r\n return this.http.post(API_URL + 'allocations/getbookingsforswap', allocationData, httpOptions).pipe(\r\n tap(resp => {\r\n\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n onSameDaySwapEmployees(allocationData): Observable {\r\n return this.http.post(API_URL + 'allocations/swapemployeewithbooking', allocationData, httpOptions).pipe(\r\n tap(resp => {\r\n\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n assignInquiryEmployee(allocationId: number): Observable {\r\n return this.http.post(API_URL + 'allocations/swap/employees/updatebyemployee?allocationId=' + allocationId, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n getEmployeeInquiryList(userId: string): Observable {\r\n\r\n let url = 'allocations/employee/inquiries'\r\n // let fromDate = viewStartDate.toISOString()\r\n // let toDate = viewEndDate.toISOString()\r\n let queryParamStr = ''\r\n\r\n // queryParamStr +='?fromDate='+fromDate+'&toDate='+toDate\r\n queryParamStr += (userId === '' || userId === 'all') ? '' : '?clientId=' + userId\r\n\r\n return this.http.get(API_URL + url + queryParamStr, httpOptions).pipe(\r\n tap(resp => {\r\n resp.forEach((r) => {\r\n r.start = new Date(r.sDate);\r\n r.end = new Date(r.eDate);\r\n r.colorClass = 'slot-orange';\r\n r.timeLoggedClass = 'slot-no-check';\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAdminInquiryList(startDate: string, userId: string, userType: string, role: string): Observable {\r\n\r\n var url\r\n // let fromDate = viewStartDate.toISOString()\r\n // let toDate = viewEndDate.toISOString()\r\n\r\n if (role == 'SuperClient') {\r\n url = 'allocations/superclient/inquiries'\r\n } else if (role == 'Admin') {\r\n url = 'allocations/inquiries'\r\n }\r\n let queryParamStr = ''\r\n queryParamStr += '?startDate=' + (startDate ? startDate : new Date().toISOString())\r\n // queryParamStr +='&fromDate='+fromDate+'&toDate='+toDate\r\n\r\n if (userType && userId) {\r\n if (userType == 'Employee' && userId && userId != 'all') {\r\n queryParamStr += '&userId=' + userId\r\n }\r\n if (userType == 'Client' && userId && userId != 'all') {\r\n queryParamStr += '&clientId=' + userId\r\n }\r\n }\r\n return this.http.get(API_URL + url + queryParamStr, httpOptions).pipe(\r\n tap(resp => {\r\n resp.forEach((r) => {\r\n r.start = new Date(r.sDate);\r\n r.end = new Date(r.eDate);\r\n r.colorClass = 'slot-orange';\r\n r.timeLoggedClass = 'slot-no-check';\r\n\r\n if (r.resourceTypeId === 1) {\r\n r.resourceTypeClass = 'F';\r\n } else {\r\n r.resourceTypeClass = 'K';\r\n }\r\n var letter = (this.resourceTypes.find(x => x.id == r.resourceTypeId)).displayName.slice(0, 1);\r\n\r\n r.resourceTypeIconLetter = letter;\r\n });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n removeAllocation(allocationId: number): Observable {\r\n return this.http.post(API_URL + 'allocations/remove?allocationId=' + allocationId, httpOptions).pipe(\r\n tap(resp => {\r\n\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n superClientRemoveAllocation(allocationId: number): Observable {\r\n return this.http.post(API_URL + 'allocations/superclient/remove?allocationId=' + allocationId, httpOptions).pipe(\r\n tap(resp => {\r\n\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n removeClientAllocation(allocationId: number): Observable {\r\n return this.http.post(API_URL + 'allocations/client/remove?allocationId=' + allocationId, httpOptions).pipe(\r\n tap(resp => {\r\n\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n checkSingleAvailability(userId: string, sDate: string, role: string): Observable {\r\n let endPoint = ''\r\n if (role == 'Employee') {\r\n endPoint = 'allocations/employee/checksingleavailability?date=' + sDate\r\n } else {\r\n endPoint = 'allocations/checksingleavailability?userId=' + userId + '&date=' + sDate\r\n }\r\n return this.http.get(API_URL + endPoint, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n // checkEmployeeSingleAvailability(sDate: string): Observable {\r\n // return this.http.get(API_URL + 'allocations/employee/checksingleavailability?date='\r\n // + sDate, httpOptions).pipe(\r\n // tap(resp => {\r\n // }),\r\n // catchError(this.handleError)\r\n // );\r\n // }\r\n\r\n updatePartialAvailability(data: PartialAvailabilityModel, role: string): Observable {\r\n let endPoint = ''\r\n if (role == 'Employee') {\r\n endPoint = 'allocations/employee/partial_availability/update'\r\n } else {\r\n endPoint = 'allocations/partial_availability/update'\r\n }\r\n return this.http.post(API_URL + endPoint, data, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n // updateEmployeePartialAvailability(data: PartialAvailabilityModel): Observable {\r\n // return this.http.post(API_URL + 'allocations/employee/partial_availability/update', data, httpOptions).pipe(\r\n // tap(resp => {\r\n // }),\r\n // catchError(this.handleError)\r\n // );\r\n // }\r\n\r\n getPartialAvailabilityList(allocationModel: AlliocationModel): Observable {\r\n const startDate = allocationModel.startDate;\r\n const endDate = allocationModel.endDate;\r\n\r\n allocationModel.startDateString = startDate.getFullYear() + '-' + (startDate.getMonth() + 1) + '-' + startDate.getDate();\r\n allocationModel.endDateString = endDate.getFullYear() + '-' + (endDate.getMonth() + 1) + '-' + endDate.getDate();\r\n return this.http.post(API_URL + 'allocations/partial_availability/list', allocationModel, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getEmployeeBookingsCount(userId: string, selectedMonth: Date): Observable {\r\n if (selectedMonth === null) {\r\n selectedMonth = new Date();\r\n }\r\n if (!userId || userId === 'all') {\r\n userId = null;\r\n }\r\n\r\n const dateString = selectedMonth.getFullYear() + '-' + (selectedMonth.getMonth() + 1) + '-' + selectedMonth.getDate();\r\n const urlPart = userId !== null ? 'allocations/employee/bookingcount?selectedMonth=' + dateString + '&userId=' + userId\r\n : 'allocations/employee/bookingcount?selectedMonth=' + dateString;\r\n\r\n return this.http.get(API_URL + urlPart, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getSwedishHolidays() {\r\n var json = null;\r\n $.ajax({\r\n 'async': false,\r\n 'global': false,\r\n 'url': \"assets/swedisholidays.json\",\r\n 'dataType': \"json\",\r\n 'success': function (data) {\r\n json = data;\r\n }\r\n });\r\n return JSON.parse(JSON.stringify(json));\r\n }\r\n\r\n isHoliday(date) {\r\n this.swedishHolidays = SwedishHolidays;\r\n var slotDateJsonFormat = this.getJsonDateFormat(date);\r\n\r\n var holidayArr = this.swedishHolidays[slotDateJsonFormat]\r\n if (holidayArr) {\r\n var holidayObj = holidayArr.find(e => e.date == date.getDate())\r\n if (holidayObj) {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n\r\n getJsonDateFormat(date: Date): string {\r\n return date.getFullYear() + '' + (date.getMonth() + 1 > 9 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1))\r\n }\r\n\r\n getWeekNumber(d) {\r\n // Copy date so don't modify original\r\n d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));\r\n d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));\r\n var yearStart: any = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\r\n // Calculate full weeks to nearest Thursday\r\n var weekNo = Math.ceil((((d - yearStart) / 86400000) + 1) / 7);\r\n return [d.getUTCFullYear(), weekNo];\r\n }\r\n\r\n getAvailableEmployees(allocationModel: AlliocationModel): Observable {\r\n return this.http.post(API_URL + 'allocations/matchedemployees', allocationModel, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getClientCommonTimes(userId): Observable {\r\n\r\n let queryStr = userId ? '?clientId=' + userId : ''\r\n return this.http.get(API_URL + 'allocations/commonbookingdata' + queryStr, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateAllocationTime(timeObj): Observable {\r\n return this.http.post(API_URL + 'allocations/updateallocationtime', timeObj, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateAllocationMissingTimeLogs(holidayArr): Observable {\r\n return this.http.post(API_URL + '/reports/updateallmissingtimelogs', holidayArr, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAllocationHistory(allocationId: number): Observable {\r\n return this.http.get(API_URL + 'allocations/viewhistory?allocationId=' + allocationId, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (err.error instanceof ErrorEvent) {\r\n errorMessage = `An error occured: ${err.error.message}`;\r\n } else {\r\n errorMessage = `Server returned code: ${err.status}, error message is: ${err.message}`;\r\n }\r\n return throwError(errorMessage);\r\n }\r\n\r\n getConfigData() {\r\n return this.http.get(API_URL + 'user/resourcetypes').pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n emmitOnClickMakeBooking() {\r\n this.onClickMakeBooking.next(true)\r\n }\r\n\r\n emmitOnClickMakeInquiry() {\r\n this.onClickMakeInquiry.next(true)\r\n }\r\n\r\n\r\n emmitOnClickMakeLongBooking(value: any) {\r\n this.onClickMakeLongBooking.next(value)\r\n }\r\n\r\n emmitOnResourceTypeChange(data) {\r\n this.onResourceTypeChange.next(data)\r\n }\r\n emmitSelectedMonth(data) {\r\n this.selectedMonth.next(data)\r\n }\r\n emmitUserListAction(data) {\r\n this.userListAction.next(data)\r\n }\r\n\r\n emmitLongBookingDetails(data: any) {\r\n this.onSelectLongBooking.next(data)\r\n }\r\n\r\n emmitOnClickAvailabilityUpdate() {\r\n this.OnClickAvailabilityUpdate.next(true)\r\n }\r\n\r\n}\r\n","module.exports = \".form-control-style {\\r\\n height: calc(1.5em + .75rem + 2px)\\r\\n}\\r\\n\\r\\n.employee-wrapper-active {\\r\\n background-color: #cbeff3 !important;\\r\\n}\\r\\n\\r\\n.resrcgrpbtn {\\r\\n background-color: #1CA368;\\r\\n border-color: #1CA368 !important;\\r\\n color: white;\\r\\n}\\r\\n\\r\\n.btn-light {\\r\\n background-color: #cdd4cf;\\r\\n}\\r\\n\\r\\n.slot-orange {\\r\\n background-color: orange !important;\\r\\n /*color: red;*/\\r\\n cursor: pointer;\\r\\n padding-bottom: 6px;\\r\\n}\\r\\n\\r\\n.slot-blue {\\r\\n background-color: #53afea !important;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.display-none {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n#btnPharmacistSm {\\r\\n margin-left: 5px;\\r\\n}\\r\\n\\r\\n.favourite-star{\\r\\n position: relative;\\r\\n right: 98%;\\r\\n top: -12px;\\r\\n font-size: 16px;\\r\\n color: gray;\\r\\n background-color: white;\\r\\n border-radius: 50%;\\r\\n}\\r\\n\\r\\n.favourite-star:hover{\\r\\n position: relative;\\r\\n right: 98%;\\r\\n top: -12px;\\r\\n font-size: 16px;\\r\\n background-color: white;\\r\\n border-radius: 50%;\\r\\n color: rgb(177, 177, 177);\\r\\n}\\r\\n\\r\\n.favourite-star.star-active{\\r\\n color: gold\\r\\n}\\r\\n\\r\\n.btn-light\\r\\n{\\r\\n border-color: #cdd4cf !important;\\r\\n background-color: #cdd4cf;\\r\\n}\\r\\n\\r\\n.employee-wrapper a {\\r\\n color: #1C1C1C !important;\\r\\n text-decoration: underline !important;\\r\\n background-color: transparent !important;\\r\\n}\\r\\n\\r\\n.resourceBtn {\\r\\n text-overflow: ellipsis !important;\\r\\n overflow: hidden !important;\\r\\n padding: 0.2rem 0.2rem !important;\\r\\n min-width: 75px !important;\\r\\n font-size: 12px;\\r\\n margin-left: .1em!important;\\r\\n}\\r\\n\\r\\n.resourceBtnMobile {\\r\\n text-overflow: ellipsis !important;\\r\\n overflow: hidden !important;\\r\\n padding: 0.1rem 0.1rem !important;\\r\\n width: 75px !important;\\r\\n font-size: 12px;\\r\\n margin-left: .1em!important;\\r\\n\\r\\n border-bottom-right-radius: .25rem !important;\\r\\n border-top-right-radius: .25rem !important;\\r\\n border-bottom-left-radius: .25rem !important;\\r\\n border-top-left-radius: .25rem !important;\\r\\n}\\r\\n\\r\\n.btn-calendar {\\r\\n min-width: 105px !important;\\r\\n width:105px !important;\\r\\n font-size: 12px;\\r\\n padding: 0.23rem 0.2rem !important;\\r\\n}\\r\\n\\r\\n.resourceBtn.lastResource{\\r\\n border-bottom-right-radius: .25rem !important;\\r\\n border-top-right-radius: .25rem !important;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2FsZW5kYXIvY2xpZW50LWNhbGVuZGFyLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRTtBQUNGOztBQUVBO0VBQ0Usb0NBQW9DO0FBQ3RDOztBQUVBO0VBQ0UseUJBQXlCO0VBQ3pCLGdDQUFnQztFQUNoQyxZQUFZO0FBQ2Q7O0FBRUE7RUFDRSx5QkFBeUI7QUFDM0I7O0FBR0E7RUFDRSxtQ0FBbUM7RUFDbkMsY0FBYztFQUNkLGVBQWU7RUFDZixtQkFBbUI7QUFDckI7O0FBR0E7RUFDRSxvQ0FBb0M7RUFDcEMsZUFBZTtBQUNqQjs7QUFFQTtFQUNFLGFBQWE7QUFDZjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixVQUFVO0VBQ1YsVUFBVTtFQUNWLGVBQWU7RUFDZixXQUFXO0VBQ1gsdUJBQXVCO0VBQ3ZCLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixVQUFVO0VBQ1YsVUFBVTtFQUNWLGVBQWU7RUFDZix1QkFBdUI7RUFDdkIsa0JBQWtCO0VBQ2xCLHlCQUF5QjtBQUMzQjs7QUFFQTtFQUNFO0FBQ0Y7O0FBQ0E7O0VBRUUsZ0NBQWdDO0VBQ2hDLHlCQUF5QjtBQUMzQjs7QUFFQTtFQUNFLHlCQUF5QjtFQUN6QixxQ0FBcUM7RUFDckMsd0NBQXdDO0FBQzFDOztBQUdBO0VBQ0Usa0NBQWtDO0VBQ2xDLDJCQUEyQjtFQUMzQixpQ0FBaUM7RUFDakMsMEJBQTBCO0VBQzFCLGVBQWU7RUFDZiwyQkFBMkI7QUFDN0I7O0FBQ0E7RUFDRSxrQ0FBa0M7RUFDbEMsMkJBQTJCO0VBQzNCLGlDQUFpQztFQUNqQyxzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLDJCQUEyQjs7RUFFM0IsNkNBQTZDO0VBQzdDLDBDQUEwQztFQUMxQyw0Q0FBNEM7RUFDNUMseUNBQXlDO0FBQzNDOztBQUVBO0VBQ0UsMkJBQTJCO0VBQzNCLHNCQUFzQjtFQUN0QixlQUFlO0VBQ2Ysa0NBQWtDO0FBQ3BDOztBQUVBO0VBQ0UsNkNBQTZDO0VBQzdDLDBDQUEwQztBQUM1QyIsImZpbGUiOiJzcmMvYXBwL2NhbGVuZGFyL2NsaWVudC1jYWxlbmRhci5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvcm0tY29udHJvbC1zdHlsZSB7XHJcbiAgaGVpZ2h0OiBjYWxjKDEuNWVtICsgLjc1cmVtICsgMnB4KVxyXG59XHJcblxyXG4uZW1wbG95ZWUtd3JhcHBlci1hY3RpdmUge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmVmZjMgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnJlc3JjZ3JwYnRuIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMUNBMzY4O1xyXG4gIGJvcmRlci1jb2xvcjogIzFDQTM2OCAhaW1wb3J0YW50O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLmJ0bi1saWdodCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NkZDRjZjtcclxufVxyXG5cclxuXHJcbi5zbG90LW9yYW5nZSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlICFpbXBvcnRhbnQ7XHJcbiAgLypjb2xvcjogcmVkOyovXHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHBhZGRpbmctYm90dG9tOiA2cHg7XHJcbn1cclxuXHJcblxyXG4uc2xvdC1ibHVlIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTNhZmVhICFpbXBvcnRhbnQ7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uZGlzcGxheS1ub25lIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4jYnRuUGhhcm1hY2lzdFNtIHtcclxuICBtYXJnaW4tbGVmdDogNXB4O1xyXG59XHJcblxyXG4uZmF2b3VyaXRlLXN0YXJ7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHJpZ2h0OiA5OCU7XHJcbiAgdG9wOiAtMTJweDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbiAgY29sb3I6IGdyYXk7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG59XHJcblxyXG4uZmF2b3VyaXRlLXN0YXI6aG92ZXJ7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHJpZ2h0OiA5OCU7XHJcbiAgdG9wOiAtMTJweDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIGNvbG9yOiByZ2IoMTc3LCAxNzcsIDE3Nyk7XHJcbn1cclxuXHJcbi5mYXZvdXJpdGUtc3Rhci5zdGFyLWFjdGl2ZXtcclxuICBjb2xvcjogZ29sZFxyXG59XHJcbi5idG4tbGlnaHRcclxue1xyXG4gIGJvcmRlci1jb2xvcjogI2NkZDRjZiAhaW1wb3J0YW50O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNjZGQ0Y2Y7XHJcbn1cclxuXHJcbi5lbXBsb3llZS13cmFwcGVyIGEge1xyXG4gIGNvbG9yOiAjMUMxQzFDICFpbXBvcnRhbnQ7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5cclxuLnJlc291cmNlQnRuIHtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcyAhaW1wb3J0YW50O1xyXG4gIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcclxuICBwYWRkaW5nOiAwLjJyZW0gMC4ycmVtICFpbXBvcnRhbnQ7XHJcbiAgbWluLXdpZHRoOiA3NXB4ICFpbXBvcnRhbnQ7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIG1hcmdpbi1sZWZ0OiAuMWVtIWltcG9ydGFudDtcclxufVxyXG4ucmVzb3VyY2VCdG5Nb2JpbGUge1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzICFpbXBvcnRhbnQ7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xyXG4gIHBhZGRpbmc6IDAuMXJlbSAwLjFyZW0gIWltcG9ydGFudDtcclxuICB3aWR0aDogNzVweCAhaW1wb3J0YW50O1xyXG4gIGZvbnQtc2l6ZTogMTJweDtcclxuICBtYXJnaW4tbGVmdDogLjFlbSFpbXBvcnRhbnQ7XHJcblxyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDtcclxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5idG4tY2FsZW5kYXIge1xyXG4gIG1pbi13aWR0aDogMTA1cHggIWltcG9ydGFudDtcclxuICB3aWR0aDoxMDVweCAhaW1wb3J0YW50O1xyXG4gIGZvbnQtc2l6ZTogMTJweDtcclxuICBwYWRkaW5nOiAwLjIzcmVtIDAuMnJlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ucmVzb3VyY2VCdG4ubGFzdFJlc291cmNle1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDtcclxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7XHJcbn1cclxuIl19 */\"","import { Component, OnInit, AfterViewInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, FormControl } from '@angular/forms';\r\nimport * as jQuery from 'jquery';\r\nimport { ValueConverter } from '@angular/compiler/src/render3/view/template';\r\nimport { AlliocationModel } from './alliocation-model';\r\nimport { CalendarService } from './calendar.service';\r\nimport { AllocationInfo } from './allocation-info';\r\nimport { AvailabilityModel } from './availability-model';\r\nimport { AvailabilityInfo } from './availability-info';\r\nimport { filter } from 'rxjs/operators';\r\nimport { ClientBookingInfo } from './client-booking-info';\r\nimport { UserService } from '../user/user.service';\r\nimport { IUserInfo } from '../user/user-info';\r\nimport { Subscription, Observable, observable, Subject } from 'rxjs';\r\nimport { PartialAvailabilityInfo } from './partial-availability-info';\r\nimport { SignalrService } from '../shared/services/common/signalr.service';\r\nimport SwedishHolidays from '../shared/constants/swedishHolidays';\r\n// import { BookingInfo } from './booking-info';\r\n\r\ndeclare var kendo: any;\r\n\r\n\r\n@Component({\r\n selector: 'wfm-client-calendar',\r\n templateUrl: './client-calendar.component.html',\r\n styleUrls: ['./client-calendar.component.css']\r\n})\r\nexport class ClientCalendarComponent implements OnInit, AfterViewInit {\r\n addAllocationTab = 1;\r\n allocationForm: FormGroup;\r\n errorMessage: string;\r\n allocationList: ClientBookingInfo[];\r\n allocation: ClientBookingInfo;\r\n availabilityCheckDates: AvailabilityModel[];\r\n usersList: IUserInfo[];\r\n userFilter: any = { fullName: '' };\r\n userId: string;\r\n notificationModal: any;\r\n currentDate = new Date();\r\n selectedUserFullName: string;\r\n isWeekend: boolean = true;\r\n subscription: Subscription;\r\n selectedPartialAvlDate: string;\r\n partialAvailableListForDay: PartialAvailabilityInfo[];\r\n allocationTryDate: Date;\r\n allocationTryTime: string;\r\n allocationTryLunch: number;\r\n selectedResourceTypeId = 1;\r\n resourceTypes: any[];\r\n availabilityData: AvailabilityInfo[];\r\n isBookingSelected = true;\r\n isBookingFromPartialAvailability: boolean = false;\r\n deleteAllocationId: number;\r\n isfavEmpTypeRemove: boolean;\r\n favEmployeeId: string;\r\n holidayLastMonth: string\r\n employeeProfileId: Subject = new Subject();\r\n clientCommonTimes: any[]\r\n allocationHistory: any\r\n sendRequest: any;\r\n isMobile: boolean = window.innerWidth < 768 ? true : false;\r\n swedishHolidays: typeof SwedishHolidays;\r\n\r\n\r\n deviceWidth: number = window.innerWidth;\r\n deviceHight: number = window.innerHeight;\r\n selectedDate: Date = new Date(new Date().setHours(0, 0, 0, 0));\r\n viewStartDate: Date\r\n viewEndDate: Date\r\n\r\n lunchTimeList: any[] = [\r\n { value: 0, label: '0' },\r\n { value: 15, label: '15' },\r\n { value: 20, label: '20' },\r\n { value: 30, label: '30' },\r\n { value: 45, label: '45' },\r\n { value: 60, label: '60' },\r\n ]\r\n\r\n constructor(private fb: FormBuilder, private calendarService: CalendarService, private userService: UserService,\r\n private signalRService: SignalrService) {\r\n\r\n this.subscription = this.signalRService.receiveCalendarUpdates().subscribe(st => {\r\n if (st) {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId });\r\n scheduler.refresh();\r\n }\r\n });\r\n\r\n this.resourceTypes = [\r\n { id: '1', name: 'USK' },\r\n { id: '2', name: 'SSK' }\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n kendo.culture(\"sv-SE\");\r\n this.swedishHolidays = SwedishHolidays;\r\n this.currentDate.setHours(0, 0, 0, 0);\r\n\r\n this.allocationForm = this.fb.group({\r\n startDate: [],\r\n endDate: [],\r\n weekdayStart: [],\r\n weekdayEnd: [],\r\n weekdayLunch: [],\r\n weekendStart: [],\r\n weekendEnd: [],\r\n weekendLunch: [],\r\n resourceTypeId: ['1'],\r\n holidays: [''],\r\n isInquiry: [false]\r\n });\r\n this.allocation = {\r\n id: 0,\r\n title: '',\r\n sDate: '',\r\n eDate: '',\r\n lunch: 0,\r\n bookingTotal: 0,\r\n start: new Date(),\r\n end: new Date(),\r\n empName: '',\r\n empPhone: '',\r\n empEmail: '',\r\n empImage: '',\r\n imagePath: '',\r\n resourceTypeId: 1,\r\n resourceTypeClass: '',\r\n description: '',\r\n isInquiry: false,\r\n colorClass: '',\r\n resourceTypeIconLetter: ''\r\n };\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.getAllocatedUsers();\r\n\r\n $('#kendo-wd-start').on('change', () => {\r\n let loadData: boolean = true\r\n if ($('#kendo-wd-start').val().toString().length == 2 || $('#kendo-wd-start').val().toString().length == 1) {\r\n loadData = false\r\n if ($('#kendo-wd-start').val().toString().length == 2) {\r\n let newVal = $('#kendo-wd-start').val() + ':00'\r\n $('#kendo-wd-start').val(newVal)\r\n $('#kendo-wd-start').trigger('change')\r\n }\r\n if ($('#kendo-wd-start').val().toString().length == 1) {\r\n let newVal = '0' + $('#kendo-wd-start').val() + ':00'\r\n $('#kendo-wd-start').val(newVal)\r\n $('#kendo-wd-start').trigger('change')\r\n }\r\n }\r\n })\r\n $('#kendo-wd-end').on('change', () => {\r\n let loadData: boolean = true\r\n if ($('#kendo-wd-end').val().toString().length == 2 || $('#kendo-wd-end').val().toString().length == 1) {\r\n loadData = false\r\n if ($('#kendo-wd-end').val().toString().length == 2) {\r\n let newVal = $('#kendo-wd-end').val() + ':00'\r\n $('#kendo-wd-end').val(newVal)\r\n $('#kendo-wd-end').trigger('change')\r\n }\r\n if ($('#kendo-wd-end').val().toString().length == 1) {\r\n let newVal = '0' + $('#kendo-wd-end').val() + ':00'\r\n $('#kendo-wd-end').val(newVal)\r\n $('#kendo-wd-end').trigger('change')\r\n }\r\n }\r\n })\r\n\r\n $('#kendo-end-date').on('change', (event) => {\r\n\r\n let date = new Date((event.target).value);\r\n const filterData = this.availabilityData.find((data) => {\r\n return (data.startTime.toDateString() === date.toDateString());\r\n });\r\n this.isBookingSelected = true;\r\n if (!filterData || !filterData.isAvailable) {\r\n this.isBookingSelected = false;\r\n }\r\n let scheduler = $(\"#scheduler\").data(\"kendoScheduler\");\r\n scheduler.select(null, null);\r\n })\r\n\r\n $(window).resize(() => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId });\r\n scheduler.refresh();\r\n })\r\n\r\n var date = new Date();\r\n this.viewStartDate = new Date(date.getFullYear(), date.getMonth(), 1);\r\n this.viewEndDate = new Date(date.getFullYear(), date.getMonth() + 1, 1, 1);\r\n this.getCurrentConfigData()\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n $(document).ready(function () {\r\n $(window).scrollTop(0);\r\n\r\n if (!$('.mob-inquiry').hasClass('outside-click')) {\r\n $('.mob-bookings').removeClass('tab-inactive');\r\n $('.mob-bookings').addClass('btn-success');\r\n $('.mob-inquiry').removeClass('outside-click');\r\n }\r\n\r\n });\r\n const calendarService = this.calendarService;\r\n // Kendo Scheduler Initialize\r\n let userId = this.userId;\r\n let viewStartDate = this.viewStartDate\r\n let viewEndDate = this.viewEndDate\r\n let patentThis = this\r\n\r\n const customAgenda = kendo.ui.AgendaView.extend({\r\n endDate() {\r\n const date = kendo.ui.AgendaView.fn.startDate.call(this);\r\n return kendo.date.addDays(date, 30);\r\n }\r\n });\r\n\r\n var eventHeight: number\r\n var eventsPerDay = 2\r\n var isAdaptiveSlotHeight: boolean\r\n if (this.deviceWidth < 576) {\r\n eventHeight = 60\r\n isAdaptiveSlotHeight = true\r\n } else if (this.deviceWidth < 768) {\r\n eventHeight = 43\r\n isAdaptiveSlotHeight = true\r\n } else if (this.deviceWidth < 992) {\r\n eventHeight = 43\r\n isAdaptiveSlotHeight = false\r\n } else if (this.deviceWidth < 1200) {\r\n eventHeight = 31\r\n isAdaptiveSlotHeight = false\r\n } else {\r\n isAdaptiveSlotHeight = false\r\n eventHeight = 30\r\n }\r\n\r\n ($('#scheduler') as any).kendoScheduler({\r\n // views: ['month', { type: 'day', allDaySlot: false, eventTemplate: $('#event-day-template').html() },\r\n // { type: customAgenda, title: 'Agenda', eventTemplate: $('#event-agenda-template').html() }],\r\n views: [\r\n {\r\n type: 'month',\r\n eventsPerDay: eventsPerDay,\r\n eventHeight: eventHeight,\r\n adaptiveSlotHeight: isAdaptiveSlotHeight,\r\n },\r\n { type: 'day', allDaySlot: false, eventTemplate: $('#event-day-template').html() },\r\n {\r\n type: customAgenda, title: 'Agenda', eventTemplate: $('#event-agenda-template').html(),\r\n selectedDateFormat: \"{0:dd/MM/yyyy} - {1:dd/MM/yyyy}\",\r\n selectedShortDateFormat: \"{0:dd/MM} - {1:dd/MM}\"\r\n }\r\n ],\r\n eventTemplate: ($('#event-slot-template') as any).html(),\r\n dateHeaderTemplate: kendo.template(\"#=kendo.toString(date, 'ddd dd/M')#\"),\r\n selectable: true,\r\n timezone: \"Europe/Stockholm\",\r\n editable: {\r\n destroy: false,\r\n move: false,\r\n resize: false,\r\n create: false\r\n },\r\n dataSource:\r\n {\r\n transport: {\r\n read(o) {\r\n let loadData = false;\r\n\r\n if (!o.data.userId && !userId) {\r\n loadData = true;\r\n userId = o.data.userId ? o.data.userId : '';\r\n } else if (o.data.userId) {\r\n loadData = true;\r\n userId = o.data.userId;\r\n }\r\n viewStartDate = o.data.viewStartDate ? o.data.viewStartDate : viewStartDate\r\n viewEndDate = o.data.viewEndDate ? o.data.viewEndDate : viewEndDate\r\n if (loadData) {\r\n calendarService.getClientAllocations(userId, viewStartDate, viewEndDate)\r\n .subscribe(\r\n (allocations: ClientBookingInfo[]) => {\r\n o.success(allocations);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n } else {\r\n o.success([]);\r\n }\r\n }\r\n }\r\n },\r\n toolbar: ['pdf'],\r\n pdf: {\r\n fileName: 'Bookings-Export.pdf',\r\n }\r\n });\r\n\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n\r\n scheduler.wrapper.on('mouseup', '.k-scheduler-table td, .k-event', function (e) {\r\n const target = $(e.currentTarget);\r\n if (target.hasClass('k-event')) {\r\n const event = scheduler.occurrenceByUid(target.data('uid'));\r\n scheduler.editEvent(event);\r\n }\r\n });\r\n\r\n scheduler.bind('change', (event) => {\r\n const eventStartDate = new Date(event.start);\r\n const eventEndDate = new Date(event.end);\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n\r\n this.selectedDate = eventStartDate\r\n if (eventStartDate >= this.currentDate) {\r\n if (event != null && event.slots != null && event.slots.length > 0) {\r\n $(event.slots[0].element).addClass('cell-celected');\r\n }\r\n }\r\n\r\n const filterData = this.availabilityData.find((data) => {\r\n return (data.startTime.toDateString() === event.start.toDateString());\r\n });\r\n this.isBookingSelected = true;\r\n if (!filterData || !filterData.isAvailable) {\r\n this.isBookingSelected = false;\r\n }\r\n // Following is required because event end date is set to next day 00:00:00\r\n const endDate = new Date(eventEndDate.setDate(eventEndDate.getDate() + -1));\r\n\r\n this.isWeekend = (endDate.getDay() === 6) || (endDate.getDay() === 0);\r\n const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n const lunch = (this.isWeekend ? 0 : 45);\r\n\r\n if (this.isWeekend) {\r\n var startInitTime = new Date(2000, 0, 0, 10, 0, 0);\r\n var endInitTime = new Date(2000, 0, 0, 15, 0, 0);\r\n this.setEndTimeMin(startInitTime);\r\n this.setStartTimeMax(endInitTime);\r\n } else {\r\n var startInitTime = new Date(2000, 0, 0, 9, 0, 0);\r\n var endInitTime = new Date(2000, 0, 0, 18, 0, 0);\r\n this.setEndTimeMin(startInitTime);\r\n this.setStartTimeMax(endInitTime);\r\n }\r\n\r\n this.allocationForm.patchValue({\r\n startDate: eventStartDate,\r\n endDate,\r\n weekdayStart: startTime,\r\n weekdayEnd: endTime,\r\n weekdayLunch: lunch,\r\n });\r\n\r\n // $('#kendo-start-date').data('kendoDatePicker').value(eventStartDate);\r\n $('#kendo-end-date').data('kendoDatePicker').value(endDate);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(startTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(endTime);\r\n\r\n });\r\n\r\n scheduler.bind('edit', (e) => {\r\n e.preventDefault()\r\n this.isBookingSelected = true;\r\n const filterData = this.availabilityData.find((data) => {\r\n return (data.startTime.toDateString() === e.event.start.toDateString());\r\n });\r\n if (!filterData || !filterData.isAvailable) {\r\n this.isBookingSelected = false;\r\n }\r\n if (e.event.id === 0) {\r\n if (e.event.start >= this.currentDate) {\r\n\r\n ($('#requestAllocationModal') as any).modal('show');\r\n }\r\n } else {\r\n this.allocation = e.event;\r\n ($('#allocationDataModal') as any).modal('show');\r\n }\r\n });\r\n\r\n scheduler.element.on('dblclick', '.k-scheduler-content td', (e) => {\r\n e.preventDefault();\r\n const slot = scheduler.slotByElement($(e.target));\r\n if (slot.startDate >= this.currentDate) {\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n $(scheduler.slotByElement($(e.target)).element).addClass('cell-celected');\r\n const eventStartDate = slot.startDate;\r\n const eventEndDate = slot.endDate;\r\n // Following is required because event end date is set to next day 00:00:00\r\n const endDate = new Date(eventEndDate.setDate(eventEndDate.getDate() + -1));\r\n\r\n this.isWeekend = (endDate.getDay() === 6) || (endDate.getDay() === 0);\r\n const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n const lunch = (this.isWeekend ? 0 : 45);\r\n\r\n if (this.isWeekend) {\r\n var startInitTime = new Date(2000, 0, 0, 10, 0, 0);\r\n var endInitTime = new Date(2000, 0, 0, 15, 0, 0);\r\n this.setEndTimeMin(startInitTime);\r\n this.setStartTimeMax(endInitTime);\r\n } else {\r\n var startInitTime = new Date(2000, 0, 0, 9, 0, 0);\r\n var endInitTime = new Date(2000, 0, 0, 18, 0, 0);\r\n this.setEndTimeMin(startInitTime);\r\n this.setStartTimeMax(endInitTime);\r\n }\r\n\r\n this.allocationForm.patchValue({\r\n startDate: eventStartDate,\r\n endDate,\r\n weekdayStart: startTime,\r\n weekdayEnd: endTime,\r\n weekdayLunch: lunch,\r\n resourceTypeId: this.selectedResourceTypeId\r\n });\r\n\r\n // $('#kendo-start-date').data('kendoDatePicker').value(eventStartDate);\r\n $('#kendo-end-date').data('kendoDatePicker').value(endDate);\r\n $('#kendo-end-date').data('kendoDatePicker').enable(true);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(startTime);\r\n $('#kendo-wd-start').data('kendoTimePicker').enable(true);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(endTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').enable(true);\r\n\r\n this.isBookingFromPartialAvailability = false;\r\n this.onMakeBookingClick()\r\n }\r\n });\r\n\r\n scheduler.bind('navigate', (e) => {\r\n this.setViewDateRange(e)\r\n if (e.action == 'next') {\r\n $('.k-state-default.k-header.k-nav-next').addClass('k-state-hover');\r\n }\r\n if (e.action == 'previous') {\r\n $('.k-state-default.k-header.k-nav-prev').addClass('k-state-hover');\r\n }\r\n if (e.view === 'day') {\r\n e.sender.select(null);\r\n setTimeout(() => {\r\n this.scrollToHour(8);\r\n }, 200);\r\n }\r\n });\r\n\r\n scheduler.bind('dataBound', (e) => {\r\n this.schedulerDataBound(scheduler);\r\n setTimeout(() => {\r\n $('.k-scheduler-navigation').css('pointer-events', 'all');\r\n $('.k-scheduler-navigation').css('opacity', '1');\r\n $('.k-state-default.k-header.k-nav-prev').removeClass('k-state-hover');\r\n $('.k-state-default.k-header.k-nav-next').removeClass('k-state-hover');\r\n }, 500);\r\n });\r\n\r\n\r\n this.initializeKendoComponents();\r\n\r\n $('.k-scheduler-tools').hide();\r\n $('.client-booking-scheduler .k-scheduler-views').append('
  • Skriv ut
  • ')\r\n $('.client-booking-scheduler .mobile-export').click(() => {\r\n $('.client-booking-scheduler .k-pdf').click();\r\n });\r\n if (kendo.support.mobileOS) {\r\n $('.k-sm-date-format').css('font-size', '100%');\r\n }\r\n\r\n $('#allocationDataModal').on('hide.bs.modal', () => {\r\n $('.collapse').removeClass('show');\r\n this.sendRequest = false;\r\n })\r\n\r\n }\r\n\r\n schedulerDataBound(scheduler): void {\r\n // const kscheduler = $('#scheduler').data('kendoScheduler');\r\n const schView = scheduler.view().name;\r\n\r\n // $(\".k-scheduler-views li\").on(\"click\", function () {\r\n\r\n // if ($(this).hasClass('k-view-agenda')) {\r\n // setTimeout(() => {\r\n // $('.k-nav-current').addClass('agenda-date-header')\r\n // }, 200);\r\n // }else {\r\n // $('.k-nav-current').removeClass('agenda-date-header')\r\n // }\r\n // });\r\n\r\n if (schView === 'month') {\r\n $('.k-scheduler-navigation').css('pointer-events', 'none');\r\n $('.k-scheduler-navigation').css('opacity', '0.5');\r\n const container = scheduler.view().element;\r\n const cells = container.find('td[role=gridcell]');\r\n\r\n $('.slot-orange').parent().addClass('dayview-slot-orange');\r\n $('.slot-yellow').parent().addClass('dayview-slot-yellow');\r\n $('.slot-blue').parent().addClass('dayview-slot-blue');\r\n $('.slot-yellow .font-weight-bold').css('border-color', 'red');\r\n\r\n this.availabilityCheckDates = [];\r\n for (let i = 0; i < cells.length; i++) {\r\n const cell = $(cells[i]);\r\n const slot = scheduler.slotByElement(cell);\r\n const avl = {} as AvailabilityModel;\r\n avl.category = scheduler.view().name;\r\n avl.startTime = slot.startDate;\r\n avl.endTime = slot.endDate;\r\n avl.startTimeString = avl.startTime.getFullYear() + '-' + (avl.startTime.getMonth() + 1) + '-' + avl.startTime.getDate();\r\n avl.endTimeString = avl.endTime.getFullYear() + '-' + (avl.endTime.getMonth() + 1) + '-' + avl.endTime.getDate();\r\n avl.resourceTypeId = this.selectedResourceTypeId;\r\n this.availabilityCheckDates.push(avl);\r\n }\r\n\r\n //this.swedishHolidays = this.calendarService.getSwedishHolidays()\r\n\r\n this.calendarService.checkClientAvailability(this.availabilityCheckDates).subscribe(\r\n (avlData: AvailabilityInfo[]) => {\r\n this.availabilityData = avlData;\r\n for (let i = 0; i < cells.length; i++) {\r\n const cell = $(cells[i]);\r\n const slot = scheduler.slotByElement(cell);\r\n\r\n if (slot) {\r\n const slotStartDate = slot.startDate as Date;\r\n const slotEndDate = slot.endDate as Date;\r\n const filterData = avlData.find(function (data) {\r\n return (data.startTime.toDateString() === slotStartDate.toDateString()\r\n && data.endTime.toDateString() === slotEndDate.toDateString());\r\n });\r\n if (filterData) {\r\n if (filterData.startTime.toDateString() === this.selectedDate.toDateString()) {\r\n if (filterData.isAvailable != this.isBookingSelected) {\r\n this.isBookingSelected = filterData.isAvailable\r\n }\r\n }\r\n\r\n var holidayArr: any[];\r\n var slotDateJsonFormat = this.getJsonDateFormat(slot.startDate);\r\n if (this.holidayLastMonth !== slotDateJsonFormat) {\r\n this.holidayLastMonth = slotDateJsonFormat\r\n holidayArr = this.swedishHolidays[slotDateJsonFormat]\r\n }\r\n\r\n // Mark Sundays & saturdays with different color using CSS class\r\n if (slotStartDate.getDay() == 0) {\r\n cell.addClass('cell-sunday')\r\n }\r\n if (slotStartDate.getDay() == 6) {\r\n cell.addClass('cell-saturday')\r\n }\r\n\r\n if (filterData && filterData.startTime >= this.currentDate) {\r\n if (filterData.isAvailable) {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n cell.css('background-image', 'linear-gradient(225deg, #85BD3C, #85BD3C 30px, transparent 0px, transparent)');\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n cell.css('background-image', 'linear-gradient(225deg, #FF6161, #FF6161 30px, transparent 0px, transparent)');\r\n }\r\n if (holidayArr) {\r\n var holidayObj = holidayArr.find(e => e.date == slot.startDate.getDate())\r\n if (holidayObj) {\r\n cell.addClass('holiday')\r\n cell.append(`${holidayObj.holiday}`);\r\n }\r\n }\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n cell.css('background-image', 'linear-gradient(225deg, #d1d1d1, #d1d1d1 30px, transparent 0px, transparent)');\r\n if (holidayArr) {\r\n var holidayObj = holidayArr.find(e => e.date == slot.startDate.getDate())\r\n if (holidayObj) {\r\n cell.addClass('holiday')\r\n cell.append(`${holidayObj.holiday}`);\r\n }\r\n }\r\n }\r\n\r\n // Check for monthname\r\n var isFirstDay: boolean\r\n if (slotStartDate.getDate() == 1) {\r\n isFirstDay = true\r\n var month = slotStartDate.toLocaleString('sv-SE', { month: 'long' });\r\n var monthCapitalized = month.charAt(0).toUpperCase() + month.slice(1)\r\n } else {\r\n isFirstDay = false\r\n }\r\n\r\n // Display month first day label if not holiday\r\n if (!holidayObj && isFirstDay) {\r\n if (cell.children('.badge-info.holiday-name').length == 0) {\r\n cell.append(`Första ${monthCapitalized}`);\r\n }\r\n }\r\n\r\n // Dispaly week number for every monday\r\n if (slotStartDate.getDay() == 1) {\r\n var weekNoArr = this.calendarService.getWeekNumber(slotStartDate)\r\n cell.append(`V.${weekNoArr[1]}`);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n } if (schView === 'day') {\r\n $('.slot-orange.day-view').parent().addClass('dayview-slot-orange');\r\n $('.slot-yellow.day-view').parent().addClass('dayview-slot-yellow');\r\n $('.slot-blue.day-view').parent().addClass('dayview-slot-blue');\r\n }\r\n $('.k-scheduler-navigation').css('pointer-events', 'all');\r\n $('.k-scheduler-navigation').css('opacity', '1');\r\n\r\n if (this.deviceWidth < 768) {\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(1)').text('Mån');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(2)').text('Tis');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(3)').text('Ons');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(4)').text('Tor');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(5)').text('Fre');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(6)').text('Lör');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(7)').text('Sön');\r\n }\r\n };\r\n\r\n getJsonDateFormat(date: Date): string {\r\n return date.getFullYear() + '' + (date.getMonth() + 1 > 9 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1))\r\n }\r\n\r\n initializeKendoComponents(): void {\r\n\r\n ($('#kendo-end-date') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n min: new Date(),\r\n change: (val) => {\r\n this.isWeekend = (val.sender._value.getDay() === 6) || (val.sender._value.getDay() === 0);\r\n const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n const lunch = (this.isWeekend ? 0 : 45);\r\n\r\n this.allocationForm.patchValue({\r\n startDate: val.sender._value,\r\n endDate: val.sender._value,\r\n weekdayStart: startTime,\r\n weekdayEnd: endTime,\r\n weekdayLunch: lunch,\r\n resourceTypeId: this.selectedResourceTypeId\r\n });\r\n\r\n $('#kendo-wd-start').data('kendoTimePicker').value(startTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(endTime);\r\n }\r\n });\r\n\r\n ($('#kendo-wd-start') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n // const dt = new Date(val.sender._value);\r\n var dt: any\r\n if (val.sender._value) {\r\n dt = new Date(val.sender._value);\r\n } else {\r\n var timeStr = val.sender._oldText\r\n dt = new Date(2000, 0, 0, parseInt(timeStr.slice(0, 2)), parseInt(timeStr.slice(3, 5)), 0);\r\n }\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n this.setEndTimeMin(dt);\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.allocationForm.get(formControlName).setValue(formattedTime);\r\n }\r\n });\r\n ($('#kendo-wd-end') as any).kendoTimePicker({\r\n format: 'HH:mm',\r\n interval: 15,\r\n change: (val) => {\r\n // const dt = new Date(val.sender._value);\r\n var dt: any\r\n if (val.sender._value) {\r\n dt = new Date(val.sender._value);\r\n } else {\r\n var timeStr = val.sender._oldText\r\n dt = new Date(2000, 0, 0, parseInt(timeStr.slice(0, 2)), parseInt(timeStr.slice(3, 5)), 0);\r\n }\r\n const hours = dt.getHours();\r\n const minutes = dt.getMinutes();\r\n const formattedTime = [(hours > 9 ? '' : '0') + hours.toString(), ':', (minutes > 9 ? '' : '0') + minutes.toString()].join('');\r\n this.setStartTimeMax(dt);\r\n const formControlName = val.sender.element[0].attributes['data-fcname'].value;\r\n this.allocationForm.get(formControlName).setValue(formattedTime);\r\n }\r\n });\r\n\r\n ($('.kendo-picker') as any).bind('focus', function () {\r\n $(this).data('kendoDatePicker').open();\r\n });\r\n ($('.kendo-time') as any).bind('focus', function () {\r\n $(this).data('kendoTimePicker').open();\r\n });\r\n\r\n // $(\".k-scheduler-views li\").on(\"click\", function () {\r\n\r\n // if ($(this).hasClass('k-view-agenda')) {\r\n // setTimeout(() => {\r\n // $('.k-nav-current').addClass('agenda-date-header')\r\n // }, 500);\r\n // }else {\r\n // $('.k-nav-current').removeClass('agenda-date-header')\r\n // }\r\n // });\r\n\r\n }\r\n\r\n setEndTimeMin(dt) {\r\n var endTimepicker = $(\"#kendo-wd-end\").data(\"kendoTimePicker\");\r\n endTimepicker.min(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate(), (dt.getMinutes() == 45 ? dt.getHours() + 1 : dt.getHours()), (dt.getMinutes() == 45 ? 0 : dt.getMinutes() + 15), 0));\r\n }\r\n setStartTimeMax(dt) {\r\n var startTimepicker = $(\"#kendo-wd-start\").data(\"kendoTimePicker\");\r\n startTimepicker.max(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate(), (dt.getMinutes() == 0 ? dt.getHours() - 1 : dt.getHours()), (dt.getMinutes() == 0 ? 45 : dt.getMinutes() - 15), 0));\r\n }\r\n\r\n getAllocatedUsers(): void {\r\n this.userService.getAllocatedUserList('Client', 0).subscribe(\r\n (res: IUserInfo[]) => {\r\n this.usersList = res;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n requestAllocation(): void {\r\n this.isBookingFromPartialAvailability = false;\r\n\r\n const validator = ($('#allocationFormContent') as any).kendoValidator({\r\n rules: {\r\n matches: function (input) {\r\n if (input.data('greaterthan') == 'kendo-wd-start') {\r\n var startTimeStr = $('#kendo-wd-start').val() as string;\r\n var endTimeStr = $('#kendo-wd-end').val() as string;\r\n\r\n var startWDTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endWDTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n\r\n if (startWDTime < endWDTime) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return true\r\n }\r\n }\r\n },\r\n }).data('kendoValidator');\r\n\r\n if (validator.validate()) {\r\n\r\n const filterData = this.availabilityData.find((data) => {\r\n return (data.startTime.toDateString() === this.allocationForm.value.startDate.toDateString());\r\n });\r\n if (!filterData.isAvailable) {\r\n this.isBookingSelected = false;\r\n }\r\n\r\n\r\n var allocationDate = this.allocationForm.get('startDate').value;\r\n var day = 60 * 60 * 24 * 1000;\r\n var isAllocationDateHoliday = this.calendarService.isHoliday(allocationDate);\r\n var nextDate = new Date(allocationDate.getTime() + day);\r\n var prevDate = new Date(allocationDate.getTime() - day);\r\n var isNextDateHoliday = this.calendarService.isHoliday(nextDate);\r\n var isPrevDateHoliday = this.calendarService.isHoliday(prevDate);\r\n \r\n var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n\r\n var holidayStr: string = isAllocationDateHoliday ? 'Holiday' :\r\n ((isNextDateHoliday && !isAllocationDateHoliday) ? 'DayBeforeHoliday' : (\r\n (isPrevDateHoliday && !isAllocationDateHoliday) ? 'DayAfterHoliday' : days[this.allocation.start.getDay()])); // 0 = Sunday, 6 = Saturday\r\n\r\n this.allocationForm.patchValue({\r\n isInquiry: !this.isBookingSelected,\r\n holidays: holidayStr\r\n });\r\n const validator = ($('#allocationFormContent') as any).kendoValidator().data('kendoValidator');\r\n if (validator.validate()) {\r\n this.calendarService.requestClientAllocations(this.allocationForm.value).subscribe(\r\n (allocationInfo: ClientBookingInfo) => {\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n ($('#requestAllocationModal') as any).modal('hide');\r\n this.onAllocationRequestComplete(allocationInfo, this.allocationForm.value);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n }\r\n\r\n onAllocationRequestComplete(allocationInfo: ClientBookingInfo, allocationForm: AlliocationModel): void {\r\n\r\n if (allocationInfo != null) {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n this.userId = 'all';\r\n this.selectedUserFullName = null;\r\n scheduler.dataSource.read({ userId: this.userId });\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n scheduler.select(null);\r\n this.userService.getAllocatedUserList('Client', 0).subscribe(\r\n (res: IUserInfo[]) => {\r\n this.usersList = res;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n this.allocation = allocationInfo;\r\n\r\n ($('#allocationDataModal') as any).modal('show');\r\n this.signalRService.broadcastCalendarUpdates();\r\n } else {\r\n\r\n this.calendarService.getPartialAvailabilityList(allocationForm).subscribe(\r\n (partialList: PartialAvailabilityInfo[]) => {\r\n if (partialList != null && partialList.length > 0) {\r\n this.partialAvailableListForDay = partialList;\r\n this.allocationTryDate = allocationForm.startDate;\r\n this.allocationTryLunch = allocationForm.weekdayLunch;\r\n this.allocationTryTime = allocationForm.weekdayStart + '-' + allocationForm.weekdayEnd;\r\n ($('#partialAvailabilityListModal') as any).modal('show');\r\n } else {\r\n this.setNotificationData('booking', false);\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n $('#kendo-end-date').data('kendoDatePicker').value('');\r\n $('#kendo-wd-start').data('kendoTimePicker').value('');\r\n $('#kendo-wd-end').data('kendoTimePicker').value('');\r\n // this.allocationForm.patchValue({\r\n // startDate: '',\r\n // endDate: '',\r\n // weekdayStart: '',\r\n // weekdayEnd: '',\r\n // weekdayLunch: 0,\r\n // resourceTypeId: this.selectedResourceTypeId\r\n // });\r\n }\r\n\r\n userSelect(userId: string, fullName: string): void {\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('#employee-wrapper-' + userId).addClass('employee-wrapper-active');\r\n if (this.userId === userId) {\r\n this.userId = 'all';\r\n this.selectedUserFullName = null;\r\n $('#employee-wrapper-' + userId).removeClass('employee-wrapper-active');\r\n } else {\r\n this.selectedUserFullName = fullName;\r\n this.userId = userId;\r\n }\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId });\r\n scheduler.refresh();\r\n scheduler.select(null);\r\n }\r\n\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'booking') {\r\n this.notificationModal.header = 'Bokning misslyckades';\r\n this.notificationModal.description = 'Tyvärr så kunde vi inte hitta en tillgänglig resurs för det valda datumet';\r\n this.notificationModal.type = 'danger';\r\n } else if (flow === 'remove') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Förfrågan raderades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Borttaggning av förfrågan misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'favEmp') {\r\n if (status) {\r\n this.notificationModal.header = 'Successfull!';\r\n this.notificationModal.description = 'Your changes have been saved successfuly.';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Failed!';\r\n this.notificationModal.description = 'Something went wrong! Changes have been discarded.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'inquiry') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';// Success\r\n this.notificationModal.description = 'Inquiry added successfully!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; //'Failed';\r\n this.notificationModal.description = 'Inquiry adding failed! Please try again.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#notificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#notificationModal') as any).modal('hide');\r\n }, 3000);\r\n }\r\n\r\n\r\n scrollToHour(hour): void {\r\n const time = new Date();\r\n time.setHours(hour);\r\n time.setMinutes(0);\r\n time.setSeconds(0);\r\n time.setMilliseconds(0);\r\n\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n const contentDiv = scheduler.element.find('div.k-scheduler-content');\r\n const rows = contentDiv.find('tr');\r\n\r\n for (let i = 0; i < rows.length; i++) {\r\n const element = $(rows[i]);\r\n const slot = scheduler.slotByElement(element);\r\n\r\n const slotTime = kendo.toString(slot.startDate, 'HH:mm');\r\n const targetTime = kendo.toString(time, 'HH:mm');\r\n\r\n if (targetTime === slotTime) {\r\n contentDiv.scrollTop(0);\r\n\r\n const elementTop = element.offset().top;\r\n const containerTop = contentDiv.offset().top;\r\n\r\n contentDiv.scrollTop(elementTop - containerTop);\r\n }\r\n }\r\n }\r\n\r\n\r\n bookFromPartialAvailability(partialAvailabilityData: PartialAvailabilityInfo): void {\r\n ($('#partialAvailabilityListModal') as any).modal('hide');\r\n this.allocationForm.patchValue({\r\n startDate: this.allocationTryDate,\r\n endDate: this.allocationTryDate,\r\n weekdayStart: partialAvailabilityData.fromTime,\r\n weekdayEnd: partialAvailabilityData.toTime,\r\n weekdayLunch: this.allocationTryLunch,\r\n });\r\n\r\n $('#kendo-end-date').data('kendoDatePicker').value(this.allocationTryDate);\r\n $('#kendo-end-date').data('kendoDatePicker').enable(false);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(partialAvailabilityData.fromTime);\r\n $('#kendo-wd-start').data('kendoTimePicker').enable(false);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(partialAvailabilityData.toTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').enable(false);\r\n\r\n this.isBookingFromPartialAvailability = true;\r\n ($('#requestAllocationModal') as any).modal('show');\r\n }\r\n\r\n addInquiryOnpartial(allocationData) {\r\n this.allocationForm.patchValue({\r\n clientId: this.userId,\r\n isInquiry: true\r\n });\r\n this.calendarService.requestClientAllocations(this.allocationForm.value).subscribe(\r\n (allocationInfo: ClientBookingInfo) => {\r\n if (allocationInfo != null) {\r\n ($('#partialAvailabilityListModal') as any).modal('hide');\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.setNotificationData('inquiry', true);\r\n this.allocationForm.patchValue({\r\n startDate: '',\r\n endDate: '',\r\n weekdayStart: '',\r\n weekdayEnd: '',\r\n weekdayLunch: 0,\r\n employeeId: ''\r\n });\r\n } else {\r\n this.setNotificationData('inquiry', false);\r\n }\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n // this.onAllocationRequestComplete(allocationInfo, this.allocationForm.value);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n onResourceTypeChange(resourceTypeId: number): void {\r\n this.selectedResourceTypeId = resourceTypeId;\r\n this.allocationForm.patchValue({\r\n resourceTypeId: resourceTypeId\r\n });\r\n this.availabilityCheckDates.forEach(x => x.resourceTypeId = resourceTypeId);\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId });\r\n }\r\n\r\n onMakeBooking(event): void {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.trigger('edit', event)\r\n }\r\n\r\n openDeleteConfirmModal(allocationId: number): void {\r\n this.deleteAllocationId = allocationId;\r\n ($('#allocationDataModal') as any).modal('hide');\r\n ($('#allocationDeleteModal') as any).modal('show');\r\n }\r\n\r\n onEmployeeProfileClick(userId: string): void {\r\n this.employeeProfileId.next(userId)\r\n setTimeout(() => {\r\n ($('#employeeProfileViewModal') as any).modal('show');\r\n }, 1000);\r\n\r\n }\r\n\r\n\r\n onDeleteInquiry(): void {\r\n this.calendarService.removeClientAllocation(this.deleteAllocationId).subscribe(\r\n (status: boolean) => {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n ($('#allocationDeleteModal') as any).modal('hide');\r\n scheduler.dataSource.read({ userId: this.userId });\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n scheduler.select(null);\r\n this.setNotificationData('remove', status);\r\n this.signalRService.broadcastCalendarUpdates();\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n )\r\n }\r\n\r\n onStarclick(event, userId: string, isActive: boolean): void {\r\n event.preventDefault();\r\n\r\n this.isfavEmpTypeRemove = isActive;\r\n this.favEmployeeId = userId;\r\n ($('#employeefavouriteModal') as any).modal('show');\r\n }\r\n\r\n onStarclickConfirm(): void {\r\n ($('#employeefavouriteModal') as any).modal('hide');\r\n this.userService.switchFavouriteEmployee(this.favEmployeeId, this.isfavEmpTypeRemove).subscribe(\r\n (status: boolean) => {\r\n this.setNotificationData('favEmp', status);\r\n this.getAllocatedUsers();\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n )\r\n }\r\n\r\n onMobileTabSelect(event) {\r\n if (event == 'userlist') {\r\n $('#myTab').css('display', 'flex')\r\n $('#myTabContent').css('display', 'block')\r\n } else if (event == 'bookings') {\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n $('.btn-calendar-booking').click()\r\n } else if (event == 'inquiry') {\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n $('.btn-calendar-inquiry').click()\r\n }\r\n }\r\n\r\n setCommonTimes(item): void {\r\n this.allocationForm.patchValue({\r\n weekdayStart: item.startTime,\r\n weekdayEnd: item.endTime,\r\n weekdayLunch: item.lunch,\r\n });\r\n // $('#kendo-start-date').data('kendoDatePicker').value(eventStartDate);\r\n // $('#kendo-end-date').data('kendoDatePicker').value(item.endDate);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(item.startTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(item.endTime);\r\n }\r\n\r\n closeDrawer() {\r\n if ($('.mob-bookings').hasClass('last-selection')) {\r\n var tab = 'bookings'\r\n } else if ($('.mob-inquiry').hasClass('last-selection')) {\r\n var tab = 'inquiry'\r\n }\r\n $('.mob-tab').removeClass('btn-success')\r\n $('.mob-tab').addClass('tab-inactive')\r\n if (tab == 'userlist') {\r\n $('.mob-userlist').addClass('btn-success')\r\n $('.mob-userlist').removeClass('tab-inactive')\r\n } else if (tab == 'bookings') {\r\n $('.mob-bookings').addClass('btn-success')\r\n $('.mob-bookings').removeClass('tab-inactive')\r\n } else if (tab == 'inquiry') {\r\n $('.mob-inquiry').addClass('btn-success')\r\n $('.mob-inquiry').removeClass('tab-inactive')\r\n }\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n setTimeout(() => {\r\n $('.k-scheduler-navigation').css('pointer-events', 'all');\r\n $('.k-scheduler-navigation').css('opacity', '1');\r\n }, 500);\r\n }\r\n onMakeBookingClick() {\r\n this.clientCommonTimes = []\r\n if (this.isBookingSelected) {\r\n this.calendarService.getClientCommonTimes(null).subscribe((respo) => {\r\n this.clientCommonTimes = respo;\r\n ($('#requestAllocationModal') as any).modal('show');\r\n })\r\n } else {\r\n ($('#requestAllocationModal') as any).modal('show');\r\n }\r\n }\r\n onViewHistoryBtnClick(allocationId: number) {\r\n this.toggleSendRequest();\r\n if (this.sendRequest) {\r\n this.calendarService.getAllocationHistory(allocationId).subscribe(\r\n (res) => {\r\n this.allocationHistory = res;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n }\r\n toggleSendRequest() {\r\n this.sendRequest = !this.sendRequest\r\n }\r\n\r\n setViewDateRange(e) {\r\n var view = e.sender.view();\r\n\r\n switch (e.view) {\r\n case 'month':\r\n this.viewStartDate = new Date(e.date.getFullYear(), e.date.getMonth(), 1);\r\n this.viewEndDate = new Date(e.date.getFullYear(), e.date.getMonth() + 1, 1, 1);\r\n\r\n break;\r\n case 'day':\r\n this.viewStartDate = new Date(e.date.getFullYear(), e.date.getMonth(), 1);\r\n this.viewEndDate = new Date(e.date.getFullYear(), e.date.getMonth() + 1, 1, 1);\r\n break;\r\n case 'Agenda':\r\n this.viewStartDate = new Date(e.date.getFullYear(), e.date.getMonth(), e.date.getDate());\r\n this.viewEndDate = new Date(e.date.getFullYear(), e.date.getMonth() + 1, e.date.getDate());\r\n break;\r\n default:\r\n break;\r\n }\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, viewStartDate: this.viewStartDate, viewEndDate: this.viewEndDate });\r\n // scheduler.refresh();\r\n\r\n }\r\n\r\n getCurrentConfigData(): void {\r\n this.userService.getConfigData().subscribe((res) => {\r\n this.resourceTypes = res.resourceTypes\r\n\r\n })\r\n }\r\n getResourceNameById(id) {\r\n var resource = this.resourceTypes.find(x => x.id == id)\r\n if (resource) {\r\n return resource.displayName\r\n } else {\r\n return '';\r\n }\r\n }\r\n}\r\n","module.exports = \".slot-yellow {\\r\\n background-color: yellow !important;\\r\\n color: red;\\r\\n padding-bottom: 6px;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.slot-blue {\\r\\n background-color: #53afea !important;\\r\\n}\\r\\n\\r\\n.slot-no-check{\\r\\n display: none;\\r\\n}\\r\\n\\r\\n/* .form-control-style {\\r\\n height: calc(1.5em + .75rem + 2px)\\r\\n} */\\r\\n\\r\\n.employee-wrapper-active {\\r\\n background-color: #cbeff3 !important;\\r\\n}\\r\\n\\r\\n.btn-light\\r\\n{\\r\\n border-color: #cdd4cf !important;\\r\\n background-color: #cdd4cf;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2FsZW5kYXIvZW1wbG95ZWUtY2FsZW5kYXIuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLG1DQUFtQztFQUNuQyxVQUFVO0VBQ1YsbUJBQW1CO0VBQ25CLGVBQWU7QUFDakI7O0FBRUE7RUFDRSxvQ0FBb0M7QUFDdEM7O0FBRUE7RUFDRSxhQUFhO0FBQ2Y7O0FBRUE7O0dBRUc7O0FBRUg7RUFDRSxvQ0FBb0M7QUFDdEM7O0FBQ0E7O0VBRUUsZ0NBQWdDO0VBQ2hDLHlCQUF5QjtBQUMzQiIsImZpbGUiOiJzcmMvYXBwL2NhbGVuZGFyL2VtcGxveWVlLWNhbGVuZGFyLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc2xvdC15ZWxsb3cge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHllbGxvdyAhaW1wb3J0YW50O1xyXG4gIGNvbG9yOiByZWQ7XHJcbiAgcGFkZGluZy1ib3R0b206IDZweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5zbG90LWJsdWUge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM1M2FmZWEgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnNsb3Qtbm8tY2hlY2t7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLyogLmZvcm0tY29udHJvbC1zdHlsZSB7XHJcbiAgaGVpZ2h0OiBjYWxjKDEuNWVtICsgLjc1cmVtICsgMnB4KVxyXG59ICovXHJcblxyXG4uZW1wbG95ZWUtd3JhcHBlci1hY3RpdmUge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmVmZjMgIWltcG9ydGFudDtcclxufVxyXG4uYnRuLWxpZ2h0XHJcbntcclxuICBib3JkZXItY29sb3I6ICNjZGQ0Y2YgIWltcG9ydGFudDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RkNGNmO1xyXG59Il19 */\"","import { Component, OnInit, ElementRef, ViewChildren, AfterViewInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, FormControlName, FormControl, AbstractControl } from '@angular/forms';\r\nimport * as jQuery from 'jQuery';\r\nimport { CalendarService } from './calendar.service';\r\nimport { AllocationInfo } from './allocation-info';\r\nimport { AvailabilityModel } from './availability-model';\r\nimport { AvailabilityInfo } from './availability-info';\r\nimport { AvailabilityUpdateModel } from './availability-update-model';\r\nimport { TimeLogModel } from './time-log-model';\r\nimport { BookingInfo } from './booking-info';\r\nimport { IUserInfo } from '../user/user-info';\r\nimport { UserService } from '../user/user.service';\r\nimport { GenericValidator } from '../shared/generic-validator';\r\nimport { Observable, merge, fromEvent, Subscription, Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { PartialAvailabilityModel } from './partial-availability-model';\r\nimport { Event, NavigationEnd, NavigationStart, Router } from '@angular/router';\r\nimport { ConfigService } from '../shared/services/config.service';\r\nimport { SignalrService } from '../shared/services/common/signalr.service';\r\n\r\ndeclare var kendo: any;\r\n\r\n@Component({\r\n selector: 'wfm-employee-calendar',\r\n templateUrl: './employee-calendar.component.html',\r\n styleUrls: ['./employee-calendar.component.css']\r\n})\r\nexport class EmployeeCalendarComponent implements OnInit{\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n availabilityCheckDates: AvailabilityModel[];\r\n errorMessage: string;\r\n availabilityForm: FormGroup;\r\n availabilityUpdateModel: AvailabilityUpdateModel;\r\n allocation: BookingInfo;\r\n allocationTimeLogsForm: FormGroup;\r\n visibleTimeLogs = false;\r\n usersList: IUserInfo[];\r\n userFilter: any = { fullName: '' };\r\n userId: string = '';\r\n selectedUserFullName: string;\r\n currentDate = new Date();\r\n notificationModal: any;\r\n subscription: Subscription;\r\n partialAvailabilityForm: FormGroup;\r\n selectedPartialAvlDate: string;\r\n selectedCalendarMonth: Date = new Date();\r\n selectedUserInfo: IUserInfo;\r\n isInquiryCalendarSelected:boolean = false\r\n displayValidationMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n swedishHolidays:any\r\n holidayLastMonth:string\r\n allocationHistory:any;\r\n sendRequest:any;\r\n selectedUserData: any;\r\n newSelectedUserSub: Subscription;\r\n newSelectedMonthSub: Subscription;\r\n routeSubscription: Subscription;\r\n currentURL:any \r\n selectedUserId: Subject = new Subject()\r\n bookingUnitName : any = '';\r\n\r\n deviceWidth:number = window.innerWidth;\r\n deviceHight:number = window.innerHeight;\r\n\r\n timePickerTimeList : any[]=[\r\n { value: '00:00', label: '00:00' },\r\n { value: '00:15', label: '00:15' },\r\n { value: '00:30', label: '00:30' },\r\n { value: '00:45', label: '00:45' },\r\n { value: '01:00', label: '01:00' },\r\n { value: '01:15', label: '01:15' },\r\n { value: '01:30', label: '01:30' },\r\n { value: '01:45', label: '01:45' },\r\n { value: '02:00', label: '02:00' },\r\n { value: '02:15', label: '02:15' },\r\n { value: '02:30', label: '02:30' },\r\n { value: '02:45', label: '02:45' },\r\n { value: '03:00', label: '03:00' },\r\n { value: '03:15', label: '03:15' },\r\n { value: '03:30', label: '03:30' },\r\n { value: '03:45', label: '03:45' },\r\n { value: '04:00', label: '04:00' },\r\n { value: '04:15', label: '04:15' },\r\n { value: '04:30', label: '04:30' },\r\n { value: '04:45', label: '04:45' },\r\n { value: '05:00', label: '05:00' },\r\n { value: '05:15', label: '05:15' },\r\n { value: '05:30', label: '05:30' },\r\n { value: '05:45', label: '05:45' },\r\n { value: '06:00', label: '06:00' },\r\n { value: '06:15', label: '06:15' },\r\n { value: '06:30', label: '06:30' },\r\n { value: '06:45', label: '06:45' },\r\n { value: '07:00', label: '07:00' },\r\n { value: '07:15', label: '07:15' },\r\n { value: '07:30', label: '07:30' },\r\n { value: '07:45', label: '07:45' },\r\n { value: '08:00', label: '08:00' },\r\n { value: '08:15', label: '08:15' },\r\n { value: '08:30', label: '08:30' },\r\n { value: '08:45', label: '08:45' },\r\n { value: '09:00', label: '09:00' },\r\n { value: '09:15', label: '09:15' },\r\n { value: '09:30', label: '09:30' },\r\n { value: '09:45', label: '09:45' },\r\n { value: '10:00', label: '10:00' },\r\n { value: '10:15', label: '10:15' },\r\n { value: '10:30', label: '10:30' },\r\n { value: '10:45', label: '10:45' },\r\n { value: '11:00', label: '11:00' },\r\n { value: '11:15', label: '11:15' },\r\n { value: '11:30', label: '11:30' },\r\n { value: '11:45', label: '11:45' },\r\n { value: '12:00', label: '12:00' },\r\n { value: '12:15', label: '12:15' },\r\n { value: '12:30', label: '12:30' },\r\n { value: '12:45', label: '12:45' },\r\n { value: '13:00', label: '13:00' },\r\n { value: '13:15', label: '13:15' },\r\n { value: '13:30', label: '13:30' },\r\n { value: '13:45', label: '13:45' },\r\n { value: '14:00', label: '14:00' },\r\n { value: '14:15', label: '14:15' },\r\n { value: '14:30', label: '14:30' },\r\n { value: '14:45', label: '14:45' },\r\n { value: '15:00', label: '15:00' },\r\n { value: '15:15', label: '15:15' },\r\n { value: '15:30', label: '15:30' },\r\n { value: '15:45', label: '15:45' },\r\n { value: '16:00', label: '16:00' },\r\n { value: '16:15', label: '16:15' },\r\n { value: '16:30', label: '16:30' },\r\n { value: '16:45', label: '16:45' },\r\n { value: '17:00', label: '17:00' },\r\n { value: '17:15', label: '17:15' },\r\n { value: '17:30', label: '17:30' },\r\n { value: '17:45', label: '17:45' },\r\n { value: '18:00', label: '18:00' },\r\n { value: '18:15', label: '18:15' },\r\n { value: '18:30', label: '18:30' },\r\n { value: '18:45', label: '18:45' },\r\n { value: '19:00', label: '19:00' },\r\n { value: '19:15', label: '19:15' },\r\n { value: '19:30', label: '19:30' },\r\n { value: '19:45', label: '19:45' },\r\n { value: '20:00', label: '20:00' },\r\n { value: '20:15', label: '20:15' },\r\n { value: '20:30', label: '20:30' },\r\n { value: '20:45', label: '20:45' },\r\n { value: '21:00', label: '21:00' },\r\n { value: '21:15', label: '21:15' },\r\n { value: '21:30', label: '21:30' },\r\n { value: '21:45', label: '21:45' },\r\n { value: '22:00', label: '22:00' },\r\n { value: '22:15', label: '22:15' },\r\n { value: '22:30', label: '22:30' },\r\n { value: '22:45', label: '22:45' },\r\n { value: '23:00', label: '23:00' },\r\n { value: '23:15', label: '23:15' },\r\n { value: '23:30', label: '23:30' },\r\n { value: '23:45', label: '23:45' },\r\n]\r\n\r\n lunchTimeList:any[]=[\r\n { value: 0, label: '0' },\r\n { value: 15, label: '15' },\r\n { value: 20, label: '20' },\r\n { value: 30, label: '30' },\r\n { value: 45, label: '45' },\r\n { value: 60, label: '60' },\r\n ]\r\n\r\n\r\n constructor(private fb: FormBuilder, private calendarService: CalendarService, private userService: UserService, private router:Router,\r\n private signalRService: SignalrService,\r\n private configService : ConfigService) {\r\n this.validationMessages = {\r\n month: {\r\n required: 'month is required'\r\n },\r\n startDate: {\r\n required: 'start is required'\r\n },\r\n endDate: {\r\n required: 'end is required'\r\n }\r\n };\r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n\r\n this.subscription = this.signalRService.receiveCalendarUpdates().subscribe(st => {\r\n if (st) {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId });\r\n scheduler.refresh();\r\n }\r\n });\r\n\r\n this.routeSubscription = this.router.events.subscribe((event: Event) => {\r\n this.currentURL = ''\r\n if (event instanceof NavigationStart ) {\r\n this.currentURL = ''\r\n }\r\n if (event instanceof NavigationEnd) {\r\n this.currentURL = event.url.split('?')[0]\r\n\r\n if (\r\n (this.currentURL == '/users/calendar/inquiries') ||\r\n (this.currentURL == '/clients/calendar/inquiries') ||\r\n (this.currentURL == '/bookings/inquiries')\r\n ) {\r\n this.isInquiryCalendarSelected = true\r\n } else {\r\n this.isInquiryCalendarSelected = false\r\n }\r\n }\r\n }); \r\n }\r\n\r\n setCustomVallidations() {\r\n const month = this.availabilityForm.get('month');\r\n const start = this.availabilityForm.get('startDate');\r\n const end = this.availabilityForm.get('endDate');\r\n\r\n this.availabilityForm.get('changeTypeId').valueChanges\r\n .subscribe(changeType => {\r\n if (changeType === '1') {\r\n month.setValidators([Validators.required]);\r\n start.clearValidators();\r\n end.clearValidators();\r\n } else if (changeType === '2') {\r\n start.setValidators([Validators.required]);\r\n end.setValidators([Validators.required]);\r\n month.clearValidators();\r\n } else if (changeType === '3') {\r\n start.setValidators([Validators.required]);\r\n month.clearValidators();\r\n end.clearValidators();\r\n }\r\n month.updateValueAndValidity();\r\n start.updateValueAndValidity();\r\n end.updateValueAndValidity();\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n //Called once, before the instance is destroyed.\r\n //Add 'implements OnDestroy' to the class.\r\n this.newSelectedUserSub.unsubscribe()\r\n this.routeSubscription.unsubscribe()\r\n this.newSelectedMonthSub.unsubscribe()\r\n\r\n }\r\n\r\n ngOnInit() {\r\n kendo.culture('sv-SE');\r\n this.currentDate.setHours(0, 0, 0, 0);\r\n // this.initalizaForms();\r\n\r\n this.allocation = {\r\n isExpAreaValidationFail:null,\r\n id: 0,\r\n title: '',\r\n sDate: '',\r\n eDate: '',\r\n lunch: 0,\r\n isPastDate: false,\r\n bookingTotal: 0,\r\n start: new Date(),\r\n end: new Date(),\r\n empName: '',\r\n empImage: '',\r\n empJobCategoryId: 0,\r\n empJobCategory: '',\r\n clientName: '',\r\n clientContactName: '',\r\n clientAddress: '',\r\n clientPhone: '',\r\n clientEmail: '',\r\n isTimeLogged: false,\r\n timeLogStartTime: '',\r\n timeLogEndTime: '',\r\n timeLogLunch: 0,\r\n timeLogTotal: 0,\r\n colorClass: 'slot-blue',\r\n timeLoggedClass: 'slot-no-check',\r\n empImagePath: '',\r\n clientImagePath: '',\r\n resourceTypeId: 1,\r\n resourceTypeClass: '',\r\n isInquiry:false,\r\n clientId:'',\r\n resourceTypeIconLetter:''\r\n };\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.userService.getAllocatedUserList('Employee',0).subscribe(\r\n (res: IUserInfo[]) => {\r\n this.usersList = res;\r\n \r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n this.newSelectedUserSub= this.userService.newSelectedUser.subscribe((data)=>{\r\n this.loadCalendar(data);\r\n })\r\n this.newSelectedMonthSub= this.calendarService.selectedMonth.subscribe((data)=>{\r\n this.selectedCalendarMonth = data\r\n this.getBookingsCount();\r\n })\r\n\r\n // this.setCustomVallidations();\r\n\r\n // this.partialAvailabilityForm.get('avlTypeId').valueChanges\r\n // .subscribe(avlType => {\r\n // if (avlType === '1') {\r\n // $('#kendo-prl-start').data('kendoTimePicker').value('');\r\n // $('#kendo-prl-end').data('kendoTimePicker').value('');\r\n // $('#kendo-prl-start').data('kendoTimePicker').enable(false);\r\n // $('#kendo-prl-end').data('kendoTimePicker').enable(false);\r\n // } else {\r\n // $('#kendo-prl-start').data('kendoTimePicker').enable(true);\r\n // $('#kendo-prl-end').data('kendoTimePicker').enable(true);\r\n // }\r\n // });\r\n this.selectedUserInfo = this.userService.initializeUser();\r\n this.getBookingsCount();\r\n\r\n // $(window).resize(()=>{\r\n // const scheduler = $('#scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId });\r\n // scheduler.refresh();\r\n // })\r\n }\r\n\r\n\r\n\r\n getBookingsCount(): void {\r\n this.calendarService.getEmployeeBookingsCount(this.userId, this.selectedCalendarMonth).subscribe(\r\n (data: IUserInfo) => {\r\n this.selectedUserInfo = data;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n onClickAvailabilityUpdate(){\r\n this.calendarService.emmitOnClickAvailabilityUpdate();\r\n }\r\n\r\n updateAvailability(): void {\r\n ($('#updateAvailabilityModal') as any).modal('hide');\r\n\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n const container = scheduler.view().element;\r\n const cells = container.find('td[role=gridcell]');\r\n this.availabilityCheckDates = [];\r\n\r\n for (let i = 0; i < cells.length; i++) {\r\n const cell = $(cells[i]);\r\n const slot = scheduler.slotByElement(cell);\r\n const avl = {} as AvailabilityModel;\r\n avl.category = scheduler.view().name;\r\n avl.startTime = slot.startDate;\r\n avl.endTime = slot.endDate;\r\n avl.startTimeString = avl.startTime.getFullYear() + '-' + (avl.startTime.getMonth() + 1) + '-' + avl.startTime.getDate();\r\n avl.endTimeString = avl.endTime.getFullYear() + '-' + (avl.endTime.getMonth() + 1) + '-' + avl.endTime.getDate();\r\n this.availabilityCheckDates.push(avl);\r\n\r\n }\r\n\r\n const avlForm = this.availabilityForm;\r\n\r\n this.availabilityUpdateModel = {} as AvailabilityUpdateModel;\r\n this.availabilityUpdateModel.changeType = avlForm.get('changeTypeId').value;\r\n this.availabilityUpdateModel.month = avlForm.get('month').value;\r\n this.availabilityUpdateModel.fromDate = avlForm.get('startDate').value;\r\n this.availabilityUpdateModel.toDate = avlForm.get('endDate').value;\r\n this.availabilityUpdateModel.availability = avlForm.get('availabilityId').value;\r\n this.availabilityUpdateModel.dateList = this.availabilityCheckDates;\r\n\r\n if (this.availabilityUpdateModel.changeType === '1') {\r\n const month = this.availabilityUpdateModel.month;\r\n this.availabilityUpdateModel.monthString = month.getFullYear() + '-' + (month.getMonth() + 1) + '-' + month.getDate();\r\n } else if (this.availabilityUpdateModel.changeType === '2') {\r\n const fromDate = this.availabilityUpdateModel.fromDate;\r\n const toDate = this.availabilityUpdateModel.toDate;\r\n this.availabilityUpdateModel.fromDateString = fromDate.getFullYear() + '-' + (fromDate.getMonth() + 1) + '-' + fromDate.getDate();\r\n this.availabilityUpdateModel.toDateString = toDate.getFullYear() + '-' + (toDate.getMonth() + 1) + '-' + toDate.getDate();\r\n } else {\r\n const fromDate = this.availabilityUpdateModel.fromDate;\r\n this.availabilityUpdateModel.fromDateString = fromDate.getFullYear() + '-' + (fromDate.getMonth() + 1) + '-' + fromDate.getDate();\r\n }\r\n\r\n this.calendarService.updateAvailability(this.availabilityUpdateModel).subscribe(\r\n (avlData: AvailabilityInfo[]) => {\r\n // this.initalizaForms();\r\n // this.setCustomVallidations();\r\n $('#kendo-month').data('kendoDatePicker').value('');\r\n $('#kendo-start-date').data('kendoDatePicker').value('');\r\n $('#kendo-end-date').data('kendoDatePicker').value('');\r\n this.setNotificationData('availability', true);\r\n scheduler.dataSource.read({ userId: this.userId });\r\n this.signalRService.broadcastCalendarUpdates();\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n }\r\n\r\n\r\n getJsonDateFormat(date:Date):string{\r\n return date.getFullYear()+''+(date.getMonth()+1>9? date.getMonth()+1:'0'+(date.getMonth()+1))\r\n }\r\n\r\n\r\n userSelect(userId: string, userType: string, fullName: string): void {\r\n this.selectedUserData = {\r\n userId,\r\n userType,\r\n fullName\r\n };\r\n \r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('#employee-wrapper-' + userId).addClass('employee-wrapper-active');\r\n \r\n this.userService.emmitNewSelectedUser(this.selectedUserData);\r\n this.getBookingsCount();\r\n }\r\n\r\n loadCalendar(data){\r\n \r\n if ( data==null || (this.userId == data.userId)) {\r\n this.userId = 'all';\r\n this.selectedUserFullName = null;\r\n // this.selectedUserId.next(null)\r\n // $('#employee-wrapper-' + data.userId).removeClass('employee-wrapper-active');\r\n } else {\r\n this.userId = data.userId;\r\n this.selectedUserFullName = data.fullName;\r\n // this.selectedUserId.next(this.userId)\r\n }\r\n // if(this.isInquiryCalendarSelected){\r\n // const scheduler = $('#inquiry-scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId });\r\n // scheduler.refresh();\r\n // }else{\r\n // const scheduler = $('#scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId });\r\n // scheduler.refresh();\r\n // }\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'availability') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tillgänglighet uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tillgänglighet misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n if (flow === 'timelog') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tidrapportering uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tidrapportering misslyckades! Var god och försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n if (flow === 'partialavl') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tillgänglighet uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tillgänglighet misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#notificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#notificationModal') as any).modal('hide');\r\n }, 3000);\r\n }\r\n\r\n\r\n scrollToHour(hour): void {\r\n const time = new Date();\r\n time.setHours(hour);\r\n time.setMinutes(0);\r\n time.setSeconds(0);\r\n time.setMilliseconds(0);\r\n\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n const contentDiv = scheduler.element.find('div.k-scheduler-content');\r\n const rows = contentDiv.find('tr');\r\n\r\n for (let i = 0; i < rows.length; i++) {\r\n const element = $(rows[i]);\r\n const slot = scheduler.slotByElement(element);\r\n\r\n const slotTime = kendo.toString(slot.startDate, 'HH:mm');\r\n const targetTime = kendo.toString(time, 'HH:mm');\r\n\r\n if (targetTime === slotTime) {\r\n contentDiv.scrollTop(0);\r\n\r\n const elementTop = element.offset().top;\r\n const containerTop = contentDiv.offset().top;\r\n\r\n contentDiv.scrollTop(elementTop - containerTop);\r\n }\r\n }\r\n }\r\n\r\n\r\n onCalendarChange(calendar:string): void {\r\n if (calendar==='inquiry') {\r\n $('.btn-calendar-booking').removeClass('btn-calendar-active')\r\n $('.btn-calendar-booking').addClass('btn-calendar-inactive')\r\n $('.btn-calendar-inquiry').removeClass('btn-calendar-inactive')\r\n $('.btn-calendar-inquiry').addClass('btn-calendar-active')\r\n this.isInquiryCalendarSelected=true\r\n } else {\r\n $('.btn-calendar-inquiry').removeClass('btn-calendar-active')\r\n $('.btn-calendar-inquiry').addClass('btn-calendar-inactive')\r\n $('.btn-calendar-booking').removeClass('btn-calendar-inactive')\r\n $('.btn-calendar-booking').addClass('btn-calendar-active')\r\n // const scheduler = $('#scheduler').data('kendoScheduler');\r\n // scheduler.refresh();\r\n // this.schedulerDataBound(scheduler);\r\n // setTimeout(() => {\r\n // // this.schedulerDataBound(scheduler);\r\n // scheduler.refresh()\r\n // }, 200);\r\n this.isInquiryCalendarSelected=false\r\n this.selectedCalendarMonth = new Date();\r\n this.getBookingsCount();\r\n }\r\n }\r\n\r\n onMobileTabSelect(event){\r\n if (event=='userlist') {\r\n $('#myTab').css('display', 'flex')\r\n $('#myTabContent').css('display', 'block')\r\n } else if (event=='bookings') {\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n $('.btn-calendar-booking').click()\r\n } else if (event=='inquiry') {\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n $('.btn-calendar-inquiry').click()\r\n }\r\n }\r\n\r\n closeDrawer(){\r\n if( $('.mob-bookings').hasClass('last-selection')){\r\n var tab = 'bookings'\r\n }else if($('.mob-inquiry').hasClass('last-selection')){\r\n var tab = 'inquiry'\r\n }\r\n $('.mob-tab').removeClass('btn-success')\r\n $('.mob-tab').addClass('tab-inactive')\r\n if (tab=='userlist') {\r\n $('.mob-userlist').addClass('btn-success')\r\n $('.mob-userlist').removeClass('tab-inactive')\r\n } else if (tab=='bookings') {\r\n $('.mob-bookings').addClass('btn-success')\r\n $('.mob-bookings').removeClass('tab-inactive')\r\n } else if (tab=='inquiry') {\r\n $('.mob-inquiry').addClass('btn-success')\r\n $('.mob-inquiry').removeClass('tab-inactive')\r\n }\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n setTimeout(() => {\r\n $('.k-scheduler-navigation').css('pointer-events', 'all');\r\n $('.k-scheduler-navigation').css('opacity', '1');\r\n }, 500);\r\n }\r\n\r\n onViewHistoryBtnClick(allocationId: number) {\r\n this.toggleSendRequest();\r\n if (this.sendRequest) {\r\n this.calendarService.getAllocationHistory(allocationId).subscribe(\r\n (res) => {\r\n this.allocationHistory = res;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n \r\n }\r\n toggleSendRequest(){\r\n this.sendRequest = !this.sendRequest\r\n }\r\n\r\n getBookingUnit()\r\n {\r\n this.configService.getBookingUnits().subscribe(res => {\r\n if(res)\r\n {\r\n this.bookingUnitName = (res.bookingUnits.length > 0) ? res.bookingUnits[0].name : '';\r\n }\r\n });\r\n }\r\n}\r\n","module.exports = \"\\r\\n.inquiry-header {\\r\\nbackground-color: #FF6161 !important;\\r\\n}\\r\\n\\r\\n.slot-orange {\\r\\nbackground-color: orange !important;\\r\\n/*color: red;*/\\r\\ncursor: pointer;\\r\\npadding-bottom: 6px;\\r\\n}\\r\\n\\r\\n.slot-blue {\\r\\nbackground-color: #53afea !important;\\r\\ncursor: pointer;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2FsZW5kYXIvZW1wbG95ZWUtaW5xdWlyeS1jYWxlbmRlci9lbXBsb3llZS1pbnF1aXJ5LWNhbGVuZGVyLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDOztBQUVBO0FBQ0EsbUNBQW1DO0FBQ25DLGNBQWM7QUFDZCxlQUFlO0FBQ2YsbUJBQW1CO0FBQ25COztBQUdBO0FBQ0Esb0NBQW9DO0FBQ3BDLGVBQWU7QUFDZiIsImZpbGUiOiJzcmMvYXBwL2NhbGVuZGFyL2VtcGxveWVlLWlucXVpcnktY2FsZW5kZXIvZW1wbG95ZWUtaW5xdWlyeS1jYWxlbmRlci5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi5pbnF1aXJ5LWhlYWRlciB7XHJcbmJhY2tncm91bmQtY29sb3I6ICNGRjYxNjEgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnNsb3Qtb3JhbmdlIHtcclxuYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlICFpbXBvcnRhbnQ7XHJcbi8qY29sb3I6IHJlZDsqL1xyXG5jdXJzb3I6IHBvaW50ZXI7XHJcbnBhZGRpbmctYm90dG9tOiA2cHg7XHJcbn1cclxuXHJcblxyXG4uc2xvdC1ibHVlIHtcclxuYmFja2dyb3VuZC1jb2xvcjogIzUzYWZlYSAhaW1wb3J0YW50O1xyXG5jdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuIl19 */\"","import { Component, OnInit, ElementRef, ViewChildren, AfterViewInit, Input } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, FormControlName, FormControl, AbstractControl } from '@angular/forms';\r\nimport * as jQuery from 'jQuery';\r\nimport { CalendarService } from './../calendar.service';\r\nimport { AllocationInfo } from './../allocation-info';\r\nimport { AvailabilityModel } from './../availability-model';\r\nimport { AvailabilityInfo } from './../availability-info';\r\nimport { AvailabilityUpdateModel } from './../availability-update-model';\r\nimport { TimeLogModel } from './../time-log-model';\r\nimport { BookingInfo } from './../booking-info';\r\nimport { IUserInfo } from '../../user/user-info';\r\nimport { UserService } from '../../user/user.service';\r\nimport { GenericValidator } from '../../shared/generic-validator';\r\nimport { Observable, merge, fromEvent, Subscription, Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { SwapEmployeeModel } from './../swap-employee-model';\r\nimport { PartialAvailabilityModel } from './../partial-availability-model';\r\nimport { SignalrService } from 'src/app/shared/services/common/signalr.service';\r\nimport SwedishHolidays from 'src/app/shared/constants/swedishHolidays';\r\n\r\ndeclare var kendo: any;\r\n\r\n@Component({\r\n selector: 'wfm-employee-inquiry-calender',\r\n templateUrl: './employee-inquiry-calender.component.html',\r\n styleUrls: ['./employee-inquiry-calender.component.css']\r\n})\r\nexport class EmployeeInquiryCalenderComponent implements OnInit, AfterViewInit {\r\n // @Input() selectedUserId: Subject\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n availabilityCheckDates: AvailabilityModel[];\r\n swedishHolidays : typeof SwedishHolidays;\r\n errorMessage: string;\r\n availabilityForm: FormGroup;\r\n availabilityUpdateModel: AvailabilityUpdateModel;\r\n allocation: BookingInfo;\r\n allocationTimeLogsForm: FormGroup;\r\n visibleTimeLogs = false;\r\n usersList: IUserInfo[];\r\n userFilter: any = { fullName: '' };\r\n userId: string;\r\n selectedUserFullName: string;\r\n currentDate = new Date();\r\n notificationModal: any;\r\n subscription: Subscription;\r\n partialAvailabilityForm: FormGroup;\r\n selectedPartialAvlDate: string;\r\n selectedCalendarMonth: Date = new Date();\r\n selectedUserInfo: IUserInfo;\r\n holidayLastMonth:string\r\n selectedUserIdSub : Subscription\r\n newSelectedUserSub : Subscription\r\n allocationHistory: any\r\n sendRequest:any;\r\n isLoadOnSubscription:boolean = false\r\n // viewStartDate:Date\r\n // viewEndDate:Date\r\n deviceWidth:number = window.innerWidth;\r\n deviceHight:number = window.innerHeight;\r\n\r\n displayValidationMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n\r\n\r\n constructor(private fb: FormBuilder, private calendarService: CalendarService, private userService: UserService,\r\n private signalRService: SignalrService) {\r\n this.validationMessages = {\r\n month: {\r\n required: 'month is required'\r\n },\r\n startDate: {\r\n required: 'start is required'\r\n },\r\n endDate: {\r\n required: 'end is required'\r\n }\r\n };\r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n\r\n this.subscription = this.signalRService.receiveCalendarUpdates().subscribe(st => {\r\n if (st) {\r\n const scheduler = $('#inquiry-scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId });\r\n scheduler.refresh();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n // unsubscribe to ensure no memory leaks\r\n this.subscription.unsubscribe();\r\n this.newSelectedUserSub.unsubscribe();\r\n }\r\n\r\n setCustomVallidations() {\r\n const month = this.availabilityForm.get('month');\r\n const start = this.availabilityForm.get('startDate');\r\n const end = this.availabilityForm.get('endDate');\r\n\r\n this.availabilityForm.get('changeTypeId').valueChanges\r\n .subscribe(changeType => {\r\n if (changeType === '1') {\r\n month.setValidators([Validators.required]);\r\n start.clearValidators();\r\n end.clearValidators();\r\n } else if (changeType === '2') {\r\n start.setValidators([Validators.required]);\r\n end.setValidators([Validators.required]);\r\n month.clearValidators();\r\n } else if (changeType === '3') {\r\n start.setValidators([Validators.required]);\r\n month.clearValidators();\r\n end.clearValidators();\r\n }\r\n month.updateValueAndValidity();\r\n start.updateValueAndValidity();\r\n end.updateValueAndValidity();\r\n });\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.swedishHolidays = SwedishHolidays;\r\n kendo.culture('sv-SE');\r\n this.currentDate.setHours(0, 0, 0, 0);\r\n this.initalizaForms();\r\n\r\n this.allocation = {\r\n isExpAreaValidationFail:null,\r\n id: 0,\r\n title: '',\r\n sDate: '',\r\n eDate: '',\r\n lunch: 0,\r\n isPastDate: false,\r\n bookingTotal: 0,\r\n start: new Date(),\r\n end: new Date(),\r\n empName: '',\r\n empImage: '',\r\n empJobCategoryId: 0,\r\n empJobCategory: '',\r\n clientName: '',\r\n clientContactName: '',\r\n clientAddress: '',\r\n clientPhone: '',\r\n clientEmail: '',\r\n isTimeLogged: false,\r\n timeLogStartTime: '',\r\n timeLogEndTime: '',\r\n timeLogLunch: 0,\r\n timeLogTotal: 0,\r\n colorClass: 'slot-blue',\r\n timeLoggedClass: 'slot-no-check',\r\n empImagePath: '',\r\n clientImagePath: '',\r\n resourceTypeId: 1,\r\n resourceTypeClass: '',\r\n isInquiry:false,\r\n clientId:'',\r\n resourceTypeIconLetter:''\r\n };\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.userService.getAllocatedUserList('Employee',0).subscribe(\r\n (res: IUserInfo[]) => {\r\n this.usersList = res;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n this.setCustomVallidations();\r\n\r\n this.partialAvailabilityForm.get('avlTypeId').valueChanges\r\n .subscribe(avlType => {\r\n if (avlType === '1') {\r\n $('#kendo-prl-start').data('kendoTimePicker').value('');\r\n $('#kendo-prl-end').data('kendoTimePicker').value('');\r\n $('#kendo-prl-start').data('kendoTimePicker').enable(false);\r\n $('#kendo-prl-end').data('kendoTimePicker').enable(false);\r\n } else {\r\n $('#kendo-prl-start').data('kendoTimePicker').enable(true);\r\n $('#kendo-prl-end').data('kendoTimePicker').enable(true);\r\n }\r\n });\r\n this.selectedUserInfo = this.userService.initializeUser();\r\n // this.getBookingsCount();\r\n $(window).resize(()=>{\r\n const scheduler = $('#inquiry-scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId});\r\n scheduler.refresh();\r\n })\r\n\r\n // this.selectedUserIdSub = this.selectedUserId.subscribe((res)=>{\r\n // this.userId = res.id\r\n // if (res && res.id && res.type) {\r\n // const scheduler = $('#inquiry-scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId });\r\n // scheduler.refresh();\r\n // }\r\n // })\r\n\r\n this.newSelectedUserSub = this.userService.newSelectedUser.subscribe((data)=>{\r\n if (this.isLoadOnSubscription) {\r\n setTimeout(() => {\r\n this.loadCalendar(data);\r\n }, 100);\r\n }else if(data && data.userId){\r\n this.userId =data.userId\r\n }\r\n })\r\n\r\n // var date = new Date();\r\n // this.viewStartDate = new Date(date.getFullYear(), date.getMonth(), 1);\r\n // this.viewEndDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\r\n }\r\n\r\n loadCalendar(data: any): void {\r\n if (data == null || this.userId === data.userId) {\r\n this.userId = 'all';\r\n this.selectedUserFullName = null;\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n // this.selectedResourceTypeId = '1';\r\n\r\n } else {\r\n this.userId = data.userId;\r\n this.selectedUserFullName = data.fullName;\r\n // this.userType = data.userType;\r\n }\r\n // this.userId = data.userId;\r\n const scheduler = $('#inquiry-scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId});\r\n // scheduler.refresh();\r\n }\r\n\r\n\r\n\r\n initalizaForms(): void {\r\n this.availabilityForm = this.fb.group({\r\n changeTypeId: ['1'],\r\n month: ['', Validators.required],\r\n startDate: [''],\r\n endDate: [''],\r\n availabilityId: ['1']\r\n });\r\n this.allocationTimeLogsForm = this.fb.group({\r\n allocationId: [],\r\n isTimeLogged: [],\r\n startTime: [],\r\n endTime: [],\r\n lunchTime: []\r\n });\r\n\r\n this.partialAvailabilityForm = this.fb.group({\r\n avlTypeId: [],\r\n avlDate: [],\r\n avlStart: [],\r\n avlEnd: []\r\n });\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n const calendarService = this.calendarService;\r\n let allocationList = [] as BookingInfo[];\r\n this.initializeKendoComponents();\r\n\r\n\r\n let userId = this.userId;\r\n // let viewStartDate = this.viewStartDate\r\n // let viewEndDate = this.viewEndDate\r\n // let patentThis = this\r\n\r\n const customAgenda = kendo.ui.AgendaView.extend({\r\n endDate() {\r\n const date = kendo.ui.AgendaView.fn.startDate.call(this);\r\n return kendo.date.addDays(date, 30);\r\n }\r\n });\r\n\r\n $('.mob-bookings').removeClass('btn-success');\r\n $('.mob-bookings').addClass('tab-inactive');\r\n\r\n var eventHeight : number\r\n var eventsPerDay = 2\r\n var isAdaptiveSlotHeight:boolean\r\n if (this.deviceWidth < 576) {\r\n eventHeight = 60\r\n isAdaptiveSlotHeight = true\r\n } else if (this.deviceWidth < 768) {\r\n eventHeight = 43\r\n isAdaptiveSlotHeight = true\r\n } else if (this.deviceWidth < 992) {\r\n eventHeight = 43\r\n isAdaptiveSlotHeight = false\r\n } else if (this.deviceWidth < 1200) {\r\n eventHeight = 31\r\n isAdaptiveSlotHeight = false\r\n } else {\r\n isAdaptiveSlotHeight = false\r\n eventHeight = 30\r\n }\r\n\r\n ($('#inquiry-scheduler') as any).kendoScheduler({\r\n views: [\r\n {\r\n type: 'month',\r\n eventsPerDay:eventsPerDay,\r\n eventHeight: eventHeight,\r\n adaptiveSlotHeight: isAdaptiveSlotHeight,\r\n },\r\n { type: 'day', allDaySlot: false, eventTemplate: $('#event-day-template').html() },\r\n { type: customAgenda, title: 'Agenda', eventTemplate: $('#event-template').html() ,\r\n selectedDateFormat: \"{0:dd/MM/yyyy} - {1:dd/MM/yyyy}\",\r\n selectedShortDateFormat: \"{0:dd/MM} - {1:dd/MM}\"}\r\n ],\r\n eventTemplate: ($('#event-slot-template') as any).html(),\r\n dateHeaderTemplate: kendo.template(\"#=kendo.toString(date, 'ddd dd/M')#\"),\r\n timezone: \"Europe/Stockholm\",\r\n selectable: false,\r\n editable: {\r\n destroy: false,\r\n move: false,\r\n resize: false,\r\n create: false\r\n },\r\n dataSource:\r\n {\r\n transport: {\r\n read(o) {\r\n let loadData = false;\r\n\r\n // if (!o.data.userId && !userId) {\r\n // loadData = true;\r\n // userId = o.data.userId ? o.data.userId : '';\r\n // } else if (o.data.userId) {\r\n // loadData = true;\r\n // userId = o.data.userId;\r\n // }\r\n if (!o.data.userId && !userId) {\r\n loadData = true;\r\n userId = '';\r\n } else if (o.data.userId && !userId) {\r\n loadData = true;\r\n userId = o.data.userId;\r\n } else if (o.data.userId && userId ){\r\n loadData = true;\r\n userId = o.data.userId;\r\n } else if (!o.data.userId && userId ){\r\n loadData = true;\r\n } \r\n\r\n // viewStartDate = o.data.viewStartDate? o.data.viewStartDate : viewStartDate\r\n // viewEndDate = o.data.viewEndDate? o.data.viewEndDate : viewEndDate\r\n if (loadData) {\r\n calendarService.getEmployeeInquiryList(userId)\r\n .subscribe(\r\n (allocations: BookingInfo[]) => {\r\n allocationList = allocations;\r\n o.success(allocations);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n } else {\r\n o.success([]);\r\n }\r\n }\r\n }\r\n },\r\n toolbar: ['pdf'],\r\n pdf: {\r\n fileName: 'Bookings-Export.pdf',\r\n }\r\n });\r\n\r\n const scheduler = $('#inquiry-scheduler').data('kendoScheduler');\r\n\r\n scheduler.wrapper.on('mouseup', '.k-scheduler-table td, .k-event', function (e) {\r\n const target = $(e.currentTarget);\r\n if (target.hasClass('k-event')) {\r\n const event = scheduler.occurrenceByUid(target.data('uid'));\r\n scheduler.editEvent(event);\r\n }\r\n });\r\n\r\n scheduler.bind('edit', (event) => {\r\n event.preventDefault();\r\n this.schedulerEdit(event);\r\n });\r\n\r\n scheduler.bind('dataBound', (e) => {\r\n e.preventDefault();\r\n this.schedulerDataBound(scheduler);\r\n setTimeout(() => {\r\n $('.k-scheduler-navigation').css('pointer-events', 'all');\r\n $('.k-scheduler-navigation').css('opacity', '1');\r\n $('.k-state-default.k-header.k-nav-prev').removeClass('k-state-hover');\r\n $('.k-state-default.k-header.k-nav-next').removeClass('k-state-hover');\r\n }, 500);\r\n });\r\n\r\n scheduler.bind('change', (e) => {\r\n e.preventDefault();\r\n if (e.events.length === 0) {\r\n //scheduler.select(null);\r\n }\r\n });\r\n\r\n scheduler.bind('navigate', (e) => {\r\n // this.setViewDateRange(e)\r\n \r\n if (e.action=='next') {\r\n $('.k-state-default.k-header.k-nav-next').addClass('k-state-hover');\r\n }\r\n if (e.action=='previous') {\r\n $('.k-state-default.k-header.k-nav-prev').addClass('k-state-hover');\r\n }\r\n\r\n this.selectedCalendarMonth = e.date;\r\n // this.getBookingsCount();\r\n if (e.view === 'day') {\r\n e.sender.select(null);\r\n setTimeout(() => {\r\n this.scrollToHour(8);\r\n }, 200);\r\n }\r\n });\r\n\r\n scheduler.element.on('dblclick', '.k-scheduler-content td', (e) => {\r\n e.preventDefault()\r\n });\r\n\r\n // Watch for the blur event from any input element on the form.\r\n const controlBlurs: Observable[] = this.formInputElements\r\n .map((formControl: ElementRef) => fromEvent(formControl.nativeElement, 'blur'));\r\n\r\n // Merge the blur event observable with the valueChanges observable\r\n merge(this.availabilityForm.valueChanges, ...controlBlurs).pipe(\r\n debounceTime(200)\r\n ).subscribe(value => {\r\n this.displayValidationMessage = this.genericValidator.processMessages(this.availabilityForm);\r\n });\r\n\r\n\r\n\r\n $('.k-scheduler-tools').hide();\r\n $('#inquiry-scheduler .k-scheduler-views').append('
  • Skriv ut
  • ')\r\n $('#inquiry-scheduler .mobile-export').click(()=>{\r\n $('#inquiry-scheduler .k-pdf').click();\r\n });\r\n if (kendo.support.mobileOS) {\r\n $('.k-sm-date-format').css('font-size','100%');\r\n }\r\n \r\n $('#employeeInquiryModal').on('hide.bs.modal', () => {\r\n $('.collapse').removeClass('show');\r\n this.sendRequest = false;\r\n }) \r\n this.isLoadOnSubscription = true;\r\n }\r\n\r\n\r\n\r\n initializeKendoComponents(): void {\r\n ($('.employee-inquiry #kendo-start-date') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n min: new Date(),\r\n change: (val) => {\r\n this.availabilityForm.patchValue({\r\n startDate: val.sender._value\r\n });\r\n }\r\n });\r\n\r\n ($('.employee-inquiry #kendo-end-date') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n min: new Date(),\r\n change: (val) => {\r\n this.availabilityForm.patchValue({\r\n endDate: val.sender._value\r\n });\r\n }\r\n });\r\n ($('.employee-inquiry #kendo-month') as any).kendoDatePicker({\r\n format: 'MMMM yyyy',\r\n min: new Date(),\r\n start: 'year',\r\n depth: 'year',\r\n change: (val) => {\r\n this.availabilityForm.patchValue({\r\n month: val.sender._value\r\n });\r\n }\r\n });\r\n\r\n ($('.employee-inquiry .kendo-picker') as any).bind('focus', function () {\r\n $(this).data('kendoDatePicker').open();\r\n });\r\n\r\n // ($('.kendo-time') as any).bind('focus', function () {\r\n // $(this).data('kendoTimePicker').open();\r\n // });\r\n }\r\n\r\n schedulerDataBound(scheduler): void {\r\n // const kscheduler = $('#inquiry-scheduler').data('kendoScheduler');\r\n const schView = scheduler.view().name;\r\n\r\n if (schView === 'month') {\r\n\r\n $('.k-scheduler-navigation').css('pointer-events', 'none');\r\n $('.k-scheduler-navigation').css('opacity', '0.5');\r\n\r\n const container = scheduler.view().element;\r\n const cells = container.find('td[role=gridcell]');\r\n\r\n $('.slot-orange').parent().addClass('dayview-slot-orange');\r\n $('.slot-yellow').parent().addClass('dayview-slot-yellow');\r\n $('.slot-blue').parent().addClass('dayview-slot-blue');\r\n $('.slot-yellow .font-weight-bold').css('border-color','red');\r\n\r\n this.availabilityCheckDates = [];\r\n for (let i = 0; i < cells.length; i++) {\r\n const cell = $(cells[i]);\r\n const slot = scheduler.slotByElement(cell);\r\n const avl = {} as AvailabilityModel;\r\n avl.category = scheduler.view().name;\r\n avl.startTime = slot.startDate;\r\n avl.endTime = slot.endDate;\r\n avl.startTimeString = avl.startTime.getFullYear() + '-' + (avl.startTime.getMonth() + 1) + '-' + avl.startTime.getDate();\r\n avl.endTimeString = avl.endTime.getFullYear() + '-' + (avl.endTime.getMonth() + 1) + '-' + avl.endTime.getDate();\r\n this.availabilityCheckDates.push(avl);\r\n }\r\n\r\n this.calendarService.checkEmployeeAvailability(this.availabilityCheckDates).subscribe(\r\n (avlData: AvailabilityInfo[]) => {\r\n for (let i = 0; i < cells.length; i++) {\r\n const cell = $(cells[i]);\r\n const slot = scheduler.slotByElement(cell);\r\n if (slot) {\r\n const slotStartDate = slot.startDate as Date;\r\n const slotEndDate = slot.endDate as Date;\r\n const filterData = avlData.find(function (data) {\r\n return (data.startTime.toDateString() === slotStartDate.toDateString()\r\n && data.endTime.toDateString() === slotEndDate.toDateString());\r\n });\r\n if (filterData) {\r\n // Mark Sundays & saturdays with different color using CSS class\r\n if (slotStartDate.getDay() == 0) {\r\n cell.addClass('cell-sunday')\r\n }\r\n if (slotStartDate.getDay() == 6) {\r\n cell.addClass('cell-saturday')\r\n }\r\n\r\n if (filterData && filterData.startTime >= this.currentDate) {\r\n if (filterData.isAvailable) {\r\n cell.css('background-image', 'linear-gradient(225deg, #85BD3C, #85BD3C 30px, transparent 0px, transparent)');\r\n cell.css('position', 'relative');\r\n\r\n if (!filterData.hasAllocations) {\r\n if (filterData.isPartial) {\r\n cell.html('' + slotStartDate.getDate() + ''); \r\n // Button removed on FB132 : '\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + ''); \r\n // Full day Button removed on FB132 : \r\n }\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n } else {\r\n cell.css('background-image', 'linear-gradient(225deg, #FF6161, #FF6161 30px, transparent 0px, transparent)');\r\n cell.html('' + slotStartDate.getDate() + '');\r\n }\r\n } else {\r\n cell.html('' + slotStartDate.getDate() + '');\r\n cell.css('background-image', 'linear-gradient(225deg, #d1d1d1, #d1d1d1 30px, transparent 0px, transparent)');\r\n }\r\n\r\n var holidayArr: any[];\r\n var slotDateJsonFormat = this.getJsonDateFormat(slot.startDate);\r\n if (this.holidayLastMonth !== slotDateJsonFormat) {\r\n this.holidayLastMonth = slotDateJsonFormat\r\n holidayArr = this.swedishHolidays[slotDateJsonFormat]\r\n }\r\n if (holidayArr) {\r\n var holidayObj = holidayArr.find(e => e.date == slot.startDate.getDate())\r\n if (holidayObj) {\r\n cell.addClass('holiday')\r\n cell.append(`${holidayObj.holiday}`);\r\n }\r\n }\r\n\r\n // Check for monthname\r\n var isFirstDay: boolean\r\n if (slotStartDate.getDate() == 1) {\r\n isFirstDay = true\r\n var month = slotStartDate.toLocaleString('sv-SE', { month: 'long' });\r\n var monthCapitalized = month.charAt(0).toUpperCase() + month.slice(1)\r\n } else {\r\n isFirstDay = false\r\n }\r\n\r\n // Display month first day label if not holiday\r\n if (!holidayObj && isFirstDay) {\r\n if (cell.children('.badge-info.holiday-name').length == 0) {\r\n cell.append(`Första ${monthCapitalized}`);\r\n }\r\n }\r\n\r\n // Dispaly week number for every monday\r\n if (slotStartDate.getDay() == 1) {\r\n var weekNoArr = this.calendarService.getWeekNumber(slotStartDate)\r\n cell.append(`V.${weekNoArr[1]}`);\r\n }\r\n }\r\n }\r\n }\r\n $('.avlful').on('click', (e) => {\r\n const sDate = $(e.target).data('sdate');\r\n // this.partialAvailabilityClick(sDate);\r\n });\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n } if (schView === 'day') {\r\n $('.slot-orange.day-view').parent().addClass('dayview-slot-orange');\r\n $('.slot-yellow.day-view').parent().addClass('dayview-slot-yellow');\r\n $('.slot-blue.day-view').parent().addClass('dayview-slot-blue');\r\n }\r\n $('.k-scheduler-navigation').css('pointer-events', 'all');\r\n $('.k-scheduler-navigation').css('opacity', '1');\r\n\r\n if (this.deviceWidth < 768) {\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(1)').text('Mån');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(2)').text('Tis');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(3)').text('Ons');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(4)').text('Tor');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(5)').text('Fre');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(6)').text('Lör');\r\n $('.k-scheduler-monthview .k-scheduler-header .k-scheduler-table tr th:nth-child(7)').text('Sön');\r\n }\r\n }\r\n\r\n getJsonDateFormat(date:Date):string{\r\n return date.getFullYear()+''+(date.getMonth()+1>9? date.getMonth()+1:'0'+(date.getMonth()+1))\r\n }\r\n\r\n schedulerEdit(event): void {\r\n if (event.event.id != 0) {\r\n if (event.event.isTimeLogged) {\r\n this.allocationTimeLogsForm.patchValue({\r\n allocationId: event.event.id,\r\n isTimeLogged: event.event.isTimeLogged,\r\n startTime: event.event.timeLogStartTime,\r\n endTime: event.event.timeLogEndTime,\r\n lunchTime: event.event.timeLogLunch\r\n });\r\n } else {\r\n this.allocationTimeLogsForm.patchValue({\r\n allocationId: event.event.id,\r\n isTimeLogged: event.event.isTimeLogged,\r\n startTime: event.event.start,\r\n endTime: event.event.end,\r\n lunchTime: event.event.lunch\r\n });\r\n // $('#kendo-tl-start').data('kendoTimePicker').value(event.event.start);\r\n // $('#kendo-tl-end').data('kendoTimePicker').value(event.event.end);\r\n }\r\n\r\n this.allocation = event.event;\r\n if (this.allocation.start <= new Date()) {\r\n this.visibleTimeLogs = (event.event.isTimeLogged ? false : true);\r\n } else {\r\n this.visibleTimeLogs = false;\r\n }\r\n ($('#employeeInquiryModal') as any).modal('show');\r\n }\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'availability') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tillgänglighet uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tillgänglighet misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n if (flow === 'timelog') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tidrapportering uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tidrapportering misslyckades! Var god och försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n if (flow === 'partialavl') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tillgänglighet uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tillgänglighet misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n if (flow === 'assign') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';// Success\r\n this.notificationModal.description = 'Passet tilldelades till dig.'; //'Successfully assigned to you!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; //'Failed';\r\n this.notificationModal.description = 'Tilldelning av förfrågan misslyckades. Vänligen försök igen.'; // 'Inquiry assigning failed! Please try again.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#notificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#notificationModal') as any).modal('hide');\r\n }, 3000);\r\n }\r\n\r\n\r\n scrollToHour(hour): void {\r\n const time = new Date();\r\n time.setHours(hour);\r\n time.setMinutes(0);\r\n time.setSeconds(0);\r\n time.setMilliseconds(0);\r\n\r\n const scheduler = $('#inquiry-scheduler').data('kendoScheduler');\r\n const contentDiv = scheduler.element.find('div.k-scheduler-content');\r\n const rows = contentDiv.find('tr');\r\n\r\n for (let i = 0; i < rows.length; i++) {\r\n const element = $(rows[i]);\r\n const slot = scheduler.slotByElement(element);\r\n\r\n const slotTime = kendo.toString(slot.startDate, 'HH:mm');\r\n const targetTime = kendo.toString(time, 'HH:mm');\r\n\r\n if (targetTime === slotTime) {\r\n contentDiv.scrollTop(0);\r\n\r\n const elementTop = element.offset().top;\r\n const containerTop = contentDiv.offset().top;\r\n\r\n contentDiv.scrollTop(elementTop - containerTop);\r\n }\r\n }\r\n }\r\n\r\n onAcceptInquiry(allocationId:number): void {\r\n this.calendarService.assignInquiryEmployee(allocationId).subscribe(\r\n (status: boolean) => {\r\n ($('#employeeInquiryModal') as any).modal('hide');\r\n this.setNotificationData('assign', status);\r\n const scheduler = $('#inquiry-scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId});\r\n scheduler.refresh();\r\n this.signalRService.broadcastCalendarUpdates();\r\n const schedulerBooking = $('#scheduler').data('kendoScheduler');\r\n schedulerBooking.dataSource.read({ userId: this.userId });\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n )\r\n\r\n }\r\n onViewHistoryBtnClick(allocationId: number) {\r\n this.toggleSendRequest();\r\n if (this.sendRequest) {\r\n this.calendarService.getAllocationHistory(allocationId).subscribe(\r\n (res) => {\r\n this.allocationHistory = res;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n \r\n }\r\n toggleSendRequest(){\r\n this.sendRequest = !this.sendRequest\r\n }\r\n\r\n\r\n}\r\n","module.exports = \".ng-select.custom {\\r\\n width: 125px;\\r\\n margin-right: 0px;\\r\\n}\\r\\n\\r\\n.calandarWidth {\\r\\n width: 20px !important;\\r\\n}\\r\\n\\r\\n.spara {\\r\\n min-width: 120px !important;\\r\\n}\\r\\n\\r\\n.ng-select.custom1 {\\r\\n width: 145px;\\r\\n height: 20px;\\r\\n margin-right: 0px;\\r\\n}\\r\\n\\r\\n/* .ng-select.ng-select-single .ng-select-container {\\r\\n height: 46px;\\r\\n} */\\r\\n\\r\\n.ScrollStyle {\\r\\n max-height: 190px;\\r\\n overflow-y: scroll;\\r\\n margin-right: 15px !important;\\r\\n}\\r\\n\\r\\n.primeCalandar {\\r\\n font-size: 14px;\\r\\n color: #333333;\\r\\n background: #ffffff;\\r\\n padding: 0.0em !important;\\r\\n}\\r\\n\\r\\n.loader {\\r\\n border: 16px solid #f3f3f3;\\r\\n border-radius: 50%;\\r\\n border-top: 16px solid blue;\\r\\n border-bottom: 16px solid blue;\\r\\n width: 120px;\\r\\n height: 120px;\\r\\n animation: spin 2s linear infinite;\\r\\n}\\r\\n\\r\\n.required:after {\\r\\n content: \\\" *\\\";\\r\\n color: red;\\r\\n}\\r\\n\\r\\n@keyframes spin {\\r\\n 0% {\\r\\n transform: rotate(0deg);\\r\\n }\\r\\n\\r\\n 100% {\\r\\n transform: rotate(360deg);\\r\\n }\\r\\n}\\r\\n\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2FsZW5kYXIvbG9uZy1ib29raW5nL2xvbmctYm9va2luZy5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsWUFBWTtFQUNaLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLHNCQUFzQjtBQUN4Qjs7QUFFQTtFQUNFLDJCQUEyQjtBQUM3Qjs7QUFFQTtFQUNFLFlBQVk7RUFDWixZQUFZO0VBQ1osaUJBQWlCO0FBQ25COztBQUVBOztHQUVHOztBQUNIO0VBQ0UsaUJBQWlCO0VBQ2pCLGtCQUFrQjtFQUNsQiw2QkFBNkI7QUFDL0I7O0FBRUE7RUFDRSxlQUFlO0VBQ2YsY0FBYztFQUNkLG1CQUFtQjtFQUNuQix5QkFBeUI7QUFDM0I7O0FBRUE7RUFDRSwwQkFBMEI7RUFDMUIsa0JBQWtCO0VBQ2xCLDJCQUEyQjtFQUMzQiw4QkFBOEI7RUFDOUIsWUFBWTtFQUNaLGFBQWE7RUFFYixrQ0FBa0M7QUFDcEM7O0FBRUE7RUFDRSxhQUFhO0VBQ2IsVUFBVTtBQUNaOztBQVlBO0VBQ0U7SUFDRSx1QkFBdUI7RUFDekI7O0VBRUE7SUFDRSx5QkFBeUI7RUFDM0I7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NhbGVuZGFyL2xvbmctYm9va2luZy9sb25nLWJvb2tpbmcuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5uZy1zZWxlY3QuY3VzdG9tIHtcclxuICB3aWR0aDogMTI1cHg7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwcHg7XHJcbn1cclxuXHJcbi5jYWxhbmRhcldpZHRoIHtcclxuICB3aWR0aDogMjBweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uc3BhcmEge1xyXG4gIG1pbi13aWR0aDogMTIwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLm5nLXNlbGVjdC5jdXN0b20xIHtcclxuICB3aWR0aDogMTQ1cHg7XHJcbiAgaGVpZ2h0OiAyMHB4O1xyXG4gIG1hcmdpbi1yaWdodDogMHB4O1xyXG59XHJcblxyXG4vKiAubmctc2VsZWN0Lm5nLXNlbGVjdC1zaW5nbGUgLm5nLXNlbGVjdC1jb250YWluZXIge1xyXG4gIGhlaWdodDogNDZweDtcclxufSAqL1xyXG4uU2Nyb2xsU3R5bGUge1xyXG4gIG1heC1oZWlnaHQ6IDE5MHB4O1xyXG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcclxuICBtYXJnaW4tcmlnaHQ6IDE1cHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLnByaW1lQ2FsYW5kYXIge1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxuICBjb2xvcjogIzMzMzMzMztcclxuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xyXG4gIHBhZGRpbmc6IDAuMGVtICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5sb2FkZXIge1xyXG4gIGJvcmRlcjogMTZweCBzb2xpZCAjZjNmM2YzO1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBib3JkZXItdG9wOiAxNnB4IHNvbGlkIGJsdWU7XHJcbiAgYm9yZGVyLWJvdHRvbTogMTZweCBzb2xpZCBibHVlO1xyXG4gIHdpZHRoOiAxMjBweDtcclxuICBoZWlnaHQ6IDEyMHB4O1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBzcGluIDJzIGxpbmVhciBpbmZpbml0ZTtcclxuICBhbmltYXRpb246IHNwaW4gMnMgbGluZWFyIGluZmluaXRlO1xyXG59XHJcblxyXG4ucmVxdWlyZWQ6YWZ0ZXIge1xyXG4gIGNvbnRlbnQ6IFwiICpcIjtcclxuICBjb2xvcjogcmVkO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgc3BpbiB7XHJcbiAgMCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcclxuICB9XHJcblxyXG4gIDEwMCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBzcGluIHtcclxuICAwJSB7XHJcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcclxuICB9XHJcblxyXG4gIDEwMCUge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ== */\"","\r\nimport { Component, OnInit, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, FormArray } from '@angular/forms';\r\nimport { CalendarService } from '../../calendar/calendar.service';\r\nimport { EMPTY, Subscription } from 'rxjs';\r\nimport { UserService } from '../../user/user.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { SignalrService } from 'src/app/shared/services/common/signalr.service';\r\nimport { LongBookingTemplate } from 'src/app/shared/models/long-booking/long-booking-template.model';\r\nimport { LongBookingService } from 'src/app/shared/services/domain/booking/long-booking.service';\r\nimport { EmployeeAvailbleDates, LongBooking } from 'src/app/shared/models/long-booking/long-booking.model';\r\nimport { DatePipe } from '@angular/common';\r\nimport { DateDto } from 'src/app/shared/models/long-booking/date.model';\r\nimport { LongBookingShift } from 'src/app/shared/models/long-booking/long-booking-shift.model';\r\nimport { LongBookingShiftDay } from 'src/app/shared/models/long-booking/long-booking-shift-day';\r\nimport { LongBookingEmployeeModel } from 'src/app/shared/models/long-booking/long-booking-employee-model';\r\nimport { AlliocationModel } from '../alliocation-model';\r\nimport { catchError, filter } from 'rxjs/operators';\r\nimport { IUserInfo } from 'src/app/user/user-info';\r\nimport { LongBookingWeek } from 'src/app/shared/models/long-booking/long-booking-week.model';\r\nimport { ConfigService } from 'src/app/shared/services/config.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\ndeclare var kendo: any;\r\n\r\n@Component({\r\n selector: 'wfm-long-booking',\r\n templateUrl: './long-booking.component.html',\r\n styleUrls: ['./long-booking.component.css']\r\n})\r\nexport class LongBookingComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n title = 'FormArray SetValue & PatchValue Example';\r\n isMobile: boolean = window.innerWidth < 768 ? true : false;\r\n\r\n teachersForm: FormGroup;\r\n shiftTimeDetails: ShiftTimeDetails[] = []; // shiftTime week wise calculation\r\n uniqueShiftTimeDetails: ShiftTimeDetails[] = []; // unique shiftTime calculation\r\n\r\n selectedDates: Date[] = [];\r\n bookingsForm: FormGroup;\r\n role: string;\r\n invalidDevientDates: any[] = [];\r\n invalidExcludedDates: any[] = [];\r\n disableAvvikandeDagarButton: boolean = false;\r\n userType: string;\r\n workingDays: any[] = [];\r\n excludedDays: { id: number, date: Date }[] = [];\r\n isInvalidExcludeDate: boolean;\r\n invalidDevientDate: boolean;\r\n avvikandeDagarDatesDays: Date[] = [];\r\n overTimePeriods: any[] = [];\r\n timeSlots = [];\r\n enableAddShiftButton: boolean;\r\n disableAddTemplate: boolean = true;\r\n templateList: LongBookingTemplate[] = [];\r\n showAvvikandeDates: boolean = false;\r\n alliocationModel: AlliocationModel = new AlliocationModel();\r\n selectedLongBookingShift: any;\r\n disableSaveButton: boolean = true;\r\n showEditButton: boolean = false;\r\n selectedLongBookingId: number = 0;\r\n selectedTemplateId: number = 0;\r\n clientId: string;\r\n selectedLongBookingForEdit: LongBooking;\r\n selectedTemplate: any;\r\n employeeDropdownClicked: boolean;\r\n templateSelected: boolean;\r\n validShiftTime: boolean;\r\n shiftNumber: number = 2;\r\n shiftId: number = 1;\r\n // configClientLongBookingPeriod: number;\r\n configClientOverrideLongBookingDateRule: boolean;\r\n\r\n swapUserForm: FormGroup;\r\n buyTicketForm: FormGroup;\r\n allocationTimeLogsForm: FormGroup;\r\n allocationFormLongBooking: FormGroup;\r\n allocationFormForGetMatchedEmployees: FormGroup\r\n allocationTimeUpdateForm: FormGroup;\r\n selectedUserFullName: string;\r\n selectedUserAllocationTimes: string;\r\n notificationModal: any;\r\n availabilityForm: FormGroup;\r\n partialAvailabilityForm: FormGroup;\r\n\r\n clientCommonTimes: any[] = [];\r\n selectedCitiesIds: any[] = [];\r\n availableEmployees: any[] = []\r\n totalShiftTime: string;\r\n isWeekend = true;\r\n isBookingSelected = true;\r\n IsOnChangeEvent: boolean = false;\r\n onClickMakeLongBookingSub: Subscription;\r\n disableCreateButton: boolean;\r\n longbookIsCreating: boolean;\r\n avvikandeMinDate: Date;\r\n avvikandeMaxDate: Date;\r\n validLongBookingDates: boolean;\r\n shiftsTotalTimes: LongBookingShift[] = [];\r\n totalShiftTimeCalculated: number = 0;\r\n totalShiftTimeCalculatedText: string = '';\r\n\r\n\r\n lunchTimeList: any[] = [\r\n { value: 0, label: '0' },\r\n { value: 15, label: '15' },\r\n { value: 20, label: '20' },\r\n { value: 30, label: '30' },\r\n { value: 45, label: '45' },\r\n { value: 60, label: '60' },\r\n ];\r\n\r\n selectedEmployees: string[] = [];\r\n employeeNotAvailbleDates: EmployeeAvailbleDates[] = [];\r\n employees: any[] = [\r\n { value: '611ddd08-cac5-4546-abcb-26b69d7d9988', label: 'Daniel Lorrysjorn' },\r\n { value: 'f0c1765e-a37b-47d2-a1ec-c4cddd97417d', label: 'Harrald Steven' },\r\n ];\r\n en: any;\r\n\r\n newSelectedUserSub: Subscription;\r\n onResourceTypeChangeSub: Subscription;\r\n\r\n constructor(private datepipe: DatePipe,\r\n private toastr: ToastrService,\r\n private configService: ConfigService,\r\n private longBookingService: LongBookingService,\r\n private fb: FormBuilder, private calendarService: CalendarService,\r\n private signalRService: SignalrService, private userservice: UserService, private route: ActivatedRoute,\r\n private elementRef: ElementRef) {\r\n this.showEditButton = false;\r\n\r\n this.timeSlots = [\r\n { id: '1', name: '00:00' },\r\n { id: '2', name: '00:15' },\r\n { id: '3', name: '00:30' },\r\n { id: '4', name: '00:45' },\r\n { id: '5', name: '01:00' },\r\n { id: '6', name: '01:15' },\r\n { id: '7', name: '01:30' },\r\n { id: '8', name: '01:45' },\r\n { id: '9', name: '02:00' },\r\n { id: '10', name: '02:15' },\r\n { id: '11', name: '02:30' },\r\n { id: '12', name: '02:45' },\r\n { id: '13', name: '03:00' },\r\n { id: '14', name: '03:15' },\r\n { id: '15', name: '03:30' },\r\n { id: '16', name: '03:45' },\r\n { id: '17', name: '04:00' },\r\n { id: '18', name: '04:15' },\r\n { id: '19', name: '04:30' },\r\n { id: '20', name: '04:45' },\r\n { id: '21', name: '05:00' },\r\n { id: '22', name: '05:15' },\r\n { id: '23', name: '05:30' },\r\n { id: '24', name: '05:45' },\r\n { id: '25', name: '06:00' },\r\n { id: '26', name: '06:15' },\r\n { id: '27', name: '06:30' },\r\n { id: '28', name: '06:45' },\r\n { id: '29', name: '07:00' },\r\n { id: '30', name: '07:15' },\r\n { id: '31', name: '07:30' },\r\n { id: '32', name: '07:45' },\r\n { id: '33', name: '08:00' },\r\n { id: '34', name: '08:15' },\r\n { id: '35', name: '08:30' },\r\n { id: '36', name: '08:45' },\r\n { id: '37', name: '09:00' },\r\n { id: '38', name: '09:15' },\r\n { id: '39', name: '09:30' },\r\n { id: '40', name: '09:45' },\r\n { id: '41', name: '10:00' },\r\n { id: '42', name: '10:15' },\r\n { id: '43', name: '10:30' },\r\n { id: '44', name: '10:45' },\r\n { id: '45', name: '11:00' },\r\n { id: '46', name: '11:15' },\r\n { id: '47', name: '11:30' },\r\n { id: '48', name: '11:45' },\r\n { id: '49', name: '12:00' },\r\n { id: '50', name: '12:15' },\r\n { id: '51', name: '12:30' },\r\n { id: '52', name: '12:45' },\r\n { id: '53', name: '13:00' },\r\n { id: '54', name: '13:15' },\r\n { id: '55', name: '13:30' },\r\n { id: '56', name: '13:45' },\r\n { id: '57', name: '14:00' },\r\n { id: '58', name: '14:15' },\r\n { id: '59', name: '14:30' },\r\n { id: '60', name: '14:45' },\r\n { id: '61', name: '15:00' },\r\n { id: '62', name: '15:15' },\r\n { id: '63', name: '15:30' },\r\n { id: '64', name: '15:45' },\r\n { id: '65', name: '16:00' },\r\n { id: '66', name: '16:15' },\r\n { id: '67', name: '16:30' },\r\n { id: '68', name: '16:45' },\r\n { id: '69', name: '17:00' },\r\n { id: '70', name: '17:15' },\r\n { id: '71', name: '17:30' },\r\n { id: '72', name: '17:45' },\r\n { id: '73', name: '18:00' },\r\n { id: '74', name: '18:15' },\r\n { id: '75', name: '18:30' },\r\n { id: '76', name: '18:45' },\r\n { id: '77', name: '19:00' },\r\n { id: '78', name: '19:15' },\r\n { id: '79', name: '19:30' },\r\n { id: '80', name: '19:45' },\r\n { id: '81', name: '20:00' },\r\n { id: '82', name: '20:15' },\r\n { id: '83', name: '20:30' },\r\n { id: '84', name: '20:45' },\r\n { id: '85', name: '21:00' },\r\n { id: '86', name: '21:15' },\r\n { id: '87', name: '21:30' },\r\n { id: '88', name: '21:45' },\r\n { id: '89', name: '22:00' },\r\n { id: '90', name: '22:15' },\r\n { id: '91', name: '22:30' },\r\n { id: '92', name: '22:45' },\r\n { id: '93', name: '23:00' },\r\n { id: '94', name: '23:15' },\r\n { id: '95', name: '23:30' },\r\n { id: '96', name: '23:45' }\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n\r\n console.log(\"release 1.0.0\")\r\n\r\n this.en = {\r\n firstDayOfWeek: 1,\r\n\r\n };\r\n\r\n const loggedInUserId = localStorage.getItem(\"loggedinUserId\");\r\n // this.getUserWiseAdminConfigurationDetails(loggedInUserId); // no need any more \r\n this.subscribeToLongBookingEditDetails();\r\n this.selectedLongBookingId = null;\r\n this.selectedDates.push(new Date());\r\n var tomorrow = new Date();\r\n tomorrow.setDate(tomorrow.getDate() + 1);\r\n this.selectedDates.push(tomorrow);\r\n this.getSelectedClient();\r\n this.getEmployeeList()\r\n\r\n this.workingDays = [\r\n { id: 2, value: 2, label: 'Monday', name: 'Monday' },\r\n { id: 3, value: 3, label: 'Tuesday', name: 'Tuesday' },\r\n { id: 4, value: 4, label: 'Wednesday', name: 'Wednesday' },\r\n { id: 5, value: 5, label: 'Thursday', name: 'Thursday' },\r\n { id: 6, value: 6, label: 'Friday', name: 'Friday' },\r\n { id: 7, value: 7, label: 'Saturday', name: 'Saturday' },\r\n { id: 1, value: 1, label: 'Sunday', name: 'Sunday' },\r\n ];\r\n this.selectedCitiesIds = [\r\n { id: 1, name: 'Vilnius' },\r\n { id: 2, name: 'Kaunas' }\r\n ];\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n this.initializeForms();\r\n this.patchValue2();\r\n this.getTemplates();\r\n this.onClickMakeLongBookingSub = this.calendarService.onClickMakeLongBooking.subscribe((res) => {\r\n this.allocationFormLongBooking.clearValidators();\r\n this.allocationFormLongBooking.reset();\r\n this.initializeKendoComponents();\r\n this.disableAvvikandeDagarButton = true;\r\n this.disableAddTemplate = true;\r\n this.employeeDropdownClicked = false;\r\n this.availableEmployees = [];\r\n this.invalidExcludedDates = [];\r\n this.invalidDevientDates = [];\r\n // this.ngOnInit();\r\n if (res == true) {\r\n this.onClickMakeLongBooking()\r\n }\r\n });\r\n this.longBooingFormOnChange();\r\n this.shiftFormOnChange();\r\n this.addAvvikandeDateFormOnChanges();\r\n // this.onLongBookingFormDateChange();\r\n\r\n }\r\n\r\n getEmployeeList(): void {\r\n this.userservice.getUserList('Employee').subscribe(\r\n (res: IUserInfo[]) => {\r\n this.availableEmployees = res;\r\n for (let [key, value] of Object.entries(this.availableEmployees)) {\r\n value['value'] = value.userId;\r\n value['label'] = value.firstName + ' ' + value.lastName;\r\n }\r\n },\r\n // (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n onChangeState(event, index) {\r\n }\r\n\r\n subscribeToLongBookingEditDetails() {\r\n this.selectedLongBookingId = null;\r\n this.calendarService.onSelectLongBooking.subscribe(id => {\r\n this.selectedLongBookingId = id;\r\n this.disableAvvikandeDagarButton = false;\r\n this.getEmployeeList();\r\n setTimeout(() => {\r\n this.getLongBookingById()\r\n }, 1000);\r\n })\r\n }\r\n\r\n deleteLongBookingDateRange(): void {\r\n \r\n this.longBookingService.deleteLongBookingByDateRange(this.alliocationModel).subscribe((data) => {\r\n this.showNotification('Success', 'Long booking deleted', 'success');\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');\r\n\r\n setTimeout(() => {\r\n ($('#requestAllocationForLongBookinModal') as any).modal('hide');\r\n }, 3000);\r\n })\r\n }\r\n\r\n updateLongBooking(isInquiry: boolean): void {\r\n this.showNotification('Success', 'Please wait few seconds ...', 'success');\r\n let longBookingDto: LongBooking;\r\n this.disableCreateButton = true;\r\n this.longbookIsCreating = true;\r\n longBookingDto = this.getLongBookingDto();\r\n longBookingDto.createBookingsWithInquiries = isInquiry;\r\n longBookingDto.id = this.selectedLongBookingId;\r\n\r\n if (longBookingDto.id) {\r\n this.longBookingService.updateLongBooking(longBookingDto).subscribe((data) => {\r\n this.showEditButton = true;\r\n this.disableCreateButton = false;\r\n this.longbookIsCreating = false;\r\n this.selectedLongBookingId = null;\r\n this.clientId = null;\r\n ($('#matchedEmployeesForSaveLongBooking') as any).modal('hide');\r\n this.showNotification('Success', 'Long Booking Updated', 'success');\r\n\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.clientId, userType: this.userType });\r\n\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');\r\n\r\n setTimeout(() => {\r\n ($('#requestAllocationForLongBookinModal') as any).modal('hide');\r\n }, 3000);\r\n location.reload();\r\n\r\n })\r\n } else {\r\n this.showNotification('Error', 'Long Booking Update failed', 'Error');\r\n }\r\n }\r\n\r\n getLongBookingById(): void {\r\n this.longBookingService.getLongBookingById(this.selectedLongBookingId).subscribe((data) => {\r\n this.showEditButton = true;\r\n if (data) {\r\n this.validLongBookingDates = true;\r\n let avvikandeDates = this.allocationFormLongBooking.get('avvikandeDates').value;\r\n let existingShifts = this.buyTicketForm['controls'].shifts.value;\r\n existingShifts.forEach((currentValue, index) => {\r\n this.removeShifts(index);\r\n });\r\n avvikandeDates.forEach((currentValue, index) => {\r\n this.removeAvvikandeDates(index);\r\n });\r\n\r\n this.employeeDropdownClicked = false;\r\n this.enableAddShiftButton = true;\r\n this.allocationFormLongBooking.reset();\r\n this.selectedLongBookingForEdit = data;\r\n this.selectedLongBookingId = data.id;\r\n this.clientId = data.clientId;\r\n this.selectedEmployees = [];\r\n this.selectedEmployees = this.selectedLongBookingForEdit.employees.map(x => x.employeeId);\r\n\r\n this.shifts.value.forEach((currentValue, index) => {\r\n this.shifts.removeAt(index)\r\n });\r\n\r\n for (var i = 0; i < data.shifts.length; i++) {\r\n let shiftDay = data.shifts[i].shiftDays;\r\n this.shifts.push(this.createShift());\r\n }\r\n this.setShiftNumber();\r\n\r\n let startDate, endDate;\r\n startDate = this.datepipe.transform(data.startDate, 'yyyy-MM-dd');\r\n endDate = this.datepipe.transform(data.endDate, 'yyyy-MM-dd');\r\n\r\n this.validateStartAndEndDates(startDate, endDate)\r\n this.alliocationModel.startDate = startDate,\r\n this.alliocationModel.endDate = endDate,\r\n this.alliocationModel.id = this.selectedLongBookingId;\r\n this.allocationFormLongBooking.patchValue({\r\n longBookingStartDate: startDate,\r\n longBookingEndDate: endDate,\r\n });\r\n\r\n let shifts: any[] = [];\r\n shifts = data.shifts;\r\n const sorter = {\r\n \"monday\": 2,\r\n \"tuesday\": 3,\r\n \"wednesday\": 4,\r\n \"thursday\": 5,\r\n \"friday\": 6,\r\n \"saturday\": 7,\r\n \"sunday\": 1,\r\n }\r\n\r\n shifts.forEach(item => {\r\n item.shiftDays.sort(function sortByDay(a, b) {\r\n let day1 = a.day.toLowerCase();\r\n let day2 = b.day.toLowerCase();\r\n return sorter[day1] - sorter[day2];\r\n });\r\n item.shiftDays.forEach(day => {\r\n if (day.id > 0) {\r\n day.IsSelected = true;\r\n } else {\r\n day.IsSelected = false;\r\n }\r\n })\r\n })\r\n this.selectedLongBookingShift = shifts;\r\n\r\n this.buyTicketForm.patchValue({\r\n shifts: shifts\r\n });\r\n let tempShifts: any;\r\n tempShifts = this.buyTicketForm['controls'].shifts;\r\n tempShifts.controls.forEach(item => {\r\n let shift = item;\r\n let isEmptyRecordsExisits: boolean = false;\r\n let days = [];\r\n days = item['controls'].shiftDays.controls;\r\n days.forEach(day => {\r\n day.value.IsSelected = false\r\n })\r\n shift.errors = \"Please fill all the selected records\"\r\n });\r\n\r\n let excludedDays: any[] = [];\r\n this.excludedDays = [];\r\n\r\n\r\n if (data.excludedDays) {\r\n data.excludedDays.forEach(element => {\r\n this.excludedDays.push({ id: 0, date: new Date(element) });\r\n });\r\n }\r\n // this.allocationFormLongBooking.patchValue({\r\n // excludedDays: excludedDays,\r\n // });\r\n\r\n let devientDates = [];\r\n devientDates = data.devientDates;\r\n devientDates.forEach(devientDate => {\r\n devientDate.date = new Date(devientDate.date);\r\n let startHour = new Date(devientDate.startTime).getHours().toString();\r\n let startmin = new Date(devientDate.startTime).getMinutes().toString();\r\n\r\n if (startHour == \"0\") {\r\n startHour = \"00\"\r\n }\r\n else if (parseInt(startHour) < 10) {\r\n startHour = \"0\".concat(startHour)\r\n }\r\n\r\n if (startmin == \"0\") {\r\n startmin = \"00\"\r\n }\r\n else if (parseInt(startHour) < 10) {\r\n // startHour = \"0\".concat(startHour)\r\n }\r\n\r\n let endHour = new Date(devientDate.endTime).getHours().toString();\r\n let endMin = new Date(devientDate.endTime).getMinutes().toString();\r\n\r\n if (endHour == \"0\") {\r\n endHour = \"00\"\r\n } else if (parseInt(endHour) < 10) {\r\n endHour = \"0\".concat(endHour)\r\n }\r\n if (endMin == \"0\") {\r\n endMin = \"00\"\r\n } else if (parseInt(endMin) < 10) {\r\n // endHour = \"0\".concat(endHour)\r\n }\r\n devientDate.startTime = startHour.concat(\":\").concat(startmin);\r\n devientDate.endTime = endHour.concat(\":\").concat(endMin);\r\n })\r\n let item = this.allocationFormLongBooking.get('avvikandeDates') as FormArray;\r\n\r\n item.value.forEach((currentValue, index) => {\r\n item.removeAt(index);\r\n });\r\n\r\n for (var i = 1; i <= devientDates.length; i++) {\r\n item.push(this.createAvvikandeDate());\r\n this.invalidDevientDates.push(new Date(devientDates[i - 1].date))\r\n\r\n }\r\n this.allocationFormLongBooking.patchValue({\r\n avvikandeDates: devientDates,\r\n });\r\n }\r\n this.calculateShiftTime();\r\n this.setShiftNumber();\r\n\r\n });\r\n\r\n }\r\n\r\n confirmDeleteTemplate() {\r\n this.longBookingService.deleteTemplate(this.selectedTemplateId).pipe(catchError(() => {\r\n this.notificationModal.header = 'Failed'; // Failed\r\n this.notificationModal.description = 'Long booking delete failed !!!'; //Inquiry adding failed! Please try again.\r\n this.notificationModal.type = 'danger';\r\n return EMPTY;\r\n })).subscribe((data) => {\r\n this.getTemplates();\r\n ($('#longBookingDeleteTemplateModal') as any).modal('hide');\r\n const msg = 'Template deleted success !!!';\r\n this.toastr.success(msg, 'Warnning!');\r\n ($('#editTemplateForLongBookinModal') as any).modal('show');\r\n });\r\n }\r\n\r\n openDeleteLongBookingConfirmModal(): void {\r\n // ($('#editTemplateForLongBookinModal') as any).modal('hide');\r\n\r\n setTimeout(() => {\r\n ($('#longBookingDeleteModal') as any).modal('show');\r\n }, 100);\r\n }\r\n\r\n closeDeleteTemplate() {\r\n ($('#requestAllocationForLongBookinModal') as any).modal('show');\r\n }\r\n\r\n openDeleteTemplateConfirmModal(template: any): void {\r\n this.selectedTemplateId = template.id;\r\n ($('#editTemplateForLongBookinModal') as any).modal('hide');\r\n\r\n setTimeout(() => {\r\n ($('#longBookingDeleteTemplateModal') as any).modal('show');\r\n }, 100);\r\n }\r\n\r\n closeDeleteTemplateConfirmationModal() {\r\n\r\n ($('#longBookingDeleteTemplateModal') as any).modal('hide');\r\n ($('#editTemplateForLongBookinModal') as any).modal('show');\r\n\r\n }\r\n\r\n deleteLongBooking() {\r\n this.longBookingService.deleteLongBooking(this.selectedLongBookingId).pipe(catchError(() => {\r\n\r\n this.notificationModal.header = 'Failed'; // Failed\r\n this.notificationModal.description = 'Long booking delete failed !!!'; //Inquiry adding failed! Please try again.\r\n this.notificationModal.type = 'danger';\r\n return EMPTY;\r\n })).subscribe((data) => {\r\n ($('#allocationDeleteModal') as any).modal('hide');\r\n ($('#longBookingDeleteModal') as any).modal('hide');\r\n\r\n // this.notificationModal.header = 'Long booking deleted'; // Failed\r\n const msg = 'Long booking deleted success !!!';\r\n this.toastr.success(msg, 'WarLong booking deletednning!');\r\n\r\n setTimeout(() => {\r\n // ($('#notificationModal') as any).modal('hide');\r\n ($('#requestAllocationForLongBookinModal') as any).modal('hide');\r\n\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.clientId, userType: this.userType });\r\n\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');\r\n }, 3000);\r\n });\r\n\r\n\r\n }\r\n\r\n createShift(shiftDays?: any[]): FormGroup {\r\n let days: any;\r\n this.shiftId = this.shiftId + 1;\r\n days = this.fb.array(\r\n [\r\n this.createBookingDay(0, true, this.shiftId, null, null, null, this.workingDays[0].name),\r\n this.createBookingDay(0, true, this.shiftId, null, null, null, this.workingDays[1].name),\r\n this.createBookingDay(0, true, this.shiftId, null, null, null, this.workingDays[2].name),\r\n this.createBookingDay(0, true, this.shiftId, null, null, null, this.workingDays[3].name),\r\n this.createBookingDay(0, true, this.shiftId, null, null, null, this.workingDays[4].name),\r\n this.createBookingDay(0, false, this.shiftId, null, null, null, this.workingDays[5].name),\r\n this.createBookingDay(0, false, this.shiftId, null, null, null, this.workingDays[6].name)]);\r\n\r\n return this.fb.group({\r\n id: this.shiftId,\r\n shiftDays: days,\r\n totalHours: 100\r\n })\r\n }\r\n\r\n toTime(timeString) {\r\n var timeTokens = timeString.split(':');\r\n return new Date(new Date().getFullYear(), 0, 1, timeTokens[0], timeTokens[1]);\r\n }\r\n\r\n getTimeDifference(startTime, endTime, lunch?): number {\r\n var diff = (endTime.getTime() - startTime.getTime()) / 60000;\r\n if (lunch) {\r\n diff = diff - lunch;\r\n }\r\n var days = Math.floor(diff / (60 * 60 * 24 * 1000));\r\n var hours = Math.floor(diff / (60 * 60 * 1000)) - (days * 24);\r\n var minutes = Math.floor(diff / (60 * 1000)) - ((days * 24 * 60) + (hours * 60));\r\n return diff;\r\n }\r\n\r\n validateShiftTime(startTime, endTime): boolean {\r\n let startdayTime = startTime.toString().split(\":\");\r\n let enddayTime = endTime.toString().split(\":\");\r\n\r\n let startHr = parseInt(startdayTime[0]);\r\n let startMin = parseInt(startdayTime[1]);\r\n\r\n let endHr = parseInt(enddayTime[0]);\r\n let endMin = parseInt(enddayTime[1]);\r\n\r\n let time1 = startHr * 60 + startMin;\r\n let time2 = endHr * 60 + endMin;\r\n if (time1 < time2) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n createAvvikandeDate(): FormGroup {\r\n return this.fb.group({\r\n date: [null, Validators.required],\r\n startTime: ['09:00', Validators.required],\r\n endTime: ['18:00', Validators.required],\r\n id: 0,\r\n lunch: [45, Validators.required],\r\n })\r\n }\r\n\r\n createExcludedDate(): FormGroup {\r\n return this.fb.group({\r\n date: [null, Validators.required],\r\n })\r\n }\r\n\r\n get shifts(): FormArray {\r\n return this.buyTicketForm.get('shifts');\r\n }\r\n\r\n addShift() {\r\n let startDate = new Date(this.allocationFormLongBooking.get(\"longBookingStartDate\").value);\r\n let endDate = new Date(this.allocationFormLongBooking.get(\"longBookingEndDate\").value);\r\n let totalDays = Math.floor((Date.UTC(endDate.getFullYear(), endDate.getMonth(), endDate.getDate())\r\n - Date.UTC(startDate.getFullYear(), startDate.getMonth(), startDate.getDate())) / (1000 * 60 * 60 * 24));\r\n\r\n let numberOfWeeks = totalDays / 7;\r\n if (numberOfWeeks > this.shifts.length) {\r\n this.shifts.push(this.createShift());\r\n this.setShiftNumber();\r\n this.calculateShiftTime();\r\n\r\n setTimeout(() => {\r\n this.checkValidations();\r\n }, 1000);\r\n } else {\r\n ($('#longbookingAddShiftValidationErrorModal') as any).modal('show');\r\n }\r\n }\r\n\r\n deleteShift(shift: any) {\r\n this.shifts.removeAt(this.shifts.length - 1);\r\n this.setShiftNumber();\r\n }\r\n\r\n removeShift(index: any) {\r\n this.shifts.removeAt(index);\r\n this.setShiftNumber();\r\n }\r\n\r\n setShiftNumber() {\r\n this.shiftNumber = 0;\r\n this.shiftNumber = this.shifts.length + 1;\r\n }\r\n\r\n initializeForms(): void {\r\n this.buyTicketForm = this.fb.group(\r\n {\r\n startDate: [null, [Validators.required]],\r\n endDate: [null, [Validators.required]],\r\n shifts: this.fb.array([this.createShift()], Validators.required),\r\n }\r\n )\r\n this.allocationFormLongBooking = this.fb.group({\r\n bookings: this.fb.array([this.createBooking()]),\r\n templateId: ['', Validators.required],\r\n shifts: this.fb.array([this.createShift()], Validators.required),\r\n avvikandeDates: this.fb.array([this.createAvvikandeDate()], Validators.required),\r\n excludedDays: null,\r\n longBookingStartDate: ['', Validators.required],\r\n spareMall: '',\r\n longBookingEndDate: ['', Validators.required],\r\n clientId: [],\r\n resourceTypeId: 1,\r\n employeeIds: [],\r\n isPartialBooking: [false],\r\n selectedCitiesIds: []\r\n });\r\n\r\n this.swapUserForm = this.fb.group({\r\n allocationId: [],\r\n swapUserId: [],\r\n swapType: []\r\n });\r\n this.allocationTimeLogsForm = this.fb.group({\r\n allocationId: [],\r\n isTimeLogged: [],\r\n startTime: [],\r\n endTime: [],\r\n lunchTime: []\r\n });\r\n this.availabilityForm = this.fb.group({\r\n changeTypeId: ['1'],\r\n month: ['', Validators.required],\r\n startDate: [''],\r\n endDate: [''],\r\n availabilityId: ['1']\r\n });\r\n this.partialAvailabilityForm = this.fb.group({\r\n avlTypeId: [],\r\n avlDate: [],\r\n avlStart: [],\r\n avlEnd: []\r\n });\r\n this.allocationTimeUpdateForm = this.fb.group({\r\n allocationId: [],\r\n startDate: [],\r\n endDate: [],\r\n lunchTime: []\r\n })\r\n }\r\n get f() { return this.allocationFormLongBooking.controls; }\r\n\r\n longBooingFormOnChange() {\r\n this.allocationFormLongBooking.valueChanges.subscribe(x => {\r\n this.calculateShiftTime();\r\n this.checkValidations();\r\n // this.getMatchedEmployeesForSaveLongBooking();\r\n });\r\n\r\n }\r\n shiftFormOnChange() {\r\n this.buyTicketForm.get('shifts').valueChanges.subscribe(changes1 => {\r\n this.checkValidations();\r\n this.calculateShiftTime();\r\n /// this.getMatchedEmployeesForSaveLongBooking();\r\n\r\n\r\n });\r\n\r\n this.buyTicketForm.valueChanges.subscribe(x => {\r\n this.checkValidations();\r\n this.calculateShiftTime();\r\n });\r\n }\r\n\r\n setDefaultTimeForWeekends(data1: any, t: any) {\r\n let shifts: any;\r\n shifts = this.buyTicketForm.controls['shifts'];\r\n\r\n shifts.controls.forEach(element => {\r\n\r\n if (data1.value.shiftId == element.value.id || data1.value.shiftId == element.value.shiftDays[0].shiftId) {\r\n let shiftDays = element.controls['shiftDays'].controls;\r\n if (data1.value.day == 'Saturday') {\r\n shiftDays.forEach(data => {\r\n if (!data['controls'].IsSelected.value && data['controls'].day.value == 'Saturday') {\r\n data['controls'].IsSelected.value = true;\r\n data.value.IsSelected = true;\r\n data['controls'].startTime.value = '10:00'\r\n data['controls'].endTime.value = \"15:00\"\r\n data.value.startTime = '10:00'\r\n data.value.endTime = \"15:00\"\r\n } else if (data['controls'].IsSelected.value && data['controls'].day.value == 'Saturday') {\r\n data['controls'].IsSelected.value = false;\r\n data.value.IsSelected = false;\r\n data['controls'].startTime.value = null\r\n data['controls'].endTime.value = null\r\n data.value.startTime = null\r\n data.value.endTime = null\r\n }\r\n })\r\n }\r\n else if (data1.value.day == 'Sunday') {\r\n shiftDays.forEach(data => {\r\n if (!data['controls'].IsSelected.value && data['controls'].day.value == 'Sunday') {\r\n data['controls'].IsSelected.value = !data1.value.IsSelected;\r\n data.value.IsSelected = !data1.value.IsSelected;\r\n data['controls'].startTime.value = '10:00'\r\n data['controls'].endTime.value = \"15:00\"\r\n data.value.startTime = '10:00'\r\n data.value.endTime = \"15:00\"\r\n }\r\n else if (data['controls'].IsSelected.value && data['controls'].day.value == 'Sunday') {\r\n data['controls'].IsSelected.value = false;\r\n data.value.IsSelected = false;\r\n data['controls'].startTime.value = null\r\n data['controls'].endTime.value = null\r\n data.value.startTime = null\r\n data.value.endTime = null\r\n }\r\n })\r\n } else {\r\n shiftDays.forEach(data => {\r\n if (!data['controls'].IsSelected.value && data['controls'].day.value == data1.value.day) {\r\n data['controls'].IsSelected.value = !data1.value.IsSelected;\r\n data.value.IsSelected = !data1.value.IsSelected;\r\n data['controls'].startTime.value = '09:00'\r\n data['controls'].endTime.value = \"18:00\"\r\n data.value.startTime = '09:00'\r\n data.value.endTime = \"18:00\"\r\n\r\n }\r\n else if (data['controls'].IsSelected.value && data['controls'].day.value == data1.value.day) {\r\n data['controls'].IsSelected.value = false;\r\n data.value.IsSelected = false;\r\n data['controls'].startTime.value = null\r\n data['controls'].endTime.value = null\r\n data.value.startTime = null\r\n data.value.endTime = null\r\n }\r\n })\r\n\r\n }\r\n }\r\n });\r\n\r\n\r\n\r\n\r\n\r\n\r\n this.buyTicketForm.patchValue({\r\n shifts: shifts.value\r\n });\r\n }\r\n\r\n checkValidations() {\r\n const ab = this.allocationFormLongBooking.controls[\"longBookingStartDate\"];\r\n let shifts: any;\r\n this.validShiftTime = true;\r\n shifts = this.buyTicketForm.controls[\"shifts\"];\r\n shifts.controls.forEach(item => {\r\n let shift = item;\r\n let isEmptyRecordsExisits: boolean = false;\r\n let days = item.controls[\"shiftDays\"];\r\n days.controls.forEach(day => {\r\n let a = day.controls[\"validDay\"];\r\n a.validator = \"\";\r\n if (day.controls[\"IsSelected\"].value == true) {\r\n if (day.controls[\"startTime\"].value == \"\" || day.controls[\"startTime\"].value == null || day.controls[\"endTime\"].value == null || day.controls[\"endTime\"].value == \"\") {\r\n isEmptyRecordsExisits = true;\r\n }\r\n if (day.controls[\"startTime\"].value != \"\" && day.controls[\"startTime\"].value == day.controls[\"endTime\"].value) {\r\n let a = day.controls[\"validDay\"];\r\n a.validator = \"Starttid och Sluttid kan ej vara samma\";\r\n this.validShiftTime = false;\r\n }\r\n\r\n if (day['controls'].startTime.value != null && day['controls'].startTime.value.length\r\n && day['controls'].endTime.value != null && day['controls'].endTime.value) {\r\n if (!this.validateShiftTime(day['controls'].startTime.value, day['controls'].endTime.value)) {\r\n day['controls'].validTime.value = false;\r\n this.validShiftTime = false;\r\n }\r\n }\r\n }\r\n\r\n })\r\n if (isEmptyRecordsExisits) {\r\n shift.errors = \"Please fill all the selected records\";\r\n this.validShiftTime = false;\r\n\r\n }\r\n })\r\n\r\n ab.setErrors({ passwordMismatch: true });\r\n }\r\n\r\n calculateShiftTime() {\r\n this.shiftTimeDetails = [];\r\n const pad = num => (\"0\" + num).slice(-2);\r\n const testDays = \"sun,mo,tu,we,thu,fri,sat\".split(\",\")\r\n const makeDate = d => `${pad(d.getMonth() + 1)}-${pad(d.getDate())}-${d.getFullYear()}`;\r\n let from1 = new Date(\"2022-10-01T08:08:20.794Z\");\r\n const to1 = new Date(\"2022-10-31T08:08:20.794Z\");\r\n\r\n let sDate = this.allocationFormLongBooking.get('longBookingStartDate').value;\r\n let eDate = this.allocationFormLongBooking.get('longBookingEndDate').value;\r\n let from = new Date(sDate + 'T08:08:20.794Z');\r\n const to = new Date(eDate + 'T08:08:20.794Z');\r\n\r\n\r\n\r\n const aDay = 24 * 60 * 60 * 1000;\r\n const aWeek = 7 * aDay;\r\n const weeks = [];\r\n const testArr = []\r\n for (let i = from.getTime(), n = to.getTime(); i <= n; i += aDay) {\r\n const d = new Date(i);\r\n if (d.getDay() === 1 || weeks.length === 0) { // from OR monday\r\n let b = makeDate(d)\r\n weeks.push([makeDate(d)]);\r\n testArr.push([testDays[d.getDay()]])\r\n }\r\n else if (d.getDay() === 0 || i === n) {\r\n weeks[weeks.length - 1].push(makeDate(d))\r\n testArr[testArr.length - 1].push(testDays[d.getDay()])\r\n }\r\n }\r\n let timeCalculation: TimeCalculation[] = [];\r\n weeks.forEach((week, i) => {\r\n let t: TimeCalculation = new TimeCalculation();\r\n t.weekStart = week[0];\r\n t.weekEnd = week[1];\r\n\r\n let fromdate = new Date(week[0]);\r\n let todate = new Date(week[1]);\r\n\r\n let dateRange = this.getDatesRange(fromdate, todate);\r\n let days: Day[] = [];\r\n\r\n dateRange.forEach(item => {\r\n let d: Day = new Day();\r\n d.day = item;\r\n d.dayName = new Date(item).toLocaleDateString('en-US', { weekday: 'long' });\r\n days.push(d);\r\n })\r\n t.days = [];\r\n t.days = days;\r\n timeCalculation.push(t);\r\n })\r\n let shifts: any[] = [];\r\n if (this.buyTicketForm) {\r\n shifts = this.buyTicketForm['controls'].shifts.value;\r\n }\r\n\r\n // shift wise time calculation \r\n this.uniqueShiftTimeDetails = [];\r\n shifts.forEach((item, i) => {\r\n let selectedShiftDays: any[] = item.shiftDays.filter(x => x.IsSelected == true);\r\n\r\n let shiftTotalTime: number = 0;\r\n selectedShiftDays.forEach(consideringDate => {\r\n const event1 = new Date();\r\n event1.setHours(consideringDate.startTime.split(':')[0]);\r\n event1.setMinutes(consideringDate.startTime.split(':')[1]);\r\n event1.setMilliseconds(1);\r\n\r\n const event2 = new Date();\r\n event2.setHours(consideringDate.endTime.split(':')[0]);\r\n event2.setMinutes(consideringDate.endTime.split(':')[1]);\r\n event2.setMilliseconds(1);\r\n var timeDif = this.getTimeDifference(event1, event2, consideringDate.lunch);\r\n shiftTotalTime = shiftTotalTime + timeDif;\r\n consideringDate.totalTime = timeDif;\r\n })\r\n\r\n let t: ShiftTimeDetails = new ShiftTimeDetails();\r\n t.totalTimeInHours = this.minutesTOHourConvert(shiftTotalTime);\r\n t.id = item.shiftId;\r\n this.uniqueShiftTimeDetails.push(t)\r\n })\r\n\r\n\r\n // shift week wise calculation\r\n let shiftLength = shifts.length;\r\n let shiftNumber = 0;\r\n timeCalculation.forEach((item, i) => {\r\n let days: Day[] = item.days;\r\n item.shift = shifts[shiftNumber];\r\n shiftNumber = shiftNumber + 1;\r\n if (shiftNumber >= shiftLength) {\r\n shiftNumber = 0;\r\n }\r\n let shiftDays: any[] = item.shift.shiftDays;\r\n let selectedShiftDays: any[] = shiftDays.filter(x => x.IsSelected == true);\r\n selectedShiftDays.forEach(selectedShiftDay => {\r\n let consideringDate: Day = new Day();\r\n let dayOfWeek = selectedShiftDay.day;\r\n consideringDate = days.filter(a => a.dayName == dayOfWeek)[0];\r\n if (consideringDate) {\r\n consideringDate.startTime = selectedShiftDay.startTime\r\n consideringDate.endTime = selectedShiftDay.endTime\r\n consideringDate.lunch = selectedShiftDay.lunch;\r\n const event1 = new Date();\r\n event1.setHours(consideringDate.startTime.split(':')[0]);\r\n event1.setMinutes(consideringDate.startTime.split(':')[1]);\r\n event1.setMilliseconds(1);\r\n\r\n const event2 = new Date();\r\n event2.setHours(consideringDate.endTime.split(':')[0]);\r\n event2.setMinutes(consideringDate.endTime.split(':')[1]);\r\n event2.setMilliseconds(1);\r\n var timeDif = this.getTimeDifference(event1, event2, consideringDate.lunch);\r\n consideringDate.totalMins = timeDif;\r\n\r\n let shiftTImeDetailsExists =\r\n this.shiftTimeDetails.find(shift => shift.id == selectedShiftDay.shiftId);\r\n\r\n if (shiftTImeDetailsExists) {\r\n\r\n // week wise total time \r\n shiftTImeDetailsExists.totalTimeInMins = shiftTImeDetailsExists.totalTimeInMins + timeDif;\r\n } else {\r\n let shiftTimeDetail: ShiftTimeDetails = new ShiftTimeDetails();\r\n shiftTimeDetail.id = selectedShiftDay.shiftId;\r\n // week wise total time \r\n shiftTimeDetail.totalTimeInMins = timeDif;\r\n this.shiftTimeDetails.push(shiftTimeDetail)\r\n }\r\n }\r\n })\r\n })\r\n // console.log(\"time-\", timeCalculation);\r\n this.totalShiftTimeCalculated = 0;\r\n this.shiftTimeDetails.forEach((x, index) => {\r\n x.id = index + 1;\r\n this.totalShiftTimeCalculated = this.totalShiftTimeCalculated + x.totalTimeInMins;\r\n x.totalTimeInHours = this.minutesTOHourConvert(x.totalTimeInMins);\r\n })\r\n this.totalShiftTimeCalculatedText = this.minutesTOHourConvert(this.totalShiftTimeCalculated);\r\n // console.log(\"shift time details-\", this.shiftTimeDetails);\r\n\r\n }\r\n\r\n minutesTOHourConvert(n): string {\r\n var num = n;\r\n var hour = \"timmar\"\r\n var minute = \"minutes\"\r\n\r\n var hours = (num / 60);\r\n var rhours = Math.floor(hours);\r\n var minutes = (hours - rhours) * 60;\r\n var rminutes = Math.round(minutes);\r\n if (rminutes > 1) {\r\n minute = \"minuter\";\r\n }\r\n if (rhours > 1) {\r\n hour = \"timmar\"\r\n }\r\n return rhours + hour + \" och \" + rminutes + \" \" + minute;\r\n }\r\n\r\n calculateTimeDifference(time) {\r\n var arr = time.split('-').map(function (str) {\r\n var hours = parseInt(str.substr(0, 2), 10),\r\n minutes = parseInt(str.substr(2, 4), 10);\r\n if (minutes.toString() == Number.NaN.toString()) {\r\n minutes = 0;\r\n }\r\n var val = (hours * 60 + minutes) / 60;\r\n return Math.round((val + Number.EPSILON) * 100) / 100;\r\n\r\n });\r\n return arr[1] - arr[0];\r\n }\r\n\r\n getDatesInRange(startDate, endDate) {\r\n startDate = new Date(startDate);\r\n endDate = new Date(endDate);\r\n\r\n const date = new Date(startDate.getTime());\r\n const dates = [];\r\n\r\n while (date <= endDate) {\r\n\r\n let dObj = date;\r\n dates.push(new Date(date));\r\n date.setDate(date.getDate() + 1);\r\n }\r\n\r\n return dates;\r\n }\r\n\r\n getWeeksDiff(startDate, endDate) {\r\n const msInWeek = 1000 * 60 * 60 * 24 * 7;\r\n return Math.round(Math.abs(endDate - startDate) / msInWeek);\r\n }\r\n\r\n getSelectedClient() {\r\n this.alliocationModel.resourceTypeId = 1;\r\n this.newSelectedUserSub = this.userservice.newSelectedUser.subscribe((data) => {\r\n if (data) {\r\n this.clientId = data.userId\r\n this.userType = data.userType\r\n }\r\n })\r\n this.onResourceTypeChangeSub = this.calendarService.onResourceTypeChange.subscribe((res: number) => {\r\n if (res) {\r\n this.alliocationModel.resourceTypeId = res\r\n }\r\n })\r\n }\r\n\r\n getUserWiseAdminConfigurationDetails(userId: string): void {\r\n this.configService.getUserWiseAdminCOnfigurations(userId).subscribe(data => {\r\n if (data.length) {\r\n\r\n // not in use anymore\r\n\r\n // if (data.find(a => a.title === 'configClientLongBookingPeriod')) {\r\n // this.configClientLongBookingPeriod = data.find(a => a.title === 'configClientLongBookingPeriod').additionalValue1;\r\n // }\r\n\r\n // if (data.find(a => a.title === 'configClientOverrideLongBookingDateRule')) {\r\n // this.configClientOverrideLongBookingDateRule = data.find(a => a.title === 'configClientOverrideLongBookingDateRule').isActive;\r\n // }\r\n }\r\n })\r\n }\r\n\r\n\r\n getAvailableEmployees() {\r\n this.alliocationModel.ClientId = this.clientId;\r\n // this.alliocationModel.resourceTypeId = -1;\r\n this.alliocationModel.IsPartial = false,\r\n this.calendarService.getAvailableEmployees(this.alliocationModel).subscribe((availableEmpList) => {\r\n\r\n if (availableEmpList) {\r\n this.selectedEmployees = [];\r\n this.availableEmployees = availableEmpList;\r\n\r\n if (this.selectedLongBookingId) {\r\n\r\n this.selectedLongBookingForEdit.employees.forEach(emp => {\r\n let employee = this.availableEmployees.find(x => x.value == emp.employeeId);\r\n if (employee) {\r\n this.selectedEmployees.push(employee.value);\r\n }\r\n });\r\n\r\n this.allocationFormLongBooking.patchValue({\r\n employeeIds: this.selectedEmployees\r\n });\r\n }\r\n } else {\r\n\r\n this.availableEmployees = [];\r\n if (this.selectedLongBookingId) {\r\n let bookedEmployees = [];\r\n bookedEmployees = [...this.selectedLongBookingForEdit.employees];\r\n\r\n bookedEmployees.forEach(item => {\r\n let obj = { value: item.employeeId, label: item.name };\r\n this.availableEmployees.push(obj);\r\n });\r\n\r\n bookedEmployees.forEach(emp => {\r\n this.selectedEmployees.push(emp.employeeId);\r\n });\r\n\r\n this.allocationFormLongBooking.patchValue({\r\n employeeIds: this.selectedEmployees\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n getDatesRange(startDate: Date, stopDate: Date): any[] {\r\n var dateArray = new Array();\r\n let currentDate = startDate;\r\n while (currentDate <= stopDate) {\r\n dateArray.push(new Date(currentDate));\r\n currentDate.setDate(currentDate.getDate() + 1);\r\n }\r\n return dateArray;\r\n }\r\n\r\n getMatchedEmployeesForSaveLongBooking() {\r\n let longbookingDto: any;\r\n let proceedDirectly: boolean = true;\r\n longbookingDto = this.getLongBookingDto();\r\n let longBookingStartDate = this.allocationFormLongBooking.get('longBookingStartDate').value;\r\n let longBookingendDate = this.allocationFormLongBooking.get('longBookingEndDate').value;\r\n let dateRange = this.getDatesRange(new Date(longBookingStartDate), new Date(longBookingendDate));\r\n\r\n this.longBookingService.getAvailabilities(longbookingDto).subscribe(data => {\r\n this.employeeNotAvailbleDates.forEach(item => {\r\n let employeeAvailbleDates = data.filter(el => el.userId == item.employee.value);\r\n let employeeNotAvailbleDates: any[] = [];\r\n\r\n dateRange.forEach(date => {\r\n let isExists = employeeAvailbleDates.filter(x =>\r\n this.datepipe.transform(new Date(x.date), 'yyyy-MM-dd') == this.datepipe.transform(new Date(date), 'yyyy-MM-dd'));\r\n if (!isExists.length) {\r\n employeeNotAvailbleDates.push(date);\r\n proceedDirectly = false;\r\n }\r\n })\r\n item.dates = employeeNotAvailbleDates;\r\n });\r\n\r\n // console.log(\"not availble-\", this.employeeNotAvailbleDates)\r\n if (!proceedDirectly) {\r\n ($('#matchedEmployeesForSaveLongBooking') as any).modal('show');\r\n } else if (this.selectedLongBookingId) {\r\n this.updateLongBooking(false);\r\n } else {\r\n this.saveLongBooking(false);\r\n }\r\n });\r\n }\r\n\r\n getLongBookingDto(): any {\r\n this.calculateShiftTime();\r\n let shiftsDays: any[] = [];\r\n let shifts: LongBookingShift[] = [];\r\n let devianDates = this.allocationFormLongBooking.get('avvikandeDates').value;\r\n devianDates = devianDates.filter(item => item.date != null);\r\n let longBookingStartDate = this.allocationFormLongBooking.get('longBookingStartDate').value;\r\n let longBookingendDate = this.allocationFormLongBooking.get('longBookingEndDate').value;\r\n shiftsDays = this.buyTicketForm.get('shifts').value;\r\n let templateId = this.allocationFormLongBooking.get('templateId').value;\r\n\r\n shiftsDays.forEach((item, i) => {\r\n let shift: LongBookingShift = new LongBookingShift();\r\n shift.ShiftDays = [];\r\n item.shiftDays.forEach((shiftDay, j) => {\r\n if (shiftDay.IsSelected && shiftDay.startTime != null && shiftDay.startTime.length) {\r\n let day: LongBookingShiftDay = new LongBookingShiftDay();\r\n day.StartTime = shiftDay.startTime,\r\n day.EndTime = shiftDay.endTime,\r\n day.Lunch = parseInt(shiftDay.lunch),\r\n //day.Date= new Date(),\r\n day.Day = shiftDay.day,\r\n day.Id = shiftDay.id,\r\n //day.LongBookingShiftId= 1\r\n shift.ShiftDays.push(day);\r\n }\r\n });\r\n\r\n shift.Id = item.id,\r\n shift.ShiftNumber = i + 1;\r\n shift.ShiftName = 'Shift ' + (i + 1);\r\n shift.ShiftTotalTime = 12;\r\n shifts.push(shift);\r\n });\r\n\r\n let longBooking: LongBooking = new LongBooking();\r\n let deviantDate: DateDto[] = [];\r\n deviantDate = [{ Date: new Date(), EndTime: new Date().toDateString(), StartTime: new Date().toDateString(), Lunch: 45 }]\r\n\r\n let dates: Date[] = [];\r\n let excludedDays = this.allocationFormLongBooking.get('excludedDays').value;\r\n\r\n if (this.excludedDays) {\r\n this.excludedDays.forEach(item => {\r\n dates.push(item.date);\r\n });\r\n }\r\n\r\n longBooking.excludedDays = dates;\r\n\r\n this.allocationFormLongBooking.patchValue({\r\n devianDates: this.avvikandeDagarDatesDays\r\n });\r\n\r\n this.allocationFormLongBooking.patchValue({\r\n employeeIds: this.selectedEmployees\r\n });\r\n\r\n longBooking.startDate = new Date(longBookingStartDate);\r\n longBooking.endDate = new Date(longBookingendDate);\r\n\r\n let emplList: LongBookingEmployeeModel[] = [];\r\n this.employeeNotAvailbleDates = [];\r\n this.selectedEmployees.forEach(item => {\r\n let emp: LongBookingEmployeeModel = new LongBookingEmployeeModel();\r\n let empDateObj: EmployeeAvailbleDates = new EmployeeAvailbleDates();\r\n let employee = this.availableEmployees.filter(el => el.value == item)[0];\r\n empDateObj.employee = employee;\r\n this.employeeNotAvailbleDates.push(empDateObj);\r\n emp.employeeId = item;\r\n emplList.push(emp);\r\n });\r\n\r\n longBooking.employees = emplList;\r\n longBooking.shifts = shifts;\r\n longBooking.devientDates = devianDates; //deviantDate;\r\n longBooking.isPartialBooking = false;\r\n longBooking.resourceTypeId = 1;\r\n longBooking.clientId = this.clientId;\r\n return longBooking;\r\n }\r\n\r\n saveLongBooking(isInquiry: boolean) {\r\n let longBooking = this.getLongBookingDto();\r\n longBooking.createBookingsWithInquiries = isInquiry;\r\n this.disableCreateButton = true;\r\n this.longbookIsCreating = true;\r\n ($('#matchedEmployeesForSaveLongBooking') as any).modal('show');\r\n\r\n this.longBookingService.saveLongBooking(longBooking).pipe(\r\n catchError((err) => {\r\n this.showNotification('Error', 'Long Booking Creation failed', 'failed');\r\n this.disableCreateButton = false;\r\n this.longbookIsCreating = false;\r\n return EMPTY\r\n })\r\n ).subscribe(data => {\r\n ($('#matchedEmployeesForSaveLongBooking') as any).modal('hide');\r\n this.showNotification('Success', 'Long Booking Created', 'success');\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.clientId, userType: this.userType });\r\n\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.calendarService.emmitUserListAction('refresh');\r\n this.disableCreateButton = false;\r\n this.longbookIsCreating = false;\r\n setTimeout(() => {\r\n ($('#requestAllocationForLongBookinModal') as any).modal('hide');\r\n }, 3000);\r\n location.reload();\r\n });\r\n }\r\n\r\n validateTemplateName(name: string) {\r\n if (name) {\r\n this.disableAddTemplate = false;\r\n } else {\r\n this.disableAddTemplate = true;\r\n }\r\n }\r\n\r\n deleteLongBookingTemplate(deleteItem: LongBookingTemplate) {\r\n this.templateList = this.templateList.filter(item => item.Id != deleteItem.Id);\r\n }\r\n\r\n checkDateRangeIsValid(date: Date): boolean {\r\n let longBookingStartDate = new Date(this.allocationFormLongBooking.get('longBookingStartDate').value);\r\n let longBookingendDate = new Date(this.allocationFormLongBooking.get('longBookingEndDate').value);\r\n\r\n if (date > longBookingStartDate && date < longBookingendDate) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n saveTemplate() {\r\n let newTemplate = new LongBookingTemplate();\r\n let templateName = this.allocationFormLongBooking.get('spareMall').value;\r\n\r\n if (this.templateList.findIndex(item => item.label == templateName) == -1) {\r\n\r\n newTemplate.label = templateName;\r\n newTemplate.Name = templateName;\r\n newTemplate.CreatedDate = new Date();\r\n\r\n let shiftsDays: any[] = [];\r\n let shifts: LongBookingShift[] = [];\r\n\r\n shiftsDays = this.buyTicketForm.get('shifts').value;\r\n let templateId = this.allocationFormLongBooking.get('templateId').value;\r\n\r\n shiftsDays.forEach((item, i) => {\r\n let shift: LongBookingShift = new LongBookingShift();\r\n shift.ShiftDays = [];\r\n\r\n item.shiftDays.forEach((shiftDay, j) => {\r\n if (shiftDay.IsSelected && shiftDay.startTime != null && shiftDay.startTime.length) {\r\n let day: LongBookingShiftDay = new LongBookingShiftDay();\r\n day.StartTime = shiftDay.startTime,\r\n day.EndTime = shiftDay.endTime,\r\n day.Lunch = parseInt(shiftDay.lunch),\r\n day.Day = shiftDay.day,\r\n shift.ShiftDays.push(day);\r\n }\r\n });\r\n\r\n shift.ShiftNumber = i + 1;\r\n shift.ShiftName = 'Shift ' + (i + 1);\r\n shift.ShiftTotalTime = 12;\r\n shifts.push(shift);\r\n });\r\n\r\n newTemplate.Shifts = shifts;\r\n this.templateList.push(newTemplate);\r\n this.allocationFormLongBooking.get('spareMall').setValue('');\r\n this.disableAddTemplate = true;\r\n this.longBookingService.saveLongBookingTemplate(newTemplate).subscribe(data => {\r\n this.templateList = [...data];\r\n this.showNotification('Lyckades', 'Mallen har sparats', 'success');\r\n });\r\n\r\n } else {\r\n this.showNotification('Misslyckades', 'This template already exisits !', 'danger');\r\n }\r\n }\r\n\r\n closeEditTemplateModal() {\r\n ($('#editTemplateForLongBookinModal') as any).modal('hide');\r\n }\r\n\r\n editTemplate() {\r\n this.showNotification('Lyckades', 'Användaren inaktiverad', 'success');\r\n }\r\n\r\n showManageTemplateModal() {\r\n this.templateList.forEach(item => {\r\n item.showEdit = false;\r\n });\r\n ($('#editTemplateForLongBookinModal') as any).modal('show');\r\n\r\n }\r\n\r\n onClickEditTemplate() {\r\n // ($('#editTemplateForLongBookinModal') as any).modal('show');\r\n let longBookingTemplateDto: any;\r\n longBookingTemplateDto = {\r\n Id: this.selectedTemplate.id,\r\n Shifts: this.buyTicketForm.get('shifts').value\r\n }\r\n // longBookingTemplateDto.Id = this.selectedTemplate.id;\r\n // longBookingTemplateDto.Shifts = this.buyTicketForm.get('shifts').value;\r\n this.saveTemplate1();\r\n // this.longBookingService.updateLongBookingTemplate(longBookingTemplateDto).subscribe(data => {\r\n // this.getTemplates();\r\n // })\r\n\r\n }\r\n\r\n saveTemplate1() {\r\n let newTemplate = new LongBookingTemplate();\r\n let templateName = this.allocationFormLongBooking.get('spareMall').value;\r\n\r\n newTemplate.label = templateName;\r\n newTemplate.Id = this.selectedTemplate.id;\r\n newTemplate.CreatedDate = new Date();\r\n\r\n let shiftsDays: any[] = [];\r\n let shifts: LongBookingShift[] = [];\r\n\r\n shiftsDays = this.buyTicketForm.get('shifts').value;\r\n let templateId = this.allocationFormLongBooking.get('templateId').value;\r\n\r\n shiftsDays.forEach((item, i) => {\r\n let shift: LongBookingShift = new LongBookingShift();\r\n shift.ShiftDays = [];\r\n\r\n item.shiftDays.forEach((shiftDay, j) => {\r\n if (shiftDay.IsSelected && shiftDay.startTime != null && shiftDay.startTime.length) {\r\n let day: LongBookingShiftDay = new LongBookingShiftDay();\r\n day.StartTime = shiftDay.startTime,\r\n day.EndTime = shiftDay.endTime,\r\n day.Lunch = parseInt(shiftDay.lunch),\r\n day.Day = shiftDay.day,\r\n shift.ShiftDays.push(day);\r\n }\r\n });\r\n\r\n shift.ShiftNumber = i + 1;\r\n shift.ShiftName = 'Shift ' + (i + 1);\r\n shift.ShiftTotalTime = 12;\r\n shifts.push(shift);\r\n });\r\n\r\n newTemplate.Shifts = shifts;\r\n this.templateList.push(newTemplate);\r\n this.allocationFormLongBooking.get('spareMall').setValue('');\r\n this.disableAddTemplate = true;\r\n this.longBookingService.updateLongBookingTemplate(newTemplate).subscribe(data => {\r\n // this.templateList = [...data];\r\n });\r\n this.showNotification('Lyckades', 'Användaren inaktiverad', 'success');\r\n }\r\n\r\n resetShiftForm(): void {\r\n this.buyTicketForm.reset();\r\n this.buyTicketForm.clearValidators();\r\n this.buyTicketForm = this.fb.group(\r\n {\r\n startDate: [null, [Validators.required]],\r\n endDate: [null, [Validators.required]],\r\n shifts: this.fb.array([this.createShift()], Validators.required),\r\n }\r\n )\r\n this.shiftNumber = 2;\r\n }\r\n\r\n deleteExistingShifts() {\r\n this.shifts.controls = [];\r\n }\r\n\r\n onTemplateListChange(ev) {\r\n this.disableAddTemplate = true;\r\n\r\n this.employeeDropdownClicked = false;\r\n this.templateSelected = false;\r\n let existingShifts = this.buyTicketForm['controls'].shifts.value;\r\n\r\n // dfbdg\r\n if (ev) {\r\n this.allocationFormLongBooking.get('spareMall').setValue(ev.name);\r\n existingShifts.forEach((currentValue, index) => {\r\n this.removeShifts(index);\r\n });\r\n this.deleteExistingShifts();\r\n this.disableAddTemplate = false;\r\n let shiftsDays: any[] = [];\r\n let shiftCount = ev.shifts.length;\r\n for (var i = 0; i < shiftCount; i++) {\r\n this.shifts.push(this.createShift());\r\n }\r\n ev.shifts.forEach(item => {\r\n item.shiftDays.forEach(day => {\r\n day.IsSelected = true;\r\n })\r\n })\r\n\r\n const sorter = {\r\n \"monday\": 1,\r\n \"tuesday\": 2,\r\n \"wednesday\": 3,\r\n \"thursday\": 4,\r\n \"friday\": 5,\r\n \"saturday\": 7,\r\n \"sunday\": 7,\r\n }\r\n\r\n ev.shifts.forEach(item => {\r\n item.shiftDays.sort(function sortByDay(a, b) {\r\n let day1 = a.day.toLowerCase();\r\n let day2 = b.day.toLowerCase();\r\n return sorter[day1] - sorter[day2];\r\n });\r\n item.shiftDays.forEach(day => {\r\n if (day.id > 0) {\r\n day.IsSelected = true;\r\n } else {\r\n day.IsSelected = false;\r\n }\r\n })\r\n })\r\n\r\n this.buyTicketForm.patchValue({\r\n shifts: ev.shifts\r\n });\r\n this.shifts.value.forEach(element => {\r\n element.shiftDays.forEach(day => {\r\n if (!day.id) {\r\n day.IsSelected = false;\r\n }\r\n })\r\n });\r\n shiftsDays = this.buyTicketForm.get('shifts').value;\r\n this.templateSelected = true;\r\n this.calculateShiftTime();\r\n } else {\r\n this.allocationFormLongBooking.get('spareMall').setValue('');\r\n existingShifts.forEach((currentValue, index) => {\r\n this.removeShifts(index);\r\n });\r\n this.deleteExistingShifts();\r\n this.shifts.push(this.createShift());\r\n\r\n //this.resetShiftForm();\r\n if (this.selectedLongBookingId) {\r\n this.buyTicketForm.patchValue({\r\n shifts: this.selectedLongBookingShift\r\n });\r\n }\r\n this.calculateShiftTime();\r\n\r\n }\r\n this.selectedTemplate = ev;\r\n this.setShiftNumber();\r\n }\r\n\r\n getTemplates() {\r\n this.longBookingService.getLongBookingTemplates().subscribe((data) => {\r\n if (data) {\r\n this.templateList = [...data];\r\n let shiftsDays: any[] = [];\r\n shiftsDays = this.buyTicketForm.get('shifts').value;\r\n this.calculateShiftTime();\r\n shiftsDays.forEach(item => {\r\n item.shiftDays.forEach(shiftDay => {\r\n // shiftDay.validTime = false;\r\n })\r\n })\r\n\r\n }\r\n })\r\n }\r\n\r\n onSelectEmployees(ev) {\r\n this.employeeDropdownClicked = true;\r\n }\r\n\r\n removeSelecytedEmployee(emp) {\r\n this.employees.push(emp);\r\n this.selectedEmployees = this.selectedEmployees.filter(item => item !== emp.value)\r\n }\r\n\r\n onStartTimeChange(ev) {\r\n\r\n }\r\n\r\n onEndTimeChange(ev) {\r\n\r\n }\r\n\r\n onUpdateExcludeDate() {\r\n let day = this.allocationFormLongBooking.get('excludedDays').value\r\n this.excludedDays.push({ id: 1, date: day });\r\n this.invalidExcludedDates.push(day);\r\n this.invalidDevientDates.push(day);\r\n\r\n this.allocationFormLongBooking.patchValue({\r\n excludedDays: null\r\n });\r\n }\r\n\r\n addTimePeriod(timeperiod) {\r\n\r\n // this.bookings().push(this.createTimePeriod(timeperiod));\r\n }\r\n addAvvikandeDateFormOnChanges() {\r\n this.disableAvvikandeDagarButton = true;\r\n this.allocationFormLongBooking.get('avvikandeDates').valueChanges.subscribe(changes => {\r\n let item = this.allocationFormLongBooking.get('avvikandeDates') as FormArray;\r\n if (item.value.length && item.valid) {\r\n this.disableAvvikandeDagarButton = false;\r\n } else if (item.value.length && !item.valid) {\r\n this.disableAvvikandeDagarButton = true;\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n addAvvikandeDates() {\r\n this.showAvvikandeDates = true;\r\n let item: any;\r\n item = this.allocationFormLongBooking.get('avvikandeDates') as FormArray;\r\n if (item.value.length && item.valid) {\r\n // if (this.checkDateRangeIsValid(item.value[item.length - 1].date)) {\r\n this.invalidDevientDate = false;\r\n this.invalidDevientDates.push(new Date(item.value[item.value.length - 1].date))\r\n this.invalidExcludedDates.push(new Date(item.value[item.value.length - 1].date))\r\n item.push(this.createAvvikandeDate());\r\n\r\n // } else {\r\n // this.invalidDevientDate = true;\r\n // }\r\n } else if (item.value.length == 0) {\r\n item.push(this.createAvvikandeDate());\r\n }\r\n }\r\n\r\n get avvikandeDates(): FormArray {\r\n return this.allocationFormLongBooking.controls.avvikandeDates;\r\n }\r\n\r\n get getShifts(): FormArray {\r\n return this.buyTicketForm.controls.shifts;\r\n }\r\n\r\n get getEMployees(): FormArray {\r\n let b = this.allocationFormLongBooking.controls.employeeIds;\r\n return this.allocationFormLongBooking.controls.employeeIds;\r\n }\r\n\r\n removeEmployees(index) {\r\n this.getEMployees.removeAt(index);\r\n }\r\n\r\n removeAvvikandeDates(index) {\r\n this.avvikandeDates.removeAt(index);\r\n let removingDate = this.invalidDevientDates[index];\r\n this.invalidDevientDates.splice(index, 1);\r\n this.invalidExcludedDates =\r\n this.invalidExcludedDates.filter(a => this.datepipe.transform(a, 'yyyy-MM-dd') != this.datepipe.transform(removingDate, 'yyyy-MM-dd'));\r\n\r\n }\r\n\r\n removeShifts(index) {\r\n this.getShifts.removeAt(index);\r\n }\r\n addShifts(index) {\r\n // this.getShifts.push();\r\n }\r\n\r\n onDaySelect(day: any, t: any, event: any) {\r\n this.setDefaultTimeForWeekends(day, t);\r\n }\r\n\r\n removeExcludedDate(date: any) {\r\n this.excludedDays = this.excludedDays.filter(item => this.datepipe.transform(item.date, 'yyyy-MM-dd') != this.datepipe.transform(date, 'yyyy-MM-dd'));\r\n this.invalidExcludedDates =\r\n this.invalidExcludedDates.filter(a => this.datepipe.transform(a, 'yyyy-MM-dd') != this.datepipe.transform(date, 'yyyy-MM-dd'));\r\n this.invalidDevientDates =\r\n this.invalidDevientDates.filter(a => this.datepipe.transform(a, 'yyyy-MM-dd') != this.datepipe.transform(date, 'yyyy-MM-dd'));\r\n }\r\n\r\n\r\n bookings(): FormArray {\r\n return this.allocationFormLongBooking.get(\"bookings\") as FormArray\r\n }\r\n\r\n addBooking() {\r\n this.bookings().push(this.createBooking());\r\n }\r\n\r\n\r\n removeBooking(ti) {\r\n this.bookings().removeAt(ti);\r\n }\r\n\r\n\r\n /** batches */\r\n\r\n days(ti): FormArray {\r\n return this.bookings().at(ti).get(\"shiftDays\") as FormArray\r\n }\r\n\r\n addDay(ti: number) {\r\n // this.days(ti).push(this.createBookingDay());\r\n }\r\n\r\n removeDay(ti: number, bi: number) {\r\n this.days(ti).removeAt(ti);\r\n }\r\n\r\n createBooking(id = 0, timePeriodId = null, startTime = null, endTime = null, lunchTime = null, percentage = null, workingDay = null) {\r\n return this.fb.group({\r\n id: [id == null ? 0 : id],\r\n timePeriodId: [timePeriodId == null ? 0 : timePeriodId],\r\n workingDay: [workingDay, Validators.required],\r\n shiftDays: this.fb.array([this.createBookingDay(0, true, null, null, null, null, null)]),\r\n })\r\n }\r\n\r\n createBookingDay(id, isSelect, shiftId?, startTime?, endTime?, lunchTime?, workingDay = null, shiftDays?) {\r\n let isSelected = false;\r\n lunchTime = 0;\r\n if (isSelect) {\r\n lunchTime = 45;\r\n startTime = '09:00';\r\n endTime = '18:00'\r\n }\r\n\r\n if (this.selectedLongBookingId) {\r\n if (startTime && endTime) {\r\n isSelected = true;\r\n }\r\n\r\n return this.fb.group({\r\n id: [id == null ? 0 : id],\r\n IsSelected: isSelected,\r\n shiftId: [shiftId == null ? 0 : shiftId],\r\n startTime: [startTime ? startTime : '', Validators.required],\r\n endTime: [endTime ? endTime : '', Validators.required],\r\n lunch: [0, Validators.required],\r\n validDay: true,\r\n validTime: true,\r\n day: [workingDay, Validators.required],\r\n });\r\n } else {\r\n\r\n\r\n let ba = this.fb.group({\r\n id: [id == null ? 0 : id],\r\n IsSelected: isSelected,\r\n shiftId: [shiftId == null ? 0 : shiftId],\r\n startTime: [startTime ? startTime : '', Validators.required],\r\n endTime: [endTime ? endTime : '', Validators.required],\r\n lunch: [0, Validators.required],\r\n validDay: true,\r\n validTime: true,\r\n day: [workingDay, Validators.required],\r\n }).value;\r\n\r\n return this.fb.group({\r\n id: [id == null ? 0 : id],\r\n IsSelected: isSelect,\r\n shiftId: [shiftId == null ? 0 : shiftId],\r\n startTime: [startTime ? startTime : '', Validators.required],\r\n endTime: [endTime ? endTime : '', Validators.required],\r\n lunch: [lunchTime, Validators.required],\r\n validDay: true,\r\n validTime: true,\r\n day: [workingDay, Validators.required],\r\n });\r\n }\r\n\r\n }\r\n\r\n onSubmit() {\r\n }\r\n\r\n patchValue2() {\r\n\r\n var data = {\r\n test: \"hii\",\r\n bookingDays: [\r\n {\r\n workingDay: 'Sunday',\r\n days: [\r\n\r\n { workingDay: 'Monday', isSelected: true, weekdayStart: '', weekdayEnd: new Date(), weekdayLunch: 45 },\r\n { workingDay: 'Tuesday', isSelected: true, weekdayStart: '', weekdayEnd: new Date(), weekdayLunch: 45 },\r\n { workingDay: 'Wednesday', isSelected: true, weekdayStart: '', weekdayEnd: new Date(), weekdayLunch: 45 },\r\n { workingDay: 'Thursday', isSelected: true, weekdayStart: '', weekdayEnd: new Date(), weekdayLunch: 45 },\r\n { workingDay: 'Friday', isSelected: true, weekdayStart: '', weekdayEnd: new Date(), weekdayLunch: 45 },\r\n { workingDay: 'Saturday', isSelected: false, weekdayStart: '', weekdayEnd: new Date(), weekdayLunch: 0 },\r\n { workingDay: 'Sunday', isSelected: false, weekdayStart: '', weekdayEnd: new Date(), weekdayLunch: 0 },\r\n ]\r\n }\r\n ]\r\n }\r\n\r\n this.clearFormArray();\r\n\r\n data.bookingDays.forEach((t, i) => {\r\n var booking: FormGroup = this.createBooking(0, null, null, null, null, null, t.workingDay);\r\n\r\n this.bookings().push(booking);\r\n\r\n t.days.forEach((d, index) => {\r\n\r\n var day = this.createBookingDay(index, d.isSelected, null, d.weekdayStart, d.weekdayEnd, d.weekdayLunch, d.workingDay);\r\n\r\n //let bookingsArray = (booking.get(\"shiftDays\") as FormArray);\r\n (this.bookings().at(i).get(\"shiftDays\") as FormArray).push(day);\r\n //bookingsArray.push(day);\r\n\r\n // Object.keys(overTimeRulesArray['controls']).forEach((element, index) => {\r\n // const control = overTimeRulesArray.get(element);\r\n\r\n\r\n // }\r\n // });\r\n // b.students.forEach(s => {\r\n // (day.get(\"students\") as FormArray).push(this.newStudent())\r\n // })\r\n\r\n });\r\n });\r\n\r\n data.test = \"hii\"\r\n this.allocationFormLongBooking.patchValue(data);\r\n this.allocationFormLongBooking.patchValue(this.createAvvikandeDate())\r\n }\r\n\r\n onTagChanged(time, data, rowIndex): void {\r\n let validTimePeriod = true;\r\n let startTime = time.get('startTime').value;\r\n let endTime = time.get('endTime').value;\r\n let items = time.get('workingDay').value;\r\n\r\n if (startTime != '' && endTime != '') {\r\n if (data.length != 0) {\r\n let selectedValue = [];\r\n selectedValue.push(data[data.length - 1]); //get the last value selected\r\n let updatedValues = [];\r\n\r\n\r\n if (!validTimePeriod) {\r\n alert(\"Invalid Time Entry : duplicated or overritten time periods occurred.\");\r\n time.get('workingDay').setValue(updatedValues);\r\n if (updatedValues.length == 0) {\r\n //if(isStarting)\r\n time.get('startTime').setValue('');\r\n //else\r\n time.get('endTime').setValue('');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n onExcludedTagChanged(time, data, rowIndex): void {\r\n let validTimePeriod = true;\r\n\r\n let startTime = time.get('startTime').value;\r\n let endTime = time.get('endTime').value;\r\n let items = time.get('excludedDay').value;\r\n\r\n if (startTime != '' && endTime != '') {\r\n if (data.length != 0) {\r\n let selectedValue = [];\r\n selectedValue.push(data[data.length - 1]); //get the last value selected\r\n let updatedValues = [];\r\n\r\n if (!validTimePeriod) {\r\n alert(\"Invalid Time Entry : duplicated or overritten time periods occurred.\");\r\n time.get('excludedDay').setValue(updatedValues);\r\n if (updatedValues.length == 0) {\r\n //if(isStarting)\r\n time.get('startTime').setValue('');\r\n //else\r\n time.get('endTime').setValue('');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n clearFormArray() {\r\n //Angular 8 +\r\n this.bookings().clear();\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n // unsubscribe to ensure no memory leaks\r\n this.onClickMakeLongBookingSub.unsubscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n this.initializeKendoComponents();\r\n $('.k-scheduler-tools').hide();\r\n $('.admin-booking-scheduler .k-scheduler-views').append('
  • Skriv ut
  • ')\r\n $('.admin-booking-scheduler .mobile-export').click(() => {\r\n $('.admin-booking-scheduler .k-pdf').click();\r\n });\r\n if (kendo.support.mobileOS) {\r\n $('.k-sm-date-format').css('font-size', '100%');\r\n }\r\n // this.buyTicketForm.reset();\r\n // this.allocationFormLongBooking.reset();\r\n\r\n }\r\n\r\n validateAvvikandeDateAndExclunderaDate(date: Date, type: string): boolean {\r\n let itemCount = 0;\r\n if (type == 'Avvikande') {\r\n itemCount = this.excludedDays.filter(item => item.date.toLocaleDateString() == date.toLocaleDateString()).length;\r\n } else {\r\n itemCount = this.avvikandeDagarDatesDays.filter(item => item.toLocaleDateString() == date.toLocaleDateString()).length;\r\n }\r\n if (itemCount) {\r\n this.allocationFormLongBooking.patchValue(\r\n {\r\n longBookingStartDate: null,\r\n longBookingendDate: null\r\n }\r\n )\r\n alert('excluded dates and avvikande dates can not be same')\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // onLongBookingFormDateChange(): void {\r\n // this.allocationFormLongBooking.get('longBookingStartDate').valueChanges.subscribe(changes1 => {\r\n // this.onLongBookingDateChange();\r\n // });\r\n // this.allocationFormLongBooking.get('longBookingEndDate').valueChanges.subscribe(changes1 => {\r\n // this.onLongBookingDateChange();\r\n // });\r\n // }\r\n\r\n onLongBookingDateChange(): void {\r\n\r\n\r\n let startDate = this.allocationFormLongBooking.get(\"longBookingStartDate\").value;\r\n let endDate = this.allocationFormLongBooking.get(\"longBookingEndDate\").value;\r\n\r\n this.allocationFormLongBooking.patchValue({\r\n longBookingStartDate: this.datepipe.transform(startDate, 'yyyy-MM-dd'),\r\n });\r\n\r\n this.allocationFormLongBooking.patchValue({\r\n longBookingEndDate: this.datepipe.transform(endDate, 'yyyy-MM-dd'),\r\n });\r\n\r\n if (startDate && endDate) {\r\n this.alliocationModel.endDate = endDate,\r\n this.alliocationModel.startDate = startDate,\r\n // this.getAvailableEmployees();\r\n this.validateStartAndEndDates(startDate, endDate);\r\n }\r\n\r\n this.enableAddShiftButton = false\r\n if (startDate != null && endDate != null) {\r\n this.enableAddShiftButton = true\r\n }\r\n }\r\n\r\n // getNumberOfWeeks(start_date: Date, end_date: Date): boolean {\r\n // const diff_in_milliseconds = end_date.getTime() - start_date.getTime();\r\n // const diff_in_weeks = Math.floor(diff_in_milliseconds / (1000 * 60 * 60 * 24 * 7));\r\n\r\n // if (this.configClientLongBookingPeriod >= diff_in_weeks + 1) {\r\n // const msg = 'Bokning måste vara minst ' + this.configClientLongBookingPeriod + ' vecka lång, start måndag till fredag eller helgen tack!'; //Inquiry adding failed! Please try again.\r\n // this.toastr.warning(msg, 'Warnning!');\r\n // return false\r\n // } else {\r\n // return true;\r\n // }\r\n // }\r\n\r\n initializeKendoComponents(): void {\r\n\r\n let x: Date = new Date();\r\n let y = new Date(x.setDate(x.getDate() + 3));\r\n x.setDate(x.getDate() + 3);\r\n\r\n ($('#kendo-end-date-long-booking') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n // min: new Date(), commented bcoz long booking range delete\r\n change: (val) => {\r\n let x = val.sender._value.getDay();\r\n // if (this.configClientOverrideLongBookingDateRule) {\r\n // this.isWeekend = true;\r\n // x = 1;\r\n // } else {\r\n // this.isWeekend = (val.sender._value.getDay() === 6) || (val.sender._value.getDay() === 0);\r\n\r\n // }\r\n // if (!this.isWeekend) {\r\n // setTimeout(() => {\r\n // this.allocationFormLongBooking.patchValue({\r\n // longBookingEndDate: null\r\n // });\r\n // }, 1);\r\n // return 0;\r\n // } else {\r\n\r\n this.isWeekend = (val.sender._value.getDay() === 6) || (val.sender._value.getDay() === 0);\r\n\r\n const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n const lunch = (this.isWeekend ? 0 : 45);\r\n this.allocationFormLongBooking.patchValue({\r\n longBookingEndDate: this.datepipe.transform(val.sender._value, 'yyyy-MM-dd'),\r\n });\r\n let startDate = this.allocationFormLongBooking.get(\"longBookingStartDate\").value;\r\n let endDate = this.allocationFormLongBooking.get(\"longBookingEndDate\").value;\r\n\r\n if (startDate && endDate) {\r\n this.alliocationModel.startDate = startDate,\r\n this.alliocationModel.endDate = endDate,\r\n // this.getAvailableEmployees();\r\n this.validateStartAndEndDates(startDate, endDate)\r\n }\r\n\r\n this.enableAddShiftButton = false\r\n if (startDate != null && endDate != null) {\r\n this.enableAddShiftButton = true\r\n }\r\n\r\n }\r\n // }\r\n });\r\n\r\n\r\n\r\n ($('#kendo-start-date-long-booking') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n // min: new Date(), commented bcoz this efffects long booking range delete unable to select previous date\r\n change: (val) => {\r\n let x = val.sender._value.getDay();\r\n this.isWeekend = (val.sender._value.getDay() === 6) || (val.sender._value.getDay() === 0);\r\n const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n const lunch = (this.isWeekend ? 0 : 45);\r\n\r\n // if (this.configClientOverrideLongBookingDateRule) {\r\n // this.isWeekend = false;\r\n // x = 1;\r\n // }\r\n\r\n // if ((this.isWeekend || x != 1)) {\r\n // // console.log(\"invalid start date\")\r\n // setTimeout(() => {\r\n // this.allocationFormLongBooking.patchValue({\r\n // longBookingStartDate: null\r\n // });\r\n // }, 1);\r\n // return 0;\r\n // } else {\r\n\r\n this.allocationFormLongBooking.patchValue({\r\n longBookingStartDate: this.datepipe.transform(val.sender._value, 'yyyy-MM-dd'),\r\n });\r\n let startDate = this.allocationFormLongBooking.get(\"longBookingStartDate\").value;\r\n let endDate = this.allocationFormLongBooking.get(\"longBookingEndDate\").value;\r\n if (startDate && endDate) {\r\n this.alliocationModel.endDate = endDate,\r\n this.alliocationModel.startDate = startDate,\r\n // this.getAvailableEmployees();\r\n this.validateStartAndEndDates(startDate, endDate);\r\n }\r\n\r\n this.enableAddShiftButton = false\r\n if (startDate != null && endDate != null) {\r\n this.enableAddShiftButton = true\r\n }\r\n // $('#kendo-wd-start-long-booking').data('kendoTimePicker').value(startTime);\r\n // $('#kendo-end-date-long-booking').data('kendoTimePicker').value(endTime);\r\n }\r\n // }\r\n });\r\n\r\n ($('#avvikandera-date') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n min: new Date(),\r\n change: (val) => {\r\n\r\n if (val.sender._value) {\r\n this.isWeekend = (val.sender._value.getDay() === 6) || (val.sender._value.getDay() === 0);\r\n const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n const lunch = (this.isWeekend ? 0 : 45);\r\n\r\n if (this.validateAvvikandeDateAndExclunderaDate(val.sender._value, 'Avvikande')) {\r\n this.disableAvvikandeDagarButton = false;\r\n this.avvikandeDagarDatesDays.push(val.sender._value)\r\n } else {\r\n this.disableAvvikandeDagarButton = true;\r\n }\r\n val = null;\r\n\r\n // this.allocationFormLongBooking.patchValue({\r\n // startDate: val.sender._value,\r\n // endDate: val.sender._value,\r\n // weekdayStart: startTime,\r\n // weekdayEnd: endTime,\r\n // weekdayLunch: lunch\r\n // });\r\n\r\n // $('#kendo-wd-start-long-booking').data('kendoTimePicker').value(startTime);\r\n // $('#kendo-wd-end-long-booking').data('kendoTimePicker').value(endTime);\r\n }\r\n }\r\n });\r\n\r\n ($('#excludera-date') as any).kendoDatePicker({\r\n format: 'yyyy-MM-dd',\r\n min: new Date(),\r\n change: (val) => {\r\n this.isWeekend = (val.sender._value.getDay() === 6) || (val.sender._value.getDay() === 0);\r\n const startTime = (this.isWeekend ? '10:00' : '09:00');\r\n const endTime = (this.isWeekend ? '15:00' : '18:00');\r\n const lunch = (this.isWeekend ? 0 : 45);\r\n\r\n if (this.validateAvvikandeDateAndExclunderaDate(val.sender._value, 'ExcluderaDate')) {\r\n\r\n if (this.checkDateRangeIsValid(val.sender._value)) {\r\n this.excludedDays.push({ id: 1, date: val.sender._value });\r\n this.isInvalidExcludeDate = false;\r\n val = null;\r\n } else {\r\n this.isInvalidExcludeDate = true;\r\n }\r\n let item = this.fb.array(this.excludedDays);\r\n this.allocationFormLongBooking.patchValue({\r\n excludedDays: null\r\n });\r\n\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n get isValidLongBooking(): boolean {\r\n\r\n if (this.selectedEmployees.length && !this.disableAvvikandeDagarButton && this.validShiftTime) {\r\n return true\r\n }\r\n return false;\r\n }\r\n\r\n validateStartAndEndDates(startDate: any, endDate: any) {\r\n this.validLongBookingDates = false;\r\n if (new Date(startDate).getTime() > new Date(endDate).getTime()) {\r\n let bookingEndDate: any = this.allocationFormLongBooking.controls[\"longBookingEndDate\"];\r\n bookingEndDate.errors = \"Invalid End Date\";\r\n this.disableAvvikandeDagarButton = true;\r\n\r\n } else {\r\n this.avvikandeMinDate = new Date(startDate);\r\n this.avvikandeMaxDate = new Date(endDate);\r\n this.validLongBookingDates = true;\r\n this.disableAvvikandeDagarButton = false;\r\n this.calculateShiftTime();\r\n this.changeExcludedDatesAndDevientDates();\r\n this.getEmployeeList();\r\n\r\n // const validNoOfWeeks = this.getNumberOfWeeks(new Date(startDate), new Date(endDate))\r\n // if (validNoOfWeeks) {\r\n // this.getEmployeeList();\r\n // }\r\n // this.getMatchedEmployeesForSaveLongBooking()\r\n }\r\n }\r\n\r\n changeExcludedDatesAndDevientDates(): void {\r\n let longBookingStartDate = this.allocationFormLongBooking.get('longBookingStartDate').value;\r\n let longBookingendDate = this.allocationFormLongBooking.get('longBookingEndDate').value;\r\n let dateRange: Date[] = [];\r\n dateRange = this.getDatesRange(new Date(longBookingStartDate), new Date(longBookingendDate));\r\n this.excludedDays.forEach(item => {\r\n // let b = this.datepipe.transform(item.date, 'yyyy-MM-dd')\r\n let index = dateRange.findIndex(date => this.datepipe.transform(date, 'yyyy-MM-dd') == this.datepipe.transform(item.date, 'yyyy-MM-dd'));\r\n if (index < 0) {\r\n this.excludedDays = this.excludedDays.filter(ex => ex.date != item.date);\r\n }\r\n })\r\n\r\n let devianDates = this.allocationFormLongBooking.get('avvikandeDates').value;\r\n if (devianDates) {\r\n devianDates.forEach((currentValue, index) => {\r\n let i = dateRange.findIndex(date => this.datepipe.transform(date, 'yyyy-MM-dd') == this.datepipe.transform(currentValue.date, 'yyyy-MM-dd'));\r\n if (i < 0) {\r\n this.removeAvvikandeDates(index);\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n setEndTimeMin(dt, option?) {\r\n if (option == 'tl') {\r\n var endTimepicker = $(\"#kendo-tl-end\").data(\"kendoTimePicker\");\r\n } else if (option == 'tu') {\r\n var endTimepicker = $(\"#kendo-tu-end\").data(\"kendoTimePicker\");\r\n } else if (option == 'au') {\r\n var endTimepicker = $(\"#kendo-au-end\").data(\"kendoTimePicker\");\r\n } else {\r\n var endTimepicker = $(\"#kendo-wd-end\").data(\"kendoTimePicker\");\r\n }\r\n // endTimepicker.min(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate(), (dt.getMinutes() == 45 ? dt.getHours()+1:dt.getHours()), (dt.getMinutes() == 45 ? 0:dt.getMinutes()+15 ), 0));\r\n }\r\n\r\n setStartTimeMax(dt, option?) {\r\n if (option == 'tl') {\r\n var startTimepicker = $(\"#kendo-tl-start\").data(\"kendoTimePicker\");\r\n } else if (option == 'tu') {\r\n var startTimepicker = $(\"#kendo-tu-start\").data(\"kendoTimePicker\");\r\n } else if (option == 'au') {\r\n var startTimepicker = $(\"#kendo-au-start\").data(\"kendoTimePicker\");\r\n } else {\r\n var startTimepicker = $(\"#kendo-wd-start\").data(\"kendoTimePicker\");\r\n }\r\n // startTimepicker.max(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate(), (dt.getMinutes() == 0 ? dt.getHours()-1:dt.getHours()), (dt.getMinutes() == 0 ? 45:dt.getMinutes()-15 ), 0));\r\n }\r\n\r\n onClickMakeLongBooking() {\r\n this.calendarService.emmitOnClickMakeLongBooking(\"reset\");\r\n this.allocationFormLongBooking.reset();\r\n\r\n this.allocationFormLongBooking.patchValue({\r\n excludedDays: null\r\n });\r\n this.clientCommonTimes = []\r\n if (this.isBookingSelected) {\r\n this.enableAddShiftButton = false;\r\n this.excludedDays = [];\r\n this.showEditButton = false;\r\n this.selectedTemplate = null;\r\n let avvikandeDates: any;\r\n avvikandeDates = this.allocationFormLongBooking.get('avvikandeDates').value;\r\n this.allocationFormLongBooking.patchValue({\r\n clientId: this.clientId,\r\n employeeIds: []\r\n });\r\n this.availableEmployees = []\r\n\r\n avvikandeDates.forEach((currentValue, index) => {\r\n this.removeAvvikandeDates(index);\r\n });\r\n let avvikandeDatesItem = this.allocationFormLongBooking.get('avvikandeDates') as FormArray;\r\n\r\n this.resetShiftForm();\r\n\r\n this.allocationFormLongBooking.patchValue({\r\n longBookingStartDate: this.datepipe.transform(null, 'yyyy-MM-dd'),\r\n longBookingEndDate: this.datepipe.transform(null, 'yyyy-MM-dd'),\r\n templateId: null,\r\n avvikandeDates: []\r\n });\r\n this.calendarService.getClientCommonTimes(this.clientId).subscribe((response) => {\r\n this.clientCommonTimes = response;\r\n ($('#requestAllocationForLongBookinModal') as any).modal('show');\r\n })\r\n } else {\r\n ($('#requestAllocationForLongBookinModal') as any).modal('show');\r\n }\r\n }\r\n\r\n setAvailableEmployeesForLongBooking() {\r\n const validator = ($('#allocationFormContentForLongBooking') as any).kendoValidator({\r\n rules: {\r\n matches: function (input) {\r\n if (input.data('greaterthan') == 'kendo-wd-start') {\r\n var startTimeStr = $('#kendo-wd-start').val() as string;\r\n var endTimeStr = $('#kendo-wd-end').val() as string;\r\n\r\n var startWDTime = new Date(2000, 0, 0, parseInt(startTimeStr.slice(0, 2)), parseInt(startTimeStr.slice(3, 5)), 0);\r\n var endWDTime = new Date(2000, 0, 0, parseInt(endTimeStr.slice(0, 2)), parseInt(endTimeStr.slice(3, 5)), 0);\r\n\r\n if (startWDTime < endWDTime) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return true\r\n }\r\n }\r\n },\r\n }).data('kendoValidator');\r\n if (validator.validate()) {\r\n if (!this.IsOnChangeEvent) {\r\n if (this.userType && this.userType === 'Client' && this.clientId != 'all' && this.isBookingSelected) {\r\n this.allocationFormLongBooking.patchValue({\r\n clientId: this.clientId,\r\n isInquiry: !this.isBookingSelected\r\n });\r\n if (this.role == 'Admin') {\r\n this.calendarService.getAvailableEmployees(this.allocationFormLongBooking.value).subscribe((availableEmpList) => {\r\n if (availableEmpList) {\r\n this.availableEmployees = availableEmpList\r\n if (availableEmpList.length > 0) {\r\n var preSystemSelectedEmployee = availableEmpList.find(element => {\r\n return element.isDefaultMatched == true\r\n });\r\n }\r\n if (preSystemSelectedEmployee) {\r\n // setTimeout(() => {\r\n this.allocationFormLongBooking.get(\"employeeId\").setValue(preSystemSelectedEmployee.value);\r\n // }, 200);\r\n }\r\n } else {\r\n this.allocationFormLongBooking.patchValue({\r\n employeeId: '',\r\n });\r\n this.availableEmployees = []\r\n }\r\n ($('#requestAllocationForLongBookinModal') as any).modal('show');\r\n })\r\n } else {\r\n ($('#requestAllocationForLongBookinModal') as any).modal('show');\r\n }\r\n\r\n } else {\r\n ($('#requestAllocationForLongBookinModal') as any).modal('show');\r\n }\r\n }\r\n }\r\n this.IsOnChangeEvent = false;\r\n }\r\n\r\n showNotification(header: string, description: string, type: string) {\r\n\r\n if (type == 'success') {\r\n this.toastr.success(description, header);\r\n } else if (type == 'danger') {\r\n this.toastr.error(description, header);\r\n } else {\r\n this.toastr.warning(description, header);\r\n }\r\n }\r\n\r\n}\r\n\r\nexport class TimeCalculation {\r\n weekStart: any;\r\n weekEnd: any;\r\n shift: any;\r\n days: Day[];\r\n}\r\n\r\nexport class Day {\r\n day: string;\r\n dayName: string;\r\n startTime: any;\r\n endTime: any;\r\n lunch: any;\r\n totalMins: any;\r\n isSelected: boolean;\r\n}\r\n\r\nexport class ShiftTimeDetails {\r\n id: number;\r\n totalTimeInMins: number;\r\n totalTimeInHours: string;\r\n}\r\n","module.exports = \".ngx-pagination li{\\r\\n background-color: white !important;\\r\\n }\\r\\n .ngx-pagination{\\r\\n padding: 0px !important;\\r\\n }\\r\\n .d-flex a {\\r\\n color: #1C1C1C !important;\\r\\n text-decoration: none !important;\\r\\n background-color: transparent !important;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2FsZW5kYXIvbG9uZy1ib29raW5nL2xvbmdib29raW5nLWxpc3QvbG9uZ2Jvb2tpbmctbGlzdC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0lBQ0ksa0NBQWtDO0VBQ3BDO0VBQ0E7SUFDRSx1QkFBdUI7RUFDekI7RUFFQTtJQUNFLHlCQUF5QjtJQUN6QixnQ0FBZ0M7SUFDaEMsd0NBQXdDO0VBQzFDIiwiZmlsZSI6InNyYy9hcHAvY2FsZW5kYXIvbG9uZy1ib29raW5nL2xvbmdib29raW5nLWxpc3QvbG9uZ2Jvb2tpbmctbGlzdC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm5neC1wYWdpbmF0aW9uIGxpe1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcclxuICB9XHJcbiAgLm5neC1wYWdpbmF0aW9ue1xyXG4gICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIFxyXG4gIC5kLWZsZXggYSB7XHJcbiAgICBjb2xvcjogIzFDMUMxQyAhaW1wb3J0YW50O1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG4gIH0iXX0= */\"","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { LongBookingTemplate } from 'src/app/shared/models/long-booking/long-booking-template.model';\r\nimport { ConfigService } from 'src/app/shared/services/config.service';\r\nimport { LongBookingService } from 'src/app/shared/services/domain/booking/long-booking.service';\r\nimport { UserService } from 'src/app/user/user.service';\r\nimport { CalendarService } from '../../calendar.service';\r\n\r\n@Component({\r\n selector: 'long-booking-list',\r\n templateUrl: './longbooking-list.component.html',\r\n styleUrls: ['./longbooking-list.component.css']\r\n})\r\nexport class LongBookingListComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() templateList: LongBookingTemplate[] = [];\r\n @Output() deleteTemplateFunc: EventEmitter = new EventEmitter();\r\n\r\n showEdit: boolean;\r\n selectedIndex: number;\r\n clicked: boolean;\r\n changedValue: boolean;\r\n updatedInProgress: boolean;\r\n userInfoList: any = [];\r\n searchCritera: any = {};\r\n config: any = {};\r\n longBookings:any[]=[];\r\n\r\n bookingModalHeader = \"Make Long Bookings\";\r\n longBookingSelected: boolean;\r\n\r\n\r\n constructor(private calendarService: CalendarService,private longBookingService: LongBookingService, private userService: UserService, private configService: ConfigService) { }\r\n ngOnDestroy(): void {\r\n }\r\n\r\n ngOnInit() {\r\n this.searchCritera.pageNumber = 1;\r\n this.searchCritera.pageSize = 10;\r\n this.searchCritera.orderBy = 'FirstName';\r\n this.searchCritera.isAscending = true;\r\n this.searchCritera.isActive = true;\r\n\r\n this.config = {\r\n itemsPerPage: this.searchCritera.pageSize,\r\n currentPage: this.searchCritera.pageNumber,\r\n totalItems: 10\r\n };\r\n this.getUsers();\r\n this.getLongBookings();\r\n }\r\n\r\n private getUsers(): void {\r\n this.userService.getAll(this.searchCritera).subscribe(\r\n pagedResult => {\r\n this.config.totalItems = pagedResult.totalNumberOfRecords;\r\n this.config.itemsPerPage = 10;\r\n this.config.currentPage = 1;\r\n\r\n this.userInfoList = pagedResult.results;\r\n },\r\n // error => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n editLongBooking(allocation: any) {\r\n this.calendarService.emmitLongBookingDetails(allocation);\r\n ($('#employeeBookingModal') as any).modal('hide');\r\n this.bookingModalHeader = \"Edit Long Booking\";\r\n this.longBookingSelected = true;\r\n setTimeout(() => {\r\n ($('#requestAllocationForLongBookinModalType1') as any).modal('show');\r\n }, 500);\r\n}\r\n\r\n pageChanged(event): void {\r\n this.searchCritera.pageNumber = event;\r\n this.getLongBookings();\r\n this.config.currentPage = event;\r\n }\r\n\r\n getLongBookings(): void {\r\n this.longBookingService.getLongBookings(this.searchCritera).subscribe(data => {\r\n this.longBookings = data.results;\r\n })\r\n }\r\n\r\n close() {\r\n ($('#editTemplateForLongBookinModal') as any).modal('hide');\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NhbGVuZGFyL2xvbmctYm9va2luZy90ZW1wbGF0ZS1saXN0L3RlbXBsYXRlLWxpc3QuY29tcG9uZW50LmNzcyJ9 */\"","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { LongBookingTemplate } from 'src/app/shared/models/long-booking/long-booking-template.model';\r\nimport { LongBookingService } from 'src/app/shared/services/domain/booking/long-booking.service';\r\n\r\n@Component({\r\n selector: 'wfm-template-list',\r\n templateUrl: './template-list.component.html',\r\n styleUrls: ['./template-list.component.css']\r\n})\r\nexport class TemplateListComponent implements OnInit, OnChanges,OnDestroy {\r\n\r\n @Input() templateList: LongBookingTemplate[] = [];\r\n @Output() deleteTemplateFunc: EventEmitter = new EventEmitter();\r\n\r\n showEdit: boolean;\r\n selectedIndex: number;\r\n clicked: boolean;\r\n changedValue:boolean;\r\n updatedInProgress:boolean;\r\n\r\n constructor(private longBookingService: LongBookingService) { }\r\n ngOnDestroy(): void {\r\n }\r\n\r\n ngOnInit() {\r\n this.templateList.forEach(item=> {\r\n item.showEdit = false;\r\n })\r\n }\r\n\r\n onFormClick()\r\n {\r\n this.templateList.forEach(item=> {\r\n item.showEdit = false;\r\n })\r\n }\r\n\r\n saveTemplate(template:any) {\r\n this.updatedInProgress = true;\r\n let selectedTemplate = new LongBookingTemplate();\r\n selectedTemplate.Id = template.id;\r\n selectedTemplate.Name = template.name;\r\n\r\n this.templateList[this.selectedIndex].updatedInProgress = true;\r\n this.longBookingService.updateLongBookingTemplateName(selectedTemplate).subscribe(data => {\r\n this.changedValue = false;\r\n this.updatedInProgress = false;\r\n this.templateList[this.selectedIndex].updatedInProgress = false;\r\n this.templateList[this.selectedIndex].showEdit = false;\r\n });\r\n }\r\n\r\n focusOutFunction(template:LongBookingTemplate) {\r\n if (!this.clicked) {\r\n this.templateList.forEach(el => {\r\n el.showEdit = false;\r\n })\r\n }\r\n this.clicked = false;\r\n if(this.changedValue)\r\n {\r\n this.saveTemplate(template);\r\n }\r\n }\r\n\r\n setDefault()\r\n {\r\n if (!this.clicked) {\r\n this.templateList[this.selectedIndex].showEdit = false;\r\n }\r\n }\r\n\r\n close() {\r\n ($('#editTemplateForLongBookinModal') as any).modal('hide');\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n }\r\n\r\n deleteTemplate(template: LongBookingTemplate) {\r\n this.deleteTemplateFunc.emit(template);\r\n }\r\n\r\n onTextBoxClicked()\r\n {\r\n this.clicked = true;\r\n }\r\n\r\n validateTemplateName(value)\r\n {\r\n this.changedValue = true;\r\n }\r\n\r\n showEditTemplate(index: any) {\r\n this.clicked = true;\r\n this.templateList.forEach(el => {\r\n el.showEdit = false;\r\n el.updatedInProgress = false;\r\n })\r\n this.templateList[index].showEdit = true;\r\n this.selectedIndex = index;\r\n }\r\n\r\n}\r\n","module.exports = \".slot-yellow {\\r\\n background-color: yellow !important;\\r\\n color: red;\\r\\n cursor: pointer;\\r\\n padding-bottom: 6px;\\r\\n}\\r\\n\\r\\n\\r\\n.slot-blue {\\r\\n background-color: #53afea !important;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n\\r\\n.slot-orange {\\r\\n background-color: orange !important;\\r\\n cursor: pointer;\\r\\n padding-bottom: 6px;\\r\\n}\\r\\n\\r\\n\\r\\n.slot-no-check{\\r\\n display: none;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n\\r\\n.form-control-style {\\r\\n height: calc(1.5em + .75rem + 2px)\\r\\n}\\r\\n\\r\\n\\r\\n.resrcgrpbtn {\\r\\n background-color: #1CA368;\\r\\n border-color: #1CA368 !important;\\r\\n color: white;\\r\\n}\\r\\n\\r\\n\\r\\n.btn-light {\\r\\n background-color: #cdd4cf;\\r\\n}\\r\\n\\r\\n\\r\\n.font-style {\\r\\n color: white;\\r\\n}\\r\\n\\r\\n\\r\\n.display-none {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n\\r\\n#btnPharmacistSm {\\r\\n margin-left: 5px;\\r\\n}\\r\\n\\r\\n\\r\\n.user-type-image{\\r\\n margin-top: -1px !important;\\r\\n}\\r\\n\\r\\n\\r\\n.resourceBtn {\\r\\n text-overflow: ellipsis !important;\\r\\n overflow: hidden !important;\\r\\n padding: 0.2rem 0.2rem !important;\\r\\n min-width: 75px !important;\\r\\n font-size: 12px;\\r\\n margin-left: .1em!important;\\r\\n}\\r\\n\\r\\n\\r\\n.resourceBtnMobile {\\r\\n text-overflow: ellipsis !important;\\r\\n overflow: hidden !important;\\r\\n padding: 0.1rem 0.1rem !important;\\r\\n width: 75px !important;\\r\\n font-size: 12px;\\r\\n margin-left: .1em!important;\\r\\n\\r\\n border-bottom-right-radius: .25rem !important;\\r\\n border-top-right-radius: .25rem !important;\\r\\n border-bottom-left-radius: .25rem !important;\\r\\n border-top-left-radius: .25rem !important;\\r\\n}\\r\\n\\r\\n\\r\\n.btn-calendar {\\r\\n min-width:105px !important;\\r\\n width: 105px !important;\\r\\n font-size: 12px;\\r\\n padding: 0.23rem 0.2rem !important;\\r\\n}\\r\\n\\r\\n\\r\\n.resourceBtn.lastResource{\\r\\n border-bottom-right-radius: .25rem !important;\\r\\n border-top-right-radius: .25rem !important;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2FsZW5kYXIvc3VwZXJjbGllbnQtY2FsZW5kYXIvc3VwZXJjbGllbnQtY2FsZW5kYXIuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLG1DQUFtQztFQUNuQyxVQUFVO0VBQ1YsZUFBZTtFQUNmLG1CQUFtQjtBQUNyQjs7O0FBR0E7RUFDRSxvQ0FBb0M7RUFDcEMsZUFBZTtBQUNqQjs7O0FBRUE7RUFDRSxtQ0FBbUM7RUFDbkMsZUFBZTtFQUNmLG1CQUFtQjtBQUNyQjs7O0FBQ0E7RUFDRSxhQUFhO0VBQ2IsZUFBZTtBQUNqQjs7O0FBRUE7RUFDRTtBQUNGOzs7QUFFQTtFQUNFLHlCQUF5QjtFQUN6QixnQ0FBZ0M7RUFDaEMsWUFBWTtBQUNkOzs7QUFFQTtFQUNFLHlCQUF5QjtBQUMzQjs7O0FBRUE7RUFDRSxZQUFZO0FBQ2Q7OztBQUVBO0VBQ0UsYUFBYTtBQUNmOzs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7O0FBRUE7RUFDRSwyQkFBMkI7QUFDN0I7OztBQUdBO0VBQ0Usa0NBQWtDO0VBQ2xDLDJCQUEyQjtFQUMzQixpQ0FBaUM7RUFDakMsMEJBQTBCO0VBQzFCLGVBQWU7RUFDZiwyQkFBMkI7QUFDN0I7OztBQUNBO0VBQ0Usa0NBQWtDO0VBQ2xDLDJCQUEyQjtFQUMzQixpQ0FBaUM7RUFDakMsc0JBQXNCO0VBQ3RCLGVBQWU7RUFDZiwyQkFBMkI7O0VBRTNCLDZDQUE2QztFQUM3QywwQ0FBMEM7RUFDMUMsNENBQTRDO0VBQzVDLHlDQUF5QztBQUMzQzs7O0FBRUE7RUFDRSwwQkFBMEI7RUFDMUIsdUJBQXVCO0VBQ3ZCLGVBQWU7RUFDZixrQ0FBa0M7QUFDcEM7OztBQUVBO0VBQ0UsNkNBQTZDO0VBQzdDLDBDQUEwQztBQUM1QyIsImZpbGUiOiJzcmMvYXBwL2NhbGVuZGFyL3N1cGVyY2xpZW50LWNhbGVuZGFyL3N1cGVyY2xpZW50LWNhbGVuZGFyLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc2xvdC15ZWxsb3cge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHllbGxvdyAhaW1wb3J0YW50O1xyXG4gIGNvbG9yOiByZWQ7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHBhZGRpbmctYm90dG9tOiA2cHg7XHJcbn1cclxuXHJcblxyXG4uc2xvdC1ibHVlIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTNhZmVhICFpbXBvcnRhbnQ7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uc2xvdC1vcmFuZ2Uge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZSAhaW1wb3J0YW50O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBwYWRkaW5nLWJvdHRvbTogNnB4O1xyXG59XHJcbi5zbG90LW5vLWNoZWNre1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uZm9ybS1jb250cm9sLXN0eWxlIHtcclxuICBoZWlnaHQ6IGNhbGMoMS41ZW0gKyAuNzVyZW0gKyAycHgpXHJcbn1cclxuXHJcbi5yZXNyY2dycGJ0biB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFDQTM2ODtcclxuICBib3JkZXItY29sb3I6ICMxQ0EzNjggIWltcG9ydGFudDtcclxuICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi5idG4tbGlnaHQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNjZGQ0Y2Y7XHJcbn1cclxuXHJcbi5mb250LXN0eWxlIHtcclxuICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi5kaXNwbGF5LW5vbmUge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbiNidG5QaGFybWFjaXN0U20ge1xyXG4gIG1hcmdpbi1sZWZ0OiA1cHg7XHJcbn1cclxuXHJcbi51c2VyLXR5cGUtaW1hZ2V7XHJcbiAgbWFyZ2luLXRvcDogLTFweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5cclxuLnJlc291cmNlQnRuIHtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcyAhaW1wb3J0YW50O1xyXG4gIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcclxuICBwYWRkaW5nOiAwLjJyZW0gMC4ycmVtICFpbXBvcnRhbnQ7XHJcbiAgbWluLXdpZHRoOiA3NXB4ICFpbXBvcnRhbnQ7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIG1hcmdpbi1sZWZ0OiAuMWVtIWltcG9ydGFudDtcclxufVxyXG4ucmVzb3VyY2VCdG5Nb2JpbGUge1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzICFpbXBvcnRhbnQ7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xyXG4gIHBhZGRpbmc6IDAuMXJlbSAwLjFyZW0gIWltcG9ydGFudDtcclxuICB3aWR0aDogNzVweCAhaW1wb3J0YW50O1xyXG4gIGZvbnQtc2l6ZTogMTJweDtcclxuICBtYXJnaW4tbGVmdDogLjFlbSFpbXBvcnRhbnQ7XHJcblxyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDtcclxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5idG4tY2FsZW5kYXIge1xyXG4gIG1pbi13aWR0aDoxMDVweCAhaW1wb3J0YW50O1xyXG4gIHdpZHRoOiAxMDVweCAhaW1wb3J0YW50O1xyXG4gIGZvbnQtc2l6ZTogMTJweDtcclxuICBwYWRkaW5nOiAwLjIzcmVtIDAuMnJlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ucmVzb3VyY2VCdG4ubGFzdFJlc291cmNle1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDtcclxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7XHJcbn0iXX0= */\"","import { AlliocationModel } from './../alliocation-model';\r\nimport { AvailabilityInfo } from './../availability-info';\r\nimport { CalendarService } from './../calendar.service';\r\nimport { PartialAvailabilityInfo } from './../partial-availability-info';\r\nimport { Subscription, Subject } from 'rxjs';\r\nimport { GenericValidator } from './../../shared/generic-validator';\r\nimport { AvailabilityUpdateModel } from './../availability-update-model';\r\nimport { IUserInfo } from './../../user/user-info';\r\nimport { BookingInfo } from './../booking-info';\r\nimport { AvailabilityModel } from './../availability-model';\r\nimport { FormControlName, FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { Component, OnInit, AfterViewInit, OnDestroy, ViewChildren, ElementRef } from '@angular/core';\r\nimport { UserService } from 'src/app/user/user.service';\r\nimport { Event, NavigationEnd, NavigationStart, Router } from '@angular/router';\r\nimport { SignalrService } from 'src/app/shared/services/common/signalr.service';\r\ndeclare var kendo: any;\r\n\r\n@Component({\r\n selector: 'wfm-superclient-calendar',\r\n templateUrl: './superclient-calendar.component.html',\r\n styleUrls: ['./superclient-calendar.component.css']\r\n})\r\nexport class SuperclientCalendarComponent implements OnInit,OnDestroy {\r\n\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n userId: string;\r\n userType: string;\r\n availabilityCheckDates: AvailabilityModel[];\r\n errorMessage: string;\r\n allocation: BookingInfo;\r\n visibleTimeLogs = false;\r\n updateAllocationId: number;\r\n swapUserList: IUserInfo[];\r\n allocationForm: FormGroup;\r\n selectedUserFullName: string;\r\n notificationModal: any;\r\n availabilityUpdateModel: AvailabilityUpdateModel;\r\n currentDate = new Date();\r\n isWeekend = true;\r\n displayValidationMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n subscription: Subscription;\r\n selectedPartialAvlDate: string;\r\n partialAvailableListForDay: PartialAvailabilityInfo[];\r\n allocationTryDate: Date;\r\n allocationTryTime: string;\r\n allocationTryLunch: number;\r\n selectedResourceTypeId = 1;\r\n resourceTypes: any[];\r\n isBookingSelected = true;\r\n isBookingFromPartialAvailability: boolean = false;\r\n availabilityData:AvailabilityInfo[];\r\n selectedCalendarMonth: Subject = new Subject();\r\n swedishHolidays:any\r\n holidayLastMonth:string\r\n clientCommonTimes:any[]\r\n allocationHistory: any\r\n sendRequest: any = false\r\n employeeProfileId: Subject= new Subject();\r\n routeSubscription:Subscription\r\n currentURL:any\r\n\r\n\r\n showHistory:boolean = false\r\n isInquiryCalendarSelected:boolean = false\r\n\r\n deviceWidth:number = window.innerWidth;\r\n deviceHight:number = window.innerHeight;\r\n\r\n selectedUserId: Subject = new Subject()\r\n selectedUserType: Subject = new Subject()\r\n userListAction: Subject = new Subject()\r\n selectedDate: Date = new Date(new Date().setHours(0,0,0,0));\r\n\r\n\r\n lunchTimeList:any[]=[\r\n { value: 0, label: '0' },\r\n { value: 15, label: '15' },\r\n { value: 20, label: '20' },\r\n { value: 30, label: '30' },\r\n { value: 45, label: '45' },\r\n { value: 60, label: '60' },\r\n ]\r\n constructor(private fb: FormBuilder, private calendarService: CalendarService, private signalRService: SignalrService, private elementRef: ElementRef, private router:Router, private userService:UserService) {\r\n this.validationMessages = {\r\n month: {\r\n required: 'month is required'\r\n },\r\n startDate: {\r\n required: 'start is required'\r\n },\r\n endDate: {\r\n required: 'end is required'\r\n }\r\n };\r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n\r\n this.subscription = this.signalRService.receiveCalendarUpdates().subscribe(st => {\r\n if (st) {\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n scheduler.refresh();\r\n }\r\n });\r\n\r\n this.routeSubscription = this.router.events.subscribe((event: Event) => {\r\n this.currentURL = ''\r\n if (event instanceof NavigationStart) {\r\n this.currentURL = ''\r\n }\r\n if (event instanceof NavigationEnd) {\r\n this.currentURL = event.url.split('?')[0]\r\n\r\n if (\r\n (this.currentURL == '/users/calendar/inquiries') ||\r\n (this.currentURL == '/clients/calendar/inquiries') ||\r\n (this.currentURL == '/bookings/inquiries')\r\n ) {\r\n this.isInquiryCalendarSelected = true\r\n } else {\r\n this.isInquiryCalendarSelected = false\r\n }\r\n }\r\n }); \r\n\r\n this.resourceTypes = [];\r\n }\r\n\r\n ngOnDestroy() {\r\n // unsubscribe to ensure no memory leaks\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n ngOnInit() {\r\n kendo.culture('sv-SE');\r\n this.currentDate.setHours(0, 0, 0, 0);\r\n this.allocation = {\r\n isExpAreaValidationFail:null,\r\n id: 0,\r\n title: '',\r\n sDate: '',\r\n eDate: '',\r\n lunch: 0,\r\n isPastDate: false,\r\n bookingTotal: 0,\r\n start: new Date(),\r\n end: new Date(),\r\n empName: '',\r\n empImage: '',\r\n empJobCategoryId: 0,\r\n empJobCategory: '',\r\n clientName: '',\r\n clientContactName: '',\r\n clientAddress: '',\r\n clientPhone: '',\r\n clientEmail: '',\r\n isTimeLogged: false,\r\n timeLogStartTime: '',\r\n timeLogEndTime: '',\r\n timeLogLunch: 0,\r\n timeLogTotal: 0,\r\n colorClass: 'slot-blue',\r\n timeLoggedClass: 'slot-no-check',\r\n empImagePath: '',\r\n clientImagePath: '',\r\n resourceTypeId: 1,\r\n resourceTypeClass: '',\r\n isInquiry:null,\r\n clientId:'',\r\n resourceTypeIconLetter:''\r\n };\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.userService.newSelectedUser.subscribe((data)=>{\r\n this.loadCalendar(data);\r\n })\r\n\r\n this.getCurrentConfigData()\r\n }\r\n\r\n\r\n getJsonDateFormat(date:Date):string{\r\n return date.getFullYear()+''+(date.getMonth()+1>9? date.getMonth()+1:'0'+(date.getMonth()+1))\r\n }\r\n\r\n loadCalendar(data: any): void {\r\n // if (data == null || this.userId === data.userId) {\r\n // this.userId = 'all';\r\n // this.selectedUserFullName = null;\r\n // // $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n // // $('.k-scheduler-table td').removeClass('cell-celected');\r\n // this.selectedResourceTypeId = null;\r\n // // this.userService.emmitSelectedUserId({id:this.userId,type:'all'})\r\n // this.selectedUserType.next('all')\r\n // } else {\r\n // debugger \r\n // this.userId = data.userId;\r\n // this.selectedUserFullName = data.fullName;\r\n // this.userType = data.userType;\r\n // // this.userService.emmitSelectedUserId({id:this.userId,type:this.userType})\r\n // this.selectedUserType.next(data.userType)\r\n // }\r\n\r\n //// this.userId = data.userId;\r\n //// if (!this.isInquiryCalendarSelected) {\r\n //// const scheduler = $('#scheduler').data('kendoScheduler');\r\n //// scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n //// scheduler.refresh();\r\n //// }\r\n\r\n // Values when tab select\r\n // 1 - Phamacists\r\n // 2 - Cashiers\r\n // null - Clients\r\n\r\n // Userdata when user selects\r\n // { \r\n // userId,\r\n // userType,\r\n // fullName,\r\n // actualHoursBooked,\r\n // totalCalculatedHours\r\n // }\r\n var reloadRequired = true\r\n if (data != null) {\r\n // if (data == 1 || data == 2 || this.userId === data.userId) {\r\n if (typeof (data) == \"number\" || this.userId === data.userId) {\r\n this.userId = 'all';\r\n this.selectedUserFullName = null;\r\n this.selectedUserType.next('all')\r\n } else {\r\n // Uncomment following block to reset resource type to phamacists on user select\r\n if (data.userType == \"Client\" && this.userId == 'all') {\r\n this.selectedResourceTypeId = 1;\r\n // this.resourceTypeForAvalReq = '1';\r\n }\r\n\r\n this.userId = data.userId;\r\n this.selectedUserFullName = data.fullName;\r\n this.userType = data.userType;\r\n\r\n // this.userservice.emmitSelectedUserId({ id: this.userId, type: this.userType })\r\n this.selectedUserType.next(data.userType)\r\n }\r\n } else {\r\n this.userId = 'all';\r\n this.selectedUserFullName = null;\r\n this.selectedUserType.next('all')\r\n }\r\n }\r\n\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'booking') {\r\n this.notificationModal.header = 'Bokning misslyckades';\r\n this.notificationModal.description = 'Tyvärr så kunde vi inte hitta en tillgänglig resurs för det valda datumet';\r\n this.notificationModal.type = 'danger';\r\n } else if (flow === 'swap') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Byte av resurs genomfördes';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Byte av resurs misslyckades! Kontrollera anställdas tillgänglighet';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'remove') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Bokningen raderades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Borttaggning av bokningen misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'availability') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tillgänglighet uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tillgänglighet misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'timelog') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tidrapportering uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'TUppdatering av tidrapportering misslyckades! Var god och försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'partialavl') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Tillgänglighet uppdaterades';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tillgänglighet misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'assign') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';// Success\r\n this.notificationModal.description = 'Den anställde tilldelades förfrågan och e-post skickades. '; //'Employee was assigned successfully for inquiry and email sent.';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; //'Failed';\r\n this.notificationModal.description = 'Tilldelning av passet till den anställda misslyckades. Vänligen försök igen. '; //'Employee assign process failed! Please try again.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n } else if (flow === 'inquiry') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';// Success\r\n this.notificationModal.description = 'Inquiry added successfully!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; //'Failed';\r\n this.notificationModal.description = 'Inquiry adding failed! Please try again.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n\r\n ($('#superClientNotificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#superClientNotificationModal') as any).modal('hide');\r\n }, 3000);\r\n }\r\n\r\n\r\n scrollToHour(hour): void {\r\n const time = new Date();\r\n time.setHours(hour);\r\n time.setMinutes(0);\r\n time.setSeconds(0);\r\n time.setMilliseconds(0);\r\n\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n const contentDiv = scheduler.element.find('div.k-scheduler-content');\r\n const rows = contentDiv.find('tr');\r\n\r\n for (let i = 0; i < rows.length; i++) {\r\n const element = $(rows[i]);\r\n const slot = scheduler.slotByElement(element);\r\n\r\n const slotTime = kendo.toString(slot.startDate, 'HH:mm');\r\n const targetTime = kendo.toString(time, 'HH:mm');\r\n\r\n if (targetTime === slotTime) {\r\n contentDiv.scrollTop(0);\r\n\r\n const elementTop = element.offset().top;\r\n const containerTop = contentDiv.offset().top;\r\n\r\n contentDiv.scrollTop( elementTop - containerTop );\r\n }\r\n }\r\n }\r\n\r\n bookFromPartialAvailability(partialAvailabilityData: PartialAvailabilityInfo): void {\r\n ($('#superClientPartialAvailabilityListModal') as any).modal('hide');\r\n this.allocationForm.patchValue({\r\n startDate: this.allocationTryDate,\r\n endDate: this.allocationTryDate,\r\n weekdayStart: partialAvailabilityData.fromTime,\r\n weekdayEnd: partialAvailabilityData.toTime,\r\n weekdayLunch: this.allocationTryLunch,\r\n });\r\n\r\n $('#kendo-end-date').data('kendoDatePicker').value(this.allocationTryDate);\r\n $('#kendo-end-date').data('kendoDatePicker').enable(false);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(partialAvailabilityData.fromTime);\r\n $('#kendo-wd-start').data('kendoTimePicker').enable(false);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(partialAvailabilityData.toTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').enable(false);\r\n\r\n this.isBookingFromPartialAvailability = true;\r\n ($('#superClientrequestAllocationModal') as any).modal('show');\r\n }\r\n\r\n onResourceTypeChange(resourceTypeId: number): void {\r\n\r\n this.calendarService.emmitOnResourceTypeChange(resourceTypeId);\r\n //if (resourceTypeId!=='3') {\r\n this.selectedResourceTypeId = resourceTypeId;\r\n //}\r\n\r\n // this.selectedResourceTypeId = resourceTypeId;\r\n // this.allocationForm.patchValue({\r\n // resourceTypeId: resourceTypeId\r\n // });\r\n // this.availabilityCheckDates.forEach(x => x.resourceTypeId = resourceTypeId);\r\n // const scheduler = $('#scheduler').data('kendoScheduler');\r\n // scheduler.dataSource.read({ userId: this.userId, userType: this.userType });\r\n }\r\n\r\n\r\n onCalendarChange(calendar:string): void {\r\n if (calendar==='inquiry') {\r\n $('.btn-calendar-booking').removeClass('btn-calendar-active')\r\n $('.btn-calendar-booking').addClass('btn-calendar-inactive')\r\n $('.btn-calendar-inquiry').removeClass('btn-calendar-inactive')\r\n $('.btn-calendar-inquiry').addClass('btn-calendar-active')\r\n this.isInquiryCalendarSelected=true\r\n } else {\r\n $('.btn-calendar-inquiry').removeClass('btn-calendar-active')\r\n $('.btn-calendar-inquiry').addClass('btn-calendar-inactive')\r\n $('.btn-calendar-booking').removeClass('btn-calendar-inactive')\r\n $('.btn-calendar-booking').addClass('btn-calendar-active')\r\n const scheduler = $('#scheduler').data('kendoScheduler');\r\n // scheduler.refresh();\r\n // this.schedulerDataBound(scheduler);\r\n // setTimeout(() => {\r\n // this.schedulerDataBound(scheduler);\r\n // }, 700);\r\n this.isInquiryCalendarSelected=false\r\n this.selectedResourceTypeId = 1;\r\n }\r\n }\r\n\r\n onMobileTabSelect(event){\r\n if (event=='userlist') {\r\n $('#myTab').css('display', 'flex')\r\n $('#myTabContent').css('display', 'block')\r\n } else if (event=='bookings') {\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n $('.btn-calendar-booking').click()\r\n } else if (event=='inquiry') {\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n $('.btn-calendar-inquiry').click()\r\n }\r\n }\r\n\r\n onDrawerClose(event){\r\n if (event=='userlist') {\r\n $('#myTab').css('display', 'flex')\r\n $('#myTabContent').css('display', 'block')\r\n } else if (event=='bookings') {\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n } else if (event=='inquiry') {\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n }\r\n }\r\n\r\n setCommonTimes(item):void {\r\n this.allocationForm.patchValue({\r\n weekdayStart: item.startTime,\r\n weekdayEnd: item.endTime,\r\n weekdayLunch: item.lunch,\r\n });\r\n // $('#kendo-start-date').data('kendoDatePicker').value(eventStartDate);\r\n // $('#kendo-end-date').data('kendoDatePicker').value(item.endDate);\r\n $('#kendo-wd-start').data('kendoTimePicker').value(item.startTime);\r\n $('#kendo-wd-end').data('kendoTimePicker').value(item.endTime);\r\n }\r\n\r\n openProfileViewModal(event){\r\n this.employeeProfileId.next(event);\r\n ($('#employeeProfileViewModal') as any).modal('show');\r\n }\r\n\r\n addInquiryOnpartial(allocationData) {\r\n this.allocationForm.patchValue({\r\n clientId: this.userId,\r\n isInquiry: true\r\n });\r\n\r\n this.calendarService.requestSuperClientAllocations(this.allocationForm.value).subscribe(\r\n (allocationInfo: BookingInfo) => {\r\n if (allocationInfo != null) {\r\n ($('#superClientPartialAvailabilityListModal') as any).modal('hide');\r\n this.signalRService.broadcastCalendarUpdates();\r\n this.setNotificationData('inquiry', true);\r\n this.allocationForm.patchValue({\r\n startDate: '',\r\n endDate: '',\r\n weekdayStart: '',\r\n weekdayEnd: '',\r\n weekdayLunch: 0,\r\n employeeId: ''\r\n });\r\n this.userListAction.next('refresh');\r\n } else {\r\n this.setNotificationData('inquiry', false);\r\n }\r\n $('.k-scheduler-table td').removeClass('cell-celected');\r\n // this.onAllocationRequestComplete(allocationInfo, this.allocationForm.value);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n onClickMakeBooking(){\r\n this.calendarService.emmitOnClickMakeBooking();\r\n // this.clientCommonTimes = []\r\n // if (this.isBookingSelected) {\r\n // this.calendarService.getClientCommonTimes(this.userId).subscribe((response) => {\r\n // this.clientCommonTimes = response;\r\n // ($('#superClientrequestAllocationModal') as any).modal('show');\r\n // })\r\n // }else{\r\n // ($('#superClientrequestAllocationModal') as any).modal('show');\r\n // }\r\n }\r\n onViewHistoryBtnClick(allocationId: number) {\r\n this.toggleSendRequest();\r\n if (this.sendRequest) {\r\n this.calendarService.getAllocationHistory(allocationId).subscribe(\r\n (res) => {\r\n this.allocationHistory = res;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n \r\n }\r\n toggleSendRequest(){\r\n this.sendRequest = !this.sendRequest\r\n }\r\n\r\n getCurrentConfigData(): void {\r\n this.userService.getConfigData().subscribe((res) => {\r\n this.resourceTypes = res.resourceTypes \r\n \r\n })\r\n }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbmZpZy9ib29raW5nLXVuaXQvYm9va2luZy11bml0LmNvbXBvbmVudC5jc3MifQ== */\"","\r\nimport { Component, OnInit, ElementRef, ViewChildren, AfterViewInit, Input, forwardRef, EventEmitter, Output } from '@angular/core';\r\nimport { FormArray, FormGroup, FormBuilder, Validators, FormControlName, FormControl, AbstractControl, \r\n NG_VALUE_ACCESSOR, NG_VALIDATORS, ControlValueAccessor, Validator, ValidationErrors } from '@angular/forms';\r\nimport { escapeSelector } from 'jquery';\r\n// import { UserService } from '../user/user.service';\r\n// import { FileUploadService } from '../config/file-upload/file-upload.service';\r\nimport { ConfigService } from '../../shared/services/config.service';\r\nimport { Observable, merge, fromEvent, Subscription, timer } from 'rxjs';\r\nimport { debounceTime, switchMap, map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'wfm-booking-unit',\r\n templateUrl: './booking-unit.component.html',\r\n styleUrls: ['./booking-unit.component.css']\r\n})\r\nexport class BookingUnitComponent implements OnInit {\r\n\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n public bookingUnitForm: FormGroup;\r\n\r\n notificationModal :any;\r\n isSubmitInvalid:boolean = false;\r\n\r\n constructor( private fbp: FormBuilder, private configService: ConfigService ) { }\r\n\r\n ngOnInit() {\r\n this.bookingUnitForm = this.fbp.group({\r\n bookingUnits: this.fbp.array([this.createBookingUnit()]),\r\n })\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.getBookingUnits();\r\n }\r\n\r\n createBookingUnit(id=0, name = null)\r\n {\r\n return this.fbp.group({\r\n id:[id==null ? 0 : id],\r\n name: [name ? name : '', Validators.required]\r\n })\r\n }\r\n get bookingUnits() : FormArray {\r\n return this.bookingUnitForm.get('bookingUnits') as FormArray;\r\n }\r\n \r\n AddBookingUnit(bookingUnit)\r\n { \r\n this.bookingUnits.push(this.createBookingUnit(bookingUnit));\r\n }\r\n \r\n removeBookingUnit(index)\r\n { \r\n this.bookingUnits.removeAt(index);\r\n }\r\n \r\n validateFormFields() {\r\n const bookingUnitsArray = this.bookingUnitForm.get('bookingUnits') as FormArray;\r\n \r\n Object.keys(bookingUnitsArray['controls']).forEach(element => {\r\n const control = bookingUnitsArray.get(element);\r\n Object.keys(control['controls']).forEach(field => {\r\n const controlItem = control.get(field);\r\n if (controlItem instanceof FormControl) {\r\n controlItem.markAsTouched({ onlySelf: true });\r\n }\r\n });\r\n });\r\n }\r\n \r\n save() {\r\n this.validateFormFields();\r\n if (this.bookingUnitForm.valid) {\r\n this.configService.saveBookingUnit(this.bookingUnitForm.value).subscribe(\r\n //() => this.onSaveComplete('update', true, '0'),\r\n (res) => {\r\n //console.log(res);\r\n this.setNotificationData('update', res);\r\n //this.getBookingUnits();\r\n });\r\n }else{\r\n this.isSubmitInvalid = true\r\n } \r\n }\r\n \r\n cancel()\r\n {\r\n const bookingUnitsArray = this.bookingUnitForm.get('bookingUnits') as FormArray;\r\n \r\n Object.keys(bookingUnitsArray['controls']).forEach(element => {\r\n const control = bookingUnitsArray.get(element);\r\n Object.keys(control['controls']).forEach(field => {\r\n const controlItem = control.get(field);\r\n if (controlItem instanceof FormControl) {\r\n controlItem.markAsUntouched({ onlySelf: false });\r\n }\r\n });\r\n });\r\n }\r\n \r\n getBookingUnits() {\r\n this.configService.getBookingUnits().subscribe((res) => {\r\n\r\n const bookingUnits = this.fbp.array([]);\r\n if(res.bookingUnits.length > 0)\r\n {\r\n res.bookingUnits.forEach(item => {\r\n var bookingUnit = this.createBookingUnit(item.id, item.name)\r\n bookingUnits.push(bookingUnit);\r\n });\r\n }\r\n else{\r\n bookingUnits.push(this.createBookingUnit());\r\n }\r\n\r\n this.bookingUnitForm.setControl('bookingUnits', bookingUnits);\r\n })\r\n }\r\n \r\n setNotificationData(flow, status): void {\r\n\r\n if (flow === 'update') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Uppdateringen av bokningsenheten lyckades!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av bokningsenhet misslyckades! Var god försök igen.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n \r\n //console.log(this.notificationModal);\r\n }\r\n ($('#bookingUnitNotificationModal') as any).modal('show');\r\n \r\n setTimeout(() => {\r\n ($('#bookingUnitNotificationModal') as any).modal('hide');\r\n }, 1000);\r\n }\r\n}\r\n","module.exports = \".form-group {\\r\\n margin-bottom: 10px !important;\\r\\n}\\r\\n\\r\\n.form-control.ng-touched.ng-invalid{\\r\\n border: 1px solid #d42f2f !important;\\r\\n }\\r\\n\\r\\nlabel{\\r\\n margin-top: .3rem;\\r\\n }\\r\\n\\r\\n.square {\\r\\n height: 30px;\\r\\n width: 30px;\\r\\n background-color: #555;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29uZmlnL2NvbmZpZy5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0lBQ0ksOEJBQThCO0FBQ2xDOztBQUVBO0lBQ0ksb0NBQW9DO0VBQ3RDOztBQUVBO0lBQ0UsaUJBQWlCO0VBQ25COztBQUNBO0lBQ0UsWUFBWTtJQUNaLFdBQVc7SUFDWCxzQkFBc0I7RUFDeEIiLCJmaWxlIjoic3JjL2FwcC9jb25maWcvY29uZmlnLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1ncm91cCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5mb3JtLWNvbnRyb2wubmctdG91Y2hlZC5uZy1pbnZhbGlke1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2Q0MmYyZiAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgbGFiZWx7XHJcbiAgICBtYXJnaW4tdG9wOiAuM3JlbTtcclxuICB9XHJcbiAgLnNxdWFyZSB7XHJcbiAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICB3aWR0aDogMzBweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTU7XHJcbiAgfSJdfQ== */\"","import { Component, OnInit, ElementRef, ViewChildren, AfterViewInit } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators, FormControlName, AbstractControl } from '@angular/forms';\r\nimport { data, escapeSelector } from 'jquery';\r\nimport { UserService } from '../user/user.service';\r\nimport { FileUploadService } from '../config/file-upload/file-upload.service';\r\nimport { Observable, merge, fromEvent, Subscription, timer } from 'rxjs';\r\nimport { debounceTime, switchMap, map } from 'rxjs/operators';\r\nimport { IUserInfo } from '../user/user-info';\r\nimport { ImageCroppedEvent } from 'ngx-image-cropper';\r\n\r\nimport { ConfigService } from '../shared/services/config.service';\r\n//import { settings } from 'cluster';\r\n\r\n/**\r\n * \r\n * {\r\n \"resourceTypes\": [\r\n {\r\n \"code\": \"Client\",\r\n \"name\": \"Client\",\r\n \"displayName\": \"SE_Client\"\r\n },\r\n {\r\n \"code\": \"Technician\",\r\n \"name\": \"Technician\",\r\n \"displayName\": \"SE_Technician\"\r\n }\r\n ],\r\n \"matchingAlgorithnmFields\": [\r\n {\r\n \"fieldName\": \"IT System\",\r\n \"isConsidered\": \"true\"\r\n }\r\n ]\r\n}\r\n */\r\n\r\n@Component({\r\n selector: 'wfm-config',\r\n templateUrl: './config.component.html',\r\n styleUrls: ['./config.component.css']\r\n})\r\nexport class ConfigComponent implements OnInit {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n\r\n configForm: FormGroup;\r\n notificationModal: any;\r\n isSubmitInvalid: boolean = false\r\n\r\n errorMessage: string;\r\n userInfo: IUserInfo = {} as IUserInfo;\r\n private sub: Subscription;\r\n previewUrl: any;\r\n userImage = '';\r\n fileData: File = null;\r\n updateUserId: string;\r\n isResetPassword = false;\r\n isEditCounty: boolean = false\r\n selectedCounty: any\r\n imageChangedEvent: any = '';\r\n croppedImage: any = '';\r\n cropperVisible: boolean;\r\n holdMunicipalityChange: boolean = false;\r\n isAllMunicipalitySelected: boolean = false;\r\n\r\n imageType: string;\r\n\r\n configDisableExperienceAreas: boolean;\r\n configDisableUpdatingEmpAvailability: boolean;\r\n configClientIsAbleToSelectTheEmployeesInBooking: boolean;\r\n\r\n constructor(\r\n private fb: FormBuilder, private userService: UserService, private uploadService: FileUploadService,\r\n private configService: ConfigService\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.configForm = this.fb.group({\r\n resourceTypes: this.fb.array([this.createResource()]),\r\n matchingAlgorithnmFields: this.fb.array([this.createMatchingField()])\r\n })\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.getCurrentConfigData();\r\n this.getAdminConfigurationDetails();\r\n }\r\n\r\n changeColor(event, criteria:FormGroup,index:number) {\r\n criteria.value.colorCode = event;\r\n // const x = this.configForm.value.resourceTypes[index];\r\n this.configForm.value.resourceTypes[index] = criteria.value;\r\n this.configForm.patchValue(this.configForm.value)\r\n\r\n console.log(\"event-\", criteria)\r\n }\r\n\r\n saveAdminConfigurationDetails(): void {\r\n let request: any[] = [];\r\n request = [\r\n {\r\n title: 'configDisableExperienceAreas', isActive: this.configDisableExperienceAreas\r\n },\r\n {\r\n title: 'configDisableUpdatingEmpAvailability', isActive: this.configDisableUpdatingEmpAvailability\r\n },\r\n {\r\n title: 'configClientIsAbleToSelectTheEmployeesInBooking', isActive: this.configClientIsAbleToSelectTheEmployeesInBooking\r\n }\r\n ];\r\n this.configService.updateAdminCOnfigurations(request).subscribe(data => {\r\n this.setNotificationData('update', true);\r\n\r\n })\r\n }\r\n\r\n getAdminConfigurationDetails(): void {\r\n this.configService.getAdminCOnfigurations().subscribe(data => {\r\n if (data) {\r\n this.configDisableExperienceAreas = data.find(a => a.title === 'configDisableExperienceAreas').isActive;\r\n this.configDisableUpdatingEmpAvailability = data.find(a => a.title === 'configDisableUpdatingEmpAvailability').isActive;\r\n this.configClientIsAbleToSelectTheEmployeesInBooking = data.find(a => a.title === 'configClientIsAbleToSelectTheEmployeesInBooking').isActive;\r\n\r\n }\r\n })\r\n }\r\n\r\n createResource(id = 0, code = null, name = null, displayName = null, displayLetter = null, colorCode = null) {\r\n return this.fb.group({\r\n id: [id == null ? 0 : id],\r\n code: [code ? code : ''],\r\n colorCode: [colorCode? colorCode: ''],\r\n displayLetter: [displayLetter ? displayLetter : '', Validators.required],\r\n name: [name ? name : '', Validators.required],\r\n displayName: [displayName ? displayName : '', Validators.required]\r\n })\r\n }\r\n createMatchingField(id = 0, fieldName = null, isConsidered = null) {\r\n return this.fb.group({\r\n id: [id],\r\n fieldName: [fieldName ? fieldName : ''],\r\n isConsidered: [isConsidered ? true : false]\r\n })\r\n }\r\n\r\n get resourceTypes(): FormArray {\r\n return this.configForm.get('resourceTypes') as FormArray;\r\n }\r\n\r\n get matchingAlgorithnmFields(): FormArray {\r\n return this.configForm.get('matchingAlgorithnmFields') as FormArray;\r\n }\r\n\r\n addResource(resource) {\r\n this.resourceTypes.push(this.createResource(resource));\r\n }\r\n removeResource(index) {\r\n this.resourceTypes.removeAt(index);\r\n }\r\n\r\n addMatchingField(field) {\r\n this.matchingAlgorithnmFields.push(this.createMatchingField(field));\r\n }\r\n removeMatchingField(index) {\r\n this.matchingAlgorithnmFields.removeAt(index);\r\n }\r\n\r\n save() {\r\n this.validateAllFormFields()\r\n if (this.configForm.valid) {\r\n this.userService.saveConfigurations(this.configForm.value).subscribe(\r\n (res) => {\r\n this.setNotificationData('update', res);\r\n this.getCurrentConfigData();\r\n });\r\n } else {\r\n this.isSubmitInvalid = true\r\n }\r\n\r\n }\r\n // control.markAsTouched({ onlySelf: true });\r\n validateAllFormFields() {\r\n const resourceArray = this.configForm.get('resourceTypes') as FormArray;\r\n Object.keys(resourceArray['controls']).forEach(element => {\r\n const control = resourceArray.get(element);\r\n Object.keys(control['controls']).forEach(field => {\r\n const controlItem = control.get(field);\r\n console.log(controlItem);\r\n if (controlItem instanceof FormControl) {\r\n controlItem.markAsTouched({ onlySelf: true });\r\n }\r\n });\r\n });\r\n }\r\n\r\n getCurrentConfigData() {\r\n this.userService.getConfigData().subscribe((res) => {\r\n\r\n // let algorithm = res.matchingAlgorithnmFields.filter(item=>item.fieldName =='Experience_Areas');\r\n // if(!algorithm.length)\r\n // {\r\n // let experienceCritirea = {id: 0,fieldName: \"Experience_Areas\",isConsidered: false};\r\n // res.matchingAlgorithnmFields.push(experienceCritirea);\r\n // }\r\n // console.log(res.matchingAlgorithnmFields);\r\n\r\n const resourceTypesArray = this.fb.array([]);\r\n res.resourceTypes.forEach(resource => {\r\n var newResource = this.createResource(resource.id, resource.code, resource.name, resource.displayName, resource.displayLetter, resource.colorCode)\r\n resourceTypesArray.push(newResource);\r\n });\r\n this.configForm.setControl('resourceTypes', resourceTypesArray);\r\n\r\n const matchingFildssArray = this.fb.array([]);\r\n\r\n // ######################################\r\n // trim array to show only IT systems\r\n // To be removed in later upgrade\r\n // res.matchingAlgorithnmFields.length = 1;\r\n // ######################################\r\n\r\n res.matchingAlgorithnmFields.forEach(field => {\r\n var newField = this.createMatchingField(field.id, field.fieldName, field.isConsidered)\r\n matchingFildssArray.push(newField);\r\n });\r\n this.configForm.setControl('matchingAlgorithnmFields', matchingFildssArray);\r\n\r\n\r\n setTimeout(() => {\r\n res.resourceTypes.forEach((resource,index) => {\r\n var divElement = document.getElementById(\"item-\"+index);\r\n divElement.style.backgroundColor = resource.colorCode;\r\n }); \r\n }, 100);\r\n\r\n });\r\n\r\n \r\n\r\n // this.configService.getMatchingAlgorithmCriterias().subscribe((res) => {\r\n // console.log(res);\r\n // const matchingFildssArray = this.fb.array([]);\r\n // res.forEach(field => {\r\n // var newField = this.createMatchingField(field.id, field.fieldName, field.isConsidered)\r\n // matchingFildssArray.push(newField);\r\n // });\r\n // this.configForm.setControl('matchingAlgorithnmFields', matchingFildssArray);\r\n // });\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'update') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Uppdatering av konfiguration har lyckats!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av konfiguration misslyckades! Vänligen försök igen.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#configNotificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#configNotificationModal') as any).modal('hide');\r\n }, 1000);\r\n }\r\n}\r\n","import { NgModule, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ConfigComponent } from './config.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FileUploadComponent } from './file-upload/file-upload.component';\r\nimport { PharmacySystemComponent } from './pharmacy-system/pharmacy-system.component';\r\nimport { LegitimationsComponent } from './legitimations/legitimations.component';\r\nimport { ExperienceAreaComponent } from './experience-area/experience-area.component';\r\nimport { TimePeriodsComponent } from './time-periods/time-periods.component'\r\nimport { Select2Module, Select2Data, Select2Option } from \"ng-select2-component\";\r\n//import { Select2Module } from 'ng2-select2';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { BookingUnitComponent } from './booking-unit/booking-unit.component';\r\nimport { ColorPickerModule } from 'ngx-color-picker';\r\nimport { ImageCropperModule } from 'ngx-image-cropper';\r\n//import { Select2Module } from 'ng2-select2';\r\n\r\n\r\n@NgModule({\r\n declarations: [ConfigComponent, FileUploadComponent, PharmacySystemComponent, LegitimationsComponent, ExperienceAreaComponent, TimePeriodsComponent, BookingUnitComponent],\r\n imports: [\r\n CommonModule,\r\n ColorPickerModule,\r\n SharedModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n RouterModule,\r\n ImageCropperModule,\r\n Select2Module,\r\n NgSelectModule\r\n ]\r\n})\r\nexport class ConfigModule{}\r\n","module.exports = \".form-group {\\r\\n margin-bottom: 10px !important;\\r\\n}\\r\\n\\r\\n.form-control.ng-touched.ng-invalid{\\r\\n border: 1px solid #d42f2f !important;\\r\\n }\\r\\n\\r\\nlabel{\\r\\n margin-top: .3rem;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29uZmlnL2V4cGVyaWVuY2UtYXJlYS9leHBlcmllbmNlLWFyZWEuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLDhCQUE4QjtBQUNsQzs7QUFFQTtJQUNJLG9DQUFvQztFQUN0Qzs7QUFFQTtJQUNFLGlCQUFpQjtFQUNuQiIsImZpbGUiOiJzcmMvYXBwL2NvbmZpZy9leHBlcmllbmNlLWFyZWEvZXhwZXJpZW5jZS1hcmVhLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1ncm91cCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5mb3JtLWNvbnRyb2wubmctdG91Y2hlZC5uZy1pbnZhbGlke1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2Q0MmYyZiAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgbGFiZWx7XHJcbiAgICBtYXJnaW4tdG9wOiAuM3JlbTtcclxuICB9Il19 */\"","import { Component, OnInit, ElementRef, ViewChildren, AfterViewInit, Input, forwardRef, EventEmitter, Output } from '@angular/core';\r\nimport { FormArray, FormGroup, FormBuilder, Validators, FormControlName, FormControl, AbstractControl, \r\n NG_VALUE_ACCESSOR, NG_VALIDATORS, ControlValueAccessor, Validator, ValidationErrors } from '@angular/forms';\r\nimport { escapeSelector } from 'jquery';\r\nimport { ConfigService } from '../../shared/services/config.service';\r\nimport { Observable, merge, fromEvent, Subscription, timer } from 'rxjs';\r\nimport { debounceTime, switchMap, map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'wfm-experience-area',\r\n templateUrl: './experience-area.component.html',\r\n styleUrls: ['./experience-area.component.css'],\r\n providers : [\r\n {\r\n provide:NG_VALUE_ACCESSOR,\r\n useExisting : forwardRef (() => ExperienceAreaComponent),\r\n multi : true\r\n },\r\n {\r\n provide : NG_VALIDATORS,\r\n useExisting : forwardRef(() => ExperienceAreaComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\n\r\n\r\nexport class ExperienceAreaComponent implements OnInit {\r\n\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n public expForm: FormGroup;\r\n\r\n notificationModal :any;\r\n isSubmitInvalid:boolean = false;\r\n constructor(private fbp: FormBuilder, private configService: ConfigService ) { }\r\n itemToRemove : any;\r\n\r\n ngOnInit() {\r\n\r\n this.expForm = this.fbp.group({\r\n experienceAreas: this.fbp.array([this.createExperienceArea()]),\r\n })\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.getExperienceAreas();\r\n }\r\n\r\n createExperienceArea(id=0, code = null)\r\n {\r\n return this.fbp.group({\r\n id:[id==null ? 0 : id],\r\n code: [code ? code : '', Validators.required]\r\n })\r\n }\r\n\r\n get experienceAreas() : FormArray {\r\n return this.expForm.get('experienceAreas') as FormArray;\r\n }\r\n\r\n addExperienceArea(experience)\r\n { \r\n this.experienceAreas.push(this.createExperienceArea(experience));\r\n }\r\n\r\n removeExperienceArea(index)\r\n { \r\n let deletingItem = this.experienceAreas.at(index);\r\n this.itemToRemove = index; \r\n if(deletingItem.value.id == 0) \r\n {\r\n this.experienceAreas.removeAt(this.itemToRemove);\r\n }\r\n else{\r\n ($('#deleteExpAreaModal') as any).modal('show');\r\n }\r\n }\r\n\r\n deleteExperienceArea()\r\n {\r\n this.experienceAreas.removeAt(this.itemToRemove);\r\n ($('#deleteExpAreaModal') as any).modal('hide');\r\n this.itemToRemove = -1;\r\n }\r\n\r\n cancelDeletionExperienceArea()\r\n { \r\n this.itemToRemove = -1;\r\n ($('#deleteExpAreaModal') as any).modal('hide');\r\n }\r\n\r\n validateFormFields() {\r\n const expArray = this.expForm.get('experienceAreas') as FormArray;\r\n \r\n Object.keys(expArray['controls']).forEach(element => {\r\n const control = expArray.get(element);\r\n Object.keys(control['controls']).forEach(field => {\r\n const controlItem = control.get(field);\r\n //console.log(controlItem);\r\n if (controlItem instanceof FormControl) {\r\n controlItem.markAsTouched({ onlySelf: true });\r\n }\r\n });\r\n });\r\n }\r\n\r\n save() {\r\n this.validateFormFields();\r\n if (this.expForm.valid) {\r\n this.configService.saveExperienceAreas(this.expForm.value).subscribe(\r\n //() => this.onSaveComplete('update', true, '0'),\r\n (res) => {\r\n //console.log(res);\r\n this.setNotificationData('update', res);\r\n this.getExperienceAreas();\r\n });\r\n }else{\r\n this.isSubmitInvalid = true\r\n } \r\n }\r\n\r\n cancel()\r\n {\r\n const expArray = this.expForm.get('experienceAreas') as FormArray;\r\n \r\n Object.keys(expArray['controls']).forEach(element => {\r\n const control = expArray.get(element);\r\n Object.keys(control['controls']).forEach(field => {\r\n const controlItem = control.get(field);\r\n if (controlItem instanceof FormControl) {\r\n controlItem.markAsUntouched({ onlySelf: false });\r\n }\r\n });\r\n });\r\n }\r\n\r\n getExperienceAreas() {\r\n this.configService.getExperienceAreas().subscribe((res) => {\r\n //console.log(res);\r\n\r\n const expArray = this.fbp.array([]);\r\n res.experienceAreas.forEach(item => {\r\n var objt = this.createExperienceArea(item.id, item.code)\r\n expArray.push(objt);\r\n });\r\n \r\n this.expForm.setControl('experienceAreas', expArray);\r\n })\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n //console.log(flow);\r\n //console.log(status);\r\n if (flow === 'update') {\r\n if (status) {\r\n console.log(\"Upadate Successfull !.\");\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Upplevelsesområde Uppdatering lyckades!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n console.log(\"Upadate Failed !.\");\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Upplevelsesområde uppdateringen misslyckades! Var god försök igen.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#expNotificationModal') as any).modal('show');\r\n\r\n setTimeout(() => {\r\n ($('#expNotificationModal') as any).modal('hide');\r\n }, 1000);\r\n }\r\n}\r\n","module.exports = \".preview-img\\r\\n{\\r\\n max-width:190px;\\r\\n max-height:75px;\\r\\n overflow:hidden;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29uZmlnL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0lBRUksZUFBZTtJQUNmLGVBQWU7SUFDZixlQUFlO0FBQ25CIiwiZmlsZSI6InNyYy9hcHAvY29uZmlnL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIucHJldmlldy1pbWdcclxue1xyXG4gICAgbWF4LXdpZHRoOjE5MHB4O1xyXG4gICAgbWF4LWhlaWdodDo3NXB4O1xyXG4gICAgb3ZlcmZsb3c6aGlkZGVuO1xyXG59Il19 */\"","import { Component, OnInit,ViewChild, ElementRef, Input } from '@angular/core';\r\nimport { FileUploadService } from 'src/app/config/file-upload/file-upload.service';\r\nimport { HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { analyzeAndValidateNgModules } from '@angular/compiler';\r\nimport { THIS_EXPR } from '@angular/compiler/src/output/output_ast';\r\nimport {DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport { environment } from '../../../environments/environment';\r\nimport { ConfigService } from '../../shared/services/config.service';\r\n\r\nconst API_URL = environment.apiEndpoint;\r\n\r\n@Component({\r\n selector: 'wfm-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n styleUrls: ['./file-upload.component.css']\r\n})\r\n\r\nexport class FileUploadComponent implements OnInit {\r\n @Input() imageType : string;\r\n\r\n selectedFiles: File[] = [];\r\n selectedFile : File;\r\n progressInfos = [];\r\n errorMessage: string;\r\n fileInfos : Observable;\r\n\r\n imageurls =[];\r\n imageUrl ='';\r\n base64String: string;\r\n name: string;\r\n imagePath: string;\r\n uploadBtnEnabled : boolean;\r\n displayImage : any;\r\n notificationModal :any;\r\n\r\n @ViewChild('fileInput', {static: false})\r\n myFileInput: ElementRef;\r\n\r\n constructor(private uploadService : FileUploadService, private configService : ConfigService, private sanitizer: DomSanitizer) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n console.log(this.imageType);\r\n this.getImageUrl(this.imageType);\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n }\r\n\r\n sanitizeImageUrl(url : string) : SafeUrl {\r\n return this.sanitizer.bypassSecurityTrustUrl(url);\r\n } \r\n\r\n getImageUrl(imageType)\r\n {\r\n if(imageType === 'logo')\r\n {\r\n this.configService.getLogoUrl().subscribe((res) => {\r\n console.log(res);\r\n this.imageUrl = res;\r\n })\r\n }\r\n else if(imageType === 'favicon') {\r\n this.configService.getFaviconUrl().subscribe((res) => {\r\n console.log(res);\r\n this.imageUrl = res;\r\n })\r\n }\r\n\r\n //console.log(this.imageUrl)\r\n }\r\n\r\n selectFiles(event)\r\n {\r\n const files = event.target.files;\r\n let isImage = true;\r\n\r\n for (let i = 0; i < files.length; i++) {\r\n\r\n var mimeType = files[i].type;\r\n \r\n if (mimeType.match(/image\\/*/) == null) {\r\n console.log(\"Only images are supported\");\r\n return;\r\n }\r\n\r\n if (files.item(i).type.match('image.*')) {\r\n this.selectedFiles = [];\r\n this.selectedFiles.push(files.item(i));\r\n console.log(files.item(i));\r\n console.log(\"This file is an image file\");\r\n continue;\r\n } else {\r\n //isImage = false;\r\n console.log(files.item(i).fileName + ' is not a invalid format!');\r\n break;\r\n }\r\n }\r\n console.log(this.selectedFiles);\r\n if (this.selectedFiles.length > 0) {\r\n // this.selectedFiles = event.target.files;\r\n console.log(\"Locally processing the image\");\r\n this.uploadBtnEnabled = true;\r\n var reader = new FileReader();\r\n reader.onload = (event: any) => {\r\n this.imageurls =[];\r\n this.imageurls.push({ base64String: event.target.result, });\r\n }\r\n console.log(this.imageurls);\r\n console.log(event.target.files[0]);\r\n reader.readAsDataURL(event.target.files[0]); \r\n } \r\n else {\r\n this.selectedFiles = undefined;\r\n event.srcElement.percentage = null;\r\n }\r\n }\r\n\r\n\r\n uploadFiles() {\r\n this.errorMessage = '';\r\n this.upload(0, this.selectedFiles)\r\n\r\n }\r\n\r\n upload(idx, files : File[]) {\r\n if (files.length === 0) {\r\n return;\r\n }\r\n \r\n const formData : FormData = new FormData();\r\n let filesToUpload : File[] = files;\r\n \r\n Array.from(files).map((file, index) => {\r\n console.log(file.name);\r\n return formData.append('file'+index, file, file.name);\r\n });\r\n\r\n formData.append('imageType', this.imageType);\r\n\r\n this.uploadService.upload(formData).subscribe(\r\n (imagePath: string) => {\r\n if (imagePath != null && imagePath != '') {\r\n localStorage.removeItem(this.imageType);\r\n localStorage.setItem(this.imageType, imagePath);\r\n this.imageUrl = imagePath;\r\n //this.imageUrl = event.body.base64;\r\n var imageData = btoa(imagePath);\r\n //console.log(\"Base64 Image: \",imageData);\r\n this.displayImage = this.sanitizer.bypassSecurityTrustUrl(\"data:Image/*;base64,\"+ imageData);\r\n //console.log(this.displayImage);\r\n //this.setNotificationData('update', true);\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n removeImage(i, element) \r\n {\r\n if( i >= 0)\r\n {\r\n this.imageurls.splice(i, 1);\r\n }\r\n else\r\n {\r\n this.imageUrl = \"\";\r\n }\r\n\r\n this.myFileInput.nativeElement.value = \"\";\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'update') {\r\n if (status) {\r\n console.log(\"Upadate Successfull !.\");\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Uppdatering av konfiguration har lyckats!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n console.log(\"Upadate Failed !.\");\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av konfiguration misslyckades! Vänligen försök igen.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n console.log(this.notificationModal);\r\n }\r\n ($('#fileUpNotificationModal') as any).modal('show');\r\n\r\n setTimeout(() => {\r\n ($('#fileUpNotificationModal') as any).modal('hide');\r\n }, 3000);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpRequest, HttpEvent, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\n//import { Observable } from 'rxjs';\r\nimport { of, Observable, throwError, Subject, BehaviorSubject } from 'rxjs';\r\nimport { environment } from '../../../environments/environment';\r\nimport { tap, catchError } from 'rxjs/operators';\r\n\r\nconst API_URL = environment.apiEndpoint;\r\n \r\n const httpOptions = {\r\n headers: new HttpHeaders ({\r\n 'Content-Type': 'application/json'\r\n }),\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class FileUploadService {\r\n\r\n private subject = new Subject();\r\n\r\n constructor(private http:HttpClient) { \r\n }\r\n\r\n upload(formData : FormData): Observable{\r\n console.log('Uploading file in service !...');\r\n \r\n //return this.http.request(req);\r\n return this.http.post(API_URL + 'config/logo', formData).pipe(\r\n tap(resp => {\r\n console.log(resp);\r\n this.subject.next({ path: resp });\r\n console.log('File upload completed.');\r\n }),\r\n catchError(this.handleError)\r\n \r\n );\r\n }\r\n\r\n\r\n getFiles() : Observable{\r\n return this.http.get(API_URL + 'config/files', httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n //return this.http.get(`${this.baseUrl}config/files`);\r\n }\r\n\r\n getFile(id: any) : Observable {\r\n return this.http.get(API_URL + 'config/logo', httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n\r\n //return this.http.get(`${this.baseUrl}config/logo`, id);\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (err.error instanceof ErrorEvent) {\r\n errorMessage = `An error occured: ${err.error.message}`;\r\n } else {\r\n errorMessage = `Server returned code: ${err.status}, error message is: ${err.message}`;\r\n }\r\n console.log(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n\r\n}\r\n","module.exports = \".form-group {\\r\\n margin-bottom: 10px !important;\\r\\n}\\r\\n\\r\\n.form-control.ng-touched.ng-invalid{\\r\\n border: 1px solid #d42f2f !important;\\r\\n }\\r\\n\\r\\nlabel{\\r\\n margin-top: .3rem;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29uZmlnL2xlZ2l0aW1hdGlvbnMvbGVnaXRpbWF0aW9ucy5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0lBQ0ksOEJBQThCO0FBQ2xDOztBQUVBO0lBQ0ksb0NBQW9DO0VBQ3RDOztBQUVBO0lBQ0UsaUJBQWlCO0VBQ25CIiwiZmlsZSI6InNyYy9hcHAvY29uZmlnL2xlZ2l0aW1hdGlvbnMvbGVnaXRpbWF0aW9ucy5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvcm0tZ3JvdXAge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTBweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uZm9ybS1jb250cm9sLm5nLXRvdWNoZWQubmctaW52YWxpZHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkNDJmMmYgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIGxhYmVse1xyXG4gICAgbWFyZ2luLXRvcDogLjNyZW07XHJcbiAgfSJdfQ== */\"","import { Component, OnInit, ElementRef, ViewChildren, AfterViewInit, Input, forwardRef, EventEmitter, Output } from '@angular/core';\r\nimport { FormArray, FormGroup, FormBuilder, Validators, FormControlName, FormControl, AbstractControl, \r\n NG_VALUE_ACCESSOR, NG_VALIDATORS, ControlValueAccessor, Validator, ValidationErrors } from '@angular/forms';\r\nimport { escapeSelector } from 'jquery';\r\nimport { ConfigService } from '../../shared/services/config.service';\r\nimport { Observable, merge, fromEvent, Subscription, timer } from 'rxjs';\r\nimport { debounceTime, switchMap, map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'wfm-legitimations',\r\n templateUrl: './legitimations.component.html',\r\n styleUrls: ['./legitimations.component.css'],\r\n providers : [\r\n {\r\n provide:NG_VALUE_ACCESSOR,\r\n useExisting : forwardRef (() => LegitimationsComponent),\r\n multi : true\r\n },\r\n {\r\n provide : NG_VALIDATORS,\r\n useExisting : forwardRef(() => LegitimationsComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class LegitimationsComponent implements OnInit {\r\n\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n public legitimationsForm: FormGroup;\r\n\r\n notificationModal :any;\r\n isSubmitInvalid:boolean = false;\r\n itemToRemove: any;\r\n constructor(private fbp: FormBuilder, private configService: ConfigService ) { }\r\n\r\n ngOnInit() {\r\n\r\n this.legitimationsForm = this.fbp.group({\r\n legitimations: this.fbp.array([this.createLegitimation()]),\r\n })\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.getLegitimations();\r\n }\r\n \r\n createLegitimation(id=0, code = null)\r\n {\r\n return this.fbp.group({\r\n id:[id==null ? 0 : id],\r\n code: [code ? code : '', Validators.required]\r\n })\r\n }\r\n get legitimations() : FormArray {\r\n return this.legitimationsForm.get('legitimations') as FormArray;\r\n }\r\n\r\n addLegitimation(resource) {\r\n this.legitimations.push(this.createLegitimation(resource));\r\n }\r\n\r\n removeLegitimation(index) {\r\n \r\n let deletingItem = this.legitimations.at(index);\r\n this.itemToRemove = index; \r\n if(deletingItem.value.id == 0) \r\n {\r\n this.legitimations.removeAt(this.itemToRemove);\r\n }\r\n else{\r\n ($('#deleteLegitimationsModal') as any).modal('show');\r\n }\r\n }\r\n\r\n deleteLegitimation()\r\n {\r\n this.legitimations.removeAt(this.itemToRemove);\r\n ($('#deleteLegitimationsModal') as any).modal('hide');\r\n this.itemToRemove = -1;\r\n }\r\n\r\n cancelDeletionLegitimation()\r\n { \r\n this.itemToRemove = -1;\r\n ($('#deleteLegitimationsModal') as any).modal('hide');\r\n }\r\n \r\n validateFormFields() {\r\n const legitimationsArray = this.legitimationsForm.get('legitimations') as FormArray;\r\n \r\n Object.keys(legitimationsArray['controls']).forEach(element => {\r\n const control = legitimationsArray.get(element);\r\n Object.keys(control['controls']).forEach(field => {\r\n const controlItem = control.get(field);\r\n //console.log(controlItem);\r\n if (controlItem instanceof FormControl) {\r\n controlItem.markAsTouched({ onlySelf: true });\r\n }\r\n });\r\n });\r\n }\r\n\r\n save() {\r\n this.validateFormFields();\r\n if (this.legitimationsForm.valid) {\r\n this.isSubmitInvalid = false;\r\n this.configService.saveLegitimations(this.legitimationsForm.value).subscribe(\r\n //() => this.onSaveComplete('update', true, '0'),\r\n (res) => {\r\n // console.log(res);\r\n this.setNotificationData('update',res);\r\n this.getLegitimations();\r\n });\r\n }else{\r\n\r\n this.isSubmitInvalid = true\r\n } \r\n }\r\n\r\n cancel()\r\n {\r\n const legitimationsArray = this.legitimationsForm.get('legitimations') as FormArray;\r\n \r\n Object.keys(legitimationsArray['controls']).forEach(element => {\r\n const control = legitimationsArray.get(element);\r\n Object.keys(control['controls']).forEach(field => {\r\n const controlItem = control.get(field);\r\n if (controlItem instanceof FormControl) {\r\n controlItem.markAsUntouched({ onlySelf: false });\r\n }\r\n });\r\n });\r\n }\r\n\r\n getLegitimations() {\r\n this.configService.getLegitimations().subscribe((res) => {\r\n //console.log(res);\r\n\r\n const legitimationsArray = this.fbp.array([]);\r\n res.legitimations.forEach(item => {\r\n var objt = this.createLegitimation(item.id, item.code)\r\n legitimationsArray.push(objt);\r\n });\r\n \r\n this.legitimationsForm.setControl('legitimations', legitimationsArray);\r\n })\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n //console.log(flow);\r\n //console.log(status);\r\n if (flow === 'update') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Legitimationer Uppdatering lyckades!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Legitimationer uppdateringen misslyckades! Var god försök igen.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n console.log(this.notificationModal);\r\n }\r\n ($('#legitNotificationModal') as any).modal('show');\r\n\r\n setTimeout(() => {\r\n ($('#legitNotificationModal') as any).modal('hide');\r\n }, 1000);\r\n }\r\n}\r\n","module.exports = \".form-group {\\r\\n margin-bottom: 10px !important;\\r\\n}\\r\\n\\r\\n.form-control.ng-touched.ng-invalid{\\r\\n border: 1px solid #d42f2f !important;\\r\\n }\\r\\n\\r\\nlabel{\\r\\n margin-top: .3rem;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29uZmlnL3BoYXJtYWN5LXN5c3RlbS9waGFybWFjeS1zeXN0ZW0uY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLDhCQUE4QjtBQUNsQzs7QUFFQTtJQUNJLG9DQUFvQztFQUN0Qzs7QUFFQTtJQUNFLGlCQUFpQjtFQUNuQiIsImZpbGUiOiJzcmMvYXBwL2NvbmZpZy9waGFybWFjeS1zeXN0ZW0vcGhhcm1hY3ktc3lzdGVtLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1ncm91cCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5mb3JtLWNvbnRyb2wubmctdG91Y2hlZC5uZy1pbnZhbGlke1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2Q0MmYyZiAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgbGFiZWx7XHJcbiAgICBtYXJnaW4tdG9wOiAuM3JlbTtcclxuICB9Il19 */\"","\r\nimport { Component, OnInit, ElementRef, ViewChildren, AfterViewInit, Input, forwardRef, EventEmitter, Output } from '@angular/core';\r\nimport { FormArray, FormGroup, FormBuilder, Validators, FormControlName, FormControl, AbstractControl, \r\n NG_VALUE_ACCESSOR, NG_VALIDATORS, ControlValueAccessor, Validator, ValidationErrors } from '@angular/forms';\r\nimport { escapeSelector } from 'jquery';\r\n// import { UserService } from '../user/user.service';\r\n// import { FileUploadService } from '../config/file-upload/file-upload.service';\r\nimport { ConfigService } from '../../shared/services/config.service';\r\nimport { Observable, merge, fromEvent, Subscription, timer } from 'rxjs';\r\nimport { debounceTime, switchMap, map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'wfm-pharmacy-system',\r\n templateUrl: './pharmacy-system.component.html',\r\n styleUrls: ['./pharmacy-system.component.css'],\r\n providers : [\r\n {\r\n provide:NG_VALUE_ACCESSOR,\r\n useExisting : forwardRef (() => PharmacySystemComponent),\r\n multi : true\r\n },\r\n {\r\n provide : NG_VALIDATORS,\r\n useExisting : forwardRef(() => PharmacySystemComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class PharmacySystemComponent implements OnInit {\r\n \r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n public pharmacySystemsForm: FormGroup;\r\n\r\n notificationModal :any;\r\n isSubmitInvalid:boolean = false;\r\n itemToRemove: any;\r\n \r\n constructor( private fbp: FormBuilder, private configService: ConfigService ) { \r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.pharmacySystemsForm = this.fbp.group({\r\n pharmacySystems: this.fbp.array([this.createPharmacySystem()]),\r\n })\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.getPharmacySystems();\r\n }\r\n\r\n createPharmacySystem(id=0, name = null)\r\n {\r\n return this.fbp.group({\r\n id:[id==null ? 0 : id],\r\n name: [name ? name : '', Validators.required]\r\n })\r\n }\r\n get pharmacySystems() : FormArray {\r\n return this.pharmacySystemsForm.get('pharmacySystems') as FormArray;\r\n }\r\n\r\n addPharmacySystem(pharmSys)\r\n { \r\n this.pharmacySystems.push(this.createPharmacySystem(pharmSys));\r\n }\r\n\r\n removePharmacySystem(index)\r\n { \r\n let deletingItem = this.pharmacySystems.at(index);\r\n this.itemToRemove = index; \r\n if(deletingItem.value.id == 0) \r\n {\r\n this.pharmacySystems.removeAt(this.itemToRemove);\r\n }\r\n else{\r\n ($('#deletePharmcySystemModal') as any).modal('show');\r\n }\r\n }\r\n\r\n DeletePharmacySystem()\r\n {\r\n this.pharmacySystems.removeAt(this.itemToRemove);\r\n ($('#deletePharmcySystemModal') as any).modal('hide');\r\n this.itemToRemove = -1;\r\n }\r\n cancelDeletionPharmacySystem()\r\n { \r\n this.itemToRemove = -1;\r\n ($('#deletePharmcySystemModal') as any).modal('hide');\r\n }\r\n\r\n\r\n validateFormFields() {\r\n const pharmacySystemsArray = this.pharmacySystemsForm.get('pharmacySystems') as FormArray;\r\n \r\n Object.keys(pharmacySystemsArray['controls']).forEach(element => {\r\n const control = pharmacySystemsArray.get(element);\r\n Object.keys(control['controls']).forEach(field => {\r\n const controlItem = control.get(field);\r\n if (controlItem instanceof FormControl) {\r\n controlItem.markAsTouched({ onlySelf: true });\r\n }\r\n });\r\n });\r\n }\r\n\r\n save() {\r\n this.validateFormFields();\r\n if (this.pharmacySystemsForm.valid) {\r\n this.configService.savePharmacySystems(this.pharmacySystemsForm.value).subscribe(\r\n //() => this.onSaveComplete('update', true, '0'),\r\n (res) => {\r\n //console.log(res);\r\n this.setNotificationData('update', res);\r\n this.getPharmacySystems();\r\n });\r\n }else{\r\n this.isSubmitInvalid = true\r\n } \r\n }\r\n\r\n cancel()\r\n {\r\n const resourceArray = this.pharmacySystemsForm.get('pharmacySystems') as FormArray;\r\n \r\n Object.keys(resourceArray['controls']).forEach(element => {\r\n const control = resourceArray.get(element);\r\n Object.keys(control['controls']).forEach(field => {\r\n const controlItem = control.get(field);\r\n if (controlItem instanceof FormControl) {\r\n controlItem.markAsUntouched({ onlySelf: false });\r\n }\r\n });\r\n });\r\n }\r\n\r\n getPharmacySystems() {\r\n this.configService.getPharmacySystems().subscribe((res) => {\r\n //console.log(res);\r\n\r\n const pharmacySystemsArray = this.fbp.array([]);\r\n res.pharmacySystems.forEach(item => {\r\n var pharmacySystem = this.createPharmacySystem(item.id, item.name)\r\n pharmacySystemsArray.push(pharmacySystem);\r\n });\r\n \r\n this.pharmacySystemsForm.setControl('pharmacySystems', pharmacySystemsArray);\r\n })\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n //console.log(flow);\r\n //console.log(status);\r\n\r\n if (flow === 'update') {\r\n if (status) {\r\n console.log(\"Upadate Successfull !.\");\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'IT -systemu ppdatering lyckades!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n console.log(\"Upadate Failed !.\");\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'IT-systemuppdatering misslyckades! Var god försök igen.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n\r\n //console.log(this.notificationModal);\r\n }\r\n ($('#pharmNotificationModal') as any).modal('show');\r\n\r\n setTimeout(() => {\r\n ($('#pharmNotificationModal') as any).modal('hide');\r\n }, 1000);\r\n }\r\n}\r\n","module.exports = \".form-group {\\r\\n margin-bottom: 10px !important;\\r\\n}\\r\\n\\r\\n.form-control.ng-touched.ng-invalid{\\r\\n border: 1px solid #d42f2f !important;\\r\\n }\\r\\n\\r\\nlabel{\\r\\n margin-top: .3rem;\\r\\n }\\r\\n\\r\\n/* .select2.select2-container.ng-touched.ng-invalid\\r\\n {\\r\\n border: 1px solid #d42f2f !important;\\r\\n } */\\r\\n\\r\\n/* .select-2.ng-touched.ng-invalid\\r\\n {\\r\\n border: 1px solid #d42f2f !important;\\r\\n } */\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29uZmlnL3RpbWUtcGVyaW9kcy90aW1lLXBlcmlvZHMuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLDhCQUE4QjtBQUNsQzs7QUFFQTtJQUNJLG9DQUFvQztFQUN0Qzs7QUFFQTtJQUNFLGlCQUFpQjtFQUNuQjs7QUFFQTs7O0tBR0c7O0FBRUg7OztLQUdHIiwiZmlsZSI6InNyYy9hcHAvY29uZmlnL3RpbWUtcGVyaW9kcy90aW1lLXBlcmlvZHMuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWdyb3VwIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDEwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLmZvcm0tY29udHJvbC5uZy10b3VjaGVkLm5nLWludmFsaWR7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZDQyZjJmICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICBsYWJlbHtcclxuICAgIG1hcmdpbi10b3A6IC4zcmVtO1xyXG4gIH1cclxuXHJcbiAgLyogLnNlbGVjdDIuc2VsZWN0Mi1jb250YWluZXIubmctdG91Y2hlZC5uZy1pbnZhbGlkXHJcbiAge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2Q0MmYyZiAhaW1wb3J0YW50O1xyXG4gIH0gKi9cclxuXHJcbiAgLyogLnNlbGVjdC0yLm5nLXRvdWNoZWQubmctaW52YWxpZFxyXG4gIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkNDJmMmYgIWltcG9ydGFudDtcclxuICB9ICovXHJcbiJdfQ== */\"","\r\nimport { Component, OnInit, ElementRef, ViewChildren, AfterViewInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, FormControlName, FormControl, AbstractControl, FormArray } from '@angular/forms';\r\nimport { ConfigService } from '../../shared/services/config.service';\r\nimport { UserService } from '../../user/user.service';\r\nimport * as internal from 'assert';\r\n//import { Select2OptionData } from 'ng2-select2';\r\n\r\n@Component({\r\n selector: 'wfm-time-periods',\r\n templateUrl: './time-periods.component.html',\r\n styleUrls: ['./time-periods.component.css']\r\n})\r\nexport class TimePeriodsComponent implements OnInit {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n public overTimeRuleForm : FormGroup;\r\n isSubmitInvalid : boolean = false;\r\n notificationModal: any;\r\n timeSlots = [];\r\n\r\n OTTimeRulesArray = this.fbp.array([]);\r\n\r\n //workingDay : any[] = [];\r\n workingDays : any[] = [];\r\n //workingDays2 : any[] = [];\r\n experienceAreas: any[] = [];\r\n\r\n tempWorkingDay : any[] =[];\r\n tempWorkingDays2 : any[] = [];\r\n tempExperienceAreas: any[] = [];\r\n\r\n listOfWorkingDays: any[] = [];\r\n listOfWorkingDays2: any[] = [];\r\n listOfExperienceAreas: any[] = [];\r\n\r\n overTimeRulesArr : any[]= []; //Temp array for storing data\r\n tempDaysDictionary : { key : number, value : number[] } [] = [];\r\n overTimePeriods : any[] = [];\r\n useRegularOverTimeRulesForHolidays = false;\r\n enableBeforeHolidayoverTimeRules = false;\r\n disableAddBeforeHolidayButton = false;\r\n\r\n selectedCitiesIds : any[] =[];\r\n isCitiesControlVisible = true;\r\n cities: any[] = [\r\n { id: 1, name: 'Vilnius' },\r\n { id: 2, name: 'Kaunas' },\r\n { id: 3, name: 'Pavilnys (Disabled)', disabled: true },\r\n { id: 4, name: 'Pabradė' },\r\n ];\r\n\r\n\r\n constructor(private fbp : FormBuilder, private configService : ConfigService, private userService: UserService) { \r\n\r\n this.timeSlots = [\r\n { id: '1', name: '00:00'},\r\n { id: '2', name: '00:15'},\r\n { id: '3', name: '00:30'},\r\n { id: '4', name: '00:45'},\r\n { id: '5', name: '01:00'},\r\n { id: '6', name: '01:15'},\r\n { id: '7', name: '01:30'},\r\n { id: '8', name: '01:45'},\r\n { id: '9', name: '02:00'},\r\n { id: '10', name: '02:15'},\r\n { id: '11', name: '02:30'},\r\n { id: '12', name: '02:45'},\r\n { id: '13', name: '03:00'},\r\n { id: '14', name: '03:15'},\r\n { id: '15', name: '03:30'},\r\n { id: '16', name: '03:45'},\r\n { id: '17', name: '04:00'},\r\n { id: '18', name: '04:15'},\r\n { id: '19', name: '04:30'},\r\n { id: '20', name: '04:45'},\r\n { id: '21', name: '05:00'},\r\n { id: '22', name: '05:15'},\r\n { id: '23', name: '05:30'},\r\n { id: '24', name: '05:45'},\r\n { id: '25', name: '06:00'},\r\n { id: '26', name: '06:15'},\r\n { id: '27', name: '06:30'},\r\n { id: '28', name: '06:45'},\r\n { id: '29', name: '07:00'},\r\n { id: '30', name: '07:15'},\r\n { id: '31', name: '07:30'},\r\n { id: '32', name: '07:45'},\r\n { id: '33', name: '08:00'},\r\n { id: '34', name: '08:15'},\r\n { id: '35', name: '08:30'},\r\n { id: '36', name: '08:45'},\r\n { id: '37', name: '09:00'},\r\n { id: '38', name: '09:15'},\r\n { id: '39', name: '09:30'},\r\n { id: '40', name: '09:45'},\r\n { id: '41', name: '10:00'},\r\n { id: '42', name: '10:15'},\r\n { id: '43', name: '10:30'},\r\n { id: '44', name: '10:45'},\r\n { id: '45', name: '11:00'},\r\n { id: '46', name: '11:15'},\r\n { id: '47', name: '11:30'},\r\n { id: '48', name: '11:45'},\r\n { id: '49', name: '12:00'},\r\n { id: '50', name: '12:15'},\r\n { id: '51', name: '12:30'},\r\n { id: '52', name: '12:45'},\r\n { id: '53', name: '13:00'},\r\n { id: '54', name: '13:15'},\r\n { id: '55', name: '13:30'},\r\n { id: '56', name: '13:45'},\r\n { id: '57', name: '14:00'},\r\n { id: '58', name: '14:15'},\r\n { id: '59', name: '14:30'},\r\n { id: '60', name: '14:45'},\r\n { id: '61', name: '15:00'},\r\n { id: '62', name: '15:15'},\r\n { id: '63', name: '15:30'},\r\n { id: '64', name: '15:45'},\r\n { id: '65', name: '16:00'},\r\n { id: '66', name: '16:15'},\r\n { id: '67', name: '16:30'},\r\n { id: '68', name: '16:45'},\r\n { id: '69', name: '17:00'},\r\n { id: '70', name: '17:15'},\r\n { id: '71', name: '17:30'},\r\n { id: '72', name: '17:45'},\r\n { id: '73', name: '18:00'},\r\n { id: '74', name: '18:15'},\r\n { id: '75', name: '18:30'},\r\n { id: '76', name: '18:45'},\r\n { id: '77', name: '19:00'},\r\n { id: '78', name: '19:15'},\r\n { id: '79', name: '19:30'},\r\n { id: '80', name: '19:45'},\r\n { id: '81', name: '20:00'},\r\n { id: '82', name: '20:15'},\r\n { id: '83', name: '20:30'},\r\n { id: '84', name: '20:45'},\r\n { id: '85', name: '21:00'},\r\n { id: '86', name: '21:15'},\r\n { id: '87', name: '21:30'},\r\n { id: '88', name: '21:45'},\r\n { id: '89', name: '22:00'},\r\n { id: '90', name: '22:15'},\r\n { id: '91', name: '22:30'},\r\n { id: '92', name: '22:45'},\r\n { id: '93', name: '23:00'},\r\n { id: '94', name: '23:15'},\r\n { id: '95', name: '23:30'},\r\n { id: '96', name: '23:45'},\r\n { id: '97', name: '24:00'}\r\n ];\r\n\r\n this.workingDays = [\r\n { id: 1, value: 1, label : 'Sunday', name : 'Sunday'},\r\n { id: 2, value: 2, label: 'Monday' , name : 'Monday'},\r\n { id: 3, value: 3, label: 'Tuesday' , name : 'Tuesday'},\r\n { id: 4, value: 4, label: 'Wednesday' , name : 'Wednesday'},\r\n { id: 5, value: 5, label: 'Thursday' , name : 'Thursday'},\r\n { id: 6, value: 6, label: 'Friday' , name : 'Friday'},\r\n { id: 7, value: 7, label: 'Saturday' , name : 'Saturday'},\r\n { id: 8, value: 8, label: 'Public Holiday' , name : 'Public Holiday'},\r\n { id: 9, value: 9, label: 'Day Before Holiday' , name : 'Day Before Holiday'},\r\n { id: 10, value: 10, label: 'Day After Holiday' , name : 'Day After Holiday'}\r\n ];\r\n\r\n // this.workingDays2 = [\r\n // { id: 1, name : 'Sunday'},\r\n // { id: 2, name : 'Monday'},\r\n // { id: 3, name : 'Tuesday'},\r\n // { id: 4, name : 'Wednesday'},\r\n // { id: 5 , name : 'Thursday'},\r\n // { id: 6, name : 'Friday'},\r\n // { id: 7, name : 'Saturday'},\r\n // { id: 8, name : 'Public Holiday'},\r\n // { id: 9, name : 'Day Before Holiday'},\r\n // { id: 10, name : 'Day After Holiday'}\r\n // ];\r\n }\r\n\r\n ngOnInit() {\r\n this.overTimeRuleForm = this.fbp.group({\r\n overTimeRules: this.fbp.array([this.createTimePeriod()]),\r\n //experienceArea: [],\r\n selectedCitiesIds : []\r\n });\r\n\r\n this.selectedCitiesIds = [\r\n { id: 1, name: 'Vilnius' },\r\n { id: 2, name: 'Kaunas' }\r\n ];\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.userService.getInnitialMasterData().subscribe((data) => {\r\n //console.log(\"getInnitialMasterData\");\r\n //console.log(data);\r\n //console.log( data.experienceAreas);\r\n this.experienceAreas = data.experienceAreas\r\n\r\n for (let [key, value] of Object.entries(this.experienceAreas)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n value['name'] = value.name;\r\n }\r\n })\r\n\r\n\r\n this.getOverTimeRules();\r\n \r\n }\r\n\r\n createTimePeriod(id=0, timePeriodId = null, startTime = null, endTime= null, percentage = null, workingDay= null, ruleName = null)\r\n {\r\n return this.fbp.group({\r\n id:[id==null ? 0 : id],\r\n timePeriodId : [timePeriodId == null ? 0 : timePeriodId],\r\n startTime: [startTime ? startTime : '', Validators.required],\r\n endTime: [endTime ? endTime : '', Validators.required],\r\n percentage :[percentage, [Validators.required, Validators.maxLength(3)]],\r\n workingDay : [ workingDay , Validators.required], \r\n ruleName :[ruleName ? ruleName :'',] \r\n })\r\n }\r\n\r\n createContactsCtrl(days)\r\n {\r\n const formArray = [];\r\n if(days)\r\n {\r\n for(let itemNumber of days)\r\n {\r\n formArray.push(\r\n this.fbp.group({\r\n itemNumber\r\n })\r\n )\r\n }\r\n }\r\n \r\n console.log(formArray);\r\n\r\n return formArray;\r\n }\r\n\r\n get overTimeRules() : FormArray {\r\n return this.overTimeRuleForm.get('overTimeRules') as FormArray;\r\n }\r\n\r\n myFormArray() {\r\n return this.overTimeRuleForm.get('overTimeRules') as FormArray;\r\n }\r\n\r\n addTimePeriod(timeperiod) {\r\n this.overTimeRules.push(this.createTimePeriod(timeperiod));\r\n }\r\n\r\n removeTimePeriod(index) {\r\n this.overTimeRules.removeAt(index);\r\n }\r\n\r\n validateFormFields() {\r\n //console.log(\"Validating Controls\");\r\n const overTimeRulesArray = this.overTimeRuleForm.get('overTimeRules') as FormArray;\r\n //console.log(overTimeRulesArray);\r\n \r\n Object.keys(overTimeRulesArray['controls']).forEach(element => {\r\n const control = overTimeRulesArray.get(element);\r\n //console.log(control);\r\n Object.keys(control['controls']).forEach(field => {\r\n const controlItem = control.get(field);\r\n //console.log(controlItem);\r\n if (controlItem instanceof FormControl) {\r\n //console.log(\"MarkAsTouched\");\r\n controlItem.markAsTouched({ onlySelf: true });\r\n controlItem.markAsDirty();\r\n //console.log(\"MarkAsDirty\");\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n onStartTimeChange(time, value, rowIndex){\r\n let startTime = time.get('startTime').value;\r\n let endTime = time.get('endTime').value;\r\n let items = time.get('workingDay').value;\r\n let validTimePeriod = true;\r\n\r\n if(endTime != '' && startTime !='' && startTime >= endTime )\r\n {\r\n //validTimePeriod = false;\r\n alert('Start Time is grater than end Time');\r\n time.get('startTime').setValue('');\r\n return;\r\n }\r\n\r\n const overTimeRulesArray = this.overTimeRuleForm.get('overTimeRules') as FormArray;\r\n let updatedValues = [];\r\n\r\n Object.keys(overTimeRulesArray['controls']).forEach((element, index) => {\r\n const control = overTimeRulesArray.get(element);\r\n if(index != rowIndex)\r\n {\r\n\r\n let sTime = control.value.startTime;\r\n let eTime = control.value.endTime;\r\n let days = control.value.workingDay;\r\n\r\n let isExistingItems = items.some( r => days.includes(r));\r\n let existingItems = items.filter(f => days.includes(f));\r\n\r\n //start time \r\n if(startTime >= sTime && startTime < eTime && isExistingItems)\r\n {\r\n validTimePeriod = false;\r\n\r\n updatedValues = this.removeExistingItems(isExistingItems, items,days, time );\r\n //return;\r\n } \r\n\r\n if(sTime >= startTime && eTime <= endTime && isExistingItems )\r\n {\r\n validTimePeriod = false;\r\n updatedValues = this.removeExistingItems(isExistingItems, items, days, time );\r\n\r\n // return;\r\n } \r\n } \r\n });\r\n\r\n if(!validTimePeriod)\r\n {\r\n alert(\"Invalid Time Entry : duplicated or overritten time periods occurred.\");\r\n time.get('workingDay').setValue(updatedValues) ;\r\n if(updatedValues.length == 0)\r\n {\r\n //if(isStarting)\r\n time.get('startTime').setValue('');\r\n //else\r\n time.get('endTime').setValue('');\r\n }\r\n }\r\n }\r\n\r\n onEndTimeChange(time, value, rowIndex)\r\n {\r\n let startTime = time.get('startTime').value;\r\n let endTime = time.get('endTime').value;\r\n let items = time.get('workingDay').value;\r\n let validTimePeriod = true;\r\n\r\n // this should come to end time\r\n if( endTime !='' && endTime <= startTime )\r\n {\r\n // validTimePeriod = false;\r\n alert('End Time is lesser than start Time');\r\n time.get('endTime').setValue('');\r\n return;\r\n }\r\n const overTimeRulesArray = this.overTimeRuleForm.get('overTimeRules') as FormArray;\r\n let updatedValues = [];\r\n\r\n Object.keys(overTimeRulesArray['controls']).forEach((element, index) => {\r\n const control = overTimeRulesArray.get(element);\r\n // console.log(\"Checking row index : \" + rowIndex);\r\n // console.log(\"Current row inedx : \" + index);\r\n \r\n // if(index < overTimeRulesArray['controls'].length-1)\r\n // {\r\n if( index != rowIndex)\r\n {\r\n const ctrl = overTimeRulesArray.get(element);\r\n let sTime = control.value.startTime;\r\n let eTime = control.value.endTime;\r\n let days = control.value.workingDay;\r\n \r\n // console.log(\"current row sTime : \" + sTime);\r\n // console.log(\"current row eTime : \" + eTime);\r\n // console.log(\"current row days : \" + days);\r\n // console.log(\"checking row days : \" + items);\r\n \r\n let isExistingItems = items.some( r => days.includes(r));\r\n let existingItems = items.filter(f => days.includes(f));\r\n\r\n // console.log(isExistingItems);\r\n // console.log(existingItems);\r\n\r\n // console.log(\"Has Existing days :\" + isExistingItems);\r\n // console.log(\"Existing Days : \"+ existingItems);\r\n\r\n // end time\r\n if(endTime != null && endTime != '' && endTime > sTime && endTime <= eTime && isExistingItems)\r\n {\r\n validTimePeriod = false;\r\n updatedValues = this.removeExistingItems(isExistingItems, items,days, time );\r\n //return;\r\n }\r\n\r\n if(startTime != null && startTime != '' && sTime >= startTime && eTime <= endTime && isExistingItems)\r\n {\r\n validTimePeriod = false;\r\n updatedValues = this.removeExistingItems(isExistingItems, items,days, time );\r\n //return;\r\n } \r\n }\r\n //} \r\n });\r\n\r\n if(!validTimePeriod)\r\n {\r\n alert(\"Invalid Time Entry : duplicated or overritten time periods occurred.\");\r\n time.get('workingDay').setValue(updatedValues) ;\r\n if(updatedValues.length == 0)\r\n {\r\n //if(isStarting)\r\n time.get('startTime').setValue('');\r\n //else\r\n time.get('endTime').setValue('');\r\n }\r\n }\r\n }\r\n\r\n removeExistingItems(isExists, toFilter, toRemove, control)\r\n {\r\n if(isExists)\r\n {\r\n // console.log(\"Removing Days : \" + toRemove);\r\n toFilter = toFilter.filter( function( el ) {\r\n return !toRemove.includes( el );\r\n } );\r\n\r\n // console.log(\"New Days : \", + toFilter);\r\n\r\n return toFilter;\r\n // control.get('workingDay').setValue(toFilter) ;\r\n // if(toFilter.length == 0)\r\n // {\r\n // //if(isStarting)\r\n // control.get('startTime').setValue('');\r\n // //else\r\n // control.get('endTime').setValue('');\r\n // }\r\n }\r\n }\r\n\r\n onTagChanged(time, data, rowIndex): void {\r\n let validTimePeriod = true;\r\n // console.log(\"selected values : \"+ data);\r\n //console.log(time);\r\n let startTime = time.get('startTime').value;\r\n let endTime = time.get('endTime').value;\r\n let items = time.get('workingDay').value;\r\n //this.selectedData = data.value;\r\n //console.log(time.get('workingDay'));\r\n //console.log(data.length);\r\n if(startTime != '' && endTime != '')\r\n {\r\n if(data.length != 0)\r\n {\r\n let selectedValue = [];\r\n selectedValue.push(data[data.length-1]); //get the last value selected\r\n const overTimeRulesArray = this.overTimeRuleForm.get('overTimeRules') as FormArray;\r\n let updatedValues = [];\r\n\r\n Object.keys(overTimeRulesArray['controls']).forEach((element, index) => {\r\n const control = overTimeRulesArray.get(element);\r\n //console.log(\"Checking row index : \" + rowIndex);\r\n //console.log(\"Current row inedx : \" + index);\r\n \r\n if( index != rowIndex)\r\n {\r\n const ctrl = overTimeRulesArray.get(element);\r\n let sTime = control.value.startTime;\r\n let eTime = control.value.endTime;\r\n let days = control.value.workingDay;\r\n \r\n // console.log(\"current row sTime : \" + sTime);\r\n // console.log(\"current row eTime : \" + eTime);\r\n // console.log(\"current row days : \" + days);\r\n // console.log(\"checking row days : \" + items);\r\n let isExistingItems = selectedValue.some( r => days.includes(r));\r\n let existingItems = selectedValue.filter(f => days.includes(f));\r\n \r\n // console.log(isExistingItems);\r\n // console.log(existingItems);\r\n\r\n // console.log(\"Has Existing days :\" + isExistingItems);\r\n //console.log(\"Existing Days : \"+ existingItems);\r\n\r\n //start time \r\n if(startTime >= sTime && startTime < eTime && isExistingItems)\r\n {\r\n // console.log(\"Exists inbetween same timeperiod\");\r\n validTimePeriod = false;\r\n updatedValues = this.removeExistingItems(isExistingItems, items,days, time );\r\n //return;\r\n } \r\n\r\n if(sTime >= startTime && eTime <= endTime && isExistingItems )\r\n {\r\n // console.log(\"Exists between overriding time period\");\r\n validTimePeriod = false;\r\n updatedValues = this.removeExistingItems(isExistingItems, items,days, time );\r\n // return;\r\n } \r\n } \r\n });\r\n \r\n if(!validTimePeriod)\r\n {\r\n alert(\"Invalid Time Entry : duplicated or overritten time periods occurred.\");\r\n time.get('workingDay').setValue(updatedValues) ;\r\n if(updatedValues.length == 0)\r\n {\r\n //if(isStarting)\r\n time.get('startTime').setValue('');\r\n //else\r\n time.get('endTime').setValue('');\r\n }\r\n }\r\n }\r\n } \r\n }\r\n\r\n save() {\r\n this.validateFormFields();\r\n if (this.overTimeRuleForm.valid) {\r\n //console.log(\"form valid\");\r\n //if(this.overTimeRuleForm.dirty)\r\n //{\r\n this.isSubmitInvalid = false;\r\n //console.log(\"form dirty\");\r\n this.overTimeRuleForm.value.overTimeRules = this.overTimeRuleForm.value.overTimeRules ? this.overTimeRuleForm.value.overTimeRules : [];\r\n //console.log(this.overTimeRuleForm.value);\r\n this.configService.saveOverTimeRules(this.overTimeRuleForm.value).subscribe(\r\n //() => this.onSaveComplete('update', true, '0'),\r\n (res) => {\r\n //console.log(res);\r\n this.setNotificationData('update',res);\r\n this.getOverTimeRules();\r\n });\r\n // } \r\n }\r\n else{\r\n //console.log(this.overTimeRuleForm) ;\r\n // console.log(\"form invalid\");\r\n this.isSubmitInvalid = true\r\n } \r\n //console.log(this.overTimeRuleForm) ;\r\n }\r\n\r\n getOverTimeRules() {\r\n this.tempDaysDictionary = [];\r\n\r\n this.configService.getOverTimeRules().subscribe((res) => {\r\n console.log(\"Overtime rules\");\r\n console.log(res);\r\n this.overTimeRulesArr = res.overTimeRules;\r\n\r\n const overTimeRulesArray = this.fbp.array([]);\r\n\r\n res.overTimeRules.forEach((item, index) => {\r\n \r\n this.tempWorkingDay =[];\r\n this.tempWorkingDays2 = [];\r\n\r\n let tempArr : number[] = [];\r\n for(var i = 0; i < item.workingDay.length; i++)\r\n {\r\n tempArr.push(item.workingDay[i]); \r\n }\r\n\r\n this.tempWorkingDay =item.workingDay;\r\n this.tempWorkingDays2 = item.select2WorkingDay;\r\n\r\n this.listOfWorkingDays[index] = [...this.tempWorkingDay];\r\n this.listOfWorkingDays2[index] = [...this.tempWorkingDays2];\r\n \r\n var objt = this.createTimePeriod(item.id, item.timePeriodId, item.startTime, item.endTime, item.percentage, this.listOfWorkingDays[index], item.ruleName) ;// item.workingDay or temArr add more properties\r\n // console.log(objt)\r\n overTimeRulesArray.push(objt);\r\n\r\n });\r\n\r\n this.overTimeRuleForm.setControl('overTimeRules', overTimeRulesArray);\r\n });\r\n }\r\n\r\n get rulesFormArrays() {\r\n return (this.overTimeRuleForm.get('overTimeRules'));\r\n }\r\n\r\n resetField(fieldName) {\r\n //this.rulesFormArrays.controls.forEach(group => group.get(fieldName).reset());\r\n this.rulesFormArrays.controls.forEach(group => group.reset());\r\n }\r\n\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'update') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Uppdatering av regler över tiden lyckades!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av tidsregler misslyckades! Var god försök igen.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n console.log(this.notificationModal);\r\n }\r\n ($('#timePeriodsNotificationModal') as any).modal('show');\r\n\r\n setTimeout(() => {\r\n ($('#timePeriodsNotificationModal') as any).modal('hide');\r\n }, 1000);\r\n }\r\n}\r\n","module.exports = \".input-group .form-control{\\r\\n border: none !important;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVwb3J0L2FkbWluLXJlcG9ydC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsdUJBQXVCO0FBQ3pCIiwiZmlsZSI6InNyYy9hcHAvcmVwb3J0L2FkbWluLXJlcG9ydC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2x7XHJcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuIl19 */\"","import { Component, OnInit, AfterViewInit } from '@angular/core';\r\nimport { UserService } from '../user/user.service';\r\nimport { IUserInfo } from '../user/user-info';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ReportInfo } from './report-info';\r\nimport { ReportSearchCriteria } from './report-search-criteria';\r\nimport { CalendarService } from '../calendar/calendar.service';\r\nimport { ConfigService } from '../shared/services/config.service';\r\nimport SwedishHolidays from '../shared/constants/swedishHolidays';\r\n\r\n@Component({\r\n selector: 'wfm-employee-report',\r\n templateUrl: './admin-report.component.html',\r\n styleUrls: ['./admin-report.component.css']\r\n})\r\nexport class AdminReportComponent implements OnInit, AfterViewInit {\r\n\r\n empType = 'Employee';\r\n swedishHolidays: typeof SwedishHolidays;\r\n errorMessage: string;\r\n usersList: IUserInfo[];\r\n searchForm: FormGroup;\r\n reportInfo: ReportInfo = {} as ReportInfo;\r\n cashierReportInfo: ReportInfo = {} as ReportInfo;\r\n searchCriteria: ReportSearchCriteria = {} as ReportSearchCriteria;\r\n showNoRecordMessage: boolean;\r\n currentDate: Date;\r\n notificationModal: any;\r\n resourceTypes: any[]\r\n reportInfoList: any[];\r\n firstReportInfo: any;\r\n bookingUnitName: any = '';\r\n empHourlyRate: number = 0;\r\n totalAmount: number;\r\n showEmpHourlyRate: boolean;\r\n configClientOverTimeRule: boolean = false;\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private userService: UserService,\r\n private calendarService: CalendarService,\r\n private configService: ConfigService\r\n ) { }\r\n\r\n ngOnInit() {\r\n // this.userService.getUserList(this.empType).subscribe(\r\n // (res: IUserInfo[]) => {\r\n // this.usersList = res;\r\n // },\r\n // (error: any) => this.errorMessage = error as any\r\n // );\r\n this.swedishHolidays = SwedishHolidays;\r\n this.searchForm = this.fb.group({\r\n userType: [],\r\n userId: [],\r\n month: []\r\n });\r\n this.reportInfo.timeRecords = [];\r\n this.cashierReportInfo.timeRecords = [];\r\n this.searchCriteria.resourceTypeId = 1;\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n this.getCurrentConfigData();\r\n this.getBookingUnit();\r\n let loggedInUserRole: string;\r\n loggedInUserRole = localStorage.getItem('role');\r\n\r\n if (loggedInUserRole == 'Administrator' || loggedInUserRole == 'Employee'\r\n ) {\r\n this.showEmpHourlyRate = true;\r\n }\r\n\r\n }\r\n\r\n getRowStyle(item: any) {\r\n console.log(\"x-\",item)\r\n return 'background-color : red' ;// Example: applying background color based on the value of 'column3'\r\n // Add more styles as needed based on other properties\r\n ;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n ($('.kendo-picker') as any).bind('focus', function () {\r\n $(this).data('kendoDatePicker').open();\r\n });\r\n\r\n ($('#kendo-month') as any).kendoDatePicker({\r\n format: 'MMMM yyyy',\r\n start: 'year',\r\n depth: 'year',\r\n change: (val) => {\r\n this.searchForm.patchValue({\r\n month: val.sender._value\r\n });\r\n if (this.searchForm.get('userType').value) {\r\n this.filtersChange()\r\n }\r\n }\r\n });\r\n // $(\"#kendo-month\").data(\"kendoDatePicker\").value(new Date());\r\n // this.searchForm.patchValue({\r\n // month: new Date()\r\n // });\r\n }\r\n\r\n getEmployeeHourlyRateDetails(userId: string): void {\r\n this.userService.getEmployeeHourlyRateDetails(userId).subscribe(data => {\r\n this.empHourlyRate = 0;\r\n this.totalAmount = 0;\r\n if (data) {\r\n if(data.isActive)\r\n {\r\n this.empHourlyRate = data.hourlyRate;\r\n this.totalAmount = this.empHourlyRate * this.reportInfoList[0].total;\r\n }\r\n \r\n }\r\n })\r\n }\r\n\r\n filtersChange(): void {\r\n const selectedType = this.searchForm.get('userType').value;\r\n var selectedMonth = this.searchForm.get('month').value;\r\n this.userService.getReportUserList(selectedMonth.toISOString(), selectedType).subscribe(\r\n (res: IUserInfo[]) => {\r\n this.usersList = res;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n // this.searchForm.patchValue({\r\n // userId :''\r\n // });\r\n }\r\n\r\n getUserWiseAdminConfigurationDetails(userId: string): void {\r\n this.configService.getUserWiseAdminCOnfigurations(userId).subscribe(data => {\r\n if (data.length) {\r\n this.configClientOverTimeRule = data.find(a => a.title === 'configClientOverTimeRule').isActive; \r\n }\r\n })\r\n }\r\n\r\n generateReport(): void {\r\n\r\n const validator = ($('#reportSearchForm') as any).kendoValidator().data('kendoValidator');\r\n if (validator.validate()) {\r\n this.searchCriteria.userType = this.searchForm.get('userType').value;\r\n this.searchCriteria.userId = this.searchForm.get('userId').value;\r\n this.searchCriteria.month = this.searchForm.get('month').value;\r\n // this.searchCriteria.month = this.searchForm.get('month').value;\r\n //this.searchCriteria.resourceTypeId = 1;\r\n this.reportInfoList = [];\r\n this.userService.getReportData(this.searchCriteria).subscribe(\r\n (res) => {\r\n this.reportInfoList = res;\r\n console.log(\"report info-\", this.reportInfoList);\r\n this.showNoRecordMessage = true;\r\n for (const resourceTypeId in this.reportInfoList) {\r\n if (Object.prototype.hasOwnProperty.call(this.reportInfoList, resourceTypeId)) {\r\n const element = this.reportInfoList[resourceTypeId];\r\n if (resourceTypeId == '1' || resourceTypeId == '0') {\r\n this.firstReportInfo = element;\r\n }\r\n this.showNoRecordMessage = this.showNoRecordMessage && element.timeRecords.length == 0;\r\n }\r\n }\r\n this.getEmployeeHourlyRateDetails(this.searchCriteria.userId);\r\n this.getUserWiseAdminConfigurationDetails(this.searchCriteria.userId);\r\n\r\n // if (this.reportInfoList.every(e => e.timeRecords.length == 0)) {\r\n // this.showNoRecordMessage = true;\r\n // } else {\r\n // this.showNoRecordMessage = false;\r\n // }\r\n\r\n // if (this.searchCriteria.userType === 'Client') {\r\n\r\n // this.userService.getReportData(this.searchCriteria).subscribe(\r\n // (res2: ReportInfo) => {\r\n // this.cashierReportInfo = res2;\r\n // if (this.reportInfo.timeRecords.length == 0 && this.cashierReportInfo.timeRecords.length == 0) {\r\n // this.showNoRecordMessage = true;\r\n // } else {\r\n // this.showNoRecordMessage = false;\r\n // }\r\n // },\r\n // (error: any) => this.errorMessage = error as any\r\n // );\r\n // } else {\r\n // this.cashierReportInfo.timeRecords = [];\r\n // if (this.reportInfo.timeRecords.length == 0) {\r\n // this.showNoRecordMessage = true;\r\n // } else {\r\n // this.showNoRecordMessage = false;\r\n // }\r\n // }\r\n\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n\r\n markSalaryOrInvoiceSent(): void {\r\n //this.reportInfo.isSalaryOrInvoiceSent = true;\r\n this.userService.updateSalaryInvoiceSentDetails(this.searchCriteria).subscribe(\r\n (res: boolean) => {\r\n this.reportInfo.isSalaryOrInvoiceSent = true;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n checkItemExists(hourlyWorkedPecentages, percentage) {\r\n if (hourlyWorkedPecentages.length > 0) {\r\n var item = hourlyWorkedPecentages.filter(p => p.typeOfPercentage == percentage);\r\n if (item.length > 0) {\r\n return item[0].workedHours;\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n confirmMissingTimeLogUpdate() {\r\n ($('#missingTimeUpdateConfirm') as any).modal('show');\r\n }\r\n\r\n addMissingTimeLogs(): void {\r\n ($('#missingTimeUpdateConfirm') as any).modal('hide');\r\n this.currentDate = new Date();\r\n const month = this.currentDate.getMonth()\r\n var pastMonthsHolidays: any[] = []\r\n for (let i = month; i > -1; i--) {\r\n let jsonMonthKey = this.getJsonDateFormat(i)\r\n let monthHolidayArr = this.swedishHolidays[jsonMonthKey];\r\n if (monthHolidayArr) {\r\n monthHolidayArr.forEach(element => {\r\n let holidayStr = this.getJsonDateStrFormat(i, element.date);\r\n let dateObj = new Date(holidayStr)\r\n pastMonthsHolidays.push(dateObj.toISOString())\r\n });\r\n }\r\n }\r\n this.calendarService.updateAllocationMissingTimeLogs(pastMonthsHolidays).subscribe(\r\n (status: boolean) => {\r\n this.setNotificationData('update', status);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n getJsonDateFormat(monthInt: number): string {\r\n return this.currentDate.getFullYear() + '' + (monthInt + 1 > 9 ? monthInt + 1 : '0' + (monthInt + 1))\r\n }\r\n getJsonDateStrFormat(monthInt: number, date: string): string {\r\n return this.currentDate.getFullYear() + '-' + (monthInt + 1 > 9 ? monthInt + 1 : '0' + (monthInt + 1)) + '-' + date\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'update') {\r\n if (status) {\r\n this.notificationModal.header = 'Successfull';\r\n this.notificationModal.description = 'Missing time added successfully.';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades'; //'Failed';\r\n this.notificationModal.description = 'Missing time adding failed!';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#notificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#notificationModal') as any).modal('hide');\r\n }, 3000);\r\n }\r\n\r\n getCurrentConfigData(): void {\r\n this.userService.getConfigData().subscribe((res) => {\r\n console.log(res);\r\n this.resourceTypes = res.resourceTypes;\r\n })\r\n }\r\n\r\n getResourceTypeName(id) {\r\n return (this.resourceTypes.find(x => x.id == id)).displayName\r\n }\r\n\r\n getBookingUnit() {\r\n this.configService.getBookingUnits().subscribe(res => {\r\n if (res) {\r\n this.bookingUnitName = (res.bookingUnits.length > 0) ? res.bookingUnits[0].name : '';\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, OnInit , AfterViewInit} from '@angular/core';\r\nimport { UserService } from '../user/user.service';\r\nimport { IUserInfo } from '../user/user-info';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ReportInfo } from './report-info';\r\nimport { ReportSearchCriteria } from './report-search-criteria';\r\nimport { CalendarService } from '../calendar/calendar.service';\r\nimport { ConfigService } from '../shared/services/config.service';\r\n\r\n@Component({\r\n selector: 'wfm-user-report',\r\n templateUrl: './user-report.component.html',\r\n styleUrls: ['./user-report.component.css']\r\n})\r\nexport class ClientReportComponent implements OnInit, AfterViewInit {\r\n\r\n userType = 'Client';\r\n errorMessage: string;\r\n usersList: IUserInfo[];\r\n searchForm: FormGroup;\r\n reportInfo: ReportInfo = {} as ReportInfo;\r\n cashierReportInfo: ReportInfo = {} as ReportInfo;\r\n searchCriteria: ReportSearchCriteria = {} as ReportSearchCriteria;\r\n showNoRecordMessage: boolean;\r\n resourceTypes:any[]\r\n reportInfoList: any[];\r\n firstReportInfo: any;\r\n bookingUnitName : any = '';\r\n\r\n constructor(private fb: FormBuilder,\r\n private userService: UserService,\r\n private calendarService: CalendarService, \r\n private configService : ConfigService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.searchForm = this.fb.group({\r\n userType: [],\r\n userId: [],\r\n month: []\r\n });\r\n this.reportInfo.timeRecords = [];\r\n this.getCurrentConfigData();\r\n this.getBookingUnit();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n ($('#kendo-month') as any).kendoDatePicker({\r\n format: 'MMMM yyyy',\r\n start: 'year',\r\n depth: 'year',\r\n change: (val) => {\r\n this.searchForm.patchValue({\r\n month: val.sender._value\r\n });\r\n }\r\n });\r\n\r\n ($('.kendo-picker') as any).bind('focus', function () {\r\n $(this).data('kendoDatePicker').open();\r\n });\r\n $(\"#kendo-month\").data(\"kendoDatePicker\").value(new Date());\r\n this.searchForm.patchValue({\r\n month: new Date()\r\n });\r\n }\r\n\r\n\r\n generateReport(): void {\r\n const validator = ($('#reportSearchForm')as any).kendoValidator().data('kendoValidator');\r\n if (validator.validate()) {\r\n this.searchCriteria.month = this.searchForm.get('month').value;\r\n this.searchCriteria.resourceTypeId = 1;\r\n\r\n this.userService.getUserReportData(this.searchCriteria, this.userType).subscribe(\r\n (res) => {\r\n this.reportInfoList = res;\r\n this.showNoRecordMessage = true;\r\n for (const resourceTypeId in this.reportInfoList) {\r\n if (Object.prototype.hasOwnProperty.call(this.reportInfoList, resourceTypeId)) {\r\n const element = this.reportInfoList[resourceTypeId];\r\n if (resourceTypeId =='1' || resourceTypeId =='0') {\r\n this.firstReportInfo = element;\r\n }\r\n this.showNoRecordMessage = this.showNoRecordMessage && element.timeRecords.length==0;\r\n }\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n\r\n getCurrentConfigData(): void {\r\n this.userService.getConfigData().subscribe((res) => {\r\n console.log(res);\r\n this.resourceTypes = res.resourceTypes;\r\n })\r\n }\r\n\r\n getResourceTypeName(id){\r\n return (this.resourceTypes.find(x => x.id == id)).displayName\r\n }\r\n checkItemExists(hourlyWorkedPecentages, percentage)\r\n {\r\n if(hourlyWorkedPecentages.length > 0)\r\n {\r\n var item = hourlyWorkedPecentages.filter(p =>p.typeOfPercentage == percentage);\r\n\r\n if(item.length > 0)\r\n {\r\n return item[0].workedHours ;\r\n }\r\n }\r\n \r\n return 0;\r\n }\r\n getBookingUnit()\r\n {\r\n this.configService.getBookingUnits().subscribe(res => {\r\n if(res)\r\n {\r\n this.bookingUnitName = (res.bookingUnits.length > 0) ? res.bookingUnits[0].name : '';\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import { Component, OnInit, AfterViewInit } from '@angular/core';\r\nimport { UserService } from '../user/user.service';\r\nimport { IUserInfo } from '../user/user-info';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ReportInfo } from './report-info';\r\nimport { ReportSearchCriteria } from './report-search-criteria';\r\nimport { CalendarService } from '../calendar/calendar.service';\r\nimport { ConfigService } from '../shared/services/config.service';\r\n\r\n@Component({\r\n selector: 'wfm-user-report',\r\n templateUrl: './user-report.component.html',\r\n styleUrls: ['./user-report.component.css']\r\n})\r\nexport class EmployeeReportComponent implements OnInit, AfterViewInit {\r\n\r\n userType = 'Employee';\r\n errorMessage: string;\r\n usersList: IUserInfo[];\r\n searchForm: FormGroup;\r\n reportInfo: ReportInfo = {} as ReportInfo;\r\n cashierReportInfo: ReportInfo = {} as ReportInfo;\r\n searchCriteria: ReportSearchCriteria = {} as ReportSearchCriteria;\r\n showNoRecordMessage: boolean;\r\n resourceTypes:any[]\r\n reportInfoList: any[];\r\n firstReportInfo: any;\r\n bookingUnitName : any = '';\r\n\r\n constructor(private fb: FormBuilder, \r\n private userService: UserService, \r\n private calendarService: CalendarService,\r\n private configService : ConfigService ) { }\r\n\r\n ngOnInit() {\r\n this.searchForm = this.fb.group({\r\n userType: [],\r\n userId: [],\r\n month: []\r\n });\r\n this.reportInfo.timeRecords = [];\r\n this.cashierReportInfo.timeRecords = [];\r\n this.getCurrentConfigData();\r\n this.getBookingUnit();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n ($('#kendo-month') as any).kendoDatePicker({\r\n format: 'MMMM yyyy',\r\n start: 'year',\r\n depth: 'year',\r\n change: (val) => {\r\n this.searchForm.patchValue({\r\n month: val.sender._value\r\n });\r\n }\r\n });\r\n\r\n ($('.kendo-picker') as any).bind('focus', function () {\r\n $(this).data('kendoDatePicker').open();\r\n });\r\n $(\"#kendo-month\").data(\"kendoDatePicker\").value(new Date());\r\n this.searchForm.patchValue({\r\n month: new Date()\r\n });\r\n }\r\n\r\n\r\n generateReport(): void {\r\n const validator = ($('#reportSearchForm') as any).kendoValidator().data('kendoValidator');\r\n if (validator.validate()) {\r\n this.searchCriteria.month = this.searchForm.get('month').value;\r\n\r\n this.userService.getUserReportData(this.searchCriteria, this.userType).subscribe(\r\n (res) => {\r\n this.reportInfoList = res;\r\n this.showNoRecordMessage = true;\r\n for (const resourceTypeId in this.reportInfoList) {\r\n if (Object.prototype.hasOwnProperty.call(this.reportInfoList, resourceTypeId)) {\r\n const element = this.reportInfoList[resourceTypeId];\r\n if (resourceTypeId =='1' || resourceTypeId =='0') {\r\n this.firstReportInfo = element;\r\n }\r\n this.showNoRecordMessage = this.showNoRecordMessage && element.timeRecords.length==0;\r\n }\r\n }\r\n\r\n // this.reportInfo = res;\r\n // if (this.reportInfo.timeRecords.length === 0) {\r\n // this.showNoRecordMessage = true;\r\n // } else {\r\n // this.showNoRecordMessage = false;\r\n // }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n }\r\n\r\n getCurrentConfigData(): void {\r\n this.userService.getConfigData().subscribe((res) => {\r\n console.log(res);\r\n this.resourceTypes = res.resourceTypes;\r\n })\r\n }\r\n\r\n getResourceTypeName(id){\r\n return (this.resourceTypes.find(x => x.id == id)).displayName\r\n }\r\n \r\n checkItemExists(hourlyWorkedPecentages, percentage)\r\n {\r\n\r\n if(hourlyWorkedPecentages.length > 0)\r\n {\r\n var item = hourlyWorkedPecentages.filter(p =>p.typeOfPercentage == percentage);\r\n\r\n if(item.length > 0)\r\n {\r\n return item[0].workedHours ;\r\n }\r\n }\r\n \r\n return 0;\r\n }\r\n getBookingUnit()\r\n {\r\n this.configService.getBookingUnits().subscribe(res => {\r\n if(res)\r\n {\r\n this.bookingUnitName = (res.bookingUnits.length > 0) ? res.bookingUnits[0].name : '';\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { AdminReportComponent } from './admin-report.component';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { EmployeeReportComponent } from './employee-report.component';\r\nimport { ClientReportComponent } from './client-report.component';\r\nimport { SuperclientReportComponent } from './superclient-report/superclient-report.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AdminReportComponent, EmployeeReportComponent, ClientReportComponent, SuperclientReportComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n ReactiveFormsModule,\r\n FormsModule\r\n ]\r\n})\r\nexport class ReportModule { }\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3JlcG9ydC9zdXBlcmNsaWVudC1yZXBvcnQvc3VwZXJjbGllbnQtcmVwb3J0LmNvbXBvbmVudC5jc3MifQ== */\"","import { UserService } from './../../user/user.service';\r\nimport { ReportSearchCriteria } from './../report-search-criteria';\r\nimport { ReportInfo } from './../report-info';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { IUserInfo } from './../../user/user-info';\r\nimport { Component, OnInit, AfterViewInit } from '@angular/core';\r\nimport { ConfigService } from '../../shared/services/config.service';\r\n\r\n@Component({\r\n selector: 'wfm-superclient-report',\r\n templateUrl: './superclient-report.component.html',\r\n styleUrls: ['./superclient-report.component.css']\r\n})\r\nexport class SuperclientReportComponent implements OnInit, AfterViewInit {\r\n\r\n errorMessage: string;\r\n usersList: IUserInfo[];\r\n searchForm: FormGroup;\r\n reportInfo: ReportInfo = {} as ReportInfo;\r\n cashierReportInfo: ReportInfo = {} as ReportInfo;\r\n searchCriteria: ReportSearchCriteria = {} as ReportSearchCriteria;\r\n showNoRecordMessage: boolean;\r\n resourceTypes:any;\r\n reportInfoList:any;\r\n firstreportinfo:any;\r\n bookingUnitName : any = '';\r\n\r\n constructor(private fb: FormBuilder, private userService: UserService, private configService : ConfigService) { }\r\n\r\n ngOnInit() {\r\n this.searchForm = this.fb.group({\r\n userType: [],\r\n userId: [],\r\n month: []\r\n });\r\n this.reportInfo.timeRecords = [];\r\n this.cashierReportInfo.timeRecords = [];\r\n this.searchCriteria.resourceTypeId = 1;\r\n (this.searchForm).setValue(this.initializeSearchForm(), {onlySelf: true});\r\n this.getSubClientList();\r\n this.getCurrentConfigData();\r\n this.getBookingUnit();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n ($('.kendo-picker') as any).bind('focus', function () {\r\n $(this).data('kendoDatePicker').open();\r\n });\r\n\r\n ($('#kendo-month') as any).kendoDatePicker({\r\n format: 'MMMM yyyy',\r\n start: 'year',\r\n depth: 'year',\r\n change: (val) => {\r\n this.searchForm.patchValue({\r\n month: val.sender._value\r\n });\r\n }\r\n });\r\n $(\"#kendo-month\").data(\"kendoDatePicker\").value(new Date());\r\n this.searchForm.patchValue({\r\n month: new Date()\r\n });\r\n }\r\n\r\n getSubClientList(): void {\r\n const selectedType = this.searchForm.get('userType').value;\r\n this.userService.getSubClientUserList(selectedType).subscribe(\r\n (res: IUserInfo[]) => {\r\n this.usersList = res;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n generateReport(): void {\r\n\r\n const validator = ($('#superClientReportSearchForm')as any).kendoValidator().data('kendoValidator');\r\n if (validator.validate()) {\r\n this.searchCriteria.userType = this.searchForm.get('userType').value;\r\n this.searchCriteria.userId = this.searchForm.get('userId').value;\r\n this.searchCriteria.month = this.searchForm.get('month').value;\r\n this.searchCriteria.month = this.searchForm.get('month').value;\r\n this.searchCriteria.resourceTypeId = 1;\r\n\r\n this.userService.getSuperClientReportData(this.searchCriteria).subscribe(\r\n (res: ReportInfo) => {\r\n // this.reportInfo = res;\r\n // this.searchCriteria.resourceTypeId = 2;\r\n\r\n // if (this.searchCriteria.userType === 'Client') {\r\n // this.userService.getSuperClientReportData(this.searchCriteria).subscribe(\r\n // (res2: ReportInfo) => {\r\n // this.cashierReportInfo = res2;\r\n // if (this.reportInfo.timeRecords.length == 0 && this.cashierReportInfo.timeRecords.length == 0) {\r\n // this.showNoRecordMessage = true;\r\n // } else {\r\n // this.showNoRecordMessage = false;\r\n // }\r\n // },\r\n // (error: any) => this.errorMessage = error as any\r\n // );\r\n // } else {\r\n // this.cashierReportInfo.timeRecords = [];\r\n // if (this.reportInfo.timeRecords.length == 0) {\r\n // this.showNoRecordMessage = true;\r\n // } else {\r\n // this.showNoRecordMessage = false;\r\n // }\r\n // }\r\n\r\n //this.reportInfo = res;\r\n //this.searchCriteria.resourceTypeId = 2;\r\n this.reportInfoList = res;\r\n //this.firstreportinfo = res['1']\r\n this.showNoRecordMessage = true;\r\n for (const resourceTypeId in this.reportInfoList) {\r\n if (Object.prototype.hasOwnProperty.call(this.reportInfoList, resourceTypeId)) {\r\n const element = this.reportInfoList[resourceTypeId];\r\n if (resourceTypeId =='1' || resourceTypeId =='0') {\r\n this.firstreportinfo = element;\r\n }\r\n this.showNoRecordMessage = this.showNoRecordMessage && element.timeRecords.length==0;\r\n }\r\n }\r\n\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n }\r\n\r\n markSalaryOrInvoiceSent(): void {\r\n //this.reportInfo.isSalaryOrInvoiceSent = true;\r\n this.userService.updateSalaryInvoiceSentDetails(this.searchCriteria).subscribe(\r\n (res: boolean) => {\r\n this.reportInfo.isSalaryOrInvoiceSent = true;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n initializeSearchForm() {\r\n return {\r\n userType: 'Client',\r\n userId: '',\r\n month: ''\r\n }\r\n }\r\n\r\n getCurrentConfigData(): void {\r\n this.userService.getConfigData().subscribe((res) => {\r\n console.log(res);\r\n this.resourceTypes = res.resourceTypes;\r\n })\r\n }\r\n\r\n getResourceTypeName(id){\r\n return (this.resourceTypes.find(x => x.id == id)).displayName\r\n }\r\n\r\n checkItemExists(hourlyWorkedPecentages, percentage)\r\n {\r\n //console.log(hourlyWorkedPecentages);\r\n //console.log(percentage);\r\n if(hourlyWorkedPecentages.length > 0)\r\n {\r\n var item = hourlyWorkedPecentages.filter(p =>p.typeOfPercentage == percentage);\r\n //console.log(item);\r\n if(item.length > 0)\r\n {\r\n //console.log(item[0].workedHours);\r\n return item[0].workedHours ;\r\n }\r\n }\r\n \r\n return 0;\r\n }\r\n \r\n getBookingUnit()\r\n {\r\n this.configService.getBookingUnits().subscribe(res => {\r\n console.log(res);\r\n if(res)\r\n {\r\n this.bookingUnitName = res.bookingUnits[0].name;\r\n console.log(this.bookingUnitName);\r\n }\r\n });\r\n }\r\n}\r\n","module.exports = \".form-control-style {\\r\\n height: calc(1.5em + .75rem + 2px);\\r\\n width: 100% !important;\\r\\n\\r\\n}\\r\\n.input-group .form-control{\\r\\n border: none !important;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVwb3J0L3VzZXItcmVwb3J0LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxrQ0FBa0M7RUFDbEMsc0JBQXNCOztBQUV4QjtBQUNBO0VBQ0UsdUJBQXVCO0FBQ3pCIiwiZmlsZSI6InNyYy9hcHAvcmVwb3J0L3VzZXItcmVwb3J0LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1jb250cm9sLXN0eWxlIHtcclxuICBoZWlnaHQ6IGNhbGMoMS41ZW0gKyAuNzVyZW0gKyAycHgpO1xyXG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcblxyXG59XHJcbi5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9se1xyXG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcbiJdfQ== */\"","import { AppUserClaim } from './app-user-claim';\r\n\r\nexport class AppUserAuth {\r\n userName = '';\r\n // tslint:disable-next-line: variable-name\r\n access_token = '';\r\n isAuthenticated = false;\r\n role = '';\r\n claims: AppUserClaim[] = [];\r\n userType ='';\r\n userImage = '';\r\n}\r\n","export class AppUser {\r\n username: string;\r\n password: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router, CanActivate } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { SecurityService } from './security.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n constructor(private securityService: SecurityService,\r\n private router: Router) { }\r\n\r\n canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable | Promise | boolean {\r\n // Get property name on security object to check\r\n const claimType: string = next.data.claimType;\r\n\r\n if (this.securityService.isAuthenticated()\r\n && this.securityService.hasClaim(claimType)) {\r\n return true;\r\n } else {\r\n this.router.navigate(['login'],\r\n { queryParams: { returnUrl: state.url } });\r\n return false;\r\n }\r\n }\r\n}\r\n","module.exports = \".white-bg{\\r\\n background-color: #f1f1f1 !important;\\r\\n }\\r\\n.form-control.ng-invalid.ng-touched{\\r\\n border-color: #dc3545;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VjdXJpdHkvZm9yZ290LXBhc3N3b3JkL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0lBQ0ksb0NBQW9DO0VBQ3RDO0FBQ0Y7SUFDSSxxQkFBcUI7QUFDekIiLCJmaWxlIjoic3JjL2FwcC9zZWN1cml0eS9mb3Jnb3QtcGFzc3dvcmQvZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIud2hpdGUtYmd7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4uZm9ybS1jb250cm9sLm5nLWludmFsaWQubmctdG91Y2hlZHtcclxuICAgIGJvcmRlci1jb2xvcjogI2RjMzU0NTtcclxufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport { FormsModule, FormGroup, FormControl, FormBuilder, Validators } from '@angular/forms';\r\nimport { UserService } from 'src/app/user/user.service';\r\n\r\n@Component({\r\n selector: 'wfm-forgot-password',\r\n templateUrl: './forgot-password.component.html',\r\n styleUrls: ['./forgot-password.component.css']\r\n})\r\nexport class ForgotPasswordComponent implements OnInit {\r\n\r\n forgotPasswordForm: FormGroup\r\n showSuccessMsg: Boolean = false\r\n showFailedMsg: Boolean = false\r\n logoImageUrl : string;\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private userService: UserService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.forgotPasswordForm = this.fb.group({\r\n email: ['', [Validators.email, Validators.required]]\r\n })\r\n //this.logoImageUrl =\"https://teamplanstorage.blob.core.windows.net/24transport/logo.png\"// localStorage.getItem('logoImageUrl');\r\n this.logoImageUrl = localStorage.getItem('logoImageUrl');\r\n }\r\n\r\n public get email() {\r\n return this.forgotPasswordForm.get('email');\r\n }\r\n\r\n onSubmitEmail(): void {\r\n if (this.forgotPasswordForm.valid) {\r\n const formData = new FormData();\r\n formData.append('email',this.email.value)\r\n this.userService.submitForgotPasswordEmail(formData).subscribe((status) => {\r\n if (status) {\r\n this.showFailedMsg = false\r\n this.showSuccessMsg = true\r\n } else {\r\n this.showFailedMsg = true\r\n }\r\n })\r\n }\r\n \r\n }\r\n\r\n}\r\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { SecurityService } from './security.service';\r\n\r\n@Directive({\r\n // tslint:disable-next-line: directive-selector\r\n selector: '[hasClaim]'\r\n})\r\nexport class HasClaimDirective {\r\n @Input() set hasClaim(claimType: any) {\r\n if (this.securityService.hasClaim(claimType)) {\r\n // Add template to DOM\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n } else {\r\n // Remove template from DOM\r\n this.viewContainer.clear();\r\n }\r\n }\r\n\r\n constructor(\r\n private templateRef: TemplateRef,\r\n private viewContainer: ViewContainerRef,\r\n private securityService: SecurityService) { }\r\n\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse, HttpHeaders, HttpResponse, HttpEventType } from '@angular/common/http';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { Router } from '@angular/router';\r\nimport { finalize, tap } from 'rxjs/operators';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { SecurityService } from './security.service';\r\n\r\n\r\n@Injectable()\r\nexport class HttpRequestInterceptor implements HttpInterceptor {\r\n\r\n private totalRequests: number = 0\r\n\r\n constructor(private router: Router, private spinner: NgxSpinnerService, private securityService: SecurityService) { }\r\n\r\n intercept(req: HttpRequest, next: HttpHandler):\r\n Observable> {\r\n let lastResponse: HttpEvent;\r\n let error: HttpErrorResponse;\r\n this.totalRequests++;\r\n if (!req.url.includes('longbooking/templates/update')) {\r\n this.spinner.show();\r\n setTimeout(() => {\r\n this.spinner.hide();\r\n\r\n }, 4000);\r\n }\r\n\r\n const token = localStorage.getItem('bearerToken');\r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': 'Bearer ' + token,\r\n 'Cache-Control': 'no-cache',\r\n Pragma: 'no-cache'\r\n });\r\n\r\n if (token) {\r\n const newReq = req.clone({ headers });\r\n return next.handle(newReq)\r\n .pipe(\r\n tap(\r\n (res) => {\r\n lastResponse = res;\r\n if (res instanceof HttpResponse) {\r\n this.decreaseRequests();\r\n }\r\n },\r\n (err: any) => {\r\n this.decreaseRequests();\r\n if (err instanceof HttpErrorResponse) {\r\n if (err.status !== 401) {\r\n return;\r\n }\r\n this.securityService.logout()\r\n this.router.navigate(['login']);\r\n }\r\n }\r\n ),\r\n finalize(() => {\r\n if ((lastResponse.type === HttpEventType.Sent) && !error) {\r\n // last response type was 0, and haven't received an error\r\n // So this is a canceled request, Requests conut need to be decreased in order to hide the loader on correct request count.\r\n this.decreaseRequests();\r\n }\r\n })\r\n );\r\n\r\n } else {\r\n this.decreaseRequests();\r\n return next.handle(req);\r\n }\r\n }\r\n\r\n private decreaseRequests() {\r\n this.totalRequests--;\r\n if (this.totalRequests === 0) {\r\n this.spinner.hide();\r\n }\r\n }\r\n}\r\n\r\n@NgModule({\r\n providers: [\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: HttpRequestInterceptor,\r\n multi: true\r\n }\r\n ]\r\n})\r\n\r\nexport class HttpInterceptorModule {\r\n}\r\n","module.exports = \".white-bg{\\r\\n background-color: #f1f1f1 !important;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VjdXJpdHkvbG9naW4uY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLG9DQUFvQztBQUN0QyIsImZpbGUiOiJzcmMvYXBwL3NlY3VyaXR5L2xvZ2luLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIud2hpdGUtYmd7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMSAhaW1wb3J0YW50O1xyXG59XHJcbiJdfQ== */\"","import { Component, OnInit, Renderer2, Inject } from '@angular/core';\r\nimport { AppUser } from './app-user';\r\nimport { AppUserAuth } from './app-user-auth';\r\nimport { SecurityService } from './security.service';\r\nimport { FormGroup, FormBuilder, Validators, AbstractControl } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ConfigService } from '../shared/services/config.service';\r\n\r\n@Component({\r\n selector: 'wfm-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.css']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n userForm: FormGroup;\r\n user = new AppUser();\r\n customerForm: FormGroup;\r\n securityObject: AppUserAuth = null;\r\n returnUrl: string;\r\n usernameValidation: string;\r\n logoImageUrl: string;\r\n\r\n private validationMessages = {\r\n required: 'This field is required',\r\n minlength: 'should be 3 characters'\r\n };\r\n\r\n constructor(private fb: FormBuilder, private securityService: SecurityService, private router: Router, private route: ActivatedRoute, private configService: ConfigService,\r\n @Inject(DOCUMENT) private document: Document,\r\n private renderer: Renderer2) { }\r\n\r\n ngOnInit() {\r\n\r\n this.userForm = this.fb.group({\r\n username: ['', Validators.required],\r\n password: ['', Validators.required]\r\n });\r\n\r\n const usernameControl = this.userForm.get('username');\r\n usernameControl.valueChanges.pipe(\r\n ).subscribe(\r\n value => this.setMessage(usernameControl)\r\n );\r\n this.configService.getConfigData().subscribe((res) => {\r\n localStorage.setItem(\"logoImageUrl\", res.configuration.logoImagePath);\r\n this.logoImageUrl = '../../assets/images/'.concat(res.configuration.logoImagePath);\r\n })\r\n // this.logoImageUrl =\"https://teamplanstorage.blob.core.windows.net/prodimages/logo-login-pharmatch.ico\"\r\n // this.logoImageUrl = \"https://teamplanstorage.blob.core.windows.net/prodimages/demo login page imag.png\"\r\n this.returnUrl = this.route.snapshot.queryParamMap.get('returnUrl');\r\n\r\n if (this.securityService.isAuthenticated() && localStorage.getItem('role')) {\r\n this.redirectToProfile()\r\n }\r\n\r\n }\r\n login() {\r\n if (this.userForm.valid) {\r\n this.user.username = this.userForm.get('username').value;\r\n this.user.password = this.userForm.get('password').value;\r\n\r\n // const u = {...this.user, ...this.userForm.value };\r\n this.securityService.login(this.user).subscribe(\r\n resp => { \r\n this.securityObject = resp;\r\n let claims = JSON.parse(this.securityObject.claims.toString());\r\n localStorage.setItem(\"loggedinUserId\",claims[0].userId);\r\n this.redirectToProfile()\r\n },\r\n () => {\r\n this.securityObject = new AppUserAuth();\r\n }\r\n );\r\n } else {\r\n }\r\n\r\n }\r\n\r\n redirectToProfile() {\r\n const role = localStorage.getItem('role');\r\n if (role === 'Administrator') {\r\n this.router.navigate(['/users/calendar']);\r\n } else if (role === 'SuperClient') {\r\n this.router.navigate(['clients/calendar']);\r\n } else if (role === 'Client') {\r\n this.router.navigate(['/calendar']);\r\n } else {\r\n this.router.navigate(['/bookings']);\r\n }\r\n }\r\n\r\n setMessage(c: AbstractControl): void {\r\n this.usernameValidation = '';\r\n if ((c.touched || c.dirty) && c.errors) {\r\n this.usernameValidation = Object.keys(c.errors).map(key => this.usernameValidation += this.validationMessages[key]).join(' ');\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \".form-control.ng-invalid.ng-touched{\\r\\n border-color: #dc3545 !important;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VjdXJpdHkvcmVzZXQtcGFzc3dvcmQvcmVzZXQtcGFzc3dvcmQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGdDQUFnQztBQUNwQyIsImZpbGUiOiJzcmMvYXBwL3NlY3VyaXR5L3Jlc2V0LXBhc3N3b3JkL3Jlc2V0LXBhc3N3b3JkLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1jb250cm9sLm5nLWludmFsaWQubmctdG91Y2hlZHtcclxuICAgIGJvcmRlci1jb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50O1xyXG59Il19 */\"","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { FormBuilder, FormGroup, Validators, FormControl, AbstractControl } from '@angular/forms';\r\nimport { UserService } from 'src/app/user/user.service';\r\n\r\n@Component({\r\n selector: 'wfm-reset-password',\r\n templateUrl: './reset-password.component.html',\r\n styleUrls: ['./reset-password.component.css']\r\n})\r\nexport class ResetPasswordComponent implements OnInit {\r\n\r\n code: string;\r\n userId: string;\r\n resetPasswordForm: FormGroup;\r\n isResetSuccess: Boolean;\r\n isResetFailed: Boolean;\r\n logoImageUrl : string;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private fb: FormBuilder,\r\n private userService: UserService\r\n ) { }\r\n\r\n ngOnInit() {\r\n\r\n this.resetPasswordForm = this.fb.group({\r\n password: ['', [Validators.required, Validators.minLength(6)]],\r\n confpassword: ['', [Validators.required, Validators.minLength(6)]],\r\n code: [],\r\n userId: []\r\n }, { validators: this.checkPasswords })\r\n\r\n this.route.queryParams.subscribe(params => {\r\n this.code = params.code;\r\n this.userId = params.userId;\r\n })\r\n //this.logoImageUrl =\"https://teamplanstorage.blob.core.windows.net/24transport/logo.png\"// localStorage.getItem('logoImageUrl');\r\n this.logoImageUrl = localStorage.getItem('logoImageUrl');\r\n }\r\n\r\n public get password() {\r\n return this.resetPasswordForm.get('password');\r\n }\r\n public get confpassword() {\r\n return this.resetPasswordForm.get('confpassword');\r\n }\r\n checkPasswords(c: AbstractControl) {\r\n let password = c.get('password').value;\r\n let confpassword = c.get('confpassword').value;\r\n return password === confpassword ? null : { notSame: true }\r\n }\r\n\r\n onSubmit() {\r\n this.resetPasswordForm.updateValueAndValidity();\r\n if (this.resetPasswordForm.valid) {\r\n const formData = new FormData();\r\n formData.append('userId', this.userId)\r\n formData.append('code', this.code)\r\n formData.append('pwd', this.resetPasswordForm.get('password').value)\r\n this.userService.submitResetPassword(formData).subscribe((status) => {\r\n if (status) {\r\n this.isResetFailed = false\r\n this.isResetSuccess = true;\r\n setTimeout(() => {\r\n this.router.navigate(['/login'])\r\n }, 2000);\r\n } else{\r\n this.isResetFailed = true\r\n }\r\n })\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AppUserAuth } from './app-user-auth';\r\nimport { of, Observable, throwError } from 'rxjs';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { tap, catchError } from 'rxjs/operators';\r\n\r\nimport { AppUser } from './app-user';\r\nimport { templateJitUrl } from '@angular/compiler';\r\nimport { environment } from '../../environments/environment';\r\n\r\nconst API_URL = environment.tokenUrl;\r\n\r\nconst httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/x-www-form-urlencoded',\r\n 'No-Auth': 'True'\r\n })\r\n};\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SecurityService {\r\n\r\n securityObject: AppUserAuth = new AppUserAuth();\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n login(entity: AppUser): Observable {\r\n // Initialize security object\r\n this.resetSecurityObject();\r\n const userData = 'username=' + entity.username + '&password=' + entity.password + '&grant_type=password';\r\n return this.http.post(API_URL, userData, httpOptions).pipe(\r\n tap(resp => {\r\n Object.assign(this.securityObject, resp);\r\n this.securityObject.claims = JSON.parse(resp.claims.toString());\r\n localStorage.setItem('bearerToken', this.securityObject.access_token);\r\n localStorage.setItem('username', this.securityObject.userName);\r\n localStorage.setItem('role', this.securityObject.userType);\r\n localStorage.setItem('userImage', this.securityObject.userImage);\r\n localStorage.setItem('claims', resp.claims.toString());\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n logout(): void {\r\n this.resetSecurityObject();\r\n }\r\n\r\n resetSecurityObject(): void {\r\n this.securityObject.userName = '';\r\n this.securityObject.access_token = '';\r\n this.securityObject.isAuthenticated = false;\r\n this.securityObject.claims = [];\r\n localStorage.removeItem('bearerToken');\r\n localStorage.removeItem('username');\r\n localStorage.removeItem('role');\r\n localStorage.removeItem('userImage');\r\n localStorage.removeItem('claims');\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n if (this.securityObject.isAuthenticated) {\r\n return true;\r\n } else {\r\n const token = localStorage.getItem('bearerToken');\r\n return token ? true : false;\r\n }\r\n\r\n }\r\n\r\n hasClaim(claimType: any, claimValue?: any): boolean {\r\n let ret = false;\r\n\r\n // See if an array of values was passed in.\r\n if (typeof claimType === 'string') {\r\n ret = this.isClaimValid(claimType, claimValue);\r\n } else {\r\n const claims: string[] = claimType;\r\n if (claims) {\r\n // tslint:disable-next-line: prefer-for-of\r\n for (let index = 0; index < claims.length; index++) {\r\n ret = this.isClaimValid(claims[index]);\r\n // If one is successful, then let them in\r\n if (ret) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return ret;\r\n\r\n }\r\n\r\n private isClaimValid(claimType: string, claimValue?: string): boolean {\r\n let ret = false;\r\n let auth: AppUserAuth = null;\r\n\r\n // Retrieve security object\r\n auth = this.securityObject;\r\n\r\n const claims = localStorage.getItem('claims');\r\n\r\n if (claims) {\r\n // See if the claim type has a value\r\n // *hasClaim=\"'claimType:value'\"\r\n if (claimType.indexOf(':') >= 0) {\r\n const words: string[] = claimType.split(':');\r\n claimType = words[0].toLowerCase();\r\n claimValue = words[1];\r\n } else {\r\n claimType = claimType.toLowerCase();\r\n // Either get the claim value, or assume 'true'\r\n claimValue = claimValue ? claimValue : 'true';\r\n }\r\n // Attempt to find the claim\r\n const claimsData = JSON.parse(claims);\r\n ret = claimsData.find(c =>\r\n // tslint:disable-next-line: triple-equals\r\n c.claimType.toLowerCase() == claimType &&\r\n // tslint:disable-next-line: triple-equals\r\n c.claimValue == claimValue) != null;\r\n }\r\n return ret;\r\n }\r\n\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (err.error instanceof ErrorEvent) {\r\n errorMessage = `An error occured: ${err.error.message}`;\r\n } else {\r\n errorMessage = `Server returned code: ${err.status}, error message is: ${err.message}`;\r\n }\r\n return throwError(errorMessage);\r\n }\r\n\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50LmNzcyJ9 */\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'wfm-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.css']\r\n})\r\nexport class FooterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","export enum ApiActionName {\r\n Customer = \"customer\",\r\n GetMatchingAlgorithmCriterias = \"config/matchingAlgorithmCriterias\",\r\n SaveLongBooking = \"longbooking/add\",\r\n SaveLongBookingTemplate = \"longbooking/templates/add\",\r\n GetLongBookingTemplates = \"longbooking/templates\",\r\n GetLongBookings = \"longbooking/getLongBookings\",\r\n GetShortBookings = \"allocations/getshortbookings\",\r\n GetLongBookingById = \"longbooking/getLongBookingById\",\r\n UpdateLongBooking = \"longbooking/update\",\r\n UpdateLongBookingTemplate = \"longbooking/templates/update\",\r\n UpdateLongBookingTemplateName = \"longbooking/templates/updateByName\",\r\n GetAvailabilities = \"longbooking/availabilities\",\r\n DeleteLongBooking = \"longbooking/delete\",\r\n DeleteLongBookingRange = \"longbooking/deleterange\",\r\n DeleteTemplate = \"longbooking/templates/delete\",\r\n UpdateAdminConfiguration = \"config/updateadminconfiguration\",\r\n GetAdminConfiguration = \"config/getadminConfigurations\",\r\n Updateuserwiseadminconfiguration =\"config/updateuserwiseadminconfiguration\",\r\n Getuserwiseadminconfiguration =\"config/userwisegetadminConfigurations\",\r\n GetEmployeeHourlyRate =\"user/hourlyrate\",\r\n UpdateEmployeeHourlyRate =\"user/hourlyrate\"\r\n}","const SwedishHolidays: any =\r\n{\r\n \"202001\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Nyårsdagen\"\r\n },\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Trettondedag jul\"\r\n }\r\n ],\r\n \"202004\": [\r\n {\r\n \"date\": \"03\",\r\n \"holiday\": \"Annandag påsk\"\r\n },\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Annandag påsk\"\r\n },\r\n {\r\n \"date\": \"10\",\r\n \"holiday\": \"Långfredagen\"\r\n },\r\n {\r\n \"date\": \"12\",\r\n \"holiday\": \"Påskdagen\"\r\n },\r\n {\r\n \"date\": \"19\",\r\n \"holiday\": \"Annandag påsk\"\r\n },\r\n {\r\n \"date\": \"25\",\r\n \"holiday\": \"Annandag påsk\"\r\n }\r\n ],\r\n \"202005\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Första Maj\"\r\n },\r\n {\r\n \"date\": \"21\",\r\n \"holiday\": \"Kristi himmelfärdsdag\"\r\n },\r\n {\r\n \"date\": \"31\",\r\n \"holiday\": \"Pingstdagen\"\r\n }\r\n ],\r\n \"202006\": [\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Sveriges nationaldag\"\r\n },\r\n {\r\n \"date\": \"20\",\r\n \"holiday\": \"Midsommar\"\r\n }\r\n ],\r\n \"202010\": [\r\n {\r\n \"date\": \"31\",\r\n \"holiday\": \"Alla helgons dag\"\r\n }\r\n ],\r\n \"202012\": [\r\n {\r\n \"date\": \"25\",\r\n \"holiday\": \"Juldagen\"\r\n },\r\n {\r\n \"date\": \"26\",\r\n \"holiday\": \"Annandag jul\"\r\n }\r\n ],\r\n \"202101\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Nyårsdagen\"\r\n },\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Trettondedag jul\"\r\n }\r\n ],\r\n \"202104\": [\r\n {\r\n \"date\": \"02\",\r\n \"holiday\": \"Långfredagen\"\r\n },\r\n {\r\n \"date\": \"04\",\r\n \"holiday\": \"Påskdagen\"\r\n },\r\n {\r\n \"date\": \"05\",\r\n \"holiday\": \"Annandag påsk\"\r\n }\r\n ],\r\n \"202105\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Första maj\"\r\n },\r\n {\r\n \"date\": \"13\",\r\n \"holiday\": \"Kristi himmelfärdsdag\"\r\n },\r\n {\r\n \"date\": \"23\",\r\n \"holiday\": \"Pingstdagen\"\r\n }\r\n ],\r\n \"202106\": [\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Sveriges nationaldag\"\r\n },\r\n {\r\n \"date\": \"26\",\r\n \"holiday\": \"Midsommar\"\r\n }\r\n ],\r\n \"202111\": [\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Alla helgons dag\"\r\n }\r\n ],\r\n \"202112\": [\r\n {\r\n \"date\": \"25\",\r\n \"holiday\": \"Juldagen\"\r\n },\r\n {\r\n \"date\": \"26\",\r\n \"holiday\": \"Annandag jul\"\r\n }\r\n ],\r\n \"202201\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Nyårsdagen\"\r\n },\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Trettondedag jul\"\r\n }\r\n ],\r\n \"202204\": [\r\n {\r\n \"date\": \"15\",\r\n \"holiday\": \"Långfredagen\"\r\n },\r\n {\r\n \"date\": \"17\",\r\n \"holiday\": \"Påskdagen\"\r\n },\r\n {\r\n \"date\": \"18\",\r\n \"holiday\": \"Annandag påsk\"\r\n }\r\n ],\r\n \"202205\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Första maj\"\r\n },\r\n {\r\n \"date\": \"26\",\r\n \"holiday\": \"Kristi himmelfärdsdag\"\r\n }\r\n ],\r\n \"202206\": [\r\n {\r\n \"date\": \"05\",\r\n \"holiday\": \"Pingstdagen\"\r\n },\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Sveriges nationaldag\"\r\n },\r\n {\r\n \"date\": \"25\",\r\n \"holiday\": \"Midsommar\"\r\n }\r\n ],\r\n \"202211\": [\r\n {\r\n \"date\": \"05\",\r\n \"holiday\": \"Alla helgons dag\"\r\n }\r\n ],\r\n \"202212\": [\r\n {\r\n \"date\": \"25\",\r\n \"holiday\": \"Juldagen\"\r\n },\r\n {\r\n \"date\": \"26\",\r\n \"holiday\": \"Annandag jul\"\r\n }\r\n ],\r\n \"202301\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Nyårsdagen\"\r\n },\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Trettondedag jul\"\r\n }\r\n ],\r\n \"202304\": [\r\n {\r\n \"date\": \"07\",\r\n \"holiday\": \"Långfredagen\"\r\n },\r\n {\r\n \"date\": \"09\",\r\n \"holiday\": \"Påskdagen\"\r\n },\r\n {\r\n \"date\": \"10\",\r\n \"holiday\": \"Annandag påsk\"\r\n }\r\n ],\r\n \"202305\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Första maj\"\r\n },\r\n {\r\n \"date\": \"18\",\r\n \"holiday\": \"Kristi himmelfärdsdag\"\r\n },\r\n {\r\n \"date\": \"28\",\r\n \"holiday\": \"Pingstdagen\"\r\n }\r\n ],\r\n \"202306\": [\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Sveriges nationaldag\"\r\n },\r\n {\r\n \"date\": \"24\",\r\n \"holiday\": \"Midsommar\"\r\n }\r\n ],\r\n \"202311\": [\r\n {\r\n \"date\": \"04\",\r\n \"holiday\": \"Alla helgons dag\"\r\n }\r\n ],\r\n \"202312\": [\r\n {\r\n \"date\": \"25\",\r\n \"holiday\": \"Juldagen\"\r\n },\r\n {\r\n \"date\": \"26\",\r\n \"holiday\": \"Annandag jul\"\r\n }\r\n ],\r\n \"202401\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Nyårsdagen\"\r\n },\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Trettondedag jul\"\r\n }\r\n ],\r\n \"202403\": [\r\n {\r\n \"date\": \"29\",\r\n \"holiday\": \"Långfredagen\"\r\n },\r\n {\r\n \"date\": \"31\",\r\n \"holiday\": \"Påskdagen\"\r\n }\r\n ],\r\n \"202404\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Annandag påsk\"\r\n }\r\n ],\r\n \"202405\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Första maj\"\r\n },\r\n {\r\n \"date\": \"09\",\r\n \"holiday\": \"Kristi himmelfärdsdag\"\r\n },\r\n {\r\n \"date\": \"19\",\r\n \"holiday\": \"Pingstdagen\"\r\n }\r\n ],\r\n \"202406\": [\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Sveriges nationaldag\"\r\n },\r\n {\r\n \"date\": \"22\",\r\n \"holiday\": \"Midsommar\"\r\n }\r\n ],\r\n \"202411\": [\r\n {\r\n \"date\": \"02\",\r\n \"holiday\": \"Alla helgons dag\"\r\n }\r\n ],\r\n \"202412\": [\r\n {\r\n \"date\": \"25\",\r\n \"holiday\": \"Juldagen\"\r\n },\r\n {\r\n \"date\": \"26\",\r\n \"holiday\": \"Annandag jul\"\r\n }\r\n ],\r\n \"202501\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Nyårsdagen\"\r\n },\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Trettondedag jul\"\r\n }\r\n ],\r\n \"202504\": [\r\n {\r\n \"date\": \"18\",\r\n \"holiday\": \"Långfredagen\"\r\n },\r\n {\r\n \"date\": \"20\",\r\n \"holiday\": \"Påskdagen\"\r\n },\r\n {\r\n \"date\": \"21\",\r\n \"holiday\": \"Annandag påsk\"\r\n }\r\n ],\r\n \"202505\": [\r\n {\r\n \"date\": \"01\",\r\n \"holiday\": \"Första maj\"\r\n },\r\n {\r\n \"date\": \"29\",\r\n \"holiday\": \"Kristi himmelfärdsdag\"\r\n }\r\n ],\r\n \"202506\": [\r\n {\r\n \"date\": \"06\",\r\n \"holiday\": \"Sveriges nationaldag\"\r\n },\r\n {\r\n \"date\": \"08\",\r\n \"holiday\": \"Pingstdagen\"\r\n },\r\n {\r\n \"date\": \"21\",\r\n \"holiday\": \"Midsommar\"\r\n }\r\n ],\r\n \"202511\": [\r\n {\r\n \"date\": \"02\",\r\n \"holiday\": \"Alla helgons dag\"\r\n }\r\n ],\r\n \"202512\": [\r\n {\r\n \"date\": \"25\",\r\n \"holiday\": \"Juldagen\"\r\n },\r\n {\r\n \"date\": \"26\",\r\n \"holiday\": \"Annandag jul\"\r\n }\r\n ]\r\n}\r\n\r\nexport default SwedishHolidays;","import { FormGroup } from '@angular/forms';\r\n\r\nexport class GenericValidator {\r\n// Provide the set of valid validation messages\r\n // Stucture:\r\n // controlName1: {\r\n // validationRuleName1: 'Validation Message.',\r\n // validationRuleName2: 'Validation Message.'\r\n // },\r\n // controlName2: {\r\n // validationRuleName1: 'Validation Message.',\r\n // validationRuleName2: 'Validation Message.'\r\n // }\r\n constructor(private validationMessages: { [key: string]: { [key: string]: string } }) {\r\n\r\n }\r\n\r\n // Processes each control within a FormGroup\r\n // And returns a set of validation messages to display\r\n // Structure\r\n // controlName1: 'Validation Message.',\r\n // controlName2: 'Validation Message.'\r\n processMessages(container: FormGroup): { [key: string]: string } {\r\n const messages = {};\r\n for (const controlKey in container.controls) {\r\n if (container.controls.hasOwnProperty(controlKey)) {\r\n const c = container.controls[controlKey];\r\n // If it is a FormGroup, process its child controls.\r\n if (c instanceof FormGroup) {\r\n const childMessages = this.processMessages(c);\r\n Object.assign(messages, childMessages);\r\n } else {\r\n // Only validate if there are validation messages for the control\r\n if (this.validationMessages[controlKey]) {\r\n if (controlKey === 'password') {\r\n if(!messages[controlKey]){\r\n messages[controlKey] = '';\r\n }\r\n } else{\r\n messages[controlKey] = '';\r\n }\r\n if ((c.dirty || c.touched) && c.errors) {\r\n Object.keys(c.errors).map(messageKey => {\r\n if (this.validationMessages[controlKey][messageKey]) {\r\n messages[controlKey] += this.validationMessages[controlKey][messageKey] + ' ';\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return messages;\r\n }\r\n\r\n getErrorCount(container: FormGroup): number {\r\n let errorCount = 0;\r\n for (const controlKey in container.controls) {\r\n if (container.controls.hasOwnProperty(controlKey)) {\r\n if (container.controls[controlKey].errors) {\r\n errorCount += Object.keys(container.controls[controlKey].errors).length;\r\n }\r\n }\r\n }\r\n return errorCount;\r\n }\r\n}\r\n","export class LongBookingEmployeeModel {\r\n employeeId : string;\r\n Name : string;\r\n}\r\n","export class LongBookingShiftDay {\r\n Id :number;\r\n //DateTime : Date;\r\n Lunch: number;\r\n StartTime : string;\r\n EndTime : string; \r\n Day : string;\r\n Date:Date;\r\n LongBookingShiftId : number;\r\n}\r\n\r\n","import { LongBookingShiftDay } from \"./long-booking-shift-day\";\r\n\r\nexport class LongBookingShift\r\n{\r\n Id:number;\r\n Day:string;\r\n From:Date;\r\n To:Date;\r\n LongBookingId: number;\r\n ShiftNumber: number;\r\n WeekNumber: number;\r\n ShiftName: string;\r\n ShiftTotalTime: number;\r\n ShiftDays :LongBookingShiftDay[]\r\n}","import { LongBookingShift } from \"./long-booking-shift.model\";\r\n\r\nexport class LongBookingTemplate {\r\n Id:number;\r\n label:string;\r\n Name:string;\r\n CreatedDate:Date;\r\n Shifts: LongBookingShift[];\r\n showEdit:boolean;\r\n updatedInProgress:boolean;\r\n}","import { DateDto } from \"./date.model\";\r\nimport { LongBookingEmployeeModel } from \"./long-booking-employee-model\";\r\nimport { LongBookingShift } from \"./long-booking-shift.model\";\r\n\r\nexport class LongBooking {\r\n id: number;\r\n clientId: string;\r\n startDate: Date;\r\n endDate: Date;\r\n resourceTypeId: number;\r\n isInquiry: boolean;\r\n isPartialBooking: boolean;\r\n isActive: boolean;\r\n experienceAreas: number[];\r\n excludedDays: Date[];\r\n devientDates: DateDto[];\r\n shifts: LongBookingShift[];\r\n createBookingsWithInquiries :boolean\r\n employees: LongBookingEmployeeModel[];\r\n}\r\n\r\nexport class EmployeeAvailbleDates {\r\n employee: any;\r\n dates: Date[]\r\n}","module.exports = \"\\r\\n.only-mobile{\\r\\n display: none !important;\\r\\n}\\r\\n.nav-img\\r\\n{\\r\\n max-width : 170px;\\r\\n max-height : 50px;\\r\\n}\\r\\n/* // Extra small devices (portrait phones, less than 576px) */\\r\\n@media (max-width: 575.98px) {\\r\\n .navbar-collapse\\r\\n {\\r\\n z-index: 2000;\\r\\n background-color: white;\\r\\n box-shadow: 5px 5px 5px gainsboro;\\r\\n padding: 5px;\\r\\n border-radius: 0px 0px 10px 10px;\\r\\n position: absolute;\\r\\n /* margin-top: 50px; */\\r\\n margin-top: 125px;\\r\\n width: 90%;\\r\\n }\\r\\n .only-mobile{\\r\\n display: block !important;\\r\\n }\\r\\n .only-desktop{\\r\\n display: none !important;\\r\\n }\\r\\n .nav-item a {\\r\\n font-size: 100% !important;\\r\\n }\\r\\n .nav-link.dropdown-toggle {\\r\\n display: none !important;\\r\\n }\\r\\n div.dropdown-menu {\\r\\n border: none !important;\\r\\n display: block !important;\\r\\n padding: 0px;\\r\\n }\\r\\n div.dropdown-menu a {\\r\\n font-size: 80% !important;\\r\\n padding-left: 8px !important;\\r\\n }\\r\\n}\\r\\n/* // Small devices (landscape phones, 576px and up) */\\r\\n@media (min-width: 576px) and (max-width: 767.98px) { }\\r\\n/* // Medium devices (tablets, 768px and up) */\\r\\n@media (min-width: 768px) and (max-width: 991.98px) { }\\r\\n/* // Large devices (desktops, 992px and up) */\\r\\n@media (min-width: 992px) and (max-width: 1199.98px) { }\\r\\n/* // Extra large devices (large desktops, 1200px and up) */\\r\\n@media (min-width: 1200px) { }\\r\\n/* @-moz-document url-prefix() { \\r\\n div.dropdown-menu a {\\r\\n font-size: 70% !important;\\r\\n padding: unset !important;\\r\\n }\\r\\n} */\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL25hdi5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQTtFQUNFLHdCQUF3QjtBQUMxQjtBQUNBOztFQUVFLGlCQUFpQjtFQUNqQixpQkFBaUI7QUFDbkI7QUFFQSw4REFBOEQ7QUFDOUQ7RUFDRTs7SUFFRSxhQUFhO0lBQ2IsdUJBQXVCO0lBQ3ZCLGlDQUFpQztJQUNqQyxZQUFZO0lBQ1osZ0NBQWdDO0lBQ2hDLGtCQUFrQjtJQUNsQixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLFVBQVU7RUFDWjtDQUNEO0lBQ0cseUJBQXlCO0VBQzNCO0VBQ0E7SUFDRSx3QkFBd0I7RUFDMUI7Q0FDRDtJQUNHLDBCQUEwQjtFQUM1QjtFQUNBO0lBQ0Usd0JBQXdCO0VBQzFCO0VBQ0E7SUFDRSx1QkFBdUI7SUFDdkIseUJBQXlCO0lBQ3pCLFlBQVk7RUFDZDtFQUNBO0lBQ0UseUJBQXlCO0lBQ3pCLDRCQUE0QjtFQUM5QjtBQUNGO0FBRUEsc0RBQXNEO0FBQ3RELHVEQUF1RDtBQUV2RCw4Q0FBOEM7QUFDOUMsdURBQXVEO0FBRXZELDhDQUE4QztBQUM5Qyx3REFBd0Q7QUFFeEQsMkRBQTJEO0FBQzNELDhCQUE4QjtBQUc5Qjs7Ozs7R0FLRyIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9uYXYuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4ub25seS1tb2JpbGV7XHJcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcbi5uYXYtaW1nXHJcbntcclxuICBtYXgtd2lkdGggOiAxNzBweDtcclxuICBtYXgtaGVpZ2h0IDogNTBweDtcclxufVxyXG5cclxuLyogLy8gRXh0cmEgc21hbGwgZGV2aWNlcyAocG9ydHJhaXQgcGhvbmVzLCBsZXNzIHRoYW4gNTc2cHgpICovXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkge1xyXG4gIC5uYXZiYXItY29sbGFwc2VcclxuICB7XHJcbiAgICB6LWluZGV4OiAyMDAwO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBib3gtc2hhZG93OiA1cHggNXB4IDVweCBnYWluc2Jvcm87XHJcbiAgICBwYWRkaW5nOiA1cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAwcHggMHB4IDEwcHggMTBweDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIC8qIG1hcmdpbi10b3A6IDUwcHg7ICovXHJcbiAgICBtYXJnaW4tdG9wOiAxMjVweDtcclxuICAgIHdpZHRoOiA5MCU7XHJcbiAgfVxyXG4gLm9ubHktbW9iaWxle1xyXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcclxuICB9XHJcbiAgLm9ubHktZGVza3RvcHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICB9XHJcbiAubmF2LWl0ZW0gYSB7XHJcbiAgICBmb250LXNpemU6IDEwMCUgIWltcG9ydGFudDtcclxuICB9XHJcbiAgLm5hdi1saW5rLmRyb3Bkb3duLXRvZ2dsZSB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIGRpdi5kcm9wZG93bi1tZW51IHtcclxuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcclxuICAgIHBhZGRpbmc6IDBweDtcclxuICB9XHJcbiAgZGl2LmRyb3Bkb3duLW1lbnUgYSB7XHJcbiAgICBmb250LXNpemU6IDgwJSAhaW1wb3J0YW50O1xyXG4gICAgcGFkZGluZy1sZWZ0OiA4cHggIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuXHJcbi8qIC8vIFNtYWxsIGRldmljZXMgKGxhbmRzY2FwZSBwaG9uZXMsIDU3NnB4IGFuZCB1cCkgKi9cclxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSBhbmQgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsgIH1cclxuXHJcbi8qIC8vIE1lZGl1bSBkZXZpY2VzICh0YWJsZXRzLCA3NjhweCBhbmQgdXApICovXHJcbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7ICB9XHJcblxyXG4vKiAvLyBMYXJnZSBkZXZpY2VzIChkZXNrdG9wcywgOTkycHggYW5kIHVwKSAqL1xyXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsgIH1cclxuXHJcbi8qIC8vIEV4dHJhIGxhcmdlIGRldmljZXMgKGxhcmdlIGRlc2t0b3BzLCAxMjAwcHggYW5kIHVwKSAqL1xyXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7ICB9XHJcblxyXG5cclxuLyogQC1tb3otZG9jdW1lbnQgdXJsLXByZWZpeCgpIHsgXHJcbiAgZGl2LmRyb3Bkb3duLW1lbnUgYSB7XHJcbiAgICBmb250LXNpemU6IDcwJSAhaW1wb3J0YW50O1xyXG4gICAgcGFkZGluZzogdW5zZXQgIWltcG9ydGFudDtcclxuICB9XHJcbn0gKi8iXX0= */\"","import { Component, OnInit, Output, Input, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { Router, Event, NavigationEnd, NavigationStart } from '@angular/router';\r\nimport { SecurityService } from '../security/security.service';\r\nimport { AppUserAuth } from '../security/app-user-auth';\r\nimport { Subscription, Subject } from 'rxjs';\r\nimport { UserService } from '../user/user.service';\r\nimport { ConfigService } from './services/config.service';\r\n\r\n@Component({\r\n selector: 'wfm-nav',\r\n templateUrl: './nav.component.html',\r\n styleUrls: ['./nav.component.css']\r\n})\r\nexport class NavComponent implements OnInit, OnDestroy {\r\n\r\n @Output() tabSelected: EventEmitter<{}> = new EventEmitter<{}>();\r\n @Input() userType?: Subject\r\n\r\n username: string;\r\n role: string;\r\n userImage: string = '';\r\n securityObject: AppUserAuth;\r\n subscription: Subscription;\r\n routeSubscription: Subscription;\r\n showMobileNav: boolean = true\r\n currentURL: string\r\n selectedUserType: string = ''\r\n userTypeSubscription: Subscription\r\n\r\n deviceWidth: number = window.innerWidth;\r\n deviceHight: number = window.innerHeight;\r\n logoImageUrl: string;\r\n\r\n constructor(private router: Router, private securityService: SecurityService, private userService: UserService, private configService: ConfigService) {\r\n\r\n this.subscription = this.userService.reveiveImageUpdateNotification().subscribe(st => {\r\n if (st) {\r\n this.userImage = '../../assets/images/userImages/'.concat(st.path);\r\n }\r\n });\r\n\r\n this.routeSubscription = this.router.events.subscribe((event: Event) => {\r\n this.currentURL = ''\r\n if (event instanceof NavigationStart) {\r\n this.currentURL = ''\r\n }\r\n if (event instanceof NavigationEnd) {\r\n this.currentURL = event.url.split('?')[0]\r\n\r\n if (\r\n (this.currentURL == '/users/calendar') ||\r\n (this.currentURL == '/users/calendar/bookings') ||\r\n (this.currentURL == '/users/calendar/inquiries') ||\r\n (this.currentURL == '/clients/calendar') ||\r\n (this.currentURL == '/clients/calendar/bookings') ||\r\n (this.currentURL == '/clients/calendar/inquiries') ||\r\n (this.currentURL == '/bookings') ||\r\n (this.currentURL == '/bookings/bookings') ||\r\n (this.currentURL == '/bookings/inquiries') ||\r\n (this.currentURL == '/calendar')\r\n ) {\r\n this.showMobileNav = true\r\n } else {\r\n this.showMobileNav = false\r\n }\r\n }\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n //Called once, before the instance is destroyed.\r\n //Add 'implements OnDestroy' to the class.\r\n this.routeSubscription.unsubscribe()\r\n if (this.userTypeSubscription) {\r\n this.userTypeSubscription.unsubscribe()\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.username = localStorage.getItem('username');\r\n this.role = localStorage.getItem('role');\r\n let img = localStorage.getItem('userImage');\r\n this.userImage = '../../assets/images/userImages/'.concat(img);\r\n\r\n // this.logoImageUrl =\"https://teamplanstorage.blob.core.windows.net/prodimages/logo.png\";\r\n // this.logoImageUrl =\"https://teamplanstorage.blob.core.windows.net/prodimages/demo top navbar img.png\";\r\n\r\n this.configService.getConfigData().subscribe((res) => {\r\n localStorage.setItem(\"logoImageUrl\", res.configuration.logoImagePath);\r\n this.logoImageUrl = '../../assets/images/'.concat(res.configuration.logoImagePath);\r\n })\r\n\r\n\r\n this.securityObject = this.securityService.securityObject;\r\n if (this.userType) {\r\n this.userTypeSubscription = this.userType.subscribe((res) => {\r\n this.selectedUserType = res\r\n })\r\n }\r\n\r\n // Close menu on outside click\r\n document.body.addEventListener('click', function (e) {\r\n if ($(\"#navbarSupportedContent\")) {\r\n const { classList } = e.target as HTMLSpanElement;\r\n if (!(classList[0] == 'navbar-toggler-btn')) {\r\n $(\"#navbarSupportedContent\").removeClass('show')\r\n }\r\n }\r\n }, true);\r\n }\r\n\r\n logOut(): void {\r\n this.securityService.logout();\r\n this.router.navigate(['/login']);\r\n this.userService.emmitNewSelectedUser(null)\r\n }\r\n\r\n logoClick(): void {\r\n if (this.securityService.hasClaim('CanAccessAdminFeatures', 'true')) {\r\n this.router.navigate(['/users/calendar']);\r\n } else if (this.securityService.hasClaim('CanAccessEmployeeFeatures', 'true')) {\r\n this.router.navigate(['/bookings']);\r\n } else if (this.securityService.hasClaim('CanAccessClientFeatures', 'true')) {\r\n this.router.navigate(['/calendar']);\r\n } else if (this.securityService.hasClaim('CanAccessSuperClientFeatures', 'true')) {\r\n this.router.navigate(['/clients/calendar']);\r\n }\r\n }\r\n\r\n onClickTab(tab: string) {\r\n\r\n if ((this.deviceWidth < 768)) {\r\n\r\n\r\n $('.mob-tab').removeClass('btn-success')\r\n $('.mob-tab').addClass('tab-inactive')\r\n if (tab != 'userlist') {\r\n $('.mob-tab').removeClass('last-selection')\r\n }\r\n if (tab == 'userlist') {\r\n $('.mob-userlist').addClass('btn-success')\r\n $('.mob-userlist').removeClass('tab-inactive')\r\n } else if (tab == 'bookings') {\r\n $('.mob-bookings').addClass('btn-success')\r\n $('.mob-bookings').addClass('last-selection')\r\n $('.mob-bookings').removeClass('tab-inactive')\r\n $('.nav-link').removeClass('nav_active');\r\n $('.nav-link.link-booking').addClass('nav_active');\r\n\r\n } else if (tab == 'inquiry') {\r\n $('.mob-inquiry').addClass('btn-success')\r\n $('.mob-inquiry').addClass('last-selection')\r\n $('.mob-inquiry').removeClass('tab-inactive')\r\n $('.nav-link').removeClass('nav_active');\r\n $('.nav-link.link-inquiry').addClass('nav_active');\r\n }\r\n this.tabSelected.emit(tab)\r\n }\r\n }\r\n\r\n inquiryClick() {\r\n setTimeout(() => {\r\n $('.mob-inquiry').click()\r\n $('.mob-inquiry').addClass('outside-click');\r\n $('.nav-link').removeClass('nav_active');\r\n $('.nav-link.link-inquiry').addClass('nav_active');\r\n }, 100);\r\n\r\n $('.navbar-collapse.collapse.show').removeClass('show')\r\n }\r\n\r\n bookingClick() {\r\n setTimeout(() => {\r\n $('.mob-bookings').click()\r\n }, 100);\r\n\r\n $('.navbar-collapse.collapse.show').removeClass('show')\r\n }\r\n\r\n skapaBookingClick() {\r\n setTimeout(() => {\r\n this.makeBookingClick()\r\n }, 700);\r\n\r\n $('.navbar-collapse.collapse.show').removeClass('show')\r\n }\r\n\r\n agendaClick() {\r\n // setTimeout(() => {\r\n $('.k-view-agenda').click()\r\n $('.nav-link').removeClass('nav_active');\r\n $('.nav-link.link-agenda').addClass('nav_active');\r\n // }, 200);\r\n this.onClickTab('bookings');\r\n\r\n $('.navbar-collapse.collapse.show').removeClass('show')\r\n }\r\n\r\n bookingLinkClick() {\r\n // setTimeout(() => {\r\n $('.k-view-month').click()\r\n $('.nav-link').removeClass('nav_active');\r\n $('.nav-link.link-booking').addClass('nav_active');\r\n // }, 200);\r\n\r\n $('.navbar-collapse.collapse.show').removeClass('show')\r\n }\r\n updateAvailability() {\r\n setTimeout(() => {\r\n $('.updateAvailabilityAdmBtn').click()\r\n }, 700);\r\n\r\n $('.navbar-collapse.collapse.show').removeClass('show')\r\n }\r\n\r\n updateAvailabilityClick() {\r\n $('.updateAvailabilityAdmBtn').click()\r\n $('.navbar-collapse.collapse.show').removeClass('show')\r\n }\r\n\r\n makeBookingClick() {\r\n $('.makeBookingAdmBtn').click()\r\n $('.navbar-collapse.collapse.show').removeClass('show')\r\n }\r\n\r\n makeBookingSCClick() {\r\n $('.makeBookingSClientBtn').click()\r\n $('.navbar-collapse.collapse.show').removeClass('show')\r\n }\r\n // updateAvailabilityEmpClick(){\r\n // $('.updateAvailabilityEmpBtn').click()\r\n // $('.navbar-collapse.collapse.show').removeClass('show')\r\n // }\r\n // agendaClick(){\r\n // $('.k-view-agenda').click()\r\n // $('.navbar-collapse.collapse.show').removeClass('show')\r\n // }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safeHTml'\r\n})\r\nexport class SafeHTmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n }\r\n\r\n transform(value: any, ...args: any[]): any {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n }\r\n\r\n}\r\n","import { stringify } from '@angular/compiler/src/util';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport { WINDOW } from '../../../window.providers';\r\n\r\n@Injectable()\r\nexport class HostService {\r\n\r\n constructor(@Inject(WINDOW) private window: Window) {\r\n }\r\n\r\n getHostname() : string {\r\n var hostName = window.location.hostname;\r\n var strs = hostName ? hostName.toString().split('.') : '';\r\n // var serverPath ='Demo TeamPlan';\r\n var serverPath ='Pharmmatch';\r\n\r\n if(strs.length > 0)\r\n {\r\n const title = ''\r\n if(strs.length == 1)\r\n {\r\n serverPath = serverPath.concat(title + this.apitalizeFirstLetter(strs[0]))\r\n }\r\n else{\r\n\r\n serverPath = serverPath.concat(title + this.apitalizeFirstLetter(strs[strs.length-2]));\r\n // for(let i = 0; i < strs.length - 1 ; i++ )\r\n // {\r\n // serverPath = serverPath.concat(' ' + this.apitalizeFirstLetter(strs[i]));\r\n // } \r\n } \r\n }\r\n\r\n return serverPath;\r\n }\r\n\r\n apitalizeFirstLetter(str) {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nconst API_URL = environment.signalRhub;\r\n\r\ndeclare var $: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\n\r\n\r\nexport class SignalrService {\r\n\r\n private connection: any;\r\n private proxy: any;\r\n private subject = new Subject();\r\n\r\n constructor() { }\r\n\r\n\r\n public initializeSignalRConnection(): void {\r\n const signalRServerEndPoint = API_URL;\r\n this.connection = $.hubConnection(signalRServerEndPoint);\r\n this.proxy = this.connection.createHubProxy('calendarHub');\r\n\r\n this.proxy.on('updateCalendar', (status) => this.onMessageReceived(status));\r\n\r\n this.connection.start().done((data: any) => {\r\n //console.log('Connected to Notification Hub');\r\n //this.broadcastMessage();\r\n }).catch((error: any) => {\r\n //console.log('Notification Hub error -> ' + error);\r\n });\r\n }\r\n\r\n broadcastCalendarUpdates(): void {\r\n this.proxy.invoke('updateOtherCalendars', 'update')\r\n .catch((error: any) => {\r\n console.log('broadcastMessage error -> ' + error);\r\n });\r\n }\r\n\r\n onMessageReceived(status: boolean) {\r\n console.log('New message received from Server');\r\n this.subject.next({ st: status });\r\n }\r\n\r\n receiveCalendarUpdates(): Observable {\r\n return this.subject.asObservable();\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpHandler, HttpHeaderResponse, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { environment } from '../../../environments/environment';\r\nimport { of, Observable, throwError, Subject, BehaviorSubject } from 'rxjs';\r\nimport { tap, catchError } from 'rxjs/operators';\r\nimport { ApiActionName } from '../constants/enums/action-names';\r\n\r\nconst API_URL = environment.apiEndpoint;\r\n\r\nconst httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n }),\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class ConfigService {\r\n\r\n\r\n GlobalConfigurationObject: any; // Need to have this type of object for all initial config values to be loaded at first\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n savePharmacySystems(formData: FormData) {\r\n return this.http.post(API_URL + 'config/pharmacysystems/update', formData).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getPharmacySystems() {\r\n return this.http.get(API_URL + 'config/pharmacysystems').pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n saveLegitimations(formData: FormData) {\r\n return this.http.post(API_URL + 'config/legitimations/update', formData).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n getLegitimations() {\r\n return this.http.get(API_URL + 'config/legitimations').pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n saveExperienceAreas(formData: FormData) {\r\n return this.http.post(API_URL + 'config/experienceareas/update', formData).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getExperienceAreas() {\r\n return this.http.get(API_URL + 'config/experienceareas').pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n saveOverTimeRules(formData: FormData) {\r\n return this.http.post(API_URL + 'config/timeperiods/update', formData).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getOverTimeRules() {\r\n return this.http.get(API_URL + 'config/timeperiods').pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n getConfigData() {\r\n return this.http.get(API_URL + 'config/configurationData').pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getLogoUrl() {\r\n return this.http.get(API_URL + 'config/logourl').pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getFaviconUrl() {\r\n return this.http.get(API_URL + 'config/faviconurl').pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getBookingUnits() {\r\n return this.http.get(API_URL + 'config/bookingUnits').pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getMatchingAlgorithmCriterias() {\r\n return this.http.get(API_URL + 'config/matchingAlgorithmCriterias').pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n saveBookingUnit(formData: FormData) {\r\n return this.http.post(API_URL + 'config/bookingUnit/update', formData).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateAdminCOnfigurations(request: any[]): Observable {\r\n return this.http.put(API_URL + ApiActionName.UpdateAdminConfiguration, request, httpOptions)\r\n }\r\n\r\n updateuserwiseadminconfiguration(request: any): Observable {\r\n return this.http.put(API_URL + ApiActionName.Updateuserwiseadminconfiguration, request, httpOptions)\r\n }\r\n\r\n getAdminCOnfigurations(): Observable {\r\n return this.http.get(API_URL + ApiActionName.GetAdminConfiguration).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getUserWiseAdminCOnfigurations(userId: string): Observable {\r\n let url = \"?userId=\" + userId;\r\n\r\n return this.http.get(API_URL + ApiActionName.Getuserwiseadminconfiguration + url).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getLongBookingById(id: number): Observable {\r\n let url = \"?id=\" + id;\r\n return this.http.get(API_URL + ApiActionName.GetLongBookingById + url, httpOptions)\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (err.error instanceof ErrorEvent) {\r\n errorMessage = `An error occured: ${err.error.message}`;\r\n } else {\r\n errorMessage = `Server returned code: ${err.status}, error message is: ${err.message}`;\r\n }\r\n return throwError(errorMessage);\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { AlliocationModel } from 'src/app/calendar/alliocation-model';\r\nimport { ApiActionName } from 'src/app/shared/constants/enums/action-names';\r\nimport { LongBookingTemplate } from 'src/app/shared/models/long-booking/long-booking-template.model';\r\nimport { LongBooking } from 'src/app/shared/models/long-booking/long-booking.model';\r\nimport { environment } from 'src/environments/environment';\r\nconst API_URL = environment.apiEndpoint;\r\n\r\nconst httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n }),\r\n};\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LongBookingService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n getLongBookingTemplates(): Observable {\r\n return this.http.get(API_URL + ApiActionName.GetLongBookingTemplates, httpOptions)\r\n }\r\n\r\n getLongBookingsa(): Observable {\r\n return this.http.get(API_URL + ApiActionName.GetLongBookings, httpOptions)\r\n }\r\n\r\n getLongBookings(searchCriteria: any): Observable {\r\n return this.http.post(API_URL + ApiActionName.GetLongBookings, searchCriteria, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(null)\r\n );\r\n }\r\n\r\n getShortBookings(searchCriteria: any): Observable {\r\n return this.http.post(API_URL + ApiActionName.GetShortBookings, searchCriteria, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(null)\r\n );\r\n }\r\n\r\n getAvailabilities(longBooking: LongBooking): Observable {\r\n return this.http.post(API_URL + ApiActionName.GetAvailabilities, longBooking, httpOptions)\r\n }\r\n\r\n saveLongBookingTemplate(longBookingTemplate: LongBookingTemplate): Observable {\r\n return this.http.post(API_URL + ApiActionName.SaveLongBookingTemplate, longBookingTemplate, httpOptions)\r\n }\r\n\r\n saveLongBooking(longBooking: LongBooking): Observable {\r\n return this.http.post(API_URL + ApiActionName.SaveLongBooking, longBooking, httpOptions)\r\n }\r\n\r\n deleteLongBooking(id: number): Observable {\r\n let longBooking: LongBooking = new LongBooking();\r\n longBooking.id = id;\r\n return this.http.post(API_URL + ApiActionName.DeleteLongBooking , longBooking, httpOptions)\r\n }\r\n\r\n deleteTemplate(id: number): Observable {\r\n let longBooking: LongBooking = new LongBooking();\r\n longBooking.id = id;\r\n return this.http.post(API_URL + ApiActionName.DeleteTemplate , longBooking, httpOptions)\r\n }\r\n\r\n updateLongBooking(longBooking: LongBooking): Observable {\r\n return this.http.post(API_URL + ApiActionName.UpdateLongBooking, longBooking, httpOptions)\r\n }\r\n\r\n deleteLongBookingByDateRange(allocationModel: AlliocationModel): Observable {\r\n return this.http.post(API_URL + ApiActionName.DeleteLongBookingRange, allocationModel, httpOptions)\r\n }\r\n\r\n updateLongBookingTemplate(longBookingTemplate: LongBookingTemplate): Observable {\r\n return this.http.put(API_URL + ApiActionName.UpdateLongBookingTemplate, longBookingTemplate, httpOptions)\r\n }\r\n\r\n updateLongBookingTemplateName(longBookingTemplate: LongBookingTemplate): Observable {\r\n return this.http.post(API_URL + ApiActionName.UpdateLongBookingTemplateName, longBookingTemplate, httpOptions)\r\n }\r\n\r\n getLongBookingById(id: number): Observable {\r\n let url = \"?id=\" + id;\r\n return this.http.get(API_URL + ApiActionName.GetLongBookingById + url, httpOptions)\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NavComponent } from './nav.component';\r\nimport { AppRoutingModule } from '../app-routing.module';\r\nimport { HasClaimDirective } from '../security/has-claim.directive';\r\nimport { UserClientListComponent } from './user-client-list.component';\r\nimport {FormsModule} from '@angular/forms';\r\nimport { FilterPipeModule } from 'ngx-filter-pipe';\r\nimport { SuperclientClientListComponent } from './superclient-client-list/superclient-client-list.component';\r\nimport { FooterComponent } from './components/footer/footer.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n\r\n@NgModule({\r\n declarations: [ NavComponent, HasClaimDirective, UserClientListComponent, FooterComponent, SuperclientClientListComponent ],\r\n imports: [\r\n CommonModule,\r\n AppRoutingModule,\r\n FormsModule,\r\n FilterPipeModule,\r\n TranslateModule\r\n ],\r\n exports: [\r\n NavComponent,\r\n UserClientListComponent,\r\n FooterComponent,\r\n SuperclientClientListComponent,\r\n TranslateModule\r\n ]\r\n})\r\nexport class SharedModule { }\r\n","module.exports = \".employee-wrapper-active {\\r\\n background-color: #cbeff3 !important;\\r\\n}\\r\\n\\r\\n.employee-wrapper a {\\r\\n color: #1C1C1C !important;\\r\\n text-decoration: underline !important;\\r\\n background-color: transparent !important;\\r\\n}\\r\\n\\r\\n.nav-link {\\r\\n display: block !important;;\\r\\n padding: .3rem 0.3rem !important;\\r\\n text-overflow: ellipsis !important;;\\r\\n overflow: hidden !important;;\\r\\n background-color:#e7e2e2 ;\\r\\n height: 35px;\\r\\n}\\r\\n\\r\\n.nav-item{\\r\\n margin: .1em!important;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL3N1cGVyY2xpZW50LWNsaWVudC1saXN0L3N1cGVyY2xpZW50LWNsaWVudC1saXN0LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxvQ0FBb0M7QUFDdEM7O0FBRUE7RUFDRSx5QkFBeUI7RUFDekIscUNBQXFDO0VBQ3JDLHdDQUF3QztBQUMxQzs7QUFFQTtFQUNFLHlCQUF5QjtFQUN6QixnQ0FBZ0M7RUFDaEMsa0NBQWtDO0VBQ2xDLDJCQUEyQjtFQUMzQix5QkFBeUI7RUFDekIsWUFBWTtBQUNkOztBQUVBO0VBQ0Usc0JBQXNCO0FBQ3hCIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL3N1cGVyY2xpZW50LWNsaWVudC1saXN0L3N1cGVyY2xpZW50LWNsaWVudC1saXN0LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZW1wbG95ZWUtd3JhcHBlci1hY3RpdmUge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmVmZjMgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmVtcGxveWVlLXdyYXBwZXIgYSB7XHJcbiAgY29sb3I6ICMxQzFDMUMgIWltcG9ydGFudDtcclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5uYXYtbGluayB7XHJcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDs7XHJcbiAgcGFkZGluZzogLjNyZW0gMC4zcmVtICFpbXBvcnRhbnQ7XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXMgIWltcG9ydGFudDs7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiNlN2UyZTIgO1xyXG4gIGhlaWdodDogMzVweDtcclxufVxyXG5cclxuLm5hdi1pdGVte1xyXG4gIG1hcmdpbjogLjFlbSFpbXBvcnRhbnQ7XHJcbn1cclxuIl19 */\"","import { UserService } from './../../user/user.service';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { IUserInfo } from './../../user/user-info';\r\nimport { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { CalendarService } from 'src/app/calendar/calendar.service';\r\n\r\n@Component({\r\n selector: 'wfm-superclient-client-list',\r\n templateUrl: './superclient-client-list.component.html',\r\n styleUrls: ['./superclient-client-list.component.css']\r\n})\r\nexport class SuperclientClientListComponent implements OnInit {\r\n\r\n userId : null\r\n usersList: IUserInfo[];\r\n errorMessage: string;\r\n empType = 'Client';\r\n empSubType = 1;\r\n resourceTypes: []\r\n userFilter: any = { fullName: '' };\r\n selectedMonthSubscription: Subscription\r\n refreshSubscription: Subscription\r\n newSelectedUserSub: Subscription\r\n @Input() selectedMonth: Subject = new Subject();\r\n @Input() userListAction: Subject = new Subject();\r\n @Output() userSelected: EventEmitter<{}> = new EventEmitter<{}>();\r\n @Output() employeeProfileClick: EventEmitter = new EventEmitter();\r\n selectedUserData: any;\r\n selectedUserMonth: Date = new Date();\r\n isInitSubscription : boolean = true\r\n\r\n constructor(private userService: UserService,private calendarService: CalendarService) { }\r\n\r\n ngOnDestroy(): void {\r\n //Called once, before the instance is destroyed.\r\n //Add 'implements OnDestroy' to the class.\r\n this.selectedMonthSubscription.unsubscribe()\r\n this.refreshSubscription.unsubscribe()\r\n this.newSelectedUserSub.unsubscribe();\r\n }\r\n\r\n ngOnInit() {\r\n this.selectedMonthSubscription = this.selectedMonth.subscribe(response => {\r\n this.selectedUserMonth = response;\r\n this.userService.getSuperClientUserList(response, this.empSubType).subscribe(\r\n (res: IUserInfo[]) => {\r\n // let filteredUserList = []\r\n // if (this.empType == 'Employee' && this.empSubType != 0) {\r\n // if (this.empSubType == 1 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Pharmacist') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // } else if (this.empSubType == 2 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Cashier') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // }\r\n // } else {\r\n // filteredUserList = res;\r\n // }\r\n this.usersList = res;\r\n\r\n if (this.selectedUserData && this.selectedUserData.userId) {\r\n setTimeout(() => {\r\n //console.log('ngOnInit');\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('#employee-wrapper-' + this.selectedUserData.userId).addClass('employee-wrapper-active');\r\n }, 200);\r\n }\r\n },\r\n (error: any) => {\r\n this.errorMessage = error as any;\r\n }\r\n );\r\n });\r\n\r\n this.newSelectedUserSub = this.userService.newSelectedUser.subscribe(res => {\r\n\r\n if (res && res.userId) {\r\n this.userId = res.userId\r\n if (this.isInitSubscription) {\r\n this.setUserTypeTab(res.userId, res.userType, res.userSubType)\r\n }\r\n setTimeout(() => {\r\n //console.log('newSelectedUserSub');\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('#employee-wrapper-' + res.userId).addClass('employee-wrapper-active');\r\n }, 100);\r\n } else {\r\n if (res==null) {\r\n if (this.empType==\"Client\") {\r\n this.getSuperClientUserList();\r\n } \r\n } else {\r\n this.empType=='Employee'\r\n this.empSubType = res;\r\n this.userService.getAllocatedUserList('SuperClient', this.empSubType).subscribe( // TODO filter by resource type\r\n (res: IUserInfo[]) => {\r\n // let filteredUserList = []\r\n // if (this.empSubType != 0) {\r\n // if (this.empSubType == 1) {\r\n // res.forEach(element => {\r\n // if (element.resourceType == 'Pharmacist') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // } else if (this.empSubType == 2) {\r\n // res.forEach(element => {\r\n // if (element.resourceType == 'Cashier') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // }\r\n // } else {\r\n // filteredUserList = res;\r\n // }\r\n this.usersList = res;\r\n },\r\n (error: any) => {\r\n this.errorMessage = error as any;\r\n }\r\n );\r\n }\r\n }\r\n })\r\n this.refreshSubscription = this.userListAction.subscribe(res =>{\r\n if(res=='refresh'){\r\n this.getSuperClientUserList();\r\n }\r\n })\r\n //this.getSuperClientUserList();\r\n this.isInitSubscription = false;\r\n this.getCurrentConfigData()\r\n }\r\n\r\n getSuperClientUserList(){\r\n this.userService.getSuperClientUserList(this.selectedUserMonth, this.empSubType).subscribe(\r\n (res: IUserInfo[]) => {\r\n // let filteredUserList = []\r\n // if (this.empType == 'Employee' && this.empSubType != 0) {\r\n // if (this.empSubType == 1 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Pharmacist') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // } else if (this.empSubType == 2 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Cashier') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // }\r\n // } else {\r\n // filteredUserList = res;\r\n // }\r\n this.usersList = res;\r\n if (this.selectedUserData && this.selectedUserData.userId) {\r\n setTimeout(() => {\r\n //console.log('getSuperClientUserList');\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('#employee-wrapper-' + this.selectedUserData.userId).addClass('employee-wrapper-active');\r\n }, 200);\r\n }\r\n },\r\n (error: any) => {\r\n this.errorMessage = error as any;\r\n }\r\n );\r\n }\r\n\r\n userSelect(userId: string, userType: string, userSubType:number , fullName: string): void {\r\n this.selectedUserData = {\r\n userId,\r\n userType,\r\n userSubType,\r\n fullName\r\n };\r\n\r\n \r\n if (this.userId == userId) {\r\n this.userId = null\r\n this.empType = userType;\r\n this.empSubType = userSubType ? userSubType : 0//userSubType=='Pharmacist'? 1:( userSubType=='Cashier'? 2 :null);\r\n this.selectedUserData = null;\r\n this.userService.emmitNewSelectedUser(null);\r\n setTimeout(() => {\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n }, 100);\r\n\r\n } else {\r\n setTimeout(() => {\r\n //console.log('userSelect');\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('#employee-wrapper-' + userId).addClass('employee-wrapper-active');\r\n }, 100);\r\n this.userService.emmitNewSelectedUser(this.selectedUserData);\r\n }\r\n }\r\n\r\n /**\r\n * Set the active employee type tab and highlight the user according to the selected user.\r\n * \r\n * @param userId \r\n * @param empType \r\n * @param empSubType \r\n */\r\n\r\n setUserTypeTab(userId:string,empType: string,empSubType: number): void {\r\n this.empType = empType;\r\n this.empSubType = empSubType //empSubType=='Pharmacist'? 1:( empSubType=='Cashier'? 2 :null);\r\n\r\n if (this.empType == 'Employee') {\r\n this.userService.getAllocatedUserList('SuperClient', this.empSubType).subscribe(\r\n (res: IUserInfo[]) => {\r\n // let filteredUserList = []\r\n // if (this.empSubType != 0) {\r\n // if (this.empSubType == 1 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Pharmacist') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // } else if (this.empSubType == 2 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Cashier') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // }\r\n // } else {\r\n // filteredUserList = res;\r\n // }\r\n this.usersList = res;\r\n \r\n //this.userSelected.emit(null);\r\n },\r\n (error: any) => {\r\n this.errorMessage = error as any;\r\n }\r\n );\r\n } else {\r\n this.userService.getSuperClientUserList(this.selectedUserMonth, this.empSubType).subscribe(\r\n (res: IUserInfo[]) => {\r\n // let filteredUserList = []\r\n // if (this.empType == 'Employee' && this.empSubType != 0) {\r\n // if (this.empSubType == 1 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Pharmacist') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // } else if (this.empSubType == 2 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Cashier') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // }\r\n // } else {\r\n // filteredUserList = res;\r\n // }\r\n this.usersList = res;\r\n setTimeout(() => {\r\n //console.log('setUserTypeTab');\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('#employee-wrapper-' + userId).addClass('employee-wrapper-active');\r\n }, 500);\r\n \r\n },\r\n (error: any) => {\r\n this.errorMessage = error as any;\r\n }\r\n );\r\n }\r\n }\r\n\r\n userTypeClick(empType: string, empSubType:number): void {\r\n this.empType = empType;\r\n this.empSubType = empSubType;\r\n if (empType=='Client') {\r\n this.userService.getSuperClientUserList(this.selectedUserMonth, this.empSubType).subscribe(\r\n (res: IUserInfo[]) => {\r\n this.usersList = res;\r\n this.userService.emmitNewSelectedUser(null);\r\n },\r\n (error: any) => {\r\n this.errorMessage = error as any;\r\n }\r\n );\r\n } else if(empType=='Employee') {\r\n this.userService.getAllocatedUserList('SuperClient', this.empSubType).subscribe( // TODO filter by resourcetype\r\n (res: IUserInfo[]) => {\r\n // let filteredUserList = []\r\n // if (this.empSubType != 0) {\r\n // if (this.empSubType == 1 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Pharmacist') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // } else if (this.empSubType == 2 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Cashier') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // }\r\n // } else {\r\n // filteredUserList = res;\r\n // }\r\n this.usersList = res;\r\n \r\n // this.userSelected.emit(null);\r\n //this.calendarService.emmitOnResourceTypeChange(this.empSubType);\r\n this.userService.emmitNewSelectedUser(this.empSubType); // resourceTypeId number\r\n },\r\n (error: any) => {\r\n this.errorMessage = error as any;\r\n }\r\n );\r\n }\r\n \r\n }\r\n\r\n onEmployeeProfileClick(userId:string):void {\r\n this.employeeProfileClick.emit(userId)\r\n }\r\n\r\n closeDrawer(){\r\n if( $('.mob-bookings').hasClass('last-selection')){\r\n var tab = 'bookings'\r\n }else if($('.mob-inquiry').hasClass('last-selection')){\r\n var tab = 'inquiry'\r\n }\r\n $('.mob-tab').removeClass('btn-success')\r\n $('.mob-tab').addClass('tab-inactive')\r\n if (tab=='userlist') {\r\n $('.mob-userlist').addClass('btn-success')\r\n $('.mob-userlist').removeClass('tab-inactive')\r\n } else if (tab=='bookings') {\r\n $('.mob-bookings').addClass('btn-success')\r\n $('.mob-bookings').removeClass('tab-inactive')\r\n } else if (tab=='inquiry') {\r\n $('.mob-inquiry').addClass('btn-success')\r\n $('.mob-inquiry').removeClass('tab-inactive')\r\n }\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n setTimeout(() => {\r\n $('.k-scheduler-navigation').css('pointer-events', 'all');\r\n $('.k-scheduler-navigation').css('opacity', '1');\r\n }, 500);\r\n }\r\n\r\n getCurrentConfigData(): void {\r\n this.userService.getConfigData().subscribe((res) => {\r\n this.resourceTypes = res.resourceTypes \r\n \r\n })\r\n }\r\n}\r\n","module.exports = \".employee-wrapper-active {\\r\\n background-color: #cbeff3 !important;\\r\\n}\\r\\n\\r\\n.checked {\\r\\n color: orange;\\r\\n}\\r\\n\\r\\n.rating {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.dot {\\r\\n height: 12px;\\r\\n padding-left: 2px;\\r\\n width: 12px;\\r\\n background-color: #f12a2a;\\r\\n border-radius: 50%;\\r\\n display: inline-block;\\r\\n}\\r\\n\\r\\n.nav-link .active{\\r\\n color: #ffffff !important;\\r\\n background-color: #14C4D7 !important;\\r\\n border-color: #dee2e6 #dee2e6 #fff !important;\\r\\n}\\r\\n\\r\\n.employee-wrapper a {\\r\\n color: #1C1C1C !important;\\r\\n text-decoration: underline !important;\\r\\n background-color: transparent !important;\\r\\n}\\r\\n\\r\\n.nav-link {\\r\\n display: block !important;;\\r\\n padding: .3rem 0.3rem !important;\\r\\n text-overflow: ellipsis !important;;\\r\\n overflow: hidden !important;;\\r\\n background-color:#e7e2e2 ;\\r\\n height: 35px;\\r\\n}\\r\\n\\r\\n.nav-item{\\r\\n margin: .1em!important;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL3VzZXItY2xpZW50LWxpc3QuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLG9DQUFvQztBQUN0Qzs7QUFFQTtFQUNFLGFBQWE7QUFDZjs7QUFFQTtFQUNFLGVBQWU7QUFDakI7O0FBRUE7RUFDRSxZQUFZO0VBQ1osaUJBQWlCO0VBQ2pCLFdBQVc7RUFDWCx5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLHFCQUFxQjtBQUN2Qjs7QUFDQTtFQUNFLHlCQUF5QjtFQUN6QixxQ0FBcUM7RUFDckMsOENBQThDO0FBQ2hEOztBQUVBO0VBQ0UseUJBQXlCO0VBQ3pCLHFDQUFxQztFQUNyQyx3Q0FBd0M7QUFDMUM7O0FBRUE7RUFDRSx5QkFBeUI7RUFDekIsZ0NBQWdDO0VBQ2hDLGtDQUFrQztFQUNsQywyQkFBMkI7RUFDM0IseUJBQXlCO0VBQ3pCLFlBQVk7QUFDZDs7QUFFQTtFQUNFLHNCQUFzQjtBQUN4QiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC91c2VyLWNsaWVudC1saXN0LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZW1wbG95ZWUtd3JhcHBlci1hY3RpdmUge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmVmZjMgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmNoZWNrZWQge1xyXG4gIGNvbG9yOiBvcmFuZ2U7XHJcbn1cclxuXHJcbi5yYXRpbmcge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmRvdCB7XHJcbiAgaGVpZ2h0OiAxMnB4O1xyXG4gIHBhZGRpbmctbGVmdDogMnB4O1xyXG4gIHdpZHRoOiAxMnB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmMTJhMmE7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG4ubmF2LWxpbmsgLmFjdGl2ZXtcclxuICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMxNEM0RDcgICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2ICNkZWUyZTYgI2ZmZiAgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmVtcGxveWVlLXdyYXBwZXIgYSB7XHJcbiAgY29sb3I6ICMxQzFDMUMgIWltcG9ydGFudDtcclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5uYXYtbGluayB7XHJcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDs7XHJcbiAgcGFkZGluZzogLjNyZW0gMC4zcmVtICFpbXBvcnRhbnQ7XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXMgIWltcG9ydGFudDs7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiNlN2UyZTIgO1xyXG4gIGhlaWdodDogMzVweDtcclxufVxyXG5cclxuLm5hdi1pdGVte1xyXG4gIG1hcmdpbjogLjFlbSFpbXBvcnRhbnQ7XHJcbn0iXX0= */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IUserInfo } from '../user/user-info';\r\nimport { UserService } from '../user/user.service';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { CalendarService } from '../calendar/calendar.service';\r\nimport { ConfigService } from './services/config.service';\r\n\r\n@Component({\r\n selector: 'wfm-user-client-list',\r\n templateUrl: './user-client-list.component.html',\r\n styleUrls: ['./user-client-list.component.css']\r\n})\r\nexport class UserClientListComponent implements OnInit {\r\n\r\n userId: null;\r\n color: 'red';\r\n usersList: IUserInfo[];\r\n errorMessage: string;\r\n empType = 'Employee';\r\n bookingUnitName: '';\r\n empSubType = 1;\r\n resourceTypes: any[] = [];\r\n userFilter: any = { fullName: '' };\r\n refreshSubscription: Subscription\r\n selectedMonthSubscription: Subscription\r\n newSelectedUserSub: Subscription\r\n // @Input() selectedMonth: Subject = new Subject();\r\n @Input() userListAction: Subject = new Subject();\r\n @Output() userSelected: EventEmitter<{}> = new EventEmitter<{}>();\r\n @Output() employeeProfileClick: EventEmitter = new EventEmitter();\r\n selectedUserData: any;\r\n selectedUserMonth: Date = new Date();\r\n isInitSubscription: boolean = true\r\n // isEmployeeProfileClick = false\r\n\r\n constructor(private userService: UserService, private calendarService: CalendarService, private configService: ConfigService) { }\r\n\r\n ngOnDestroy(): void {\r\n //Called once, before the instance is destroyed.\r\n //Add 'implements OnDestroy' to the class.\r\n this.selectedMonthSubscription.unsubscribe()\r\n this.refreshSubscription.unsubscribe()\r\n this.newSelectedUserSub.unsubscribe()\r\n }\r\n\r\n ngOnInit() {\r\n\r\n\r\n console.log(this.empType);\r\n this.selectedMonthSubscription = this.calendarService.selectedMonth.subscribe(response => {\r\n this.selectedUserMonth = response;\r\n this.userService.getAdminUserList(this.empType, response, this.empSubType ? this.empSubType : 0).subscribe(\r\n (res: IUserInfo[]) => {\r\n // let filteredUserList = []\r\n // if (this.empType == 'Employee' && this.empSubType != 0) {\r\n // if (this.empSubType == 1 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Pharmacist') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // } else if (this.empSubType == 2 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Cashier') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // }\r\n // } else {\r\n // filteredUserList = res;\r\n // }\r\n\r\n this.usersList = res;\r\n\r\n if (this.selectedUserData && this.selectedUserData.userId) {\r\n setTimeout(() => {\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('#employee-wrapper-' + this.selectedUserData.userId).addClass('employee-wrapper-active');\r\n }, 200);\r\n }\r\n },\r\n (error: any) => {\r\n this.errorMessage = error as any;\r\n }\r\n );\r\n // $('#employeeProfileViewModal').on('hide.bs.modal',()=>{\r\n // this.isEmployeeProfileClick = false;\r\n // })\r\n });\r\n\r\n this.newSelectedUserSub = this.userService.newSelectedUser.subscribe(res => {\r\n console.log(res);\r\n if (res && res.userId) {\r\n this.userId = res.userId\r\n if (this.isInitSubscription) {\r\n this.setUserTypeTab(res.userId, res.userType, res.userSubType)\r\n }\r\n setTimeout(() => {\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('#employee-wrapper-' + res.userId).addClass('employee-wrapper-active');\r\n }, 500);\r\n }\r\n })\r\n\r\n\r\n this.refreshSubscription = this.calendarService.userListAction.subscribe(res => {\r\n if (res == 'refresh') {\r\n this.getAdminUserList();\r\n }\r\n })\r\n\r\n this.getAdminUserList();\r\n this.isInitSubscription = false;\r\n\r\n this.getCurrentConfigData();\r\n\r\n this.getBookingUnit();\r\n\r\n }\r\n\r\n getAdminUserList() {\r\n this.userService.getAdminUserList(this.empType, this.selectedUserMonth, this.empSubType ? this.empSubType : 0).subscribe(\r\n (res: IUserInfo[]) => {\r\n this.usersList = res;\r\n if (this.selectedUserData && this.selectedUserData.userId) {\r\n setTimeout(() => {\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('#employee-wrapper-' + this.selectedUserData.userId).addClass('employee-wrapper-active');\r\n }, 200);\r\n }\r\n },\r\n (error: any) => {\r\n this.errorMessage = error as any;\r\n }\r\n );\r\n }\r\n\r\n userSelect(userId: string, userType: string, userSubType: number, fullName: string, totalCalculatedHours: number, actualHoursBooked: number): void {\r\n this.selectedUserData = {\r\n userId,\r\n userType,\r\n userSubType,\r\n fullName,\r\n actualHoursBooked,\r\n totalCalculatedHours\r\n };\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('#employee-wrapper-' + userId).addClass('employee-wrapper-active');\r\n\r\n if (this.userId == userId) {\r\n this.userId = null\r\n this.empType = userType;\r\n this.empSubType = userSubType ? userSubType : 0\r\n this.userService.emmitNewSelectedUser(null);\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n } else {\r\n this.userService.emmitNewSelectedUser(this.selectedUserData);\r\n }\r\n }\r\n\r\n userTypeClick(empType: string, empSubType: number, event: any): void {\r\n this.empType = empType;\r\n this.empSubType = empSubType;\r\n this.userService.getAdminUserList(this.empType, this.selectedUserMonth, this.empSubType).subscribe(\r\n (res: IUserInfo[]) => {\r\n // let filteredUserList = []\r\n if (this.empType == 'Employee' && this.empSubType != 0) {\r\n // if (this.empSubType == 1 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Pharmacist') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // } else if (this.empSubType == 2 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Cashier') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // }\r\n // this.userSelected.emit(this.empSubType);\r\n this.userService.emmitNewSelectedUser(this.empSubType);\r\n } else {\r\n // filteredUserList = res;\r\n this.userService.emmitNewSelectedUser(null);\r\n }\r\n this.usersList = res;\r\n\r\n },\r\n (error: any) => {\r\n this.errorMessage = error as any;\r\n }\r\n );\r\n }\r\n\r\n getBookingUnit() {\r\n this.configService.getBookingUnits().subscribe(res => {\r\n if (res) {\r\n this.bookingUnitName = (res.bookingUnits.length > 0) ? res.bookingUnits[0].name : '';\r\n }\r\n });\r\n }\r\n /**\r\n * Set the active employee type tab and highlight the user according to the selected user.\r\n * \r\n * @param userId \r\n * @param empType \r\n * @param empSubType \r\n */\r\n\r\n setUserTypeTab(userId: string, empType: string, empSubType: number): void {\r\n this.empType = empType;\r\n this.empSubType = empSubType;\r\n this.userService.getAdminUserList(this.empType, this.selectedUserMonth, this.empSubType ? this.empSubType : 0).subscribe(\r\n (res: IUserInfo[]) => {\r\n // let filteredUserList = []\r\n // if (this.empType == 'Employee' && this.empSubType != 0) {\r\n // if (this.empSubType == 1 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Pharmacist') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // } else if (this.empSubType == 2 ) {\r\n // res.forEach(element => {\r\n // if (element.resourceType=='Cashier') {\r\n // filteredUserList.push(element)\r\n // }\r\n // });\r\n // }\r\n // } else {\r\n // filteredUserList = res;\r\n // }\r\n this.usersList = res;\r\n setTimeout(() => {\r\n $('.employee-wrapper').removeClass('employee-wrapper-active');\r\n $('#employee-wrapper-' + userId).addClass('employee-wrapper-active');\r\n }, 500);\r\n\r\n },\r\n (error: any) => {\r\n this.errorMessage = error as any;\r\n }\r\n );\r\n }\r\n\r\n onEmployeeProfileClick(userId: string): void {\r\n // this.isEmployeeProfileClick = true; \r\n this.employeeProfileClick.emit(userId)\r\n }\r\n closeDrawer() {\r\n if ($('.mob-bookings').hasClass('last-selection')) {\r\n var tab = 'bookings'\r\n } else if ($('.mob-inquiry').hasClass('last-selection')) {\r\n var tab = 'inquiry'\r\n }\r\n $('.mob-tab').removeClass('btn-success')\r\n $('.mob-tab').addClass('tab-inactive')\r\n if (tab == 'userlist') {\r\n $('.mob-userlist').removeClass('tab-inactive')\r\n $('.mob-userlist').addClass('btn-success')\r\n } else if (tab == 'bookings') {\r\n $('.mob-bookings').removeClass('tab-inactive')\r\n $('.mob-bookings').addClass('btn-success')\r\n } else if (tab == 'inquiry') {\r\n $('.mob-inquiry').removeClass('tab-inactive')\r\n $('.mob-inquiry').addClass('btn-success')\r\n }\r\n $('#myTab').css('display', 'none')\r\n $('#myTabContent').css('display', 'none')\r\n setTimeout(() => {\r\n $('.k-scheduler-navigation').css('pointer-events', 'all');\r\n $('.k-scheduler-navigation').css('opacity', '1');\r\n }, 500);\r\n }\r\n\r\n\r\n getCurrentConfigData(): void {\r\n this.userService.getConfigData().subscribe((res) => {\r\n this.resourceTypes = res.resourceTypes;\r\n const Id = this.resourceTypes[0].id\r\n this.userTypeClick('Employee', Id, null)\r\n\r\n // setTimeout(() => {\r\n // const div = document.getElementById(\"test\");\r\n // div.style.backgroundColor = \"red\"\r\n\r\n // }, 2000);\r\n\r\n setTimeout(() => {\r\n res.resourceTypes.forEach((resource,index) => {\r\n var divElement = document.getElementById(\"item-\"+index);\r\n divElement.style.backgroundColor = resource.colorCode;\r\n console.log(\"code-\",divElement.style.backgroundColor)\r\n }); \r\n }, 100);\r\n\r\n })\r\n }\r\n}\r\n","module.exports = \" .select2-selection--multiple{\\r\\n font-size: 1rem;\\r\\n border: 1px solid #ced4da;\\r\\n} \\r\\n\\r\\n.select2-container{\\r\\n font-size: 12px !important\\r\\n } \\r\\n\\r\\n.form-control.ng-touched.ng-invalid{\\r\\n border: 1px solid #d42f2f !important;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdXNlci9teXByb2ZpbGUuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQ0FBQztJQUNHLGVBQWU7SUFDZix5QkFBeUI7QUFDN0I7O0FBRUE7SUFDSTtFQUNGOztBQUVGO0VBQ0Usb0NBQW9DO0FBQ3RDIiwiZmlsZSI6InNyYy9hcHAvdXNlci9teXByb2ZpbGUuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIiAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxle1xyXG4gICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTtcclxufSBcclxuXHJcbi5zZWxlY3QyLWNvbnRhaW5lcntcclxuICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50XHJcbiAgfVxyXG5cclxuLmZvcm0tY29udHJvbC5uZy10b3VjaGVkLm5nLWludmFsaWR7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q0MmYyZiAhaW1wb3J0YW50O1xyXG59Il19 */\"","import { Component, OnInit, ElementRef, ViewChildren, AfterViewInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, FormControlName, FormControl, AbstractControl } from '@angular/forms';\r\nimport { GenericValidator } from '../shared/generic-validator';\r\nimport { Observable, merge, fromEvent, Subscription, timer } from 'rxjs';\r\nimport { debounceTime, switchMap, map } from 'rxjs/operators';\r\nimport { IUserInfo } from './user-info';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { UserService } from './user.service';\r\nimport { ImageCroppedEvent } from 'ngx-image-cropper';\r\nimport { CalendarService } from '../calendar/calendar.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'wfm-myprofile',\r\n templateUrl: './myprofile.component.html',\r\n styleUrls: ['./myprofile.component.css']\r\n})\r\nexport class MyprofileComponent implements OnInit, AfterViewInit {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n userForm: FormGroup;\r\n resetPasswordForm: FormGroup;\r\n pageTitle: string;\r\n errorMessage: string;\r\n userTypes: any[];\r\n jobTypes: any[];\r\n userInfo: IUserInfo = {} as IUserInfo;\r\n file: any;\r\n private sub: Subscription;\r\n previewUrl: any;\r\n userImage = '';\r\n fileData: File = null;\r\n updateUserId: string;\r\n isResetPassword = false;\r\n notificationModal: any;\r\n isEditCounty: boolean = false\r\n selectedCounty: any\r\n imageChangedEvent: any = '';\r\n croppedImage: any = '';\r\n cropperVisible: boolean\r\n holdMunicipalityChange: boolean = false\r\n isAllMunicipalitySelected: boolean = false\r\n isSubmitInvalid: boolean = false\r\n resourceTypes: any[];\r\n matchingAlgorithnmFields: any[];\r\n isEnglishLanguage: boolean = true;;\r\n\r\n\r\n jsonCountyMunicipalities: any[] = [];\r\n countyMunicipalities: any[] = [];\r\n counties: any[] = [];\r\n municipalities: any[] = [{ value: null, label: '' }, { value: null, label: '' }];\r\n pharmacySystems: any[] = [];\r\n legitimations: any[] = [];\r\n experienceAreas: any[] = [];\r\n skillLevels: any[] = [];\r\n languageObjArray: any[] = [];\r\n languages: any[] = [\r\n { value: 1, label: 'English' },\r\n { value: 2, label: 'Swedish' }\r\n ];\r\n yearsOfExperiences: any[] = [\r\n { value: 1, label: '1' },\r\n { value: 2, label: '2' },\r\n { value: 3, label: '3' },\r\n { value: 4, label: '4' },\r\n { value: 5, label: '5' },\r\n { value: 6, label: '6' },\r\n { value: 7, label: '7' },\r\n { value: 8, label: '8' },\r\n { value: 9, label: '9' },\r\n { value: 11, label: '10+' },\r\n ];\r\n yesNo: any[] = [\r\n { value: true, label: 'Ja ' },\r\n { value: false, label: 'Nej ' },\r\n ];\r\n\r\n userFiles: any[] = [\r\n { id: 1, name: 'Birth_certificate.docs', description: 'Birth Certificate' },\r\n { id: 2, name: 'Nic.pdf', description: 'Nic' },\r\n ];\r\n\r\n displayMessage: { [key: string]: string } = {};\r\n displayResetPwdMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private translate: TranslateService,\r\n private userService: UserService,\r\n private calendarService: CalendarService\r\n ) {\r\n\r\n this.validationMessages = {\r\n userTypeId: {\r\n required: 'anställningsform krävs'\r\n },\r\n firstName: {\r\n required: 'förnamn krävs',\r\n minlength: 'måste ha minst 2 tecken',\r\n maxlength: 'max 50 tecken'\r\n },\r\n lastName: {\r\n required: 'efternamn krävs',\r\n minlength: 'måste ha minst 2 tecken',\r\n maxlength: 'max 50 tecken'\r\n },\r\n address: {\r\n required: 'adress krävs',\r\n maxlength: 'max 100 tecken'\r\n },\r\n city: {\r\n required: 'stad krävs',\r\n maxlength: 'max 50 tecken'\r\n },\r\n zip: {\r\n required: 'postnummer krävs',\r\n maxlength: 'max 10 tecken'\r\n },\r\n email: {\r\n required: 'e-post krävs',\r\n email: 'e-posten ogiltig',\r\n maxlength: 'max 256 tecken'\r\n },\r\n phoneNumber: {\r\n required: 'telefonnummer krävs',\r\n maxlength: 'max 50 tecken'\r\n },\r\n emergancyContact: {\r\n required: 'telefonnummer krävs',\r\n maxlength: 'max 50 tecken'\r\n },\r\n jobCategoryId: {\r\n required: 'anställningsform krävs'\r\n },\r\n clientName: {\r\n required: 'apoteketsnamn krävs',\r\n maxlength: 'max 100 tecken'\r\n },\r\n pharmacyId: {\r\n required: 'apotek-ID krävs',\r\n maxlength: 'max 100 tecken'\r\n },\r\n userName: {\r\n required: 'användarnamn krävs',\r\n minlength: 'användarnamn måste ha minst 3 tecken'\r\n },\r\n password: {\r\n required: 'lösenord krävs',\r\n minlength: 'lösenord måste ha minst 6 tecken'\r\n },\r\n conpassword: {\r\n required: 'lösenord krävs',\r\n invalid: 'lösenord matchar inte'\r\n },\r\n resetpassword: {\r\n required: 'lösenord krävs',\r\n minlength: 'lösenord måste ha minst 6 tecken'\r\n },\r\n resetconpassword: {\r\n required: 'lösenord krävs',\r\n match: 'lösenord matchar inte'\r\n }\r\n };\r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n }\r\n\r\n setCustomVallidations() {\r\n const clientNameControl = this.userForm.get('clientName');\r\n const pharmacyIdControl = this.userForm.get('pharmacyId');\r\n const municipalityControl = this.userForm.get('municipality');\r\n\r\n if (this.userInfo.userTypeId === '3') {\r\n clientNameControl.setValidators([Validators.required, Validators.maxLength(100)]);\r\n pharmacyIdControl.setValidators([Validators.required, Validators.maxLength(100)]);\r\n municipalityControl.setValidators([Validators.required]);\r\n } else {\r\n clientNameControl.clearValidators();\r\n pharmacyIdControl.clearValidators();\r\n municipalityControl.clearValidators();\r\n }\r\n clientNameControl.updateValueAndValidity();\r\n pharmacyIdControl.updateValueAndValidity();\r\n }\r\n\r\n validateAllFormFields(formGroup: FormGroup) {\r\n Object.keys(formGroup.controls).forEach(field => {\r\n const control = formGroup.get(field);\r\n if (control instanceof FormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else if (control instanceof FormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.isEnglishLanguage = true;\r\n if (localStorage.getItem(\"isSwLanguage\") == \"false\") {\r\n this.isEnglishLanguage = true\r\n } else {\r\n this.isEnglishLanguage = false\r\n }\r\n\r\n this.userForm = this.fb.group({\r\n firstName: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]],\r\n lastName: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]],\r\n clientName: [''],\r\n pharmacyId: [],\r\n address: ['', [Validators.required, Validators.maxLength(100)]],\r\n city: ['', [Validators.required, Validators.maxLength(20)]],\r\n zip: ['', [Validators.required, Validators.maxLength(10)]],\r\n email: ['', [Validators.required, Validators.email, Validators.maxLength(256)]],\r\n phoneNumber: ['', [Validators.required, Validators.maxLength(50)]],\r\n emergancyContact: ['', [Validators.required, Validators.maxLength(50)]],\r\n county: [[]],\r\n municipality: [[]],\r\n pharmacySystems: [],\r\n employeeNo: [''],\r\n isStaredEmployeesOnly: [Boolean],\r\n countyMunicipalities: [[]],\r\n legitimationId: [],\r\n experienceAreas: [],\r\n yearsOfExperience: [],\r\n isStdProceduresRead: [Boolean],\r\n aboutMe: [''],\r\n languages: [],\r\n cmJson: '',\r\n skillLevel: []\r\n });\r\n\r\n this.resetPasswordForm = this.fb.group({\r\n resetpassword: ['', Validators.required],\r\n resetconpassword: ['', Validators.required]\r\n }, { validator: resetPasswordCompare });\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.userService.getInnitialMasterData().subscribe((data) => {\r\n this.pharmacySystems = data.pharmacySystems\r\n this.counties = data.counties\r\n this.experienceAreas = data.experienceAreas\r\n this.legitimations = data.legitimations\r\n this.skillLevels = data.skillLevels\r\n this.languages = data.languages\r\n\r\n\r\n for (let [key, value] of Object.entries(this.pharmacySystems)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.counties)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.experienceAreas)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.legitimations)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.skillLevels)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.languages)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n\r\n })\r\n\r\n this.getUser();\r\n this.getCurrentConfigData()\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n // // Watch for the blur event from any input element on the form.\r\n // const controlBlurs: Observable[] = this.formInputElements\r\n // .map((formControl: ElementRef) => fromEvent(formControl.nativeElement, 'blur'));\r\n\r\n // // Merge the blur event observable with the valueChanges observable\r\n // merge(this.userForm.valueChanges, ...controlBlurs).pipe(\r\n // debounceTime(300)\r\n // ).subscribe(value => {\r\n // this.displayMessage = this.genericValidator.processMessages(this.userForm);\r\n // });\r\n\r\n // // Merge the blur event observable with the valueChanges observable\r\n // merge(this.resetPasswordForm.valueChanges, ...controlBlurs).pipe(\r\n // debounceTime(300)\r\n // ).subscribe(value => {\r\n // this.displayResetPwdMessage = this.genericValidator.processMessages(this.resetPasswordForm);\r\n // });\r\n }\r\n\r\n changeLanguage(ev) {\r\n let value = ev.target.checked;\r\n this.isEnglishLanguage = value;\r\n if (value) {\r\n localStorage.setItem(\"isSwLanguage\", \"false\");\r\n this.translate.setDefaultLang('en')\r\n } else {\r\n localStorage.setItem(\"isSwLanguage\", \"true\");\r\n this.translate.setDefaultLang('sw')\r\n }\r\n }\r\n\r\n getUser(): void {\r\n this.userService.getMyProfile()\r\n .subscribe(\r\n (user: IUserInfo) => {\r\n if (user.countyMunicipalities && user.countyMunicipalities.length > 0) {\r\n this.userService.getMunicipalitiesByCountyId(user.countyMunicipalities[0].countyId).subscribe((data: []) => {\r\n this.municipalities = data\r\n\r\n for (let [key, value] of Object.entries(this.municipalities)) {\r\n value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n this.municipalities.unshift({ value: 0, id: 0, code: \"0000\", label: \"Alla Kommuner\", name: \"Alla Kommuner\" })\r\n this.displayUser(user)\r\n });\r\n } else {\r\n this.displayUser(user)\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n displayUser(user: IUserInfo): void {\r\n\r\n if (this.userForm) {\r\n this.userForm.reset();\r\n }\r\n this.userInfo = user;\r\n this.setCustomVallidations();\r\n let userImage = this.userInfo.image;\r\n this.userImage = '../../assets/images/userImages/'.concat(userImage);\r\n\r\n\r\n if (this.userInfo.cmJson) {\r\n this.jsonCountyMunicipalities = JSON.parse(this.userInfo.cmJson)\r\n }\r\n\r\n this.userForm.patchValue({\r\n firstName: this.userInfo.firstName,\r\n lastName: this.userInfo.lastName,\r\n clientName: this.userInfo.clientName,\r\n pharmacyId: this.userInfo.pharmacyId,\r\n address: this.userInfo.address,\r\n city: this.userInfo.city,\r\n zip: this.userInfo.zip,\r\n email: this.userInfo.email,\r\n phoneNumber: this.userInfo.phoneNumber,\r\n emergancyContact:this.userInfo.emergancyContact\r\n });\r\n\r\n if (this.userInfo.userTypeId == '2') {\r\n this.userForm.patchValue({\r\n county: this.userInfo.county,\r\n municipality: this.userInfo.municipality,\r\n pharmacySystems: this.userInfo.pharmacySystems,\r\n legitimationId: this.userInfo.legitimationId,\r\n experienceAreas: this.userInfo.experienceAreas,\r\n yearsOfExperience: this.userInfo.yearsOfExperience,\r\n isStdProceduresRead: this.userInfo.isStdProceduresRead,\r\n aboutMe: this.userInfo.aboutMe,\r\n // languages: this.userInfo.languages\r\n });\r\n // this.languageObjArray = this.userInfo.languages\r\n // this.countyMunicipalities = this.userInfo.countyMunicipalities\r\n\r\n this.languageObjArray = this.userInfo.languages ? this.userInfo.languages : []\r\n this.countyMunicipalities = this.userInfo.countyMunicipalities ? this.userInfo.countyMunicipalities : []\r\n\r\n if (this.userInfo.countyMunicipalities) {\r\n this.countyMunicipalities.forEach(obj => {\r\n this.counties.forEach(element => {\r\n if (element.value == obj.countyId) {\r\n element.disabled = true\r\n }\r\n });\r\n });\r\n }\r\n\r\n }\r\n if (this.userInfo.userTypeId == '3') {\r\n this.userForm.patchValue({\r\n aboutMe: this.userInfo.aboutMe,\r\n county: this.userInfo.countyMunicipalities ? this.userInfo.countyMunicipalities[0].countyId : '',\r\n municipality: this.userInfo.countyMunicipalities ? this.userInfo.countyMunicipalities[0].municipalityId : '',\r\n pharmacySystems: this.userInfo.pharmacySystems ? this.userInfo.pharmacySystems[0] : '',\r\n isStaredEmployeesOnly: this.userInfo.isStaredEmployeesOnly,\r\n });\r\n }\r\n }\r\n\r\n\r\n saveUser(): void {\r\n if (this.userForm.valid) {\r\n if (this.userForm.dirty || this.fileData) {\r\n\r\n if (this.userInfo.userTypeId == '2') {\r\n this.userForm.patchValue({\r\n countyMunicipalities: this.countyMunicipalities,\r\n cmJson: JSON.stringify(this.jsonCountyMunicipalities),\r\n languages: this.languageObjArray\r\n })\r\n\r\n this.userForm.value.languages = this.languageObjArray ? this.languageObjArray : []\r\n this.userForm.value.experienceAreas = this.userForm.value.experienceAreas ? this.userForm.value.experienceAreas : []\r\n this.userForm.value.pharmacySystems = this.userForm.value.pharmacySystems ? this.userForm.value.pharmacySystems : []\r\n\r\n } else if (this.userInfo.userTypeId == '3') {\r\n // this.userForm.patchValue({\r\n // countyMunicipalities: [{ countyId: this.userForm.value.county, municipalityId: this.userForm.value.municipality }]\r\n // })\r\n if (this.userForm.value.county && this.userForm.value.municipality) {\r\n this.userForm.patchValue({\r\n countyMunicipalities: [{ countyId: this.userForm.value.county, municipalityId: this.userForm.value.municipality }],\r\n // pharmacySystems: [this.userForm.value.pharmacySystems]\r\n })\r\n } else {\r\n this.userForm.patchValue({\r\n countyMunicipalities: []\r\n })\r\n }\r\n this.userForm.value.pharmacySystems = this.userForm.value.pharmacySystems ? [this.userForm.value.pharmacySystems] : []\r\n }\r\n\r\n const u = { ...this.userInfo, ...this.userForm.value };\r\n u.image = this.userInfo.image;\r\n\r\n this.userService.updateMyProfile(u)\r\n .subscribe(\r\n () => this.onSaveComplete('update', true, u.userId),\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n } else {\r\n this.validateAllFormFields(this.userForm)\r\n this.validateAllFormFields(this.resetPasswordForm)\r\n this.errorMessage = 'Please correct the validation errors.';\r\n this.isSubmitInvalid = true\r\n }\r\n }\r\n\r\n onSaveComplete(flow: string, status: boolean, userId: string): void {\r\n if (this.fileData && userId != null) {\r\n const formData = new FormData();\r\n formData.append('file', this.fileData);\r\n formData.append('userId', userId);\r\n\r\n this.userService.uploadProfileImage(formData)\r\n .subscribe(\r\n (imagePath: string) => {\r\n if (imagePath != null && imagePath != '') {\r\n localStorage.removeItem('userImage');\r\n localStorage.setItem('userImage', imagePath);\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n //this.setNotificationData('update', status);\r\n\r\n }\r\n\r\n uploadImageClick(): void {\r\n $(\"#fileUploadBtn\").click();\r\n }\r\n uploadFileClick(): void {\r\n $(\"#fileUploadBtn1\").click();\r\n }\r\n\r\n // On file Select\r\n onChange(event) {\r\n this.file = event.target.files[0];\r\n }\r\n\r\n // OnClick of button Upload\r\n onUpload() {\r\n const formData = new FormData();\r\n formData.append('file', this.fileData);\r\n formData.append('userId', this.userInfo.userId);\r\n this.userService.uploadProfileImage(formData)\r\n .subscribe(\r\n (imagePath: string) => {\r\n if (imagePath != null && imagePath != '') {\r\n localStorage.removeItem('userImage');\r\n localStorage.setItem('userImage', imagePath);\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n // Cropper Functions\r\n fileChangeEvent(event: any): void {\r\n this.imageChangedEvent = event;\r\n this.cropperVisible = true\r\n $('#upload-demo').css('display', 'block')\r\n }\r\n\r\n imageCropped(event: ImageCroppedEvent) {\r\n // For Preview\r\n this.croppedImage = event.base64;\r\n // prepare for upload\r\n const fileBeforeCrop = this.imageChangedEvent.target.files[0];\r\n var strImage = this.croppedImage.replace(/^data:image\\/[a-z]+;base64,/, \"\");\r\n const imageBlob = this.dataURItoBlob(strImage);\r\n this.fileData = new File([imageBlob], fileBeforeCrop.name, { type: fileBeforeCrop.type }) as File\r\n }\r\n imageLoaded() {\r\n // show cropper\r\n }\r\n cropperReady() {\r\n // cropper ready\r\n }\r\n loadImageFailed() {\r\n // show message\r\n }\r\n\r\n dataURItoBlob(dataURI) {\r\n const byteString = window.atob(dataURI);\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([int8Array], { type: 'image/png' });\r\n return blob;\r\n }\r\n\r\n removeImage(): void {\r\n if (this.fileData) {\r\n this.fileData = null;\r\n this.previewUrl = null;\r\n this.croppedImage = ''\r\n }\r\n if (this.userImage) {\r\n this.userImage = '';\r\n this.userInfo.image = null;\r\n this.userInfo.imagePath = null;\r\n }\r\n this.cropperVisible = false\r\n $('#upload-demo').css('display', 'none')\r\n }\r\n cancelCrop() {\r\n this.fileData = null\r\n this.cropperVisible = false\r\n $('#upload-demo').css('display', 'none')\r\n }\r\n\r\n toggleCropper() {\r\n this.cropperVisible = !this.cropperVisible\r\n if (this.cropperVisible) {\r\n $('#upload-demo').css('display', 'block')\r\n } else {\r\n $('#upload-demo').css('display', 'none')\r\n }\r\n }\r\n\r\n showResetPasswordForm(): void {\r\n this.isResetPassword = !this.isResetPassword;\r\n }\r\n\r\n resetPassword(): void {\r\n const formData = new FormData();\r\n formData.append('pwd', this.resetPasswordForm.get('resetpassword').value);\r\n this.userService.resetProfilePassword(formData)\r\n .subscribe(\r\n (st: boolean) => {\r\n this.isResetPassword = !this.isResetPassword;\r\n this.setNotificationData('update', st);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n\r\n private preview() {\r\n if (this.fileData) {\r\n const mimeType = this.fileData.type;\r\n if (mimeType.match(/image\\/*/) == null) {\r\n return;\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.readAsDataURL(this.fileData);\r\n // tslint:disable-next-line: variable-name\r\n reader.onload = (_event) => {\r\n this.previewUrl = reader.result;\r\n };\r\n }\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'update') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Användaren har uppdaterats';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av användare misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#notificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#notificationModal') as any).modal('hide');\r\n }, 3000);\r\n }\r\n\r\n\r\n onCountyChange(): void {\r\n if (this.userForm.value.county > 0) {\r\n this.userForm.patchValue({\r\n municipality: []\r\n })\r\n this.userService.getMunicipalitiesByCountyId(this.userForm.value.county).subscribe((data: []) => {\r\n this.municipalities = data\r\n if (this.userInfo.userTypeId == '2') {\r\n this.municipalities.unshift({ value: 0, id: 0, code: \"0000\", label: \"Alla Kommuner\", name: \"Alla Kommuner\" })\r\n }\r\n for (let [key, value] of Object.entries(this.municipalities)) {\r\n value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n )\r\n }\r\n }\r\n\r\n handleMunicipalityChange() {\r\n if (!this.holdMunicipalityChange) {\r\n this.onMunicipalityChange()\r\n }\r\n }\r\n\r\n onMunicipalityChange() {\r\n let allMunicipalities = null\r\n if (this.isAllMunicipalitySelected && this.userForm.get('municipality').value.length > 1) {\r\n this.userForm.get('municipality').value.shift()\r\n this.isAllMunicipalitySelected = false\r\n }\r\n\r\n allMunicipalities = this.userForm.value.municipality.find((element) => { return element == '0' })\r\n\r\n if ((allMunicipalities == '0') && (this.userForm.get('municipality').value.length > 1)) {\r\n this.holdMunicipalityChange = true\r\n this.userForm.patchValue({\r\n municipality: [0]\r\n })\r\n this.holdMunicipalityChange = false\r\n this.isAllMunicipalitySelected = true\r\n }\r\n }\r\n\r\n onAddCountyMunicipals(): void {\r\n if (this.isEditCounty) {\r\n var county = this.selectedCounty.value\r\n } else {\r\n var county = this.userForm.value.county\r\n }\r\n\r\n this.counties.forEach(element => {\r\n if (element.value == county) {\r\n element.disabled = true\r\n }\r\n });\r\n\r\n var mArray = []\r\n if (this.countyMunicipalities && this.countyMunicipalities.length > 0) {\r\n var existingCounty = this.countyMunicipalities.find(e => e.countyId == county)\r\n }\r\n if (existingCounty) {\r\n this.onRemoveCounty(county)\r\n }\r\n\r\n if ((this.userForm.value.municipality.length > 0) && (this.userForm.value.municipality[0] != '0')) {\r\n this.userForm.value.municipality.forEach(element => {\r\n var obj = { countyId: county, municipalityId: element }\r\n this.countyMunicipalities.push(obj)\r\n mArray.push(this.municipalities.find(e => e.value == element))\r\n });\r\n var cArray: [] = this.counties.find(e => e.value == county)\r\n var Obj = { c: cArray, m: mArray, isAll: false }\r\n this.jsonCountyMunicipalities.push(Obj)\r\n\r\n } else {\r\n this.municipalities.forEach(element => {\r\n if (element.id != '0') {\r\n var obj = { countyId: county, municipalityId: element.id }\r\n this.countyMunicipalities.push(obj)\r\n mArray.push(this.municipalities.find(e => e.value == element.id))\r\n }\r\n });\r\n var cArray: [] = this.counties.find(e => e.value == county)\r\n var Obj = { c: cArray, m: mArray, isAll: true }\r\n this.jsonCountyMunicipalities.push(Obj)\r\n }\r\n this.userForm.patchValue({\r\n county: '',\r\n municipality: ''\r\n })\r\n this.isEditCounty = false;\r\n }\r\n\r\n onCancelCountyMunicipals() {\r\n this.userForm.patchValue({\r\n county: '',\r\n municipality: ''\r\n })\r\n this.isEditCounty = false\r\n this.isAllMunicipalitySelected = false\r\n }\r\n\r\n onRemoveCounty(countyId): void {\r\n var countyObj1 = this.jsonCountyMunicipalities.find(county => county.c.value == countyId)\r\n var countyObj1Index = this.jsonCountyMunicipalities.indexOf(countyObj1)\r\n this.jsonCountyMunicipalities.splice(countyObj1Index, 1)\r\n\r\n let objArr = []\r\n this.countyMunicipalities.forEach(element => {\r\n if (element.countyId == countyId) {\r\n objArr.push(element)\r\n }\r\n });\r\n\r\n objArr.forEach(ele => {\r\n let index = this.countyMunicipalities.indexOf(ele)\r\n this.countyMunicipalities.splice(index, 1);\r\n })\r\n // if (!this.isEditCounty) {\r\n // this.userForm.patchValue({\r\n // county: '',\r\n // municipality: ''\r\n // })\r\n // }\r\n\r\n if (!this.isEditCounty) {\r\n this.counties.forEach(element => {\r\n if (element.value == countyId) {\r\n element.disabled = false\r\n }\r\n });\r\n }\r\n\r\n this.isEditCounty = false\r\n this.isAllMunicipalitySelected = false\r\n }\r\n\r\n onEditCounty(countyId): void {\r\n var countyObj1 = this.jsonCountyMunicipalities.find(county => {\r\n return county.c.value == countyId\r\n })\r\n this.selectedCounty = countyObj1.c\r\n var municipalityArr: any[] = []\r\n if (countyObj1.isAll) {\r\n municipalityArr.push(0)\r\n this.isAllMunicipalitySelected = true\r\n } else {\r\n countyObj1.m.forEach(element => {\r\n municipalityArr.push(element.id)\r\n });\r\n }\r\n this.userService.getMunicipalitiesByCountyId(countyId).subscribe((data: []) => {\r\n this.municipalities = data\r\n this.municipalities.unshift({ value: 0, id: 0, code: \"0000\", label: \"Alla Kommuner\", name: \"Alla Kommuner\" })\r\n for (let [key, value] of Object.entries(this.municipalities)) {\r\n value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n this.userForm.patchValue({\r\n conuty: parseInt(countyId),\r\n municipality: municipalityArr\r\n })\r\n this.userForm.value.conuty = countyId\r\n this.isEditCounty = true;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n )\r\n }\r\n\r\n onAddLangSkills(): void {\r\n var langId = this.userForm.value.languages\r\n var skillLevelId = this.userForm.value.skillLevel\r\n\r\n var langObj = this.languageObjArray.find(element => element.languageId == langId)\r\n if (langObj) {\r\n this.onRemoveLangSkills(langId)\r\n var obj = { languageId: langId, skillLevelId: skillLevelId }\r\n this.languageObjArray.push(obj)\r\n } else {\r\n var obj = { languageId: langId, skillLevelId: skillLevelId }\r\n this.languageObjArray.push(obj)\r\n }\r\n this.userForm.patchValue({\r\n languages: '',\r\n skillLevel: ''\r\n })\r\n }\r\n\r\n getLangNameById(langId): string {\r\n var langObj = this.languages.find(element => element.value == langId)\r\n return langObj.label\r\n }\r\n getSkillLevelNameById(skillLevelId): string {\r\n var skillLevelObj = this.skillLevels.find(element => element.value == skillLevelId)\r\n return skillLevelObj.label\r\n }\r\n\r\n onRemoveLangSkills(langId): void {\r\n var langObj = this.languageObjArray.find(lang => lang.languageId == langId)\r\n var langObjIndex = this.languageObjArray.indexOf(langObj)\r\n this.languageObjArray.splice(langObjIndex, 1)\r\n this.userForm.patchValue({\r\n languages: '',\r\n skillLevel: ''\r\n })\r\n }\r\n\r\n getCurrentConfigData(): void {\r\n this.userService.getConfigData().subscribe((res) => {\r\n this.resourceTypes = res.resourceTypes\r\n this.matchingAlgorithnmFields = res.matchingAlgorithnmFields;\r\n })\r\n }\r\n\r\n}\r\n\r\n\r\nfunction resetPasswordCompare(c: AbstractControl): { [key: string]: boolean } | null {\r\n const pwdControl = c.get('resetpassword');\r\n const conPwdControl = c.get('resetconpassword');\r\n\r\n if (pwdControl.pristine || conPwdControl.pristine) {\r\n return null;\r\n }\r\n\r\n if (pwdControl.value !== conPwdControl.value) {\r\n return { 'match': true };\r\n }\r\n return null;\r\n}\r\n\r\nfunction passwordCompare(c: AbstractControl): { [key: string]: boolean } | null {\r\n const pwdControl = c.get('password');\r\n const conPwdControl = c.get('conpassword');\r\n\r\n if (pwdControl.pristine || conPwdControl.pristine) {\r\n return null;\r\n }\r\n\r\n if (pwdControl.value !== conPwdControl.value) {\r\n return { 'match': true };\r\n }\r\n return null;\r\n}\r\n","module.exports = \".invalid-feedback-username {\\r\\n width: 100%;\\r\\n margin-top: .25rem;\\r\\n font-size: 80%;\\r\\n color: #dc3545;\\r\\n }\\r\\n \\r\\n .column button.btn {\\r\\n min-width: 62px;\\r\\n cursor: pointer;\\r\\n }\\r\\n \\r\\n td.delete-icon {\\r\\n vertical-align: middle;\\r\\n }\\r\\n \\r\\n td.delete-icon span:hover {\\r\\n cursor: pointer;\\r\\n }\\r\\n \\r\\n .select2-container--default .select2-selection--single {\\r\\n background-color: #fff;\\r\\n border: 1px solid #ced4da;\\r\\n border-radius: 4px;\\r\\n }\\r\\n \\r\\n .form-control.ng-touched.ng-invalid{\\r\\n border: 1px solid #d42f2f !important;\\r\\n }\\r\\n \\r\\n input#pharmacyId {\\r\\n height: 28px !important;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdXNlci9zdXBlcmNsaWVudC11c2VyLWVkaXQvc3VwZXJjbGllbnQtdXNlci1lZGl0LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxXQUFXO0lBQ1gsa0JBQWtCO0lBQ2xCLGNBQWM7SUFDZCxjQUFjO0VBQ2hCOztFQUVBO0lBQ0UsZUFBZTtJQUNmLGVBQWU7RUFDakI7O0VBRUE7SUFDRSxzQkFBc0I7RUFDeEI7O0VBRUE7SUFDRSxlQUFlO0VBQ2pCOztFQUVBO0lBQ0Usc0JBQXNCO0lBQ3RCLHlCQUF5QjtJQUN6QixrQkFBa0I7RUFDcEI7O0VBQ0E7SUFDRSxvQ0FBb0M7RUFDdEM7O0VBRUE7SUFDRSx1QkFBdUI7RUFDekIiLCJmaWxlIjoic3JjL2FwcC91c2VyL3N1cGVyY2xpZW50LXVzZXItZWRpdC9zdXBlcmNsaWVudC11c2VyLWVkaXQuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5pbnZhbGlkLWZlZWRiYWNrLXVzZXJuYW1lIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLXRvcDogLjI1cmVtO1xyXG4gICAgZm9udC1zaXplOiA4MCU7XHJcbiAgICBjb2xvcjogI2RjMzU0NTtcclxuICB9XHJcbiAgXHJcbiAgLmNvbHVtbiBidXR0b24uYnRuIHtcclxuICAgIG1pbi13aWR0aDogNjJweDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICB9XHJcbiAgXHJcbiAgdGQuZGVsZXRlLWljb24ge1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICB9XHJcbiAgXHJcbiAgdGQuZGVsZXRlLWljb24gc3Bhbjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgfVxyXG4gIFxyXG4gIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgfVxyXG4gIC5mb3JtLWNvbnRyb2wubmctdG91Y2hlZC5uZy1pbnZhbGlke1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2Q0MmYyZiAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgaW5wdXQjcGhhcm1hY3lJZCB7XHJcbiAgICBoZWlnaHQ6IDI4cHggIWltcG9ydGFudDtcclxuICB9Il19 */\"","import { Component, OnInit, AfterViewInit, ViewChildren, ElementRef } from '@angular/core';\r\nimport { FormGroup, FormControlName, FormBuilder, Validators, FormControl, AbstractControl } from '@angular/forms';\r\nimport { GenericValidator } from './../../shared/generic-validator';\r\nimport { Subscription, timer, Observable, merge, fromEvent } from 'rxjs';\r\nimport { switchMap, map, debounceTime } from 'rxjs/operators';\r\nimport { IUserInfo } from './../user-info';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { UserService } from './../user.service';\r\nimport { ImageCroppedEvent } from 'ngx-image-cropper';\r\n@Component({\r\n selector: 'wfm-superclient-user-edit',\r\n templateUrl: './superclient-user-edit.component.html',\r\n styleUrls: ['./superclient-user-edit.component.css']\r\n})\r\nexport class SuperclientUserEditComponent implements OnInit, AfterViewInit {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n\r\n userForm: FormGroup;\r\n resetPasswordForm: FormGroup;\r\n pageTitle: string;\r\n errorMessage: string;\r\n userTypes: any[];\r\n userInfo: IUserInfo = {} as IUserInfo;\r\n previewUrl: any;\r\n userImage = '';\r\n fileData: File = null;\r\n updateUserId: string;\r\n isResetPassword = false;\r\n displayMessage: { [key: string]: string } = {};\r\n displayResetPwdMessage: { [key: string]: string } = {};\r\n imageChangedEvent: any = '';\r\n croppedImage: any = '';\r\n cropperVisible:boolean\r\n isSubmitInvalid:boolean\r\n\r\n private sub: Subscription;\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n\r\n countyMunicipalities: any[] = [];\r\n counties: any[] = [];\r\n municipalities: any[] = [{value:null, label: ''}, {value:null, label: ''}];\r\n pharmacySystems: any[] = [];\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private userService: UserService\r\n ) {\r\n this.userTypes = [\r\n { id: '3', name: 'Client', sename: 'Enhet' }\r\n ];\r\n\r\n this.validationMessages = {\r\n userTypeId: {\r\n required: 'anställningsform krävs'\r\n },\r\n firstName: {\r\n required: 'förnamn krävs',\r\n minlength: 'måste ha minst 2 tecken',\r\n maxlength: 'max 50 tecken'\r\n },\r\n lastName: {\r\n required: 'efternamn krävs',\r\n minlength: 'måste ha minst 2 tecken',\r\n maxlength: 'max 50 tecken'\r\n },\r\n address: {\r\n required: 'adress krävs',\r\n maxlength: 'max 100 tecken'\r\n },\r\n city: {\r\n required: 'stad krävs',\r\n maxlength: 'max 50 tecken'\r\n },\r\n zip: {\r\n required: 'postnummer krävs',\r\n maxlength: 'max 10 tecken'\r\n },\r\n email: {\r\n required: 'e-post krävs',\r\n email: 'e-posten ogiltig',\r\n maxlength: 'max 256 tecken'\r\n },\r\n phoneNumber: {\r\n required: 'telefonnummer krävs',\r\n maxlength: 'max 50 tecken'\r\n },\r\n jobCategoryId: {\r\n required: 'anställningsform krävs'\r\n },\r\n clientName: {\r\n required: 'apoteketsnamn krävs',\r\n maxlength: 'max 100 tecken'\r\n },\r\n pharmacyId: {\r\n required: 'apotek-ID krävs',\r\n maxlength: 'max 100 tecken'\r\n },\r\n userName: {\r\n required: 'användarnamn krävs',\r\n minlength: 'användarnamn måste ha minst 3 tecken'\r\n },\r\n password: {\r\n required: 'lösenord krävs',\r\n minlength: 'lösenord måste ha minst 6 tecken'\r\n },\r\n conpassword: {\r\n required: 'lösenord krävs',\r\n invalid: 'lösenord matchar inte'\r\n },\r\n resetpassword: {\r\n required: 'lösenord krävs',\r\n minlength: 'lösenord måste ha minst 6 tecken'\r\n },\r\n resetconpassword: {\r\n required: 'lösenord krävs',\r\n match: 'vlösenord matchar inte'\r\n }\r\n };\r\n\r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n }\r\n\r\n setCustomVallidations() {\r\n const usernameControl = this.userForm.get('userName');\r\n const passwordControl = this.userForm.get('passwords.password');\r\n const conpasswordControl = this.userForm.get('passwords.conpassword');\r\n const municipalityControl = this.userForm.get('municipality');\r\n const pharmacySystemsControl = this.userForm.get('pharmacySystems');\r\n const countyControl = this.userForm.get('county');\r\n\r\n usernameControl.setValidators([Validators.required, Validators.minLength(3), Validators.maxLength(20)]);\r\n municipalityControl.setValidators([Validators.required]);\r\n //pharmacySystemsControl.setValidators([Validators.required]);\r\n countyControl.setValidators([Validators.required]);\r\n\r\n if (this.updateUserId == \"0\") {\r\n passwordControl.setValidators([Validators.required, Validators.minLength(6), Validators.maxLength(50)]);\r\n conpasswordControl.setValidators([Validators.required]);\r\n usernameControl.setAsyncValidators(this.functionloginAsyncValidator(this.userService));\r\n }\r\n else{\r\n usernameControl.setAsyncValidators(this.functionloginEditAsyncValidator(this.userService));\r\n }\r\n }\r\n\r\n validateAllFormFields(formGroup: FormGroup) {\r\n Object.keys(formGroup.controls).forEach(field => {\r\n const control = formGroup.get(field);\r\n if (control instanceof FormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else if (control instanceof FormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.userForm = this.fb.group({\r\n userId: [''],\r\n userTypeId: [''],\r\n firstName: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]],\r\n lastName: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]],\r\n clientName: ['', [Validators.required, Validators.maxLength(100)]],\r\n pharmacyId: ['', [Validators.required, Validators.maxLength(100)]],\r\n address: ['', [Validators.required, Validators.maxLength(100)]],\r\n city: ['', [Validators.required, Validators.maxLength(20)]],\r\n zip: ['', [Validators.required, Validators.maxLength(10)]],\r\n email: ['', [Validators.required, Validators.email, Validators.maxLength(256)]],\r\n phoneNumber: ['', [Validators.required, Validators.maxLength(50)]],\r\n userName: ['', null],\r\n passwords: this.fb.group({\r\n password: [''],\r\n conpassword: [''],\r\n }, { validator: passwordCompare }),\r\n password: [],\r\n conpassword: [],\r\n isActive: [true],\r\n county: [[],[Validators.required]],\r\n municipality: ['',[Validators.required]],\r\n //pharmacySystems: [[],[Validators.required]],\r\n isStaredEmployeesOnly: [null],\r\n countyMunicipalities: [[]]\r\n });\r\n\r\n this.resetPasswordForm = this.fb.group({\r\n resetpassword: ['', Validators.required],\r\n resetconpassword: ['', Validators.required]\r\n }, { validator: resetPasswordCompare });\r\n\r\n // Read the product Id from the route parameter\r\n this.sub = this.route.paramMap.subscribe(\r\n params => {\r\n const id = params.get('id');\r\n this.updateUserId = id;\r\n this.getSubClientUser(id);\r\n }\r\n );\r\n\r\n this.userService.getInnitialMasterData().subscribe((data) => {\r\n\r\n this.pharmacySystems = data.pharmacySystems\r\n this.counties = data.counties\r\n\r\n for (let [key, value] of Object.entries(this.pharmacySystems)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.counties)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n\r\n })\r\n\r\n this.setCustomVallidations();\r\n }\r\n\r\n functionloginAsyncValidator(authService: UserService, time: number = 500) {\r\n return (input: FormControl) => {\r\n return timer(time).pipe(\r\n switchMap(() => authService.checkUsername(input.value, this.updateUserId)),\r\n map(res => {\r\n return res ? { loginExist: true } : null ;\r\n })\r\n );\r\n };\r\n }\r\n\r\n functionloginEditAsyncValidator(authService: UserService, time: number = 500) {\r\n return (input: FormControl) => {\r\n return timer(time).pipe(\r\n switchMap(() => authService.checkUsername(input.value, this.updateUserId)),\r\n map(res => {\r\n return res ? { loginExist: true } : null ;\r\n })\r\n );\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // // Watch for the blur event from any input element on the form.\r\n // const controlBlurs: Observable[] = this.formInputElements\r\n // .map((formControl: ElementRef) => fromEvent(formControl.nativeElement, 'blur'));\r\n\r\n // // Merge the blur event observable with the valueChanges observable\r\n // merge(this.userForm.valueChanges, ...controlBlurs).pipe(\r\n // debounceTime(300)\r\n // ).subscribe(value => {\r\n // this.displayMessage = this.genericValidator.processMessages(this.userForm);\r\n // });\r\n\r\n // // Merge the blur event observable with the valueChanges observable\r\n // merge(this.resetPasswordForm.valueChanges, ...controlBlurs).pipe(\r\n // debounceTime(300)\r\n // ).subscribe(value => {\r\n // this.displayResetPwdMessage = this.genericValidator.processMessages(this.resetPasswordForm);\r\n // });\r\n }\r\n\r\n isUserExists(): boolean {\r\n return this.userForm.get('userName').hasError('loginExist');\r\n }\r\n\r\n getSubClientUser(id: string): void {\r\n let userTypeId = this.userTypes[0].id;\r\n this.userService.getById(id, userTypeId)\r\n .subscribe(\r\n (user: IUserInfo) =>{\r\n if (user.countyMunicipalities && user.countyMunicipalities.length>0) {\r\n this.userService.getMunicipalitiesByCountyId(user.countyMunicipalities[0].countyId).subscribe((data: []) => {\r\n this.municipalities = data\r\n for (let [key, value] of Object.entries(this.municipalities)) {\r\n value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n this.displayUser(user)\r\n });\r\n } else {\r\n this.displayUser(user)\r\n }\r\n \r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n displayUser(user: IUserInfo): void {\r\n if (this.userForm) {\r\n this.userForm.reset();\r\n }\r\n this.userInfo = user;\r\n\r\n if (this.userInfo.userId === '0') {\r\n this.pageTitle = 'Ange Användarinformation';\r\n } else {\r\n this.userImage = this.userInfo.imagePath;\r\n this.pageTitle = `Redigera Användarinformation: ${this.userInfo.firstName}`;\r\n const userTypeControl = this.userForm.get('userTypeId');\r\n userTypeControl.disable();\r\n }\r\n // Update the data on the form\r\n this.userForm.patchValue({\r\n userId: this.userInfo.userId,\r\n userTypeId: this.userInfo.userTypeId,\r\n firstName: this.userInfo.firstName,\r\n lastName: this.userInfo.lastName,\r\n clientName: this.userInfo.clientName,\r\n pharmacyId: this.userInfo.pharmacyId,\r\n address: this.userInfo.address,\r\n city: this.userInfo.city,\r\n zip: this.userInfo.zip,\r\n email: this.userInfo.email,\r\n phoneNumber: this.userInfo.phoneNumber,\r\n isActive: this.userInfo.isActive.toString(),\r\n userName: this.userInfo.userName\r\n });\r\n\r\n \r\n if (this.userInfo.userTypeId == '3') {\r\n this.userForm.patchValue({\r\n county: this.userInfo.countyMunicipalities && this.userInfo.countyMunicipalities[0]? this.userInfo.countyMunicipalities[0].countyId:'',\r\n municipality: this.userInfo.countyMunicipalities && this.userInfo.countyMunicipalities[0]? this.userInfo.countyMunicipalities[0].municipalityId:'',\r\n pharmacySystems: this.userInfo.pharmacySystems? this.userInfo.pharmacySystems[0]:'',\r\n isStaredEmployeesOnly: this.userInfo.isStaredEmployeesOnly,\r\n // favouriteEmployees: this.userInfo.favouriteEmployees\r\n });\r\n this.userForm.value.municipality = this.userInfo.countyMunicipalities && this.userInfo.countyMunicipalities[0]? this.userInfo.countyMunicipalities[0].municipalityId:''\r\n // this.userForm.value.favouriteEmployees = this.userInfo.favouriteEmployees\r\n }\r\n }\r\n\r\n saveUser(): void {\r\n if (this.userForm.valid) {\r\n if (this.userForm.dirty) {\r\n if (this.userForm.value.county && this.userForm.value.municipality) {\r\n this.userForm.patchValue({\r\n countyMunicipalities: [{ countyId: this.userForm.value.county, municipalityId: this.userForm.value.municipality }],\r\n // pharmacySystems: [this.userForm.value.pharmacySystems]\r\n })\r\n } else {\r\n this.userForm.patchValue({\r\n countyMunicipalities: []\r\n })\r\n }\r\n this.userForm.value.pharmacySystems = this.userForm.value.pharmacySystems? [this.userForm.value.pharmacySystems]:[]\r\n this.userForm.value.favouriteEmployees =this.userForm.value.favouriteEmployees? this.userForm.value.favouriteEmployees:[]\r\n\r\n\r\n const u = { ...this.userInfo, ...this.userForm.value };\r\n if (u.userId === '0') {\r\n u.password = this.userForm.get('passwords.password').value;\r\n u.isActive = true;\r\n u.userType = this.userTypes.filter((element, index, array) => {\r\n return element.id === u.userTypeId;\r\n })[0].name;\r\n this.userService.createSubClientUser(u)\r\n .subscribe(\r\n (userId) => {\r\n this.onSaveComplete('add', true, userId);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n } else {\r\n u.image = this.userInfo.image;\r\n this.userService.updateSubClientUser(u)\r\n .subscribe(\r\n () => this.onSaveComplete('update', true, u.userId),\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n } else {\r\n this.onSaveComplete('update', true, this.userForm.get('userId').value);\r\n }\r\n } else {\r\n this.validateAllFormFields(this.userForm)\r\n this.validateAllFormFields(this.resetPasswordForm)\r\n this.errorMessage = 'Please correct the validation errors.';\r\n this.isSubmitInvalid = true\r\n }\r\n }\r\n\r\n onSaveComplete(flow: string, status: boolean, userId: string): void {\r\n if (this.fileData && userId != null) {\r\n const formData = new FormData();\r\n formData.append('file', this.fileData);\r\n formData.append('userId', userId);\r\n\r\n this.userService.uploadUserImage(formData)\r\n .subscribe(\r\n (st: boolean) => {\r\n this.userForm.reset();\r\n this.router.navigate(['/clients/users'], { state: { flow, status } });\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n } else {\r\n this.userForm.reset();\r\n this.router.navigate(['/clients/users'], { state: { flow, status } });\r\n }\r\n }\r\n\r\n\r\n uploadImageClick(): void {\r\n $(\"#fileUploadBtn\").click();\r\n }\r\n\r\n // Cropper Functions\r\n fileChangeEvent(event: any): void {\r\n this.imageChangedEvent = event;\r\n this.cropperVisible = true\r\n $('#upload-demo').css('display','block')\r\n }\r\n imageCropped(event: ImageCroppedEvent) {\r\n // For Preview\r\n this.croppedImage = event.base64;\r\n // prepare for upload\r\n const fileBeforeCrop = this.imageChangedEvent.target.files[0];\r\n var strImage = this.croppedImage.replace(/^data:image\\/[a-z]+;base64,/, \"\");\r\n const imageBlob = this.dataURItoBlob(strImage);\r\n this.fileData = new File([imageBlob], fileBeforeCrop.name, {type: fileBeforeCrop.type}) as File\r\n }\r\n imageLoaded() {\r\n // show cropper\r\n }\r\n cropperReady() {\r\n // cropper ready\r\n }\r\n loadImageFailed() {\r\n // show message\r\n }\r\n\r\n dataURItoBlob(dataURI) {\r\n const byteString = window.atob(dataURI);\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([int8Array], { type: 'image/png' }); \r\n return blob;\r\n }\r\n\r\n removeImage(): void {\r\n if (this.fileData) {\r\n this.fileData = null;\r\n this.previewUrl = null;\r\n this.croppedImage = ''\r\n }\r\n if (this.userImage) {\r\n this.userImage = '';\r\n this.userInfo.image = null;\r\n this.userInfo.imagePath = null;\r\n }\r\n this.cropperVisible = false\r\n $('#upload-demo').css('display','none')\r\n }\r\n cancelCrop(){\r\n this.fileData = null\r\n this.cropperVisible = false\r\n $('#upload-demo').css('display','none')\r\n }\r\n\r\n toggleCropper(){\r\n this.cropperVisible = !this.cropperVisible\r\n if ( this.cropperVisible) {\r\n $('#upload-demo').css('display','block')\r\n } else {\r\n $('#upload-demo').css('display','none')\r\n }\r\n }\r\n\r\n showResetPasswordForm(): void {\r\n this.isResetPassword = !this.isResetPassword;\r\n }\r\n\r\n resetPassword(): void {\r\n const formData = new FormData();\r\n formData.append('userId', this.updateUserId);\r\n formData.append('pwd', this.resetPasswordForm.get('resetpassword').value);\r\n this.userService.resetPassword(formData)\r\n .subscribe(\r\n (st: boolean) => {\r\n this.resetPasswordForm.reset();\r\n this.router.navigate(['/clients/users'], { state: { flow: 'update', status: st } });\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n private preview() {\r\n if (this.fileData) {\r\n const mimeType = this.fileData.type;\r\n if (mimeType.match(/image\\/*/) == null) {\r\n return;\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.readAsDataURL(this.fileData);\r\n reader.onload = (_event) => {\r\n this.previewUrl = reader.result;\r\n };\r\n }\r\n }\r\n\r\n onCountyChange(): void {\r\n if (this.userForm.value.county > 0) {\r\n this.userForm.patchValue({\r\n municipality: []\r\n })\r\n this.userService.getMunicipalitiesByCountyId(this.userForm.value.county).subscribe((data: []) => {\r\n this.municipalities = data\r\n for (let [key, value] of Object.entries(this.municipalities)) {\r\n value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n )\r\n }\r\n }\r\n}\r\n\r\nfunction resetPasswordCompare(c: AbstractControl): { [key: string]: boolean } | null {\r\n const pwdControl = c.get('resetpassword');\r\n const conPwdControl = c.get('resetconpassword');\r\n\r\n if (pwdControl.pristine || conPwdControl.pristine) {\r\n return null;\r\n }\r\n\r\n if (pwdControl.value !== conPwdControl.value) {\r\n return { 'match': true };\r\n }\r\n return null;\r\n}\r\n\r\nfunction passwordCompare(c: AbstractControl): { [key: string]: boolean } | null {\r\n const pwdControl = c.get('password');\r\n const conPwdControl = c.get('conpassword');\r\n\r\n if (pwdControl.pristine || conPwdControl.pristine) {\r\n return null;\r\n }\r\n\r\n if (pwdControl.value !== conPwdControl.value) {\r\n return { 'match': true };\r\n }\r\n return null;\r\n}\r\n","module.exports = \".ngx-pagination li{\\r\\n background-color: white !important;\\r\\n}\\r\\n.ngx-pagination{\\r\\n padding: 0px !important;\\r\\n}\\r\\n.d-flex a {\\r\\n color: #1C1C1C !important;\\r\\n text-decoration: none !important;\\r\\n background-color: transparent !important;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdXNlci9zdXBlcmNsaWVudC11c2VyLWxpc3Qvc3VwZXJjbGllbnQtdXNlci1saXN0LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxrQ0FBa0M7QUFDcEM7QUFDQTtFQUNFLHVCQUF1QjtBQUN6QjtBQUVBO0VBQ0UseUJBQXlCO0VBQ3pCLGdDQUFnQztFQUNoQyx3Q0FBd0M7QUFDMUMiLCJmaWxlIjoic3JjL2FwcC91c2VyL3N1cGVyY2xpZW50LXVzZXItbGlzdC9zdXBlcmNsaWVudC11c2VyLWxpc3QuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5uZ3gtcGFnaW5hdGlvbiBsaXtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xyXG59XHJcbi5uZ3gtcGFnaW5hdGlvbntcclxuICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLmQtZmxleCBhIHtcclxuICBjb2xvcjogIzFDMUMxQyAhaW1wb3J0YW50O1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\r\nimport { UserService } from './../user.service';\r\nimport { IUserSearchCriteria } from './../user-search-criteria';\r\nimport { IUserInfo } from './../user-info';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'wfm-superclient-user-list',\r\n templateUrl: './superclient-user-list.component.html',\r\n styleUrls: ['./superclient-user-list.component.css']\r\n})\r\nexport class SuperclientUserListComponent implements OnInit {\r\n\r\n errorMessage: string;\r\n searchCritera: IUserSearchCriteria = {} as IUserSearchCriteria;\r\n userInfoList: IUserInfo[] = [];\r\n searchForm: FormGroup;\r\n config: any;\r\n responseData: any;\r\n selectedUser: IUserInfo = {} as IUserInfo;\r\n removeUserId: string;\r\n notificationModal: any;\r\n\r\n constructor(private userService: UserService, private fb: FormBuilder) {\r\n this.searchForm = this.fb.group({\r\n searchText: '',\r\n userType: '',\r\n status: 'true'\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.searchCritera.pageNumber = 1;\r\n this.searchCritera.pageSize = 10;\r\n this.searchCritera.orderBy = 'FirstName';\r\n this.searchCritera.isAscending = true;\r\n this.searchCritera.isActive = true;\r\n\r\n this.config = {\r\n itemsPerPage: this.searchCritera.pageSize,\r\n currentPage: this.searchCritera.pageNumber,\r\n totalItems: 0\r\n };\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.getSubClients();\r\n\r\n if (history.state.flow) {\r\n this.setNotificationData(history.state.flow, history.state.status);\r\n }\r\n }\r\n\r\n private getSubClients(): void {\r\n this.userService.getAllSubClients(this.searchCritera).subscribe(\r\n pagedResult => {\r\n this.config.totalItems = pagedResult.totalNumberOfRecords;\r\n this.userInfoList = pagedResult.results;\r\n },\r\n error => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n filterData(): void {\r\n this.searchCritera.pageNumber = 1;\r\n this.searchCritera.searchText = this.searchForm.get('searchText').value;\r\n this.searchCritera.userTypeId = this.searchForm.get('userType').value;\r\n this.searchCritera.isActive = this.searchForm.get('status').value;\r\n\r\n this.userService.getAllSubClients(this.searchCritera).subscribe(\r\n pagedResult => {\r\n this.config.currentPage = 1;\r\n this.config.totalItems = pagedResult.totalNumberOfRecords;\r\n this.userInfoList = pagedResult.results;\r\n },\r\n error => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n updateUserStatus(status: number): void {\r\n this.userService.updateUserStatus(this.selectedUser.userId, status).subscribe(\r\n data => {\r\n this.filterData();\r\n if (status == 0) {\r\n ($('#clientsUserDeactivateModal') as any).modal('hide');\r\n this.setNotificationData('remove', data);\r\n } else{\r\n ($('#clientsUserActivateModal') as any).modal('hide');\r\n this.setNotificationData('activate', data);\r\n }\r\n\r\n },\r\n error => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n pageChanged(event): void {\r\n this.searchCritera.pageNumber = event;\r\n this.getSubClients();\r\n this.config.currentPage = event;\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'remove') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Användaren inaktiverad';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Inaktivering av användare misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n if (flow === 'activate') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Användare aktiverad';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Aktivering av användare misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n if (flow === 'add') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Användaren har skapats';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Skapande av användare misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n if (flow === 'update') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Användaren har uppdaterats';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av användare misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#clientsNotificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#clientsNotificationModal') as any).modal('hide');\r\n }, 3000);\r\n }\r\n\r\n}\r\n","module.exports = \".form-group {\\r\\n margin-bottom: 0.1rem;\\r\\n}\\r\\n\\r\\n@media (max-width: 575.98px) {\\r\\n .superclient-view {\\r\\n font-size: 1rem !important;\\r\\n }\\r\\n}\\r\\n\\r\\n.field-values{\\r\\n /* overflow-wrap: anywhere !important; */\\r\\n word-break: break-word;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdXNlci9zdXBlcmNsaWVudC11c2VyLXZpZXcvc3VwZXJjbGllbnQtdXNlci12aWV3LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxxQkFBcUI7QUFDdkI7O0FBRUE7RUFDRTtJQUNFLDBCQUEwQjtFQUM1QjtBQUNGOztBQUVBO0VBQ0Usd0NBQXdDO0VBQ3hDLHNCQUFzQjtBQUN4QiIsImZpbGUiOiJzcmMvYXBwL3VzZXIvc3VwZXJjbGllbnQtdXNlci12aWV3L3N1cGVyY2xpZW50LXVzZXItdmlldy5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvcm0tZ3JvdXAge1xyXG4gIG1hcmdpbi1ib3R0b206IDAuMXJlbTtcclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7XHJcbiAgLnN1cGVyY2xpZW50LXZpZXcge1xyXG4gICAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4uZmllbGQtdmFsdWVze1xyXG4gIC8qIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlICFpbXBvcnRhbnQ7ICovXHJcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcclxufVxyXG4iXX0= */\"","import { UserService } from './../user.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { Subscription, Subject } from 'rxjs';\r\nimport { IUserInfo } from './../user-info';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'wfm-superclient-user-view',\r\n templateUrl: './superclient-user-view.component.html',\r\n styleUrls: ['./superclient-user-view.component.css']\r\n})\r\nexport class SuperclientUserViewComponent implements OnInit {\r\n\r\n \r\n @Input('employeeNo') employeeProfileId: Subject\r\n @Input() isViewModal:boolean = false\r\n\r\n pageTitle: string;\r\n errorMessage: string;\r\n userTypes: any[];\r\n jobTypes: any[];\r\n userInfo: IUserInfo = {} as IUserInfo;\r\n previewUrl: any;\r\n userImage = '';\r\n fileData: File = null;\r\n private sub: Subscription;\r\n userForm: FormGroup;\r\n selectedEmployeeId: string\r\n empResourceType:any\r\n resourceTypes: any[]\r\n\r\n countyMunicipalities: any[] = [];\r\n counties: any[] = [];\r\n municipalities: any[] = [];\r\n pharmacySystems: any[] = [];\r\n\r\n jsonCountyMunicipalities: any[] = [];\r\n legitimations: any[] = [];\r\n experienceAreas: any[] = [];\r\n usersList: IUserInfo[] = [];\r\n skillLevels:any[]=[];\r\n\r\n languages: any[] = [\r\n { value: 1, label: 'English' },\r\n { value: 2, label: 'Swedish' }\r\n ];\r\n\r\n yearsOfExperiences: any[] = [\r\n { value: 1, label: '1' },\r\n { value: 2, label: '2' },\r\n { value: 3, label: '3' },\r\n { value: 4, label: '4' },\r\n { value: 5, label: '5' },\r\n { value: 6, label: '6' },\r\n { value: 7, label: '7' },\r\n { value: 8, label: '8' },\r\n { value: 9, label: '9' },\r\n { value: 10, label: '10' },\r\n { value: 11, label: '10+' },\r\n ];\r\n\r\n deviceWidth:number = window.innerWidth;\r\n deviceHight:number = window.innerHeight;\r\n\r\n constructor(private fb: FormBuilder,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private userService: UserService) {\r\n\r\n this.userTypes = [\r\n { id: '3', name: 'Enhet' }\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.userForm = this.fb.group({\r\n userId: [''],\r\n userTypeId: [],\r\n jobCategoryId: [],\r\n firstName: [''],\r\n lastName: [],\r\n clientName: [],\r\n pharmacyId: [],\r\n address: [],\r\n city: [],\r\n zip: [],\r\n email: [],\r\n phoneNumber: [],\r\n userName: [],\r\n password: [],\r\n conpassword: [],\r\n isActive: [true],\r\n county: [{ disabled: true }, []],\r\n municipality: [[]],\r\n pharmacySystems: [],\r\n isStaredEmployeesOnly: [Boolean],\r\n employeeNo: [''],\r\n countyMunicipalities: [[]],\r\n legitimationId: [],\r\n experienceAreas: [],\r\n yearsOfExperience: [],\r\n isStdProceduresRead: [Boolean],\r\n aboutMe: [''],\r\n languages: [],\r\n cmJson: '',\r\n favouriteEmployees: []\r\n });\r\n\r\n if (this.isViewModal) {\r\n this.employeeProfileId.subscribe((userId)=>{\r\n this.selectedEmployeeId = userId\r\n if (userId) {\r\n this.getUser(this.selectedEmployeeId);\r\n }\r\n })\r\n } else {\r\n this.sub = this.route.paramMap.subscribe(\r\n params => {\r\n const id = params.get('userid');\r\n this.getUser(id);\r\n }\r\n );\r\n }\r\n\r\n \r\n this.userService.getInnitialMasterData().subscribe((data) => {\r\n\r\n this.pharmacySystems = data.pharmacySystems\r\n this.counties = data.counties\r\n this.experienceAreas = data.experienceAreas\r\n this.legitimations = data.legitimations\r\n this.skillLevels = data.skillLevels\r\n this.languages = data.languages\r\n\r\n for (let [key, value] of Object.entries(this.pharmacySystems)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.counties)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.experienceAreas)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.legitimations)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.skillLevels)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.languages)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n\r\n })\r\n }\r\n\r\n getUser(id: string): void {\r\n this.userService.getById(id)\r\n .subscribe(\r\n (user: IUserInfo) => {\r\n if (user.countyMunicipalities && user.countyMunicipalities.length>0) {\r\n this.userService.getMunicipalitiesByCountyId(user.countyMunicipalities[0].countyId).subscribe((data: []) => {\r\n this.municipalities = data\r\n for (let [key, value] of Object.entries(this.municipalities)) {\r\n value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n this.displayUser(user)\r\n });\r\n } else {\r\n this.displayUser(user)\r\n }\r\n \r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n displayUser(user: IUserInfo): void {\r\n this.userInfo = user;\r\n\r\n this.userImage = this.userInfo.imagePath;\r\n this.pageTitle = `Edit User Data: ${this.userInfo.firstName}`;\r\n const userTypeControl = this.userForm.get('userTypeId');\r\n\r\n if (this.userInfo.cmJson) {\r\n this.jsonCountyMunicipalities = JSON.parse(this.userInfo.cmJson)\r\n }\r\n\r\n this.userForm.patchValue({\r\n userId: this.userInfo.userId,\r\n userTypeId: this.userInfo.userTypeId,\r\n jobCategoryId: this.userInfo.jobCategoryId ? this.userInfo.jobCategoryId.toString() : null,\r\n firstName: this.userInfo.firstName,\r\n lastName: this.userInfo.lastName,\r\n clientName: this.userInfo.clientName,\r\n pharmacyId: this.userInfo.pharmacyId,\r\n address: this.userInfo.address,\r\n city: this.userInfo.city,\r\n zip: this.userInfo.zip,\r\n email: this.userInfo.email,\r\n phoneNumber: this.userInfo.phoneNumber,\r\n isActive: this.userInfo.isActive.toString()\r\n });\r\n\r\n if (this.userInfo.userTypeId == '2') {\r\n this.userForm.patchValue({\r\n county: (this.userInfo.countyMunicipalities && this.userInfo.countyMunicipalities.length>0)? this.userInfo.countyMunicipalities[0].countyId:null,\r\n municipality:(this.userInfo.countyMunicipalities && this.userInfo.countyMunicipalities.length>0)? this.userInfo.countyMunicipalities[0].municipalityId:null,\r\n pharmacySystems: this.userInfo.pharmacySystems,\r\n legitimationId: this.userInfo.legitimationId,\r\n experienceAreas: this.userInfo.experienceAreas,\r\n yearsOfExperience: this.userInfo.yearsOfExperience,\r\n isStdProceduresRead: this.userInfo.isStdProceduresRead,\r\n aboutMe: this.userInfo.aboutMe,\r\n languages: this.userInfo.languages,\r\n employeeNo: this.userInfo.employeeNo\r\n });\r\n this.countyMunicipalities = this.userInfo.countyMunicipalities\r\n this.empResourceType = this.resourceTypes.find(x=>x.id==this.userInfo.resourceTypeId);\r\n }\r\n\r\n if (this.userInfo.userTypeId == '3') {\r\n this.userForm.patchValue({\r\n county: this.userInfo.countyMunicipalities && this.userInfo.countyMunicipalities[0]? this.userInfo.countyMunicipalities[0].countyId:null,\r\n municipality: this.userInfo.countyMunicipalities && this.userInfo.countyMunicipalities[0]? this.userInfo.countyMunicipalities[0].municipalityId:null,\r\n pharmacySystems: this.userInfo.pharmacySystems,\r\n isStaredEmployeesOnly: this.userInfo.isStaredEmployeesOnly,\r\n // favouriteEmployees: this.userInfo.favouriteEmployees\r\n });\r\n this.userForm.value.municipality = this.userInfo.countyMunicipalities && this.userInfo.countyMunicipalities[0]? this.userInfo.countyMunicipalities[0].municipalityId:null\r\n\r\n // this.userForm.value.favouriteEmployees = this.userInfo.favouriteEmployees\r\n // this.userService.getUserList('Employee').subscribe(\r\n // (res: IUserInfo[]) => {\r\n // this.usersList = res;\r\n // for (let [key, value] of Object.entries(this.usersList)) {\r\n // value['value'] = value.userId;\r\n // value['label'] = value.firstName + ' ' + value.lastName;\r\n // }\r\n // this.userForm.patchValue({\r\n // county: this.userInfo.countyMunicipalities? this.userInfo.countyMunicipalities[0].countyId:'',\r\n // municipality: this.userInfo.countyMunicipalities? this.userInfo.countyMunicipalities[0].municipalityId:'',\r\n // pharmacySystems: this.userInfo.pharmacySystems,\r\n // isStaredEmployeesOnly: this.userInfo.isStaredEmployeesOnly,\r\n // // favouriteEmployees: this.userInfo.favouriteEmployees\r\n // });\r\n \r\n // this.userForm.value.municipality = this.userInfo.countyMunicipalities? this.userInfo.countyMunicipalities[0].municipalityId:''\r\n // this.userForm.value.favouriteEmployees = this.userInfo.favouriteEmployees\r\n // },\r\n // (error: any) => this.errorMessage = error as any\r\n // );\r\n\r\n }\r\n }\r\n\r\n getPharmacySystems(){\r\n let str:string='';\r\n if (this.userInfo.pharmacySystems) {\r\n this.userInfo.pharmacySystems.forEach(element => {\r\n let obj = this.pharmacySystems.find((e)=>e.value==element)\r\n str = str+obj.label+', '\r\n });\r\n var newStr = str.slice(0, -2);\r\n return newStr\r\n } else {\r\n return '-'\r\n }\r\n \r\n }\r\n getUserType(id){\r\n var element = this.userTypes.find((e)=>e.id==id)\r\n return element? element.label:'-'\r\n }\r\n\r\n getCountyName(){\r\n var element = this.counties.find((e)=>e.value==this.userForm.value.county)\r\n return element? element.label:'-'\r\n }\r\n getMunicipalityName(){\r\n var element = this.municipalities.find((e)=>e.value==this.userForm.value.municipality)\r\n return element? element.label:'-'\r\n }\r\n getLeditimationName(){\r\n if (this.legitimations) {\r\n var element = this.legitimations.find((e)=>e.value==this.userForm.value.legitimationId)\r\n }\r\n return element? element.label:'-'\r\n }\r\n getExperience(){\r\n if (this.yearsOfExperiences) {\r\n var element = this.yearsOfExperiences.find((e)=>e.value==this.userForm.value.yearsOfExperience)\r\n }\r\n return element? element.label:'-'\r\n }\r\n getExperienceAreas(){\r\n if (this.userInfo.experienceAreas) { \r\n let str:string='';\r\n this.userInfo.experienceAreas.forEach(element => {\r\n let obj = this.experienceAreas.find((e)=>e.value==element)\r\n str = str+obj.label+', '\r\n });\r\n var newStr = str.slice(0, -2);\r\n return newStr\r\n }\r\n }\r\n getLanguageById(langId:number){\r\n if (this.languages) {\r\n var element = this.languages.find((e)=>e.value==langId)\r\n return element? element.label:'-'\r\n }\r\n }\r\n getSkillLevelById(skillLevelId:number){\r\n if (this.skillLevels) {\r\n var element = this.skillLevels.find((e)=>e.value==skillLevelId)\r\n }\r\n return element? element.label:'-'\r\n }\r\n getFavouriteEmployees(){\r\n let str:string='';\r\n let newStr:string='';\r\n if ( this.userInfo.favouriteEmployees) {\r\n this.userInfo.favouriteEmployees.forEach(element => {\r\n let obj = this.usersList.find((e)=>e.userId==element)\r\n if (obj) {\r\n str = str+obj.fullName+', '\r\n }\r\n });\r\n }\r\n newStr = str.slice(0, -2);\r\n return newStr||'-'\r\n }\r\n getMunicipalities(mArray){\r\n let str:string='';\r\n let newStr:string='';\r\n if ( mArray) {\r\n mArray.forEach(element => {\r\n str += element.name+', '\r\n });\r\n }\r\n newStr = str.slice(0, -2);\r\n return newStr||'-'\r\n }\r\n\r\n getCurrentConfigData(): void {\r\n this.userService.getConfigData().subscribe((res) => {\r\n // console.log(res);\r\n this.resourceTypes = res.resourceTypes\r\n \r\n })\r\n }\r\n\r\n}\r\n","module.exports = \".invalid-feedback-username {\\r\\n width: 100%;\\r\\n margin-top: .25rem;\\r\\n font-size: 80%;\\r\\n color: #dc3545;\\r\\n}\\r\\n\\r\\n.checked {\\r\\n color: orange;\\r\\n}\\r\\n\\r\\n.rating {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.column button.btn {\\r\\n min-width: 62px;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\ntd.delete-icon {\\r\\n vertical-align: middle;\\r\\n}\\r\\n\\r\\ntd.delete-icon span:hover {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.select2-container--default .select2-selection--single {\\r\\n background-color: #fff;\\r\\n border: 1px solid #ced4da;\\r\\n border-radius: 4px;\\r\\n}\\r\\n\\r\\n.form-control.ng-touched.ng-invalid{\\r\\n border: 1px solid #d42f2f !important;\\r\\n}\\r\\n\\r\\n.ddyesno .select2-container--below.select2-container--focus {\\r\\n width: 60px !important;\\r\\n}\\r\\n\\r\\n.ddyesno.started-emp .select2-selection.select2-selection--single {\\r\\n height: 32px !important;\\r\\n}\\r\\n\\r\\ninput#pharmacyId{\\r\\n height: 28px !important;\\r\\n}\\r\\n\\r\\n\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdXNlci91c2VyLWVkaXQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsY0FBYztFQUNkLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxhQUFhO0FBQ2Y7O0FBQ0E7RUFDRSxlQUFlO0FBQ2pCOztBQUVBO0VBQ0UsZUFBZTtFQUNmLGVBQWU7QUFDakI7O0FBRUE7RUFDRSxzQkFBc0I7QUFDeEI7O0FBRUE7RUFDRSxlQUFlO0FBQ2pCOztBQUVBO0VBQ0Usc0JBQXNCO0VBQ3RCLHlCQUF5QjtFQUN6QixrQkFBa0I7QUFDcEI7O0FBQ0E7RUFDRSxvQ0FBb0M7QUFDdEM7O0FBRUE7RUFDRSxzQkFBc0I7QUFDeEI7O0FBQ0E7RUFDRSx1QkFBdUI7QUFDekI7O0FBQ0E7RUFDRSx1QkFBdUI7QUFDekIiLCJmaWxlIjoic3JjL2FwcC91c2VyL3VzZXItZWRpdC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmludmFsaWQtZmVlZGJhY2stdXNlcm5hbWUge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1hcmdpbi10b3A6IC4yNXJlbTtcclxuICBmb250LXNpemU6IDgwJTtcclxuICBjb2xvcjogI2RjMzU0NTtcclxufVxyXG5cclxuLmNoZWNrZWQge1xyXG4gIGNvbG9yOiBvcmFuZ2U7XHJcbn1cclxuLnJhdGluZyB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uY29sdW1uIGJ1dHRvbi5idG4ge1xyXG4gIG1pbi13aWR0aDogNjJweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbnRkLmRlbGV0ZS1pY29uIHtcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG59XHJcblxyXG50ZC5kZWxldGUtaWNvbiBzcGFuOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbn1cclxuLmZvcm0tY29udHJvbC5uZy10b3VjaGVkLm5nLWludmFsaWR7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q0MmYyZiAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uZGR5ZXNubyAuc2VsZWN0Mi1jb250YWluZXItLWJlbG93LnNlbGVjdDItY29udGFpbmVyLS1mb2N1cyB7XHJcbiAgd2lkdGg6IDYwcHggIWltcG9ydGFudDtcclxufVxyXG4uZGR5ZXNuby5zdGFydGVkLWVtcCAuc2VsZWN0Mi1zZWxlY3Rpb24uc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7XHJcbiAgaGVpZ2h0OiAzMnB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuaW5wdXQjcGhhcm1hY3lJZHtcclxuICBoZWlnaHQ6IDI4cHggIWltcG9ydGFudDtcclxufVxyXG5cclxuXHJcbiJdfQ== */\"","import { Component, OnInit, ElementRef, ViewChildren, AfterViewInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, FormControlName, FormControl, AbstractControl, FormArray } from '@angular/forms';\r\nimport { GenericValidator } from '../shared/generic-validator';\r\nimport { Observable, merge, fromEvent, Subscription, timer } from 'rxjs';\r\nimport { debounceTime, switchMap, map } from 'rxjs/operators';\r\nimport { IUserInfo } from './user-info';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { UserService } from './user.service';\r\nimport { ImageCroppedEvent } from 'ngx-image-cropper';\r\nimport { ConfigService } from '../shared/services/config.service';\r\n\r\n@Component({\r\n selector: 'wfm-user-edit',\r\n templateUrl: './user-edit.component.html',\r\n styleUrls: ['./user-edit.component.css']\r\n})\r\nexport class UserEditComponent implements OnInit, AfterViewInit {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[];\r\n userForm: FormGroup;\r\n subClients: FormArray;\r\n resetPasswordForm: FormGroup;\r\n pageTitle: string;\r\n errorMessage: string;\r\n userTypes: any[];\r\n jobTypes: any[];\r\n subClientsArray: any[];\r\n isAllAdded: boolean = false;\r\n resourceTypes: any[];\r\n matchingAlgorithnmFields: any[];\r\n userInfo: IUserInfo = {} as IUserInfo;\r\n private sub: Subscription;\r\n previewUrl: any;\r\n userImage = '';\r\n fileData: File = null;\r\n updateUserId: string;\r\n isResetPassword = false;\r\n isEditCounty: boolean = false\r\n selectedCounty: any\r\n isSubmitInvalid: boolean = false\r\n cropperVisible: boolean\r\n holdMunicipalityChange: boolean = false\r\n isAllMunicipalitySelected: boolean = false\r\n\r\n displayMessage: { [key: string]: string } = {};\r\n displayResetPwdMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n imageChangedEvent: any = '';\r\n croppedImage: any = '';\r\n bookingUnitName: any = '';\r\n\r\n configDisableExperienceAreas: boolean;\r\n configDisableUpdatingEmpAvailability: boolean;\r\n configClientIsAbleToSelectTheEmployeesInBooking: boolean;\r\n configClientOverTimeRule: boolean;\r\n configClientLongBookingPeriod: number = 0;\r\n configClientEditBookingTime: boolean;\r\n configClientOverrideLongBookingDateRule: boolean;\r\n configEmployeeMonthlyMaxWorkingHours: number = 0;\r\n configEmployeeBookHimself: boolean;\r\n\r\n show0: boolean = true;\r\n show1: boolean;\r\n show2: boolean;\r\n show3: boolean;\r\n show4: boolean;\r\n show5: boolean;\r\n totalRating: number = 0;\r\n\r\n notificationModal: any;\r\n empHourlyRate: number;\r\n isActiveEmpHourlyRate: boolean;\r\n\r\n showAdminConfig1: boolean;\r\n showAdminConfig2: boolean;\r\n\r\n\r\n jsonCountyMunicipalities: any[] = [];\r\n countyMunicipalities: any[] = [];\r\n counties: any[] = [];\r\n municipalities: any[] = [{ value: null, label: '', disabled: true }, { value: null, label: '', disabled: true }];\r\n pharmacySystems: any[] = [];\r\n usersList: IUserInfo[] = [];\r\n\r\n // favouriteEmployees:any[]=[];\r\n legitimations: any[] = [];\r\n experienceAreas: any[] = [];\r\n skillLevels: any[] = [];\r\n languageObjArray: any[] = [];\r\n languages: any[] = [];\r\n yesNo: any[] = [\r\n { value: true, label: 'Ja ' },\r\n { value: false, label: 'Nej ' },\r\n ];\r\n yearsOfExperiences: any[] = [\r\n { value: 1, label: '1' },\r\n { value: 2, label: '2' },\r\n { value: 3, label: '3' },\r\n { value: 4, label: '4' },\r\n { value: 5, label: '5' },\r\n { value: 6, label: '6' },\r\n { value: 7, label: '7' },\r\n { value: 8, label: '8' },\r\n { value: 9, label: '9' },\r\n { value: 10, label: '10+' },\r\n ];\r\n matchingAlgorithnmFieldIsConsidered: any = \"\";\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private userService: UserService,\r\n private configService: ConfigService\r\n ) {\r\n this.userTypes = [\r\n { id: '1', name: 'Administrator', sename: 'Administratörer' },\r\n { id: '2', name: 'Employee', sename: 'Anställd' },\r\n { id: '3', name: 'Client', sename: 'Kund' },\r\n { id: '4', name: 'SuperClient', sename: 'Super Kund' }\r\n ];\r\n\r\n this.jobTypes = [\r\n { id: '1', name: 'Heltid' },\r\n { id: '2', name: 'Deltid' }\r\n ];\r\n\r\n this.resourceTypes = [];\r\n\r\n this.subClientsArray = [];\r\n\r\n // Defines all of the validation messages for the form.\r\n // These could instead be retrieved from a file or database.\r\n this.validationMessages = {\r\n userTypeId: {\r\n required: 'anställningsform krävs'\r\n },\r\n firstName: {\r\n required: 'förnamn krävs',\r\n minlength: 'måste ha minst 2 tecken',\r\n maxlength: 'max 50 tecken'\r\n },\r\n lastName: {\r\n required: 'efternamn krävs',\r\n minlength: 'måste ha minst 2 tecken',\r\n maxlength: 'max 50 tecken'\r\n },\r\n address: {\r\n required: 'adress krävs',\r\n maxlength: 'max 100 tecken'\r\n },\r\n city: {\r\n required: 'stad krävs',\r\n maxlength: 'max 50 tecken'\r\n },\r\n zip: {\r\n required: 'postnummer krävs',\r\n maxlength: 'max 10 tecken'\r\n },\r\n email: {\r\n required: 'e-post krävs',\r\n email: 'e-posten ogiltig',\r\n maxlength: 'max 256 tecken'\r\n },\r\n phoneNumber: {\r\n required: 'telefonnummer krävs',\r\n maxlength: 'max 50 tecken'\r\n },\r\n jobCategoryId: {\r\n required: 'anställningsform krävs'\r\n },\r\n clientName: {\r\n required: 'apoteketsnamn krävs',\r\n maxlength: 'max 100 tecken'\r\n },\r\n pharmacyId: {\r\n required: 'apotek-ID krävs',\r\n maxlength: 'max 100 tecken'\r\n },\r\n userName: {\r\n required: 'användarnamn krävs',\r\n minlength: 'användarnamn måste ha minst 3 tecken'\r\n },\r\n password: {\r\n required: 'lösenord krävs',\r\n minlength: 'lösenord måste ha minst 6 tecken'\r\n },\r\n conpassword: {\r\n required: 'lösenord krävs',\r\n invalid: 'lösenord matchar inte'\r\n },\r\n resetpassword: {\r\n required: 'lösenord krävs',\r\n minlength: 'lösenord måste ha minst 6 tecken'\r\n },\r\n resetconpassword: {\r\n required: 'lösenord krävs',\r\n match: 'vlösenord matchar inte'\r\n }\r\n };\r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n }\r\n\r\n setCustomVallidations() {\r\n const jobCategoryControl = this.userForm.get('jobCategoryId');\r\n const resourceTypeControl = this.userForm.get('resourceTypeId');\r\n const clientNameControl = this.userForm.get('clientName');\r\n const pharmacyIdControl = this.userForm.get('pharmacyId');\r\n const usernameControl = this.userForm.get('userName');\r\n const passwordControl = this.userForm.get('passwords.password');\r\n const conpasswordControl = this.userForm.get('passwords.conpassword');\r\n const municipalityControl = this.userForm.get('municipality');\r\n const pharmacySystemsControl = this.userForm.get('pharmacySystems');\r\n const countyControl = this.userForm.get('county');\r\n //const subClientsFormArray = this.userForm.get('subClients') as FormArray;\r\n usernameControl.setValidators([Validators.required, Validators.minLength(3), Validators.maxLength(20)]);\r\n\r\n if (this.updateUserId == \"0\") {\r\n\r\n passwordControl.setValidators([Validators.required, Validators.minLength(6), Validators.maxLength(50)]);\r\n conpasswordControl.setValidators([Validators.required]);\r\n //usernameControl.setAsyncValidators([this.functionloginAsyncValidator(this.userService)]);\r\n usernameControl.setAsyncValidators(this.functionloginAsyncValidator(this.userService));\r\n }\r\n else {\r\n usernameControl.setAsyncValidators(this.functionloginEditAsyncValidator(this.userService));\r\n }\r\n\r\n this.userForm.get('userTypeId').valueChanges\r\n .subscribe(userType => {\r\n if (userType === '1') {\r\n jobCategoryControl.clearValidators();\r\n resourceTypeControl.clearValidators();\r\n clientNameControl.clearValidators();\r\n municipalityControl.clearValidators();\r\n pharmacySystemsControl.clearValidators();\r\n countyControl.clearValidators();\r\n pharmacyIdControl.clearValidators();\r\n //subClientsFormArray.clearValidators();\r\n this.municipalities.shift();\r\n this.counties.forEach(element => {\r\n element.disabled = false\r\n });\r\n } else if (userType === '2') {\r\n jobCategoryControl.setValidators([Validators.required]);\r\n resourceTypeControl.setValidators([Validators.required]);\r\n clientNameControl.clearValidators();\r\n municipalityControl.clearValidators();\r\n pharmacySystemsControl.clearValidators();\r\n countyControl.clearValidators();\r\n pharmacyIdControl.clearValidators();\r\n //subClientsFormArray.clearValidators();\r\n this.municipalities.unshift({ value: 0, code: \"0000\", label: \"Alla Kommuner\" })\r\n this.counties.forEach(element => {\r\n element.disabled = false\r\n });\r\n } else if (userType === '3') {\r\n clientNameControl.setValidators([Validators.required, Validators.maxLength(100)]);\r\n pharmacyIdControl.setValidators([Validators.required, Validators.maxLength(100)]);\r\n jobCategoryControl.clearValidators();\r\n municipalityControl.setValidators([Validators.required]);\r\n //pharmacySystemsControl.setValidators([Validators.required]); \r\n // Clear validations for Enhet type\r\n pharmacySystemsControl.clearValidators();\r\n countyControl.setValidators([Validators.required]);\r\n resourceTypeControl.clearValidators();\r\n //subClientsFormArray.clearValidators();\r\n this.municipalities.shift()\r\n this.counties.forEach(element => {\r\n element.disabled = false\r\n });\r\n } else if (userType === '4') {\r\n this.getAllSubClients();\r\n // if (subClientsFormArray.controls.length === 0) { }\r\n this.counties.forEach(element => {\r\n element.disabled = false\r\n });\r\n clientNameControl.setValidators([Validators.required, Validators.maxLength(100)]);\r\n pharmacyIdControl.clearValidators();\r\n jobCategoryControl.clearValidators();\r\n resourceTypeControl.clearValidators();\r\n municipalityControl.clearValidators();\r\n pharmacySystemsControl.clearValidators();\r\n countyControl.clearValidators();\r\n this.municipalities.shift()\r\n }\r\n jobCategoryControl.updateValueAndValidity();\r\n resourceTypeControl.updateValueAndValidity();\r\n clientNameControl.updateValueAndValidity();\r\n pharmacyIdControl.updateValueAndValidity();\r\n pharmacySystemsControl.updateValueAndValidity();\r\n countyControl.updateValueAndValidity();\r\n municipalityControl.updateValueAndValidity();\r\n });\r\n }\r\n validateAllFormFields(formGroup: FormGroup) {\r\n Object.keys(formGroup.controls).forEach(field => {\r\n const control = formGroup.get(field);\r\n if (control instanceof FormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else if (control instanceof FormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n ngOnInit() {\r\n\r\n this.subClients = this.fb.array([]);\r\n\r\n this.userForm = this.fb.group({\r\n adminConfig1: false,\r\n adminConfig2: false,\r\n adminConfig3: false,\r\n adminConfig4: false,\r\n adminConfig5: '',\r\n adminConfig6: false,\r\n configEmployeeBookHimself:false,\r\n empHourlyRate: 0,\r\n empMaxWorkingHrs: 0,\r\n isActiveEmpHourlyRate: false,\r\n userId: [''],\r\n userTypeId: ['', Validators.required],\r\n jobCategoryId: [],\r\n resourceTypeId: [],\r\n firstName: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]],\r\n lastName: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]],\r\n clientName: [''],\r\n pharmacyId: [],\r\n address: ['', [Validators.required, Validators.maxLength(100)]],\r\n city: ['', [Validators.required, Validators.maxLength(20)]],\r\n zip: ['', [Validators.required, Validators.maxLength(10)]],\r\n email: ['', [Validators.required, Validators.email, Validators.maxLength(256)]],\r\n phoneNumber: ['', [Validators.required, Validators.maxLength(50)]],\r\n userName: ['', null],\r\n passwords: this.fb.group({\r\n password: [''],\r\n conpassword: [''],\r\n }, { validator: passwordCompare }),\r\n password: [],\r\n conpassword: [],\r\n isActive: [true],\r\n subClients: this.subClients,\r\n county: [[], [Validators.required]],\r\n municipality: ['', [Validators.required]],\r\n pharmacySystems: [[], [Validators.required]],\r\n employeeNo: [''],\r\n isStaredEmployeesOnly: [null],\r\n countyMunicipalities: [[]],\r\n legitimationId: [],\r\n experienceAreas: [],\r\n yearsOfExperience: [],\r\n isStdProceduresRead: [null],\r\n aboutMe: [''],\r\n cmJson: '',\r\n favouriteEmployees: [[]],\r\n languages: [],\r\n skillLevel: []\r\n });\r\n\r\n this.resetPasswordForm = this.fb.group({\r\n resetpassword: ['', Validators.required],\r\n resetconpassword: ['', Validators.required]\r\n }, { validator: resetPasswordCompare });\r\n\r\n\r\n\r\n this.userService.getInnitialMasterData().subscribe((data) => {\r\n\r\n this.pharmacySystems = data.pharmacySystems\r\n this.counties = data.counties\r\n this.experienceAreas = data.experienceAreas\r\n this.legitimations = data.legitimations\r\n this.skillLevels = data.skillLevels\r\n this.languages = data.languages\r\n\r\n for (let [key, value] of Object.entries(this.pharmacySystems)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.counties)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.experienceAreas)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.legitimations)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.skillLevels)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.languages)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n\r\n })\r\n\r\n\r\n this.userService.getUserList('Employee').subscribe(\r\n (res: IUserInfo[]) => {\r\n this.usersList = res;\r\n for (let [key, value] of Object.entries(this.usersList)) {\r\n value['value'] = value.userId;\r\n value['label'] = value.firstName + ' ' + value.lastName;\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n // Read the product Id from the route parameter\r\n this.sub = this.route.paramMap.subscribe(\r\n params => {\r\n const id = params.get('id');\r\n\r\n this.updateUserId = id;\r\n this.getUser(id);\r\n }\r\n );\r\n\r\n this.setCustomVallidations();\r\n this.getCurrentConfigData();\r\n\r\n this.getBookingUnit();\r\n this.getUserWiseAdminConfigurationDetails(this.updateUserId);\r\n this.getEmployeeHourlyRateDetails(this.updateUserId);\r\n }\r\n\r\n getUserWiseAdminConfigurationDetails(userId: string): void {\r\n this.configService.getUserWiseAdminCOnfigurations(userId).subscribe(data => {\r\n if (data.length) {\r\n\r\n if (data.find(a => a.title === 'configClientIsAbleToSelectTheEmployeesInBooking')) {\r\n this.configClientIsAbleToSelectTheEmployeesInBooking = data.find(a => a.title === 'configClientIsAbleToSelectTheEmployeesInBooking').isActive;\r\n }\r\n if (data.find(a => a.title === 'configDisableUpdatingEmpAvailability')) {\r\n this.configDisableUpdatingEmpAvailability = data.find(a => a.title === 'configDisableUpdatingEmpAvailability').isActive;\r\n }\r\n if (data.find(a => a.title === 'configClientOverTimeRule')) {\r\n this.configClientOverTimeRule = data.find(a => a.title === 'configClientOverTimeRule').isActive;\r\n }\r\n if (data.find(a => a.title === 'configClientLongBookingPeriod')) {\r\n this.configClientLongBookingPeriod = data.find(a => a.title === 'configClientLongBookingPeriod').additionalValue1;\r\n }\r\n if (data.find(a => a.title === 'configClientEditBookingTime')) {\r\n this.configClientEditBookingTime = data.find(a => a.title === 'configClientEditBookingTime').isActive;\r\n }\r\n if (data.find(a => a.title === 'configClientOverrideLongBookingDateRule')) {\r\n this.configClientOverrideLongBookingDateRule = data.find(a => a.title === 'configClientOverrideLongBookingDateRule').isActive;\r\n }\r\n if (data.find(a => a.title === 'configEmployeeMonthlyMaxWorkingHours')) {\r\n this.configEmployeeMonthlyMaxWorkingHours = data.find(a => a.title === 'configEmployeeMonthlyMaxWorkingHours').additionalValue1;\r\n }\r\n\r\n if (data.find(a => a.title === 'configEmployeeBookHimself')) {\r\n this.configEmployeeBookHimself = data.find(a => a.title === 'configEmployeeBookHimself').isActive;\r\n }\r\n\r\n if (data.find(a => a.title === 'userRating')) {\r\n const rating = data.find(a => a.title === 'userRating').additionalValue1;\r\n this.onclickStar(rating, false);\r\n }\r\n\r\n this.userForm.patchValue({\r\n adminConfig1: this.configDisableUpdatingEmpAvailability,\r\n adminConfig2: this.configClientIsAbleToSelectTheEmployeesInBooking,\r\n adminConfig3: this.configClientOverTimeRule,\r\n adminConfig5: this.configClientLongBookingPeriod,\r\n adminConfig4: this.configClientEditBookingTime,\r\n adminConfig6: this.configClientOverrideLongBookingDateRule,\r\n empMaxWorkingHrs: this.configEmployeeMonthlyMaxWorkingHours,\r\n configEmployeeBookHimself: this.configEmployeeBookHimself\r\n });\r\n }\r\n })\r\n }\r\n\r\n getEmployeeHourlyRateDetails(userId: string): void {\r\n this.userService.getEmployeeHourlyRateDetails(userId).subscribe(data => {\r\n if (data) {\r\n this.empHourlyRate = data.hourlyRate;\r\n this.isActiveEmpHourlyRate = data.isActive;\r\n }\r\n })\r\n }\r\n\r\n updateEmployeeHourlyRateDetails(userId: string): void {\r\n let empHourlyRate = this.userForm.get('empHourlyRate').value;\r\n let isActiveEmpHourlyRate = this.userForm.get('isActiveEmpHourlyRate').value;\r\n\r\n if (!empHourlyRate) {\r\n empHourlyRate = 0;\r\n }\r\n if (userId == null) {\r\n userId = this.userForm.get('userId').value\r\n }\r\n const request = {\r\n EmployeeId: userId,\r\n HourlyRate: empHourlyRate,\r\n IsActive: isActiveEmpHourlyRate\r\n }\r\n this.userService.updateEmployeeHourlyRateDetails(request).subscribe(data => {\r\n this.setNotificationData('update', true);\r\n })\r\n }\r\n\r\n\r\n\r\n onclickStar(no: any, checked: boolean) {\r\n\r\n if (!checked) {\r\n this.totalRating = no;\r\n this.show0 = false;\r\n this.show1 = false;\r\n this.show2 = false;\r\n this.show3 = false;\r\n this.show4 = false;\r\n this.show5 = false;\r\n\r\n if (no == 0) {\r\n this.show0 = true;\r\n }\r\n else if (no == 1) {\r\n this.show1 = true;\r\n } else if (no == 2) {\r\n this.show2 = true;\r\n }\r\n else if (no == 3) {\r\n this.show3 = true;\r\n }\r\n else if (no == 4) {\r\n this.show4 = true;\r\n }\r\n else if (no == 5) {\r\n this.show5 = true;\r\n }\r\n } else {\r\n // no = no - 1;\r\n this.totalRating = no;\r\n this.show0 = false;\r\n this.show1 = false;\r\n this.show2 = false;\r\n this.show3 = false;\r\n this.show4 = false;\r\n this.show5 = false;\r\n\r\n if (no == 1) {\r\n this.totalRating = 0;\r\n this.show0 = true;\r\n } else if (no == 2) {\r\n this.show2 = true;\r\n }\r\n else if (no == 3) {\r\n this.show3 = true;\r\n } else if (no == 4) {\r\n this.show4 = true;\r\n }\r\n else if (no == 5) {\r\n this.show5 = true;\r\n }\r\n }\r\n }\r\n\r\n saveAdminConfigurationDetails(userId: string): void {\r\n\r\n this.configDisableUpdatingEmpAvailability = this.userForm.get('adminConfig1').value;\r\n this.configClientIsAbleToSelectTheEmployeesInBooking = this.userForm.get('adminConfig2').value;\r\n this.configClientOverTimeRule = this.userForm.get('adminConfig3').value;\r\n this.configClientLongBookingPeriod = this.userForm.get('adminConfig5').value;\r\n this.configClientEditBookingTime = this.userForm.get('adminConfig4').value;\r\n this.configClientOverrideLongBookingDateRule = this.userForm.get('adminConfig6').value;\r\n this.configEmployeeMonthlyMaxWorkingHours = this.userForm.get('empMaxWorkingHrs').value;\r\n this.configEmployeeBookHimself = this.userForm.get('configEmployeeBookHimself').value;\r\n\r\n\r\n if (userId == null) {\r\n userId = this.userForm.get('userId').value\r\n }\r\n\r\n let request: any[] = [];\r\n\r\n if (this.userInfo.userTypeId != \"2\") {\r\n\r\n request.push(\r\n {\r\n userId: userId, configurationType: 1, title: 'configClientIsAbleToSelectTheEmployeesInBooking', AdditionalValue1: 0, isActive: this.configClientIsAbleToSelectTheEmployeesInBooking\r\n },\r\n {\r\n userId: userId, configurationType: 5, title: 'configClientEditBookingTime', AdditionalValue1: 0, isActive: this.configClientEditBookingTime\r\n },\r\n {\r\n userId: userId, configurationType: 4, title: 'configClientLongBookingPeriod', AdditionalValue1: this.configClientLongBookingPeriod, isActive: true\r\n },\r\n {\r\n userId: userId, configurationType: 3, title: 'configClientOverrideLongBookingDateRule', AdditionalValue1: 0, isActive: this.configClientOverrideLongBookingDateRule\r\n },\r\n {\r\n userId: userId, configurationType: 3, title: 'configClientOverTimeRule', AdditionalValue1: 0, isActive: this.configClientOverTimeRule\r\n }\r\n )\r\n }\r\n\r\n\r\n if (this.userInfo.userTypeId == \"2\") {\r\n request.push(\r\n {\r\n userId: userId, configurationType: 1, title: 'configEmployeeMonthlyMaxWorkingHours', AdditionalValue1: this.configEmployeeMonthlyMaxWorkingHours, isActive: 0\r\n }\r\n ,\r\n {\r\n userId: userId, configurationType: 2, title: 'configDisableUpdatingEmpAvailability', AdditionalValue1: 0, isActive: this.configDisableUpdatingEmpAvailability\r\n },\r\n {\r\n userId: userId, configurationType: 6, title: 'userRating', AdditionalValue1: this.totalRating, isActive: true\r\n },\r\n {\r\n userId: userId, configurationType: 7, title: 'configEmployeeBookHimself', AdditionalValue1: 0, isActive: this.configEmployeeBookHimself\r\n }\r\n )\r\n\r\n }\r\n\r\n\r\n this.configService.updateuserwiseadminconfiguration(request).subscribe(data => {\r\n this.setNotificationData('update', true);\r\n\r\n })\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'update') {\r\n if (!this.notificationModal) {\r\n this.notificationModal = {}\r\n }\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Uppdatering av konfiguration har lyckats!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av konfiguration misslyckades! Vänligen försök igen.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#configNotificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#configNotificationModal') as any).modal('hide');\r\n }, 1000);\r\n }\r\n\r\n functionloginAsyncValidator(authService: UserService, time: number = 500) {\r\n\r\n return (input: FormControl) => {\r\n return timer(time).pipe(\r\n switchMap(() => authService.checkUsername(input.value, this.updateUserId)),\r\n map(res => {\r\n return res ? { loginExist: true } : null;\r\n })\r\n );\r\n };\r\n }\r\n\r\n functionloginEditAsyncValidator(authService: UserService, time: number = 500) {\r\n return (input: FormControl) => {\r\n return timer(time).pipe(\r\n switchMap(() => authService.checkUsername(input.value, this.updateUserId)),\r\n map(res => {\r\n return res ? { loginExist: true } : null;\r\n })\r\n );\r\n };\r\n }\r\n\r\n createSubClientFormGroup(id: string, value: string, isActive: boolean): FormGroup {\r\n return this.fb.group({\r\n id: [id],\r\n clientName: [value],\r\n isActive: [isActive]\r\n });\r\n }\r\n\r\n addSubClient(selectElement: any) {\r\n selectElement = $(selectElement);\r\n let text = selectElement[0].option.clientName;\r\n let value = selectElement[0].option.value;\r\n\r\n if (value !== undefined) {\r\n if (this.userInfo.userId !== '0') {\r\n this.subClients.controls.forEach((el, i) => {\r\n if (el.value.id == value) {\r\n this.subClients.removeAt(i);\r\n }\r\n });\r\n }\r\n this.subClients.push(this.createSubClientFormGroup(value, text, true));\r\n this.userForm.get('subClients').markAsDirty();\r\n $(\"option[value='\" + value + \"']\").remove();\r\n if (selectElement.has('option').length != 1) {\r\n // this.isAllAdded = true;\r\n }\r\n } else {\r\n this.isAllAdded = false;\r\n this.errorMessage = 'Please select an option from the list';\r\n }\r\n }\r\n\r\n removeSubClient(rowIndex: number, selectElement: any) {\r\n selectElement = $(selectElement);\r\n let deletedOption = this.subClients.controls[rowIndex].value;\r\n // selectElement.append('');\r\n\r\n if (this.userInfo.userId === '0') {\r\n this.subClients.removeAt(rowIndex);\r\n } else {\r\n this.subClients.controls[rowIndex].value.isActive = false;\r\n $('#superclient_' + rowIndex).css('display', 'none');\r\n }\r\n this.userForm.get('subClients').markAsDirty();\r\n this.isAllAdded = false;\r\n }\r\n\r\n getAllSubClients() {\r\n this.userService.getNotAllocatedSubClients()\r\n .subscribe(\r\n (subClients: any) => {\r\n if (this.userInfo.userId === '0') {\r\n this.subClientsArray = subClients;\r\n\r\n } else {\r\n let inactiveSubClients = [];\r\n subClients.forEach(element => {\r\n if (element.isActive === false) {\r\n inactiveSubClients.push(element);\r\n }\r\n });\r\n this.subClientsArray = inactiveSubClients;\r\n }\r\n this.subClientsArray.forEach(item => {\r\n item.label = item.clientName;\r\n item.value = item.id;\r\n });\r\n\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n isUserExists(): boolean {\r\n return this.userForm.get('userName').hasError('loginExist');\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n getUser(id: string): void {\r\n this.userService.getById(id)\r\n .subscribe(\r\n (user: IUserInfo) => {\r\n if (user.countyMunicipalities && user.countyMunicipalities.length > 0) {\r\n this.userService.getMunicipalitiesByCountyId(user.countyMunicipalities[0].countyId).subscribe((data: []) => {\r\n this.municipalities = data\r\n this.municipalities.unshift({ value: 0, code: \"0000\", label: \"Alla Kommuner\" })\r\n for (let [key, value] of Object.entries(this.municipalities)) {\r\n value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n this.displayUser(user)\r\n });\r\n } else {\r\n this.displayUser(user)\r\n }\r\n\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n displayUser(user: IUserInfo): void {\r\n if (this.userForm) {\r\n this.userForm.reset();\r\n }\r\n this.userInfo = user;\r\n\r\n if (this.userInfo.userId === '0') {\r\n this.pageTitle = 'Ange Användarinformation';\r\n } else {\r\n this.userImage = this.userInfo.imagePath;\r\n this.pageTitle = `Redigera Användarinformation: ${this.userInfo.firstName}`;\r\n const userTypeControl = this.userForm.get('userTypeId');\r\n userTypeControl.disable();\r\n }\r\n if (this.userInfo.cmJson) {\r\n this.jsonCountyMunicipalities = JSON.parse(this.userInfo.cmJson);\r\n }\r\n\r\n // Update the data on the form\r\n this.userForm.patchValue({\r\n userId: this.userInfo.userId,\r\n empHourlyRate: this.empHourlyRate,\r\n empMaxWorkingHrs: this.configEmployeeMonthlyMaxWorkingHours,\r\n isActiveEmpHourlyRate: this.isActiveEmpHourlyRate,\r\n adminConfig1: this.configDisableUpdatingEmpAvailability,\r\n adminConfig2: this.configClientIsAbleToSelectTheEmployeesInBooking,\r\n adminConfig3: this.configClientOverTimeRule,\r\n adminConfig4: this.configClientEditBookingTime,\r\n adminConfig5: this.configClientLongBookingPeriod,\r\n adminConfig6: this.configClientOverrideLongBookingDateRule,\r\n userTypeId: this.userInfo.userTypeId,\r\n jobCategoryId: this.userInfo.jobCategoryId ? this.userInfo.jobCategoryId.toString() : null,\r\n resourceTypeId: this.userInfo.resourceTypeId ? this.userInfo.resourceTypeId : null,\r\n firstName: this.userInfo.firstName,\r\n lastName: this.userInfo.lastName,\r\n clientName: this.userInfo.clientName,\r\n pharmacyId: this.userInfo.pharmacyId,\r\n address: this.userInfo.address,\r\n city: this.userInfo.city,\r\n zip: this.userInfo.zip,\r\n email: this.userInfo.email,\r\n phoneNumber: this.userInfo.phoneNumber,\r\n isActive: this.userInfo.isActive.toString(),\r\n userName: this.userInfo.userName\r\n });\r\n\r\n if (this.userInfo.userTypeId === '4') {\r\n let subClients = this.userForm.controls['subClients'] as FormArray;\r\n this.userInfo.subClients.forEach((el: any) => {\r\n subClients.push(this.createSubClientFormGroup(el.id, el.clientName, el.isActive));\r\n })\r\n // this.userForm.patchValue({\r\n // pharmacySystems: this.userInfo.pharmacySystems? this.userInfo.pharmacySystems[0]:'',\r\n // });\r\n }\r\n\r\n if (this.userInfo.userTypeId == '2') {\r\n this.userForm.patchValue({\r\n county: null,\r\n municipality: this.userInfo.municipality,\r\n pharmacySystems: this.userInfo.pharmacySystems,\r\n legitimationId: this.userInfo.legitimationId,\r\n experienceAreas: this.userInfo.experienceAreas,\r\n yearsOfExperience: this.userInfo.yearsOfExperience,\r\n isStdProceduresRead: this.userInfo.isStdProceduresRead,\r\n aboutMe: this.userInfo.aboutMe,\r\n employeeNo: this.userInfo.employeeNo\r\n });\r\n\r\n this.languageObjArray = this.userInfo.languages ? this.userInfo.languages : [];\r\n this.countyMunicipalities = this.userInfo.countyMunicipalities ? this.userInfo.countyMunicipalities : [];\r\n\r\n if (this.userInfo.countyMunicipalities) {\r\n this.countyMunicipalities.forEach(obj => {\r\n this.counties.forEach(element => {\r\n if (element.value == obj.countyId) {\r\n element.disabled = true\r\n }\r\n });\r\n\r\n console.log(\"x1-\",this.counties);\r\n });\r\n }\r\n }\r\n\r\n if (this.userInfo.userTypeId == '3') {\r\n\r\n this.userForm.patchValue({\r\n county: this.userInfo.countyMunicipalities ? this.userInfo.countyMunicipalities[0].countyId : '',\r\n municipality: this.userInfo.countyMunicipalities ? this.userInfo.countyMunicipalities[0].municipalityId : '',\r\n pharmacySystems: this.userInfo.pharmacySystems ? this.userInfo.pharmacySystems[0] : '',\r\n isStaredEmployeesOnly: this.userInfo.isStaredEmployeesOnly,\r\n favouriteEmployees: this.userInfo.favouriteEmployees\r\n });\r\n\r\n this.userForm.value.municipality = this.userInfo.countyMunicipalities ? this.userInfo.countyMunicipalities[0].municipalityId : ''\r\n this.userForm.value.favouriteEmployees = this.userInfo.favouriteEmployees\r\n\r\n }\r\n }\r\n\r\n\r\n saveUser() {\r\n if (this.userForm.valid) {\r\n if (this.userForm.dirty) {\r\n if (this.userInfo.userTypeId == '2' || this.userForm.get('userTypeId').value == '2') {\r\n\r\n this.userForm.patchValue({\r\n countyMunicipalities: this.countyMunicipalities,\r\n cmJson: JSON.stringify(this.jsonCountyMunicipalities),\r\n })\r\n this.userForm.value.languages = this.languageObjArray ? this.languageObjArray : []\r\n this.userForm.value.experienceAreas = this.userForm.value.experienceAreas ? this.userForm.value.experienceAreas : []\r\n this.userForm.value.pharmacySystems = this.userForm.value.pharmacySystems ? this.userForm.value.pharmacySystems : []\r\n\r\n\r\n } else if (this.userInfo.userTypeId == '3' || this.userForm.get('userTypeId').value == '3') {\r\n if (this.userForm.value.county && this.userForm.value.municipality) {\r\n this.userForm.patchValue({\r\n countyMunicipalities: [{ countyId: this.userForm.value.county, municipalityId: this.userForm.value.municipality }],\r\n // pharmacySystems: [this.userForm.value.pharmacySystems]\r\n })\r\n } else {\r\n this.userForm.patchValue({\r\n countyMunicipalities: []\r\n })\r\n }\r\n\r\n this.userForm.value.favouriteEmployees = this.userForm.value.favouriteEmployees ? this.userForm.value.favouriteEmployees : []\r\n this.userForm.value.pharmacySystems = this.userForm.value.pharmacySystems ? [this.userForm.value.pharmacySystems] : []\r\n\r\n }\r\n // else if (this.userInfo.userTypeId == '4' || this.userForm.get('userTypeId').value =='4') {\r\n // this.userForm.value.pharmacySystems =this.userForm.value.pharmacySystems? [this.userForm.value.pharmacySystems]:[]\r\n // }\r\n\r\n const u = { ...this.userInfo, ...this.userForm.value };\r\n if (u.userId === '0') {\r\n u.password = this.userForm.get('passwords.password').value;\r\n u.isActive = true;\r\n u.userType = this.userTypes.filter((element, index, array) => {\r\n return element.id === u.userTypeId;\r\n })[0].name;\r\n\r\n this.userService.createUser(u)\r\n .subscribe(\r\n (userId) => {\r\n this.onSaveComplete('add', true, userId);\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n } else {\r\n u.image = this.userInfo.image;\r\n this.userService.updateUser(u)\r\n .subscribe(\r\n () => this.onSaveComplete('update', true, u.userId),\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n } else {\r\n this.onSaveComplete('update', true, this.userForm.get('userId').value);\r\n }\r\n } else {\r\n this.validateAllFormFields(this.userForm)\r\n this.validateAllFormFields(this.resetPasswordForm)\r\n this.errorMessage = 'Please correct the validation errors.';\r\n this.isSubmitInvalid = true\r\n }\r\n }\r\n\r\n onSaveComplete(flow: string, status: boolean, userId: string): void {\r\n this.saveAdminConfigurationDetails(userId);\r\n this.updateEmployeeHourlyRateDetails(userId);\r\n if (this.fileData && userId != null) {\r\n const formData = new FormData();\r\n formData.append('file', this.fileData);\r\n formData.append('userId', userId);\r\n\r\n this.userService.uploadUserImage(formData)\r\n .subscribe(\r\n (st: boolean) => {\r\n this.userForm.reset();\r\n this.router.navigate(['/users'], { state: { flow, status } });\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n } else {\r\n this.userForm.reset();\r\n this.router.navigate(['/users'], { state: { flow, status } });\r\n }\r\n }\r\n\r\n uploadImageClick(): void {\r\n $(\"#fileUploadBtn\").click();\r\n }\r\n\r\n // Cropper Functions\r\n fileChangeEvent(event: any): void {\r\n this.imageChangedEvent = event;\r\n this.cropperVisible = true\r\n $('#upload-demo').css('display', 'block')\r\n }\r\n imageCropped(event: ImageCroppedEvent) {\r\n // For Preview\r\n this.croppedImage = event.base64;\r\n // prepare for upload\r\n const fileBeforeCrop = this.imageChangedEvent.target.files[0];\r\n var strImage = this.croppedImage.replace(/^data:image\\/[a-z]+;base64,/, \"\");\r\n const imageBlob = this.dataURItoBlob(strImage);\r\n this.fileData = new File([imageBlob], fileBeforeCrop.name, { type: fileBeforeCrop.type }) as File\r\n }\r\n imageLoaded() {\r\n // show cropper\r\n }\r\n cropperReady() {\r\n // cropper ready\r\n }\r\n loadImageFailed() {\r\n // show message\r\n }\r\n\r\n dataURItoBlob(dataURI) {\r\n const byteString = window.atob(dataURI);\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([int8Array], { type: 'image/png' });\r\n return blob;\r\n }\r\n\r\n removeImage(): void {\r\n if (this.fileData) {\r\n this.fileData = null;\r\n this.previewUrl = null;\r\n this.croppedImage = ''\r\n }\r\n if (this.userImage) {\r\n this.userImage = '';\r\n this.userInfo.image = null;\r\n this.userInfo.imagePath = null;\r\n }\r\n this.cropperVisible = false\r\n $('#upload-demo').css('display', 'none')\r\n }\r\n cancelCrop() {\r\n this.fileData = null\r\n this.cropperVisible = false\r\n $('#upload-demo').css('display', 'none')\r\n }\r\n\r\n toggleCropper() {\r\n this.cropperVisible = !this.cropperVisible\r\n if (this.cropperVisible) {\r\n $('#upload-demo').css('display', 'block')\r\n } else {\r\n $('#upload-demo').css('display', 'none')\r\n }\r\n }\r\n\r\n showResetPasswordForm(): void {\r\n this.isResetPassword = !this.isResetPassword;\r\n }\r\n\r\n resetPassword(): void {\r\n const formData = new FormData();\r\n formData.append('userId', this.updateUserId);\r\n formData.append('pwd', this.resetPasswordForm.get('resetpassword').value);\r\n this.userService.resetPassword(formData)\r\n .subscribe(\r\n (st: boolean) => {\r\n this.resetPasswordForm.reset();\r\n this.router.navigate(['/users'], { state: { flow: 'update', status: st } });\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n\r\n onCountyChange(): void {\r\n if (this.userForm.value.county > 0) {\r\n this.userForm.patchValue({\r\n municipality: []\r\n })\r\n this.userService.getMunicipalitiesByCountyId(this.userForm.value.county).subscribe((data: []) => {\r\n this.municipalities = data\r\n if (this.userForm.get('userTypeId').value == '2') {\r\n this.municipalities.unshift({ id: 0, code: \"0000\", name: \"Alla Kommuner\" })\r\n }\r\n for (let [key, value] of Object.entries(this.municipalities)) {\r\n value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n )\r\n }\r\n }\r\n\r\n handleMunicipalityChange() {\r\n if (!this.holdMunicipalityChange) {\r\n this.onMunicipalityChange()\r\n }\r\n }\r\n\r\n onMunicipalityChange() {\r\n let allMunicipalities = null\r\n if (this.isAllMunicipalitySelected && this.userForm.get('municipality').value.length > 1) {\r\n this.userForm.get('municipality').value.shift()\r\n this.isAllMunicipalitySelected = false\r\n }\r\n\r\n allMunicipalities = this.userForm.value.municipality.find((element) => { return element == '0' })\r\n\r\n if ((allMunicipalities == '0') && (this.userForm.get('municipality').value.length > 1)) {\r\n this.holdMunicipalityChange = true\r\n this.userForm.patchValue({\r\n municipality: [0]\r\n })\r\n this.holdMunicipalityChange = false\r\n this.isAllMunicipalitySelected = true\r\n }\r\n }\r\n\r\n onAddCountyMunicipals(): void {\r\n if (this.isEditCounty) {\r\n var county = this.selectedCounty.value\r\n } else {\r\n var county = this.userForm.value.county\r\n }\r\n\r\n this.counties.forEach(element => {\r\n if (element.value == county) {\r\n element.disabled = true\r\n }\r\n });\r\n\r\n var mArray = []\r\n if (this.countyMunicipalities && this.countyMunicipalities.length > 0) {\r\n var existingCounty = this.countyMunicipalities.find(e => e.countyId == county)\r\n }\r\n if (existingCounty) {\r\n this.onRemoveCounty(county)\r\n }\r\n\r\n if ((this.userForm.value.municipality.length > 0) && (this.userForm.value.municipality[0] != '0')) {\r\n this.userForm.value.municipality.forEach(element => {\r\n var obj = { countyId: county, municipalityId: element }\r\n this.countyMunicipalities.push(obj)\r\n mArray.push(this.municipalities.find(e => e.value == element))\r\n });\r\n var cArray: [] = this.counties.find(e => e.value == county)\r\n var Obj = { c: cArray, m: mArray, isAll: false }\r\n this.jsonCountyMunicipalities.push(Obj)\r\n\r\n } else {\r\n this.municipalities.forEach(element => {\r\n if (element.id != '0') {\r\n var obj = { countyId: county, municipalityId: element.id }\r\n this.countyMunicipalities.push(obj)\r\n mArray.push(this.municipalities.find(e => e.value == element.id))\r\n }\r\n });\r\n var cArray: [] = this.counties.find(e => e.value == county)\r\n var Obj = { c: cArray, m: mArray, isAll: true }\r\n this.jsonCountyMunicipalities.push(Obj)\r\n }\r\n this.userForm.patchValue({\r\n county: '',\r\n municipality: ''\r\n })\r\n this.isEditCounty = false;\r\n }\r\n\r\n onCancelCountyMunicipals() {\r\n this.userForm.patchValue({\r\n county: '',\r\n municipality: ''\r\n })\r\n this.isEditCounty = false\r\n this.isAllMunicipalitySelected = false\r\n }\r\n\r\n onRemoveCounty(countyId): void {\r\n var countyObj1 = this.jsonCountyMunicipalities.find(county => county.c.value == countyId)\r\n var countyObj1Index = this.jsonCountyMunicipalities.indexOf(countyObj1)\r\n this.jsonCountyMunicipalities.splice(countyObj1Index, 1)\r\n\r\n let objArr = []\r\n this.countyMunicipalities.forEach(element => {\r\n if (element.countyId == countyId) {\r\n objArr.push(element)\r\n }\r\n });\r\n\r\n objArr.forEach(ele => {\r\n let index = this.countyMunicipalities.indexOf(ele)\r\n this.countyMunicipalities.splice(index, 1);\r\n })\r\n // if (!this.isEditCounty) {\r\n // this.userForm.patchValue({\r\n // county: '',\r\n // municipality: ''\r\n // })\r\n // }\r\n\r\n if (!this.isEditCounty) {\r\n this.counties.forEach(element => {\r\n if (element.value == countyId) {\r\n element.disabled = false\r\n }\r\n });\r\n }\r\n\r\n this.isEditCounty = false\r\n this.isAllMunicipalitySelected = false\r\n }\r\n onEditCounty(countyId): void {\r\n var countyObj1 = this.jsonCountyMunicipalities.find(county => {\r\n return county.c.value == countyId\r\n })\r\n this.selectedCounty = countyObj1.c\r\n var municipalityArr: any[] = []\r\n if (countyObj1.isAll) {\r\n municipalityArr.push(0)\r\n this.isAllMunicipalitySelected = true\r\n } else {\r\n countyObj1.m.forEach(element => {\r\n municipalityArr.push(element.id)\r\n });\r\n }\r\n\r\n this.userService.getMunicipalitiesByCountyId(countyId).subscribe((data: []) => {\r\n this.municipalities = data\r\n this.municipalities.unshift({ id: 0, code: \"0000\", name: \"Alla Kommuner\" })\r\n for (let [key, value] of Object.entries(this.municipalities)) {\r\n value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n this.userForm.patchValue({\r\n conuty: parseInt(countyId),\r\n municipality: municipalityArr\r\n })\r\n this.userForm.value.conuty = countyId\r\n this.isEditCounty = true;\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n )\r\n }\r\n\r\n onAddLangSkills(): void {\r\n var langId = this.userForm.value.languages\r\n var skillLevelId = this.userForm.value.skillLevel\r\n\r\n var langObj = this.languageObjArray.find(element => element.languageId == langId)\r\n if (langObj) {\r\n this.onRemoveLangSkills(langId)\r\n var obj = { languageId: langId, skillLevelId: skillLevelId }\r\n this.languageObjArray.push(obj)\r\n } else {\r\n var obj = { languageId: langId, skillLevelId: skillLevelId }\r\n this.languageObjArray.push(obj)\r\n }\r\n this.userForm.patchValue({\r\n languages: '',\r\n skillLevel: ''\r\n })\r\n }\r\n\r\n onRemoveLangSkills(langId): void {\r\n var langObj = this.languageObjArray.find(lang => lang.languageId == langId)\r\n var langObjIndex = this.languageObjArray.indexOf(langObj)\r\n this.languageObjArray.splice(langObjIndex, 1)\r\n this.userForm.patchValue({\r\n languages: '',\r\n skillLevel: ''\r\n })\r\n }\r\n\r\n getLangNameById(langId): string {\r\n if (this.languages) {\r\n var langObj = this.languages.find(element => element.value == langId)\r\n }\r\n return langObj.label || ''\r\n }\r\n getSkillLevelNameById(skillLevelId): string {\r\n if (this.skillLevels) {\r\n var skillLevelObj = this.skillLevels.find(element => element.value == skillLevelId)\r\n }\r\n return skillLevelObj.label || ''\r\n }\r\n\r\n getCurrentConfigData(): void {\r\n this.userService.getConfigData().subscribe((res) => {\r\n console.log(res)\r\n this.resourceTypes = res.resourceTypes;\r\n this.matchingAlgorithnmFields = res.matchingAlgorithnmFields;\r\n if (this.matchingAlgorithnmFields.length > 0) {\r\n this.matchingAlgorithnmFieldIsConsidered = this.matchingAlgorithnmFields[0] ? this.matchingAlgorithnmFields[0].isConsidered : false;\r\n }\r\n })\r\n }\r\n\r\n getBookingUnit() {\r\n this.configService.getBookingUnits().subscribe(res => {\r\n if (res) {\r\n this.bookingUnitName = (res.bookingUnits.length > 0) ? res.bookingUnits[0].name : '';\r\n // this.userTypes.push({ id: (this.userTypes.length + 1).toString(), name: 'Client', sename: this.bookingUnitName != '' ? this.bookingUnitName :'Client' });\r\n }\r\n });\r\n }\r\n\r\n}\r\nfunction resetPasswordCompare(c: AbstractControl): { [key: string]: boolean } | null {\r\n const pwdControl = c.get('resetpassword');\r\n const conPwdControl = c.get('resetconpassword');\r\n\r\n if (pwdControl.pristine || conPwdControl.pristine) {\r\n return null;\r\n }\r\n\r\n if (pwdControl.value !== conPwdControl.value) {\r\n return { 'match': true };\r\n }\r\n return null;\r\n}\r\n\r\nfunction passwordCompare(c: AbstractControl): { [key: string]: boolean } | null {\r\n const pwdControl = c.get('password');\r\n const conPwdControl = c.get('conpassword');\r\n\r\n if (pwdControl.pristine || conPwdControl.pristine) {\r\n return null;\r\n }\r\n\r\n if (pwdControl.value !== conPwdControl.value) {\r\n return { 'match': true };\r\n }\r\n return null;\r\n}\r\n","module.exports = \".ngx-pagination li{\\r\\nbackground-color: white !important;\\r\\n}\\r\\n\\r\\n.ngx-pagination{\\r\\n padding: 0px !important;\\r\\n}\\r\\n\\r\\n.d-flex a {\\r\\n color: #1C1C1C !important;\\r\\n text-decoration: none !important;\\r\\n background-color: transparent !important;\\r\\n }\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdXNlci91c2VyLWxpc3QuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGtDQUFrQztBQUNsQzs7QUFFQTtFQUNFLHVCQUF1QjtBQUN6Qjs7QUFFQTtJQUNJLHlCQUF5QjtJQUN6QixnQ0FBZ0M7SUFDaEMsd0NBQXdDO0VBQzFDIiwiZmlsZSI6InNyYy9hcHAvdXNlci91c2VyLWxpc3QuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5uZ3gtcGFnaW5hdGlvbiBsaXtcclxuYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLm5neC1wYWdpbmF0aW9ue1xyXG4gIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uZC1mbGV4IGEge1xyXG4gICAgY29sb3I6ICMxQzFDMUMgIWltcG9ydGFudDtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuICB9XHJcbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport { UserService } from './user.service';\r\nimport { IUserSearchCriteria } from './user-search-criteria';\r\nimport { IUserInfo } from './user-info';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { ConfigService } from '../shared/services/config.service';\r\n\r\n@Component({\r\n selector: 'wfm-user-list',\r\n templateUrl: './user-list.component.html',\r\n styleUrls: ['./user-list.component.css']\r\n})\r\nexport class UserListComponent implements OnInit {\r\n\r\n errorMessage: string;\r\n searchCritera: IUserSearchCriteria = {} as IUserSearchCriteria;\r\n userInfoList: IUserInfo[] = [];\r\n searchForm: FormGroup;\r\n config: any;\r\n responseData: any;\r\n selectedUser: IUserInfo = {} as IUserInfo;\r\n removeUserId: string;\r\n notificationModal: any;\r\n bookingUnitName : any = '';\r\n \r\n constructor(private fb: FormBuilder, private userService: UserService , private configService : ConfigService) {\r\n this.searchForm = this.fb.group({\r\n searchText: '',\r\n userType: '',\r\n status: 'true'\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.searchCritera.pageNumber = 1;\r\n this.searchCritera.pageSize = 10;\r\n this.searchCritera.orderBy = 'FirstName';\r\n this.searchCritera.isAscending = true;\r\n this.searchCritera.isActive = true;\r\n\r\n this.config = {\r\n itemsPerPage: this.searchCritera.pageSize,\r\n currentPage: this.searchCritera.pageNumber,\r\n totalItems: 0\r\n };\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.getBookingUnit();\r\n\r\n this.getUsers();\r\n if (history.state.flow) {\r\n this.setNotificationData(history.state.flow, history.state.status);\r\n }\r\n }\r\n\r\n private getUsers(): void {\r\n this.userService.getAll(this.searchCritera).subscribe(\r\n pagedResult => {\r\n this.config.totalItems = pagedResult.totalNumberOfRecords;\r\n this.userInfoList = pagedResult.results;\r\n },\r\n error => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n filterData(): void {\r\n this.searchCritera.pageNumber = 1;\r\n this.searchCritera.searchText = this.searchForm.get('searchText').value;\r\n this.searchCritera.userTypeId = this.searchForm.get('userType').value;\r\n this.searchCritera.isActive = this.searchForm.get('status').value;\r\n\r\n this.userService.getAll(this.searchCritera).subscribe(\r\n pagedResult => {\r\n this.config.currentPage = 1;\r\n this.config.totalItems = pagedResult.totalNumberOfRecords;\r\n this.userInfoList = pagedResult.results;\r\n },\r\n error => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n updateUserStatus(status: number): void {\r\n this.userService.updateUserStatus(this.selectedUser.userId, status).subscribe(\r\n data => {\r\n this.filterData();\r\n if (status == 0) {\r\n ($('#userDeactivateModal') as any).modal('hide');\r\n this.setNotificationData('remove', data);\r\n } else{\r\n ($('#userActivateModal') as any).modal('hide');\r\n this.setNotificationData('activate', data);\r\n }\r\n\r\n },\r\n error => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n getBookingUnit()\r\n {\r\n this.configService.getBookingUnits().subscribe(res => {\r\n console.log(res);\r\n if(res)\r\n {\r\n this.bookingUnitName = (res.bookingUnits.length > 0) ? res.bookingUnits[0].name : '';\r\n }\r\n });\r\n }\r\n\r\n pageChanged(event): void {\r\n this.searchCritera.pageNumber = event;\r\n this.getUsers();\r\n this.config.currentPage = event;\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'remove') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Användaren inaktiverad';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Inaktivering av användare misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n if (flow === 'activate') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Användare aktiverad';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Aktivering av användare misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n if (flow === 'add') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Användaren har skapats';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Skapande av användare misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n if (flow === 'update') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Användaren har uppdaterats';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av användare misslyckades! Var god försök igen';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#notificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#notificationModal') as any).modal('hide');\r\n }, 3000);\r\n }\r\n\r\n}\r\n","module.exports = \".form-group {\\r\\n margin-bottom: 0.1rem;\\r\\n}\\r\\n\\r\\n.field-values {\\r\\n /* overflow-wrap: anywhere !important; */\\r\\n word-break: break-word;\\r\\n}\\r\\n\\r\\n.checked {\\r\\n color: orange;\\r\\n}\\r\\n\\r\\n.rating {\\r\\n cursor: pointer;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdXNlci91c2VyLXZpZXcuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLHFCQUFxQjtBQUN6Qjs7QUFFQTtJQUNJLHdDQUF3QztJQUN4QyxzQkFBc0I7QUFDMUI7O0FBRUE7SUFDSSxhQUFhO0FBQ2pCOztBQUVBO0lBQ0ksZUFBZTtBQUNuQiIsImZpbGUiOiJzcmMvYXBwL3VzZXIvdXNlci12aWV3LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1ncm91cCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjFyZW07XHJcbn1cclxuXHJcbi5maWVsZC12YWx1ZXMge1xyXG4gICAgLyogb3ZlcmZsb3ctd3JhcDogYW55d2hlcmUgIWltcG9ydGFudDsgKi9cclxuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcbn1cclxuXHJcbi5jaGVja2VkIHtcclxuICAgIGNvbG9yOiBvcmFuZ2U7XHJcbn1cclxuXHJcbi5yYXRpbmcge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59Il19 */\"","import { Component, OnInit, Input } from '@angular/core';\r\nimport { IUserInfo } from './user-info';\r\nimport { UserService } from './user.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription, Subject } from 'rxjs';\r\nimport { ConfigService } from '../shared/services/config.service';\r\nimport { FormArray, FormBuilder, FormGroup } from '@angular/forms';\r\n\r\n\r\n@Component({\r\n selector: 'wfm-user-view',\r\n templateUrl: './user-view.component.html',\r\n styleUrls: ['./user-view.component.css']\r\n})\r\nexport class UserViewComponent implements OnInit {\r\n\r\n @Input('employeeNo') employeeProfileId: Subject\r\n @Input() isViewModal: boolean = false\r\n\r\n pageTitle: string;\r\n errorMessage: string;\r\n userTypes: any[];\r\n jobTypes: any[];\r\n userInfo: IUserInfo = {} as IUserInfo;\r\n previewUrl: any;\r\n userImage = '';\r\n fileData: File = null;\r\n private sub: Subscription;\r\n userForm: FormGroup;\r\n subClients: FormArray;\r\n jsonCountyMunicipalities: any[] = [];\r\n countyMunicipalities: any[] = [];\r\n counties: any[] = [];\r\n municipalities: any[] = [];\r\n pharmacySystems: any[] = [];\r\n legitimations: any[] = [];\r\n experienceAreas: any[] = [];\r\n usersList: IUserInfo[] = [];\r\n selectedEmployeeId: string\r\n skillLevels: any[] = [];\r\n empResourceType: any\r\n resourceTypes: any = [];\r\n\r\n configDisableExperienceAreas: boolean;\r\n configDisableUpdatingEmpAvailability: boolean;\r\n configClientIsAbleToSelectTheEmployeesInBooking: boolean;\r\n configClientOverTimeRule: boolean;\r\n configClientLongBookingPeriod: any;\r\n notificationModal: any;\r\n configClientEditBookingTime: boolean;\r\n empHourlyRate: number;\r\n applyHourlyRate: boolean;\r\n deviceWidth: number = window.innerWidth;\r\n deviceHight: number = window.innerHeight;\r\n rating: any;\r\n show0: boolean = true;\r\n show1: boolean;\r\n show2: boolean;\r\n show3: boolean;\r\n show4: boolean;\r\n show5: boolean;\r\n totalRating: number = 0;\r\n\r\n languages: any[] = [\r\n { value: 1, label: 'English' },\r\n { value: 2, label: 'Swedish' }\r\n ];\r\n yearsOfExperiences: any[] = [\r\n { value: 1, label: '1' },\r\n { value: 2, label: '2' },\r\n { value: 3, label: '3' },\r\n { value: 4, label: '4' },\r\n { value: 5, label: '5' },\r\n { value: 6, label: '6' },\r\n { value: 7, label: '7' },\r\n { value: 8, label: '8' },\r\n { value: 9, label: '9' },\r\n { value: 10, label: '10' },\r\n { value: 11, label: '10+' },\r\n ];\r\n\r\n constructor(private fb: FormBuilder,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private configService: ConfigService,\r\n private userService: UserService) {\r\n\r\n this.notificationModal = {\r\n header: '',\r\n description: '',\r\n type: ''\r\n };\r\n\r\n this.userTypes = [\r\n { id: '2', name: 'Anställd' },\r\n { id: '3', name: 'Enhet' },\r\n { id: '4', name: 'Super Client' }\r\n ];\r\n\r\n this.jobTypes = [\r\n { id: '1', name: 'Heltid' },\r\n { id: '2', name: 'Deltid' }\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.subClients = this.fb.array([]);\r\n\r\n this.userForm = this.fb.group({\r\n userId: [''],\r\n userTypeId: [],\r\n jobCategoryId: [],\r\n firstName: [''],\r\n lastName: [],\r\n clientName: [],\r\n pharmacyId: [],\r\n address: [],\r\n city: [],\r\n zip: [],\r\n email: [],\r\n phoneNumber: [],\r\n userName: [],\r\n password: [],\r\n conpassword: [],\r\n isActive: [true],\r\n subClients: this.subClients,\r\n county: [{ disabled: true }, []],\r\n municipality: [[]],\r\n pharmacySystems: [],\r\n isStaredEmployeesOnly: [Boolean],\r\n employeeNo: [''],\r\n countyMunicipalities: [[]],\r\n legitimationId: [],\r\n experienceAreas: [],\r\n yearsOfExperience: [],\r\n isStdProceduresRead: [Boolean],\r\n aboutMe: [''],\r\n languages: [],\r\n cmJson: '',\r\n favouriteEmployees: []\r\n });\r\n\r\n if (this.isViewModal) {\r\n this.employeeProfileId.subscribe((userId) => {\r\n this.selectedEmployeeId = userId\r\n if (userId) {\r\n this.getUser(this.selectedEmployeeId);\r\n this.getUserWiseAdminConfigurationDetails(this.selectedEmployeeId);\r\n this.getEmployeeHourlyRateDetails(this.selectedEmployeeId);\r\n ($('#employeeProfileViewModal') as any).modal('show');\r\n\r\n }\r\n })\r\n } else {\r\n this.sub = this.route.paramMap.subscribe(\r\n params => {\r\n const id = params.get('userid');\r\n this.getUser(id);\r\n }\r\n );\r\n }\r\n\r\n this.userService.getInnitialMasterData().subscribe((data) => {\r\n\r\n this.pharmacySystems = data.pharmacySystems\r\n this.counties = data.counties\r\n this.experienceAreas = data.experienceAreas\r\n this.legitimations = data.legitimations\r\n this.skillLevels = data.skillLevels\r\n this.languages = data.languages\r\n\r\n for (let [key, value] of Object.entries(this.pharmacySystems)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.counties)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.experienceAreas)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.legitimations)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.skillLevels)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n for (let [key, value] of Object.entries(this.languages)) {\r\n // value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n })\r\n this.getCurrentConfigData();\r\n\r\n }\r\n\r\n getEmployeeHourlyRateDetails(userId: string): void {\r\n this.userService.getEmployeeHourlyRateDetails(userId).subscribe(data => {\r\n if (data) {\r\n this.applyHourlyRate = data.isActive;\r\n this.empHourlyRate = data.hourlyRate;\r\n }\r\n })\r\n }\r\n\r\n\r\n createSubClientFormGroup(id: string, value: string, isActive: boolean): FormGroup {\r\n return this.fb.group({\r\n id: [id],\r\n clientName: [value],\r\n isActive: [isActive]\r\n });\r\n }\r\n\r\n getUserWiseAdminConfigurationDetails(userId: string): void {\r\n this.configService.getUserWiseAdminCOnfigurations(userId).subscribe(data => {\r\n if (data.length) {\r\n if (data.find(a => a.title === 'configClientIsAbleToSelectTheEmployeesInBooking')) {\r\n this.configClientIsAbleToSelectTheEmployeesInBooking = data.find(a => a.title === 'configClientIsAbleToSelectTheEmployeesInBooking').isActive;\r\n }\r\n if (data.find(a => a.title === 'configDisableUpdatingEmpAvailability')) {\r\n this.configDisableUpdatingEmpAvailability = data.find(a => a.title === 'configDisableUpdatingEmpAvailability').isActive;\r\n }\r\n if (data.find(a => a.title === 'configClientOverTimeRule')) {\r\n this.configClientOverTimeRule = data.find(a => a.title === 'configClientOverTimeRule').isActive;\r\n }\r\n if (data.find(a => a.title === 'configClientLongBookingPeriod')) {\r\n this.configClientLongBookingPeriod = data.find(a => a.title === 'configClientLongBookingPeriod').additionalValue1;\r\n }\r\n if (data.find(a => a.title === 'configClientEditBookingTime')) {\r\n this.configClientEditBookingTime = data.find(a => a.title === 'configClientEditBookingTime').isActive;\r\n }\r\n\r\n if (data.find(a => a.title === 'userRating')) {\r\n this.rating = data.find(a => a.title === 'userRating').additionalValue1;\r\n this.onclickStar(this.rating, false);\r\n }\r\n\r\n this.userForm.value.adminConfig1 = this.configDisableUpdatingEmpAvailability\r\n\r\n this.userForm.patchValue({\r\n adminConfig1: this.configDisableUpdatingEmpAvailability,\r\n adminConfig2: this.configClientIsAbleToSelectTheEmployeesInBooking,\r\n adminConfig3: this.configClientOverTimeRule,\r\n });\r\n }\r\n })\r\n }\r\n\r\n onclickStar(no: any, checked: boolean) {\r\n if (!checked) {\r\n this.totalRating = no;\r\n this.show0 = false;\r\n this.show1 = false;\r\n this.show2 = false;\r\n this.show3 = false;\r\n this.show4 = false;\r\n this.show5 = false;\r\n\r\n if (no == 0) {\r\n this.show0 = true;\r\n }\r\n else if (no == 1) {\r\n this.show1 = true;\r\n } else if (no == 2) {\r\n this.show2 = true;\r\n }\r\n else if (no == 3) {\r\n this.show3 = true;\r\n }\r\n else if (no == 4) {\r\n this.show4 = true;\r\n }\r\n else if (no == 5) {\r\n this.show5 = true;\r\n }\r\n } else {\r\n // no = no - 1;\r\n this.totalRating = no;\r\n this.show0 = false;\r\n this.show1 = false;\r\n this.show2 = false;\r\n this.show3 = false;\r\n this.show4 = false;\r\n this.show5 = false;\r\n\r\n if (no == 1) {\r\n this.totalRating = 0;\r\n this.show0 = true;\r\n } else if (no == 2) {\r\n this.show2 = true;\r\n }\r\n else if (no == 3) {\r\n this.show3 = true;\r\n } else if (no == 4) {\r\n this.show4 = true;\r\n }\r\n else if (no == 5) {\r\n this.show5 = true;\r\n }\r\n }\r\n }\r\n\r\n getUser(id: string): void {\r\n this.userService.getById(id)\r\n .subscribe(\r\n (user: IUserInfo) => {\r\n if (user.countyMunicipalities && user.countyMunicipalities.length > 0) {\r\n this.userService.getMunicipalitiesByCountyId(user.countyMunicipalities[0].countyId).subscribe((data: []) => {\r\n this.municipalities = data\r\n for (let [key, value] of Object.entries(this.municipalities)) {\r\n value['value'] = value.id;\r\n value['label'] = value.name;\r\n }\r\n this.displayUser(user)\r\n });\r\n } else {\r\n this.displayUser(user)\r\n }\r\n\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n }\r\n\r\n displayUser(user: IUserInfo): void {\r\n this.userInfo = user;\r\n\r\n this.userImage = this.userInfo.imagePath;\r\n this.pageTitle = `Edit User Data: ${this.userInfo.firstName}`;\r\n const userTypeControl = this.userForm.get('userTypeId');\r\n\r\n if (this.userInfo.cmJson) {\r\n this.jsonCountyMunicipalities = JSON.parse(this.userInfo.cmJson)\r\n }\r\n\r\n this.userForm.patchValue({\r\n userId: this.userInfo.userId,\r\n userTypeId: this.userInfo.userTypeId,\r\n jobCategoryId: this.userInfo.jobCategoryId ? this.userInfo.jobCategoryId.toString() : null,\r\n firstName: this.userInfo.firstName,\r\n lastName: this.userInfo.lastName,\r\n clientName: this.userInfo.clientName,\r\n pharmacyId: this.userInfo.pharmacyId,\r\n address: this.userInfo.address,\r\n city: this.userInfo.city,\r\n zip: this.userInfo.zip,\r\n email: this.userInfo.email,\r\n phoneNumber: this.userInfo.phoneNumber,\r\n isActive: this.userInfo.isActive.toString()\r\n });\r\n\r\n if (this.userInfo.userTypeId === '4') {\r\n let subClients = this.userForm.controls['subClients'] as FormArray;\r\n this.userInfo.subClients.forEach((el: any) => {\r\n subClients.push(this.createSubClientFormGroup(el.id, el.clientName, el.isActive));\r\n })\r\n }\r\n\r\n if (this.userInfo.userTypeId == '2') {\r\n this.userForm.patchValue({\r\n county: (this.userInfo.countyMunicipalities && this.userInfo.countyMunicipalities.length > 0) ? this.userInfo.countyMunicipalities[0].countyId : null,\r\n municipality: (this.userInfo.countyMunicipalities && this.userInfo.countyMunicipalities.length > 0) ? this.userInfo.countyMunicipalities[0].municipalityId : null,\r\n pharmacySystems: this.userInfo.pharmacySystems,\r\n legitimationId: this.userInfo.legitimationId,\r\n experienceAreas: this.userInfo.experienceAreas,\r\n yearsOfExperience: this.userInfo.yearsOfExperience,\r\n isStdProceduresRead: this.userInfo.isStdProceduresRead,\r\n aboutMe: this.userInfo.aboutMe,\r\n languages: this.userInfo.languages,\r\n employeeNo: this.userInfo.employeeNo\r\n });\r\n this.countyMunicipalities = this.userInfo.countyMunicipalities\r\n this.empResourceType = this.resourceTypes.find(x => x.id == this.userInfo.resourceTypeId);\r\n }\r\n\r\n if (this.userInfo.userTypeId == '3') {\r\n\r\n this.userService.getUserList('Employee').subscribe(\r\n (res: IUserInfo[]) => {\r\n this.usersList = res;\r\n for (let [key, value] of Object.entries(this.usersList)) {\r\n value['value'] = value.userId;\r\n value['label'] = value.firstName + ' ' + value.lastName;\r\n }\r\n this.userForm.patchValue({\r\n county: this.userInfo.countyMunicipalities ? this.userInfo.countyMunicipalities[0].countyId : '',\r\n municipality: this.userInfo.countyMunicipalities ? this.userInfo.countyMunicipalities[0].municipalityId : '',\r\n pharmacySystems: this.userInfo.pharmacySystems,\r\n isStaredEmployeesOnly: this.userInfo.isStaredEmployeesOnly,\r\n aboutMe: this.userInfo.aboutMe,\r\n });\r\n\r\n this.userForm.value.municipality = this.userInfo.countyMunicipalities ? this.userInfo.countyMunicipalities[0].municipalityId : ''\r\n this.userForm.value.favouriteEmployees = this.userInfo.favouriteEmployees\r\n },\r\n (error: any) => this.errorMessage = error as any\r\n );\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n getLeditimationName() {\r\n if (this.legitimations) {\r\n var element = this.legitimations.find((e) => e.value == this.userForm.value.legitimationId)\r\n }\r\n return element ? element.label : '-'\r\n }\r\n getExperience() {\r\n if (this.yearsOfExperiences) {\r\n var element = this.yearsOfExperiences.find((e) => e.value == this.userForm.value.yearsOfExperience)\r\n }\r\n return element ? element.label : '-'\r\n }\r\n getExperienceAreas() {\r\n if (this.userInfo.experienceAreas) {\r\n let str: string = '';\r\n this.userInfo.experienceAreas.forEach(element => {\r\n let obj = this.experienceAreas.find((e) => e.value == element)\r\n str = str + obj.label + ', '\r\n });\r\n var newStr = str.slice(0, -2);\r\n return newStr\r\n }\r\n }\r\n getLanguageById(langId: number) {\r\n if (this.languages) {\r\n var element = this.languages.find((e) => e.value == langId)\r\n return element ? element.label : '-'\r\n }\r\n }\r\n getSkillLevelById(skillLevelId: number) {\r\n if (this.skillLevels) {\r\n var element = this.skillLevels.find((e) => e.value == skillLevelId)\r\n }\r\n return element ? element.label : '-'\r\n }\r\n getPharmacySystems() {\r\n let str: string = '';\r\n if (this.userInfo.pharmacySystems) {\r\n this.userInfo.pharmacySystems.forEach(element => {\r\n let obj = this.pharmacySystems.find((e) => e.value == element)\r\n if (obj) {\r\n str = str + obj.label + ', '\r\n }\r\n });\r\n var newStr = str.slice(0, -2);\r\n return newStr || '-'\r\n }\r\n }\r\n getUserType(id) {\r\n if (this.userTypes) {\r\n\r\n }\r\n var element = this.userTypes.find((e) => e.id == id)\r\n return element ? element.label : '-'\r\n }\r\n getJobType() {\r\n var element = this.jobTypes.find((e) => e.id == this.userForm.value.jobCategoryId)\r\n return element ? element.label : '-'\r\n }\r\n getCountyName() {\r\n var element = this.counties.find((e) => e.value == this.userForm.value.county)\r\n return element ? element.label : '-'\r\n }\r\n getMunicipalityName() {\r\n var element = this.municipalities.find((e) => e.value == this.userForm.value.municipality)\r\n return element ? element.label : '-'\r\n }\r\n getFavouriteEmployees() {\r\n let str: string = '';\r\n let newStr: string = '';\r\n if (this.userInfo.favouriteEmployees) {\r\n this.userInfo.favouriteEmployees.forEach(element => {\r\n let obj = this.usersList.find((e) => e.userId == element)\r\n if (obj) {\r\n str = str + obj.fullName + ', '\r\n }\r\n });\r\n }\r\n newStr = str.slice(0, -2);\r\n return newStr || '-'\r\n }\r\n getMunicipalities(mArray) {\r\n let str: string = '';\r\n let newStr: string = '';\r\n if (mArray) {\r\n mArray.forEach(element => {\r\n str += element.name + ', '\r\n });\r\n }\r\n newStr = str.slice(0, -2);\r\n return newStr || '-'\r\n }\r\n getCurrentConfigData(): void {\r\n this.userService.getConfigData().subscribe((res) => {\r\n // console.log(res);\r\n this.resourceTypes = res.resourceTypes\r\n\r\n })\r\n }\r\n\r\n saveAdminConfigurationDetails(): void {\r\n let request: any[] = [];\r\n request = [\r\n {\r\n title: 'configDisableExperienceAreas', isActive: this.configDisableExperienceAreas\r\n },\r\n {\r\n title: 'configDisableUpdatingEmpAvailability', isActive: this.configDisableUpdatingEmpAvailability\r\n },\r\n {\r\n title: 'configClientIsAbleToSelectTheEmployeesInBooking', isActive: this.configClientIsAbleToSelectTheEmployeesInBooking\r\n }\r\n ];\r\n this.configService.updateAdminCOnfigurations(request).subscribe(data => {\r\n this.setNotificationData('update', true);\r\n\r\n })\r\n }\r\n\r\n getAdminConfigurationDetails(): void {\r\n this.configService.getAdminCOnfigurations().subscribe(data => {\r\n if (data) {\r\n this.configDisableExperienceAreas = data.find(a => a.title === 'configDisableExperienceAreas').isActive;\r\n this.configDisableUpdatingEmpAvailability = data.find(a => a.title === 'configDisableUpdatingEmpAvailability').isActive;\r\n this.configClientIsAbleToSelectTheEmployeesInBooking = data.find(a => a.title === 'configClientIsAbleToSelectTheEmployeesInBooking').isActive;\r\n\r\n }\r\n })\r\n }\r\n\r\n setNotificationData(flow, status): void {\r\n if (flow === 'update') {\r\n if (status) {\r\n this.notificationModal.header = 'Lyckades';\r\n this.notificationModal.description = 'Uppdatering av konfiguration har lyckats!';\r\n this.notificationModal.type = 'success';\r\n } else {\r\n this.notificationModal.header = 'Misslyckades';\r\n this.notificationModal.description = 'Uppdatering av konfiguration misslyckades! Vänligen försök igen.';\r\n this.notificationModal.type = 'danger';\r\n }\r\n }\r\n ($('#configNotificationModal') as any).modal('show');\r\n setTimeout(() => {\r\n ($('#configNotificationModal') as any).modal('hide');\r\n }, 1000);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AppRoutingModule } from '../app-routing.module';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n\r\nimport { UserListComponent } from './user-list.component';\r\nimport { UserViewComponent } from './user-view.component';\r\nimport { UserEditComponent } from './user-edit.component';\r\n\r\nimport { NgxPaginationModule } from 'ngx-pagination';\r\nimport { MyprofileComponent } from './myprofile.component';\r\nimport { SuperclientUserListComponent } from './superclient-user-list/superclient-user-list.component';\r\nimport { SuperclientUserEditComponent } from './superclient-user-edit/superclient-user-edit.component';\r\nimport { SuperclientUserViewComponent } from './superclient-user-view/superclient-user-view.component';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { Select2Module } from 'ng-select2-component';\r\nimport { ImageCropperModule } from 'ngx-image-cropper';\r\n\r\n@NgModule({\r\n declarations: [UserListComponent, UserViewComponent, UserEditComponent, MyprofileComponent, SuperclientUserListComponent, SuperclientUserEditComponent, SuperclientUserViewComponent],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n ReactiveFormsModule,\r\n AppRoutingModule,\r\n SharedModule,\r\n NgxPaginationModule,\r\n Select2Module,\r\n ImageCropperModule\r\n ],\r\n exports:[\r\n UserViewComponent,\r\n SuperclientUserViewComponent\r\n ]\r\n})\r\nexport class UserModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { IUserInfo } from './user-info';\r\nimport { of, Observable, throwError, Subject, BehaviorSubject } from 'rxjs';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { tap, catchError } from 'rxjs/operators';\r\nimport { IUserSearchCriteria } from './user-search-criteria';\r\nimport { IPagedResult } from '../shared/models/common/paged-result';\r\nimport { ReportInfo } from '../report/report-info';\r\nimport { ReportSearchCriteria } from '../report/report-search-criteria';\r\nimport { environment } from '../../environments/environment';\r\nimport { ApiActionName } from '../shared/constants/enums/action-names';\r\n\r\nconst API_URL = environment.apiEndpoint;\r\n\r\nconst httpOptions = {\r\n headers: new HttpHeaders ({\r\n 'Content-Type': 'application/json'\r\n }),\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserService {\r\n\r\n userInfo: IUserInfo = {} as IUserInfo;\r\n userInfoList: IUserInfo;\r\n private subject = new Subject();\r\n selectedUserId: BehaviorSubject = new BehaviorSubject({ id: 'all', type: 'all' })\r\n newSelectedUser: BehaviorSubject = new BehaviorSubject(null)\r\n\r\n constructor(private http: HttpClient) {\r\n \r\n }\r\n\r\n createUser(user: IUserInfo): Observable {\r\n user.userId = null;\r\n return this.http.post(API_URL + 'user/create', user, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getEmployeeHourlyRateDetails(userId: string): Observable {\r\n let url = \"?userId=\" + userId;\r\n return this.http.get(API_URL + ApiActionName.GetEmployeeHourlyRate + url).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateEmployeeHourlyRateDetails(request: any): Observable {\r\n return this.http.post(API_URL + ApiActionName.UpdateEmployeeHourlyRate, request, httpOptions)\r\n }\r\n\r\n createSubClientUser(user: IUserInfo): Observable {\r\n user.userId = null;\r\n return this.http.post(API_URL + 'user/superclient/create', user, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateUser(user: IUserInfo): Observable {\r\n return this.http.post(API_URL + 'user/update', user, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateSubClientUser(user: IUserInfo): Observable {\r\n return this.http.post(API_URL + 'user/superclient/update', user, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateMyProfile(user: IUserInfo): Observable {\r\n return this.http.post(API_URL + 'user/profile/update', user, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateUserStatus(userId: string, status: number): Observable {\r\n const headersS = new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' });\r\n return this.http.post(API_URL + 'user/statusupdate?userId=' + userId + '&status=' + status , { headers: headersS })\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getById(id: string, userTypeId = \"\"): Observable {\r\n if (id === '0') {\r\n return of(this.initializeUser(userTypeId));\r\n }\r\n const url = `${API_URL}/user?id=${id}`;\r\n return this.http.get(url)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getMyProfile(): Observable {\r\n const url = `${API_URL}/user/profile`;\r\n return this.http.get(url)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getByName(username: string): Observable {\r\n return this.http.get(API_URL + 'user?username=' + username, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAll(searchCriteria: IUserSearchCriteria): Observable {\r\n return this.http.post(API_URL + 'user/getall', searchCriteria, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAllSubClients(searchCriteria: IUserSearchCriteria): Observable {\r\n return this.http.post(API_URL + 'user/superclient/getall', searchCriteria, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getUserList(userType: string): Observable {\r\n return this.http.get(API_URL + 'user/list?userType=' + userType, httpOptions).pipe(\r\n tap(resp => {\r\n // resp.forEach((r) => {\r\n // r.fullName = r.userType == 'Employee' ? (r.fullName) : (r.clientName);\r\n // });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getReportUserList(month:String,userType:String): Observable {\r\n return this.http.get(API_URL + `user/listforreports?month=${month}&userType=${userType}`, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getSubClientUserList(userType: string): Observable {\r\n return this.http.get(API_URL + 'user/superclient/list?userType=' + userType, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAdminUserList(userType: string, selectedMonth: Date, empSubType: number): Observable {\r\n if (selectedMonth === null) {\r\n selectedMonth = new Date();\r\n }\r\n const dateString = selectedMonth.getFullYear() + '-' + (selectedMonth.getMonth() + 1) + '-' + selectedMonth.getDate();\r\n const urlPart = 'user/calendar-list?userType=' + userType + '&selectedMonth=' + dateString + '&resourceTypeId='+empSubType;\r\n return this.http.get(API_URL + urlPart, httpOptions).pipe(\r\n tap(resp => {\r\n // resp.forEach((r) => { \r\n // r.fullName = r.userType == 'Employee' ? (r.fullName) : (r.clientName);\r\n // });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getSuperClientUserList(selectedMonth: Date, resourceTypeId: number): Observable {\r\n if (selectedMonth === null) {\r\n selectedMonth = new Date();\r\n }\r\n const dateString = selectedMonth.getFullYear() + '-' + (selectedMonth.getMonth() + 1) + '-' + selectedMonth.getDate();\r\n const urlPart = 'user/superclient/calendar-list?selectedMonth=' + dateString + '&resourceTypeId='+resourceTypeId;\r\n return this.http.get(API_URL + urlPart, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAllocatedUserList(userType: string, resourceTypeId:number): Observable {\r\n return this.http.get(API_URL + 'user/list/allocated?userType=' + userType +'&resourceTypeId='+resourceTypeId, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getReportData(searchCriteria: ReportSearchCriteria): Observable {\r\n return this.http.post(API_URL + 'reports/details', searchCriteria, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getSuperClientReportData(searchCriteria: ReportSearchCriteria): Observable {\r\n return this.http.post(API_URL + 'reports/superclient/details', searchCriteria, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getUserReportData(searchCriteria: ReportSearchCriteria, userType: string): Observable {\r\n const endpointUrl = userType === 'Employee' ? 'reports/employee' : 'reports/client';\r\n return this.http.post(API_URL + endpointUrl, searchCriteria, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateSalaryInvoiceSentDetails(searchCriteria: ReportSearchCriteria): Observable {\r\n return this.http.post(API_URL + 'reports/reports/updatepayments', searchCriteria, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n uploadUserImage(formData: FormData): Observable {\r\n return this.http.post(API_URL + 'user/update/image', formData).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n uploadProfileImage(formData: FormData): Observable {\r\n return this.http.post(API_URL + 'user/profile/image', formData).pipe(\r\n tap(resp => {\r\n this.subject.next({ path: resp });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n uploadUserFile(formData: FormData): Observable {\r\n return this.http.post(API_URL + 'user/profile/image', formData).pipe(\r\n tap(resp => {\r\n this.subject.next({ path: resp });\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n removeUserFile(fileId: number): Observable {\r\n return this.http.post(API_URL + 'allocations/remove?allocationId=' + fileId, httpOptions).pipe(\r\n tap(resp => {\r\n\r\n }),\r\n catchError(this.handleError)\r\n );\r\n}\r\n\r\ngetUserFiles(userId:string): Observable {\r\n return this.http.get(API_URL + 'user/list/allocated?userType=' + userId, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n}\r\n\r\n\r\n\r\n\r\n resetPassword(formData: FormData): Observable {\r\n return this.http.post(API_URL + 'user/update/pwd', formData).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n resetProfilePassword(formData: FormData): Observable {\r\n return this.http.post(API_URL + 'user/profile/resetpassword', formData).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n submitForgotPasswordEmail(formData:FormData): Observable {\r\n return this.http.post(API_URL + 'user/getforgotpasswordlink', formData).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n submitResetPassword(formData:FormData): Observable {\r\n return this.http.post(API_URL + 'user/resetpassword', formData).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n checkUsername(username: string, userId: string): Observable {\r\n const aurl = (userId && userId !== '0') ? ('user/checkusername?username=' + username + '&userId=' + userId)\r\n : ('user/checkusername?username=' + username);\r\n return this.http.get(API_URL + aurl, httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (err.error instanceof ErrorEvent) {\r\n errorMessage = `An error occured: ${err.error.message}`;\r\n } else {\r\n errorMessage = `Server returned code: ${err.status}, error message is: ${err.message}`;\r\n }\r\n return throwError(errorMessage);\r\n }\r\n\r\n reveiveImageUpdateNotification(): Observable {\r\n return this.subject.asObservable();\r\n }\r\n\r\n initializeUser(userTypeId = ''): IUserInfo {\r\n return {\r\n userId: '0',\r\n userName: '',\r\n firstName: '',\r\n lastName: '',\r\n clientName: '',\r\n pharmacyId: '',\r\n subClients: [],\r\n address: '',\r\n city: '',\r\n zip: '',\r\n email: '',\r\n phoneNumber: '',\r\n image: '',\r\n jobCategoryId: '',\r\n jobCategory: '',\r\n resourceTypeId: '',\r\n resourceType: '',\r\n isActive: true,\r\n userTypeId: userTypeId,\r\n userType: '',\r\n fullName: '',\r\n imagePath: '',\r\n actualHoursBooked: null,\r\n totalCalculatedHours: null,\r\n county:'',\r\n municipality:'',\r\n countyMunicipalities:[],\r\n pharmacySystems:[],\r\n isStaredEmployeesOnly:null,\r\n employeeNo:'',\r\n legitimationId:null,\r\n experienceAreas:[],\r\n yearsOfExperience:null,\r\n isStdProceduresRead:null,\r\n aboutMe:'',\r\n languages:[],\r\n cmJson:'',\r\n favouriteEmployees:[]\r\n };\r\n }\r\n\r\n getNotAllocatedSubClients(): Observable {\r\n return this.http.get(API_URL + 'user/getnotallocatedsubclients', httpOptions).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n \r\n getMunicipalitiesByCountyId(countyId:number): Observable {\r\n return this.http.get(API_URL+'user/municipalities?countyId='+countyId).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getInnitialMasterData(): Observable {\r\n return this.http.get(API_URL+`user/initialdata?culture=sv-SE`).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n switchFavouriteEmployee(employeeId:string, isRemove:boolean): Observable {\r\n var path:String = isRemove? 'removefavourites':'addfavourites'\r\n return this.http.get(API_URL+`user/client/${path}?employeeId=${employeeId}`).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getInquiryAssignUserList(allocationObj):Observable{\r\n return this.http.post(API_URL + '/allocations/getemployeesForinquiry', allocationObj, httpOptions)\r\n .pipe(\r\n tap(data => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n emmitSelectedUserId(data){\r\n this.selectedUserId.next(data);\r\n }\r\n\r\n emmitNewSelectedUser(data){\r\n this.newSelectedUser.next(data);\r\n }\r\n\r\n saveConfigurations(formData: FormData){\r\n return this.http.post(API_URL + 'user/resourcetypes/update', formData).pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getConfigData(){\r\n return this.http.get(API_URL + 'user/resourcetypes').pipe(\r\n tap(resp => {\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n}\r\n","import { InjectionToken, FactoryProvider } from '@angular/core';\r\n\r\nexport const WINDOW = new InjectionToken('window');\r\n\r\nconst windowProvider: FactoryProvider = {\r\n provide: WINDOW,\r\n useFactory: () => window\r\n};\r\n\r\nexport const WINDOW_PROVIDERS = [\r\n windowProvider\r\n]","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\n// npm install @angular/cli@8.3.10\r\n\r\nexport const environment = {\r\n production: false,\r\n \r\n // tokenUrl: 'http://localhost:52241/wfm/token',\r\n // apiEndpoint: 'http://localhost:52241/wfm/api/',\r\n // signalRhub: 'http://localhost:52241/wfm/signalr'\r\n\r\n // Din Distribution\r\n // tokenUrl: 'http://uatapi.dindistribution.pharmmatch.se/token', \r\n // apiEndpoint: 'http://uatapi.dindistribution.pharmmatch.se/api/',\r\n // signalRhub: 'http://uatapi.dindistribution.pharmmatch.se/signalr'\r\n\r\n //Teamplan \r\n // tokenUrl: 'http://uatapi.teamplan.se/token',\r\n // apiEndpoint: 'http://uatapi.teamplan.se/api/',\r\n // signalRhub: 'http://uatapi.teamplan.se/signalr'\r\n\r\n // Pharmatch Teamplan\r\n tokenUrl: 'https://api.pharmmatch.teamplan.se/token',\r\n apiEndpoint: 'https://api.pharmmatch.teamplan.se/api/',\r\n signalRhub: 'https://api.pharmmatch.teamplan.se/signalr'\r\n\r\n // Demo Teamplan\r\n\r\n // tokenUrl: 'https://api.demo.teamplan.se/token',\r\n // apiEndpoint: 'https://api.demo.teamplan.se/api/',\r\n // signalRhub: 'https://api.demo.teamplan.se/signalr'\r\n\r\n\r\n \r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","\r\nimport { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":"webpack:///"}