{"version":3,"mappings":"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","names":["relList","link","processPreload","mutations","mutation","node","getFetchOpts","script","fetchOpts","color_1","color_2","AUTH_TOKEN_KEY","REFRESH_TOKEN_KEY","USER_TYPE_STAFF","USER_TYPE_APPROVER","USER_TYPE_SYSTEM_ADMINISTRATOR","USER_TYPE_USER_ADMINISTRATOR","DARK_THEME","LIGHT_THEME","AUTO_THEME","TASK_TYPES","MESSAGE_CODES","MESSAGE_DIALOG_CONFIRM","USER_TYPE","TASK_TYPES_VALUE","TASK_TYPE_LISTS","metaEnv","utils","key","defaultValue","has","value","error","v","trim","env","firebaseConfig","avatarDefault","msalConfig","BrowserCacheLocation","level","message","containsPii","LogLevel","msalInstance","PublicClientApplication","getHoursAndMinutes","totalMinutes","timesheetLineMinutes","convertMinutesToHours","minutes","hours","date","moment","formatDateLocale","formatOnlyDate","formatOnlyHours","totalHours","getTimezone","timezoneOffset","state","refreshTokenInstance","axios","req","token","isTokenExpire","checkTokenExpire","getCookie","response","autoForceLogout","store","autoRefreshToken","toQueryString","params","keys","segments","k","defaultOptions","Service","options","baseURL","action","opts","headers","err","query","path","data","config","AuthService","body","SET_USER","SET_IS_VALID","service","actions","currentUser","getters","jsonPayload","base64","c","user","auth","PAGE_SIZE","DashboardService","expand","filter","pageSize","currentPage","id","select","dataUpdate","filterStr","_a","formData","url","resolve","reader","blob","base64data","selectProps","Actions","SET_DROPDOWN_SITE","SET_ACTION_TIME_SHEET","SET_LIST_TIME_SHEET","SET_COUNT_TIME_SHEET_STATUS","SET_LIST_TIME_SHEET_EVENT","SET_COUNT_NOTI_UNREAD","SET_FILTER_TIME_SHEET","SET_LOADING_NOTI","SET_IS_EDIT_ADD_TASK","SET_TOTAL_HOUR_TIME_SHEET","SET_LIST_TIME_SHEET_LINE","NotificationService","orderby","count","notificationService","filterTimeSheet","item","timeSheet","dayjs","timeSheetStatusName","line","timesheetLine","commit","lstTimeSheet","promise","res","total","totalDraft","totalPendingApproved","totalApproved","totalDeclined","totalCanceled","result","countNotiUnRead","filters","messageModel","timesheetEvent","timesheetEventNotification","totalHour","checkCurrentData","accumulator","currentValue","status","dashboard","ProfileService","apply","limit","active","param","filterDivision","profile","ManualService","progressEvent","percentCompleted","percent","manual","ApprovalGroupService","sort","_params","_b","_c","_d","_e","_f","_g","_h","lsGroupApproval","countGroupApproval","approvalGroup","UserService","newStatus","arrPromise","i","email","userList","userLogs","userCount","userLogscount","userParam","defaultStartTime","TimeSheetApproveService","ids","TimesheetHeaderId","approvalGroupId","SET_TIME_SHEETS_APPROVE","SET_TIME_SHEETS_FILTER","SET_LOADING_TIME_SHEETS","SET_SORT_PARAMS_TIME_SHEET","profileService","lstTimeSheetLineRental","lstTimeSheetLineJob","lstTimeSheetLineUnbill","index","expandWorkOrder","workOder","formatTime","dataApprove","timeSheetsApprove","TimeSheetTrackingService","dataFilter","SET_LIST_TIME_SHEET_TRACKING","SET_FILTER_TIME_SHEET_TRACKING","SET_TIME_SHEET_TRACKING_COUNT","SET_LOADING_TIME_SHEET_TRACKING","timesheetActionArea","timesheetActionType","convertValueHistory","field","convertStatusTimeSheet","convertTaskIdToType","hoursAndMinutes","formatHours","userTypeList","userStatusList","e","dataChange","changeDetail","formatDate","timeSheetTracking","SettingsService","itemCount","setting","createStore","statusCode","open","theme","isOpen","itemGroup","ctx","prefersLight","prefersDark","store$1","getTaskTypId","taskType","taskTypeId","convertTaskIdToTypeText","convertTaskIdToVisbleType","timeVal","timeObj","newStr","strHour","strMins","isAm","convertStrToTime","str","strFullTime","strmiliSec","hour","min","sec","getClassByStatusTimeSheet","startTime","startDate","hourAndMinutes","minute","clearAllCookies","cookie","cookieName","name","escape","s","match","defineComponent","IconSvg","computed","windowWidth","router","useRouter","useRoute","useStore","handleCreateUser","handleCreateGroup","handleAddNewTask","iconColor","Search","Close","SuccessFilled","_pushScopeId","_hoisted_2","_hoisted_5","_withScopeId","_hoisted_15","_hoisted_16","_hoisted_17","_component_el_button","_openBlock","_hoisted_3","_createElementVNode","_component_icon_svg","_ctx","_hoisted_6","_hoisted_7","_createBlock","_withCtx","_hoisted_12","_hoisted_13","_hoisted_14","_toDisplayString","firebase","_sfc_main$h","props","ref","watchEffect","isTestMode","currentPath","bgColorTaskType","urlDashboard","isDark","useDark","currentTheme","darkValModel","currentRoute","handleOpen","keyPath","handleClose","handleLogout","redirectPage","toggleDark","useToggle","handleSetTheme","watch","onMounted","messaging","payload","countNotiUnread","notifications","sidebarData","_hoisted_1","_hoisted_4","_hoisted_8","_hoisted_9","_resolveComponent","_component_el_row","_component_el_col","_createElementBlock","_Fragment","_component_el_tooltip","sidebar","_createVNode","_component_el_menu_item","_component_el_icon","_cache","_normalizeClass","_createCommentVNode","_sfc_main$g","ArrowDown","isInit","hoursTmp","minutesTmp","isAmTmp","disable","displayHour","hourValue","displayMinute","displayEnterHour","onChangeIsAM","type","submitTime","_hours","_minutes","hourSubmit","dataSubmit","handleChangeHour","event","handleChangeMin","handleCancel","handleBeforeLeave","_imports_0","_hoisted_11","_sfc_main$f","isShow","iconName","_sfc_main$e","handleSearch","reset","showDialog","small","background","disabled","employeeList","employeeCount","loadingEmployee","selectAll","multipleSelection","onBeforeMount","handleSortChange","isSelected","scope","toggleItem","gpPayCycleGroup","tableRowClassName","row","displayPayCycle","arrFilter","userCondition","clearSelect","val","_component_el_table_column","_sfc_main$d","isOpenPopupUserForm","ruleFormRef","dialogVisible","lsApprovalGroup","listApprovalGroup","initListApprovalGroup","list","loading","isEnableSave","dropdownPayLocation","loadingPayLocation","selectedJobDivisionPayLocation","notify","inject","paramSearch","popupGPEmployees","title","requiredGPEmployeeId","requiredApprovalGroupId","requiredPaylocation","requiredTaskType","isClickInsert","rules","reactive","userTypeListRoleUser","searchDropDownPayLocation","listPaylocation","clearPayLocation","getStrTime","insert","formEl","validForm","valid","fields","time","strTime","refeshMainPage","submit","getApprovalGroup","employee","_createTextVNode","_component_el_form","_component_el_form_item","_component_TimePicker","_component_PopupEmployee","_sfc_main$c","lblBtnSubmit","lblBtnCancel","iconBtnName","iconPopup","reason","errorReason","width","handleSubmit","handleDecline","handleCloseReason","_hoisted_10","_component_el_dialog","_sfc_main$b","isOpenPopupGroupForm","editApproveGroup","filterSelect","isEnableBtnConfirm","titleBtn","searchUser","searchSeletedUser","listSelectedUserToAddGroup","listSelectedUserToRemoveGroup","popupConfirmClose","selectGroupModel","emailErrorTo","emailErrorCC","group","listUser","defaultListUser","EmailValidator","emailRegex","emails","rule","isTouched","handleCloseConfirm","clearNewPopup","handleCloseTag","userIds","editItem","u","formValueChange","lsApprover","filterSelectGroupModel","paramBody","_paramBody","approverGenvalue","getApproval","userId","ob","handleSelectAvailableUser","_","handleSelectUserApproveGroup","addUserToApproveGroup","x","removeUserApproveGroup","selectGroupAppliedSearch","keyword","isNameChanged","isGPBatchPrefixChanged","isGPBatchNotificationToChanged","isGPBatchNotificationCCChanged","isMemberChanged","member","iconColorRemove","_hoisted_19","_hoisted_20","_hoisted_24","_component_el_input","$event","_hoisted_21","_hoisted_22","_sfc_main$a","orgHours","orgMins","errorMessage","buttonRef","popoverRef","taskId","isValid","msgExceedingTime","onClickOutside","handleSubmitTaskTime","validData","handleUpdateStartTime","isUpdateHours","mins","_component_el_popover","_sfc_main$9","refForm","errors","isEdit","WorkOrderQueryBySite","WorkOrderTaskQueryBySite","WorkOrderTaskQueryByFleet","DEFAULT_TASK_INFO","defaultValueStr","taskInfo","callback","actionTimeSheet","dropdownSite","dropdownFleet","dropdownTaskCategory","loadingDropDownTaskCategory","dropdownWorkOrder","dropdownWorkOrderTask","loadingDropDownSite","loadingDropDownFleet","loadingDropDownWorkOrder","loadingDropDownWorkOrderTask","timeSheetStatus","allowInputFiledService","sigOption","signatureMechanical","signatureCustomer","signatureCustomerTemp","signatureMechanicalTemp","allowUpdate","_i","refTimeSheet","initDropdown","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","f","_t","getBase64FromUrl","imageEndpoint","_v","_w","searchDropDownSite","site","_x","_y","selectSite","_z","_A","selectFleet","_B","_C","_D","selectWorkOrder","_E","includeDropdown","searchDropDownFleet","searchDropDownTaskCategory","validFormData","validTimeSheet","signatureCustomerPath","uploadSinature","signatureMechanicalPath","isLoadedFleet","selectTaskCategory","isLoadedWorkOrder","isLoadedSite","selectedItem","fleetItem","isLoadedWorkOrderTask","workOrderItem","clearField","isLoadedTaskCategory","handleLoadSite","handleLoadFleet","handleLoadTaskCategory","handleLoadWorkOrder","handleLoadWorkOrderTask","selectWorkOrderTask","handleInputTimeSheet","handleFilterWorkOrder","search","handleFilterWorkOrderTask","handleSignatureClick","handleClearSignature","convertBase64ToBlob","image","reject","imageBase64","file","newValue","valueStr","_component_StartTimeSheet","_component_el_option","_component_Vue3Signature","_sfc_main$8","dropdownJob","dropdownJobCost","loadingDropDownJob","loadingDropDownCostCode","listCurrentDivision","currentPayLocation","_u","itemDropdownJob","_F","_G","_H","_I","_J","searchDropDownCostCode","selectJob","isLoadedJobCost","selectCostCode","constCodeItem","isLoadedJob","handleLoadJob","handleLoadJobCost","_hoisted_18","_sfc_main$7","formRef","dropDownGlEntry","a","b","aNumber","bNumber","_sfc_main$6","standardizeTime","option","endTimeHours","startTimeHours","endTimeMinutes","totalStartTimeMinutes","startTimeMinutes","totalEndTimeMinutes","checkTimeInit","timeSheetHeader","timesheet","useTaskDetail","totalMins","displayButtonAddTask","currentTaskVisibleType","oldData","allTimesheetLine","timesheetOverlapCheckingEnable","taskTypeDisplay","showConfig","defaultTaskHeaderType","timesheetLineOptionInitData","initTimesheetLine","uuidv4","funcFindMaxMinTime","arrayList","convertList","taskA","taskB","shift","amStartTime","pmStartTime","amEndTime","pmEndTime","funcOverLap","hasOverlap","timesheetLines","sortedTasks","j","isInitStart1","isInitEnd1","isInitStart2","isInitEnd2","start1","end1","_K","_O","_R","start2","_V","_Z","_aa","_da","_ha","_ka","end2","_oa","_sa","_va","_ya","_Ca","_Fa","funcOverLapLevel","range1","range2","allTimesheetLines","allRanges","lines","checkOverlap","obj","calTotalTimeSheet","totalMinuets","shiftCheck","isOverlapLevel","task","endTimeInMinutes","endTimeFinalHour","endTimeFinalMinutes","endInit","startInit","startTimeInMinutes","newOption","updateTaskTime","additionValues","_M","handleTaskSubmit","resetTaskData","createTimeSheet","resultCheckTimeInit","loadTimeSheetEdit","timeSheetHeaderId","resultTimeSheetHeader","lineVisibleTypes","totalMinEdit","hourLine","minLine","additionInfo","timeSheetLine","lineVisibleType","taskVisibleType","updateLine","updateTimeSheet","objBefore","objAfter","CopyDocument","ArrowUp","allFieldIsValid","isTouchedSwitch","popupConfirmChangeType","popupConfirmDelete","popupError","popupConfirmChangeShift","overlapTime","clonedTaskInfos","messageValidTime","disabledDate","allTaskIsValid","removingTaskId","datePickerStartDate","selectTaskChangeType","handelExpendTask","handleSelectTabTask","handleOpenPopupChangeTaskType","handleErrorSwitchTaskType","addTask","maxEndTime","max","newTime","handleDuplicateTask","newTaskId","duptimesheet","newTimesheet","removeTask","handleRemoveTask","indexTimeSheetLine","onChangeTouched","getStatusValidTimeSheet","resetData","datePickerfocus","onConfirmChangeShift","onChangeShift","onChangeValidTime","messageError","handleCalendarChange","_hoisted_23","_hoisted_26","_hoisted_29","_hoisted_32","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_25","_component_RentalTask","_component_JobCostTask","_component_UnBilledTask","_hoisted_41","_sfc_main$4","useTaskPopup","dialogVisibleEditTask","totalHourMultipleTasks","StartTimeAM","EndTimePM","popupOverlap","popupOverlapLevel","nightShift","dayShift","isOpenPopupAddTask","totalHourSuper","isClickSubmit","dialogCheckCondition","onClickSave","passAllTaskIsValid","isAllowEdit","messageConfirm","onChangeEndTimePM","onChangeStartTimeAM","handleAllowEdit","handleMaxTimeMultipleTasks","handlePopupOverLap","handlePopupOverLapLevel","handleCheckNightShift","handleCheckDayShift","handleClosePopupConfirm","checkNightShiftMismatchWarning","textType","textIcon","colorIcon","checkDayShiftMismatchWarning","checkCurrentTimesheetTotalHours","checkOverlapWarning","checkTimesheetTotalHours","checkOverlapWarningLevel","checktotalHour","checkNight","checkDay","checkCurrentHour","checkTotalHours","checkOverlapLevel","refDetailTask","popupConfirmCloseTab","popupConfirmSubmit","popupConfirmSave","resetDefault","changeNightShiftFlag","handleSave","handleSaveCheckAndPopup","handleValidateForm","handlePopupSubmitTimeSheet","handleSubmitCheckAndPopup","handleCloseDialogTask","currentDay","handleChangeValidTimeTask","handleAllTaskIsValid","handleCloseSubmitTimeSheet","handleClickConfirmSubmit","handleSaveTimeSheet","handleCancelSubmit","_component_DetailTask","_sfc_main$2","isCollapse","widthOfBody","onResize","_directive_loading","_component_el_container","_component_BaseSide","_component_el_main","_component_UserForm","_sfc_main$1","_sfc_main","initialize","isAuthenticated","provide","toast","_component_DefaultLayout","LoginView","__vitePreload","DashboardView","DashboardListView","DashboardSuperEditView","ManualView","ProfileView","NotificationsView","ForgetPasswordView","ResetPasswordView","RegisterView","NotificationsSuperView","UsersView","ApprovalGroupsView","AccessDeniedView","TimesheetTrackingListView","UserTrackingsView","SettingsView","routes","createRouter","createWebHistory","to","from","p","CustomNavigationClient","NavigationClient","relativePath","navigationClient","accounts","EventType","account","app","createApp","App","ElementPlus","Vue3Signature","msg","vm","trace","registration","notificationSvc"],"sources":["../../vite/modulepreload-polyfill","../../src/layouts/IconBase.vue","../../src/core/constants.ts","../../src/core/env.ts","../../src/config/enviroments.ts","../../src/assets/avatar.png","../../src/authConfig.ts","../../src/utils/time.ts","../../src/modules/auth/store/state.ts","../../src/core/refreshTokenService.ts","../../src/core/service.ts","../../src/modules/auth/service/index.ts","../../src/modules/auth/store/types.ts","../../src/modules/auth/store/actions.ts","../../src/modules/auth/store/getters.ts","../../src/modules/auth/store/mutations.ts","../../src/modules/auth/store/index.ts","../../src/modules/dashboard/store/state.ts","../../src/modules/dashboard/service/index.ts","../../src/modules/dashboard/store/types.ts","../../src/modules/notifications/service/index.ts","../../src/modules/dashboard/store/actions.ts","../../src/modules/dashboard/store/getters.ts","../../src/modules/dashboard/store/mutations.ts","../../src/modules/dashboard/store/index.ts","../../src/modules/profile/store/state.ts","../../src/modules/profile/service/index.ts","../../src/modules/profile/store/actions.ts","../../src/modules/profile/store/getters.ts","../../src/modules/profile/store/mutations.ts","../../src/modules/profile/store/index.ts","../../src/modules/manual/store/state.ts","../../src/modules/manual/service/index.ts","../../src/modules/manual/store/actions.ts","../../src/modules/manual/store/getters.ts","../../src/modules/manual/store/mutations.ts","../../src/modules/manual/store/index.ts","../../src/modules/admin/groups/store/state.ts","../../src/modules/admin/groups/service/index.ts","../../src/modules/admin/groups/store/actions.ts","../../src/modules/admin/groups/store/getters.ts","../../src/modules/admin/groups/store/mutations.ts","../../src/modules/admin/groups/store/index.ts","../../src/modules/admin/users/store/state.ts","../../src/modules/admin/users/service/index.ts","../../src/modules/admin/users/store/actions.ts","../../src/modules/admin/users/store/getters.ts","../../src/modules/admin/users/store/mutations.ts","../../src/modules/admin/users/store/index.ts","../../src/modules/super/dashboard/store/state.ts","../../src/modules/super/dashboard/service/index.ts","../../src/modules/super/dashboard/store/types.ts","../../src/modules/super/dashboard/store/actions.ts","../../src/modules/super/dashboard/store/getters.ts","../../src/modules/super/dashboard/store/mutations.ts","../../src/modules/super/dashboard/store/index.ts","../../src/modules/super/timesheetTrackings/store/state.ts","../../src/modules/super/timesheetTrackings/service/index.ts","../../src/modules/super/timesheetTrackings/store/types.ts","../../src/modules/admin/users/store/types.ts","../../src/modules/super/timesheetTrackings/store/actions.ts","../../src/modules/super/timesheetTrackings/store/getters.ts","../../src/modules/super/timesheetTrackings/store/mutations.ts","../../src/modules/super/timesheetTrackings/store/index.ts","../../src/modules/settings/store/state.ts","../../src/modules/settings/service/index.ts","../../src/modules/settings/store/actions.ts","../../src/modules/settings/store/getters.ts","../../src/modules/settings/store/mutations.ts","../../src/modules/settings/store/index.ts","../../src/store/index.ts","../../src/utils/index.ts","../../src/layouts/components/BaseHeader.vue","../../src/firebase/firebase.ts","../../src/layouts/components/BaseSide.vue","../../src/components/TimePicker.vue","../../src/assets/icon_clock.svg","../../src/components/IconShowHidePwd.vue","../../src/modules/admin/users/views/components/PopupEmployee.vue","../../src/components/UserForm.vue","../../src/components/PopupConfirm.vue","../../src/components/GroupForm.vue","../../src/components/StartTimeSheet.vue","../../src/components/RentalTask.vue","../../src/components/JobCostTask.vue","../../src/components/UnBilledTask.vue","../../src/components/IconCalendar.vue","../../src/utils/taskDetail.ts","../../src/composables/useTaskDetail.ts","../../src/components/DetailTask.vue","../../src/components/PopupNightShiftPrompt.vue","../../src/composables/useTaskPopup.ts","../../src/components/AddNewTask.vue","../../src/layouts/default-layout.vue","../../src/layouts/default-layout-auth.vue","../../src/App.vue","../../src/router/routes.ts","../../src/router/index.ts","../../src/router/navigationClient.ts","../../src/main.ts"],"sourcesContent":["__VITE_IS_MODERN__&&(function polyfill() {\n const relList = document.createElement('link').relList;\n if (relList && relList.supports && relList.supports('modulepreload')) {\n return;\n }\n for (const link of document.querySelectorAll('link[rel=\"modulepreload\"]')) {\n processPreload(link);\n }\n new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type !== 'childList') {\n continue;\n }\n for (const node of mutation.addedNodes) {\n if (node.tagName === 'LINK' && node.rel === 'modulepreload')\n processPreload(node);\n }\n }\n }).observe(document, { childList: true, subtree: true });\n function getFetchOpts(script) {\n const fetchOpts = {};\n if (script.integrity)\n fetchOpts.integrity = script.integrity;\n if (script.referrerpolicy)\n fetchOpts.referrerPolicy = script.referrerpolicy;\n if (script.crossorigin === 'use-credentials')\n fetchOpts.credentials = 'include';\n else if (script.crossorigin === 'anonymous')\n fetchOpts.credentials = 'omit';\n else\n fetchOpts.credentials = 'same-origin';\n return fetchOpts;\n }\n function processPreload(link) {\n if (link.ep)\n // ep marker = processed\n return;\n link.ep = true;\n // prepopulate the load record\n const fetchOpts = getFetchOpts(link);\n fetch(link.href, fetchOpts);\n }\n}());","\r\n\r\n\r\n","export const AUTH_TOKEN_KEY = window.location.href.includes('timesheets.emecogroup') ? 'access-token' : 'dev-access-token'\r\nexport const ID_TOKEN_KEY = 'id-token'\r\nexport const REFRESH_TOKEN_KEY = 'refresh-token'\r\nexport const EXPIRE_TIME_KEY = 'expire-time'\r\nexport const LOGIN_ID_KEY = 'login-id'\r\nexport const TOKEN_EXPIRATION_TIME = 60 * 30\r\nexport const ID_TOKEN_EXPIRATION_TIME = 60 * 60\r\nexport const REFRESH_TOKEN_EXPIRATION_TIME = 60 * 60\r\nexport const DEFAULT_PAGE_SIZE = 10\r\nexport const seconds = 60\r\nexport const USER_TYPE_STAFF = 'Staff'\r\nexport const USER_TYPE_APPROVER = 'Approver'\r\nexport const USER_TYPE_SYSTEM_ADMINISTRATOR = 'System_Administrator'\r\nexport const USER_TYPE_USER_ADMINISTRATOR = 'User_Administrator'\r\nexport const DARK_THEME = 'dark';\r\nexport const LIGHT_THEME = 'light';\r\nexport const AUTO_THEME = 'auto';\r\n\r\nexport enum TASK_TYPES {\r\n Rental='Rental',\r\n JobCost='JobCost',\r\n UnBilled='UnBilled',\r\n }\r\n \r\nexport enum MESSAGE_CODES {\r\n MSG_SAVE_SUCCESS = 'Saved successfully',\r\n MSG_DELETE_SUCCESS = 'Deleted successfully',\r\n MSG_PLEASE_SELECT = 'Please select file to upload',\r\n ERR_SERVER = 'Internal server error',\r\n MSG_PLEASE_SELECT_USER = 'Please select user',\r\n MSG_EMAIL_EXIST = 'The specified email is being used by another account. Please use a different email.',\r\n MSG_AVATAR_TYPE = 'Avatar picture must be JPG/PNG format!',\r\n MSG_AVATAR_SIZE = 'Avatar picture size can not exceed 5MB!',\r\n MSG_AVATAR_IS_NOT_SQUARE = 'Avatar must be the square shape!',\r\n MSG_RESET_TO_DEFAULT_SUCCESS = 'Reset to default successfully',\r\n}\r\n\r\nexport enum MESSAGE_DIALOG_CONFIRM {\r\n MSG_DIALOG_LEVEL_1 = \"Want to\",\r\n MSG_DIALOG_LEVEL_2 = \"Are you sure you want to\",\r\n MSG_DIALOG_DEFAULT_LEVEL_1 = \"Deleting\",\r\n MSG_DIALOG_DEFAULT_LEVEL_2 = \"Your data will be deleted. Are you sure?\",\r\n MSG_DIALOG_BTN_NO = \"No\",\r\n MSG_DIALOG_BTN_DELETE = \"Delete\",\r\n\r\n}\r\n\r\nexport enum DATA_FORMAT {\r\n DATE_TIME_FM_1 = 'MMM DD, YYYY HH:mm'\r\n}\r\n\r\nexport enum USER_TYPE {\r\n STAFF = 0,\r\n APPROVER = 1,\r\n USER_ADMINISTRATOR = 2,\r\n SYSTEM_ADMINISTRATOR = 3,\r\n}\r\n\r\nexport enum TASK_TYPES_VALUE {\r\n All = 0,\r\n Rental = 1,\r\n JobCost = 2,\r\n}\r\n\r\nexport const TASK_TYPE_LISTS = [\r\n {\r\n Label: 'All',\r\n Value: TASK_TYPES_VALUE.All\r\n },\r\n {\r\n Label: 'Rental',\r\n Value: TASK_TYPES_VALUE.Rental\r\n },\r\n {\r\n Label: 'Job Cost',\r\n Value: TASK_TYPES_VALUE.JobCost\r\n }\r\n]","/* eslint-disable no-unused-vars */\r\nimport has from 'lodash/has'\r\nimport trim from 'lodash/trim'\r\n\r\nconst metaEnv: any = import.meta.env\r\n\r\ntype EnvFunc = (key: string, defaultValue?: T) => T\r\ntype Utils = {\r\n string: (key: string, defaultValue?: string) => string | undefined\r\n int: (key: string, defaultValue?: number) => number | undefined\r\n float: (key: string, defaultValue?: number) => number | undefined\r\n bool: (key: string, defaultValue?: boolean) => boolean | undefined\r\n json: (key: string, defaultValue?: T) => T | undefined\r\n array: (key: string, defaultValue?: string[]) => string[] | undefined\r\n date: (key: string, defaultValue?: Date) => Date | undefined\r\n}\r\n\r\nconst utils: Utils = {\r\n /**\r\n * Get string from environment\r\n *\r\n * @param key string\r\n * @param defaultValue string\r\n * @returns string\r\n */\r\n string(key: string, defaultValue?: string): string | undefined {\r\n return has(metaEnv, key) ? metaEnv[key] : defaultValue\r\n },\r\n\r\n /**\r\n * Get integer from environment\r\n *\r\n * @param key string\r\n * @param defaultValue integer number\r\n * @returns integer number\r\n */\r\n int(key: string, defaultValue?: number): number | undefined {\r\n if (!has(metaEnv, key)) {\r\n return defaultValue\r\n }\r\n\r\n const value = metaEnv[key] || ''\r\n return parseInt(value, 10)\r\n },\r\n\r\n /**\r\n * Get float from environment\r\n *\r\n * @param key string\r\n * @param defaultValue float number\r\n * @returns float number\r\n */\r\n float(key: string, defaultValue?: number): number | undefined {\r\n if (!has(metaEnv, key)) {\r\n return defaultValue\r\n }\r\n\r\n const value = metaEnv[key] || ''\r\n return parseFloat(value)\r\n },\r\n\r\n /**\r\n * Get boolean from environment\r\n *\r\n * @param key string\r\n * @param defaultValue boolean\r\n * @returns boolean\r\n */\r\n bool(key: string, defaultValue?: boolean): boolean | undefined {\r\n if (!has(metaEnv, key)) {\r\n return defaultValue\r\n }\r\n\r\n const value = metaEnv[key]\r\n return value === 'true'\r\n },\r\n\r\n /**\r\n * Get JSON object from environment\r\n *\r\n * @param key string\r\n * @param defaultValue string\r\n * @returns object\r\n */\r\n json(key: string, defaultValue?: T): T | undefined {\r\n if (!has(metaEnv, key)) {\r\n return defaultValue\r\n }\r\n\r\n const value = metaEnv[key] || ''\r\n try {\r\n return JSON.parse(value)\r\n } catch (error: any) {\r\n throw new Error(`Invalid json environment variable ${key}: ${error.message}`)\r\n }\r\n },\r\n\r\n /**\r\n * Get string array from environment\r\n *\r\n * @param key string\r\n * @param defaultValue string[]\r\n * @returns string[]\r\n */\r\n array(key: string, defaultValue?: string[]): string[] | undefined {\r\n if (!has(metaEnv, key)) {\r\n return defaultValue\r\n }\r\n\r\n let value = metaEnv[key] || ''\r\n\r\n if (value.startsWith('[') && value.endsWith(']')) {\r\n value = value.substring(1, value.length - 1)\r\n }\r\n\r\n return value.split(',').map((v: string) => trim(trim(v, ' '), '\"'))\r\n },\r\n\r\n /**\r\n * Get Date object from environment\r\n *\r\n * @param key string\r\n * @param defaultValue Date\r\n * @returns Date\r\n */\r\n date(key: string, defaultValue?: Date): Date | undefined {\r\n if (!has(metaEnv, key)) {\r\n return defaultValue\r\n }\r\n\r\n const value = metaEnv[key] || ''\r\n return new Date(value)\r\n },\r\n}\r\n\r\n/**\r\n * Get data from environment\r\n *\r\n * @param key string\r\n * @param defaultValue \r\n * @returns T\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction env(key: string, defaultValue?: any) {\r\n return has(metaEnv, key) ? metaEnv[key] : defaultValue\r\n}\r\n\r\nexport default Object.assign(env, utils)\r\n","import env from \"core/env\";\r\n\r\nexport const imageEndpoint: string = env(\"VITE_VUE_APP_IMAGE_ENDPOINT\") ?? \"\";\r\n\r\nexport const firebaseConfig = {\r\n apiKey: \"AIzaSyA6SZbGnRKB5Uo3z-B_yjQT6S8fPnn8roE\",\r\n authDomain: \"emeco-timesheets-prod.firebaseapp.com\",\r\n projectId: \"emeco-timesheets-prod\",\r\n storageBucket: \"emeco-timesheets-prod.appspot.com\",\r\n messagingSenderId: \"339673293686\",\r\n appId: \"1:339673293686:web:ff2671af63b343640a1057\",\r\n measurementId: \"G-ZQSV22BWES\",\r\n};\r\n","export default \"__VITE_ASSET__ee1cdae8__\"","import { BrowserCacheLocation, Configuration, LogLevel, PublicClientApplication } from \"@azure/msal-browser\";\r\nimport env from \"./core/env\";\r\n\r\n// Config object to be passed to Msal on creation\r\nconst msalConfig: Configuration = {\r\n auth: {\r\n clientId:\r\n env('VITE_VUE_APP_MSAL_CLIENT_ID') ?? '91a3dbda-0af0-40cd-a33a-feaf1587c581',\r\n authority:\r\n env('VITE_VUE_APP_MSAL_AUTHORITY') ??\r\n 'https://etsidentitiesprod.b2clogin.com/etsidentitiesprod.onmicrosoft.com/B2C_1_SignIn',\r\n redirectUri:\r\n env('VITE_VUE_APP_MSAL_REDIRECT_URI') ?? 'https://103.153.73.223/callback',\r\n postLogoutRedirectUri: env('VITE_VUE_APP_MSAL_REDIRECT_LOGOUT_URI') ?? '/login',\r\n knownAuthorities: ['etsidentitiesprod.b2clogin.com'],\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.LocalStorage,\r\n storeAuthStateInCookie: true,\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback: (\r\n level: LogLevel,\r\n message: string,\r\n containsPii: boolean\r\n ) => {\r\n if (containsPii) {\r\n return;\r\n }\r\n switch (level) {\r\n case LogLevel.Error:\r\n console.error(message);\r\n return;\r\n case LogLevel.Info:\r\n // console.info(message);\r\n return;\r\n case LogLevel.Verbose:\r\n // console.debug(message);\r\n return;\r\n case LogLevel.Warning:\r\n // console.warn(message);\r\n return;\r\n default:\r\n return;\r\n }\r\n },\r\n logLevel: LogLevel.Verbose,\r\n },\r\n },\r\n};\r\n\r\nexport const msalInstance = new PublicClientApplication(msalConfig);\r\n\r\n// Add here scopes for id token to be used at MS Identity Platform endpoints.\r\nexport const loginRequest = {\r\n scopes: ['openid profile'],\r\n};\r\n\r\n\r\n/**\r\n * Scopes you add here will be used to request a token from Azure AD B2C to be used for accessing a protected resource.\r\n * To learn more about how to work with scopes and resources, see:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md\r\n */\r\n\r\nexport const tokenRequest = {\r\n scopes: ['https://etsidentitiesprod.onmicrosoft.com/api/System.Admin', \r\n 'https://etsidentitiesprod.onmicrosoft.com/api/Timesheet.Submit',\r\n 'https://etsidentitiesprod.onmicrosoft.com/api/Timesheet.Approve',\r\n 'https://etsidentitiesprod.onmicrosoft.com/api/Timesheet.Review',\r\n 'https://etsidentitiesprod.onmicrosoft.com/api/User.Manage',\r\n 'https://etsidentitiesprod.onmicrosoft.com/api/System.Admin',\r\n 'openid', 'profile', 'offline_access'],\r\n forceRefresh: true, // Set this to \"true\" to skip a cached token and go to the server to get a new token\r\n};\r\n\r\n\r\n// Add here the endpoints for MS Graph API services you would like to use.\r\nexport const graphConfig = {\r\n graphMeEndpoint: 'https://graph.microsoft.com/v1.0/me',\r\n};","import moment from 'moment';\r\n\r\nexport const getHoursAndMinutes = (totalMinutes : number, timesheetLineMinutes?: number) => {\r\n if (totalMinutes == null) {\r\n return {\r\n hours: 12,\r\n minutes: 0,\r\n isAm: true,\r\n isInit: true \r\n }\r\n }\r\n if (totalMinutes == 1440 || totalMinutes == 0) {\r\n return {\r\n hours: 12,\r\n minutes: 0,\r\n isAm: true,\r\n isInit: false\r\n }\r\n }\r\n if (totalMinutes < 60) {\r\n return {\r\n hours: 12,\r\n minutes: totalMinutes % 60,\r\n isAm: true,\r\n isInit: false\r\n }\r\n }\r\n\r\n if (Math.floor(totalMinutes / 60) > 12) {\r\n return {\r\n hours: Math.floor(totalMinutes / 60),\r\n minutes: totalMinutes % 60,\r\n isAm: Math.floor(totalMinutes / 60) < 12,\r\n isInit: false\r\n }\r\n }\r\n\r\n return {\r\n hours: Math.floor(totalMinutes / 60),\r\n minutes: totalMinutes % 60,\r\n isAm: Math.floor(totalMinutes / 60) < 12,\r\n isInit: false\r\n }\r\n}\r\n\r\nexport function convertMinutesToHours(minutes: number) {\r\n let hours = minutes / 60;\r\n return parseFloat(hours.toFixed(2));\r\n}\r\n\r\nexport const formatDate = (date: string) => {\r\n return moment(date).format('HH:mm, DD MMM YYYY')\r\n}\r\n\r\nexport const formatDateLocale = (date: string) => {\r\n return moment(date).format('DD/MM/YYYY HH:mm')\r\n}\r\n\r\nexport const formatOnlyDate = (date: string) => {\r\n const parsedDate = moment(date, 'MMM D, YYYY');\r\n return parsedDate.format('DD/MM/YYYY')\r\n}\r\n\r\nexport const formatOnlyHours = (totalHours: number) => {\r\n // 1.1 -> 01h01m\r\n const hours = Math.floor(totalHours);\r\n const minutes = Math.round((totalHours - hours) * 60);\r\n return `${hours.toString().padStart(2, '0')}h${minutes.toString().padStart(2, '0')}m`;\r\n}\r\n\r\nexport const getTimezone = () => {\r\n const currentDate = new Date();\r\n const timezoneOffset = currentDate.getTimezoneOffset();\r\n const hours = Math.abs(Math.floor(timezoneOffset / 60));\r\n return timezoneOffset >= 0 ? -hours : hours;\r\n}\r\n","import { AuthState } from './types'\r\nimport { AUTH_TOKEN_KEY } from '../../../core/constants'\r\n\r\nexport const state: AuthState = {\r\n isAuthenticated: !!localStorage.getItem(AUTH_TOKEN_KEY) || sessionStorage.getItem(AUTH_TOKEN_KEY),\r\n currentUser: {},\r\n allFieldIsValid: false\r\n}\r\n\r\n","import axios from 'axios';\r\nimport env from './env'\r\n\r\nexport const refreshTokenInstance = axios.create({\r\n baseURL: env('VITE_SERVICE_ENDPOINT'),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n});","import axios from 'axios'\r\nimport type { AxiosInstance, AxiosRequestConfig, Method, AxiosError } from 'axios'\r\nimport {\r\n AUTH_TOKEN_KEY,\r\n ID_TOKEN_KEY,\r\n LOGIN_ID_KEY,\r\n EXPIRE_TIME_KEY,\r\n REFRESH_TOKEN_KEY,\r\n} from './constants'\r\nimport env from './env'\r\nimport store from 'store'\r\nimport { loginRequest, msalInstance, tokenRequest } from \"../authConfig\";\r\nimport { autoForceLogout, autoRefreshToken, checkTokenExpire, getCookie, isAuthenticated } from '../utils'\r\nimport { InteractionType } from '@azure/msal-browser'\r\nimport { refreshTokenInstance } from './refreshTokenService'\r\n\r\n// const { cookies } = useCookies()\r\naxios.interceptors.request.use(async (req: any) => {\r\n const token = localStorage.getItem(AUTH_TOKEN_KEY) || sessionStorage.getItem(AUTH_TOKEN_KEY);\r\n const isTokenExpire = checkTokenExpire(token);\r\n if(!token) return req\r\n if (!isTokenExpire) return req\r\n if(sessionStorage.getItem(AUTH_TOKEN_KEY)) {\r\n return req\r\n }\r\n try {\r\n const refreshToken = getCookie(REFRESH_TOKEN_KEY)\r\n const response:any = await refreshTokenInstance.post('auth/refresh-token', { refreshToken: refreshToken })\r\n req.headers.Authorization = `Bearer ${response.data.access_token}`\r\n localStorage.setItem(AUTH_TOKEN_KEY, response.data.access_token);\r\n } catch (error) {\r\n localStorage.setItem(AUTH_TOKEN_KEY, '');\r\n document.cookie = `${REFRESH_TOKEN_KEY}=`;\r\n window.location.href = '/login';\r\n }\r\n return req\r\n})\r\naxios.interceptors.response.use(\r\n (response) => Promise.resolve(response),\r\n (error) => {\r\n if (error?.response.status === 403) {\r\n if (error?.response.data.message === \"Your account has been disabled. Contact your support person to enable it, then try again.\") {\r\n localStorage.setItem(AUTH_TOKEN_KEY, '');\r\n sessionStorage.setItem(AUTH_TOKEN_KEY, '');\r\n // msalInstance.logoutRedirect()\r\n }\r\n\r\n if (error?.response.data.message === \"You need to log in again to access\") {\r\n autoForceLogout()\r\n }\r\n }\r\n\r\n if (error?.response.status === 403 && !window.location.pathname.includes('login')) {\r\n return store.commit('SET_OPEN_POPUP_TIMEOUT', true)\r\n }\r\n\r\n if (error?.response.status === 401) {\r\n autoRefreshToken()\r\n }\r\n\r\n return Promise.reject(error)\r\n },\r\n)\r\naxios.defaults.headers.post['Content-Type'] = 'application/json'\r\n\r\nfunction toQueryString(params: { [key: string]: any } = {}) {\r\n const keys: string[] = Object.keys(params || {})\r\n const segments: string[] = []\r\n keys.forEach((k) => {\r\n if (params[k] || params[k] === 0) {\r\n\r\n segments.push(`${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`)\r\n }\r\n })\r\n\r\n return segments.join('&')\r\n}\r\n\r\nexport interface ServiceOptions {\r\n namespace?: string\r\n scope?: string\r\n endpoint?: string\r\n axios?: AxiosRequestConfig\r\n}\r\n\r\nconst defaultOptions: ServiceOptions = {\r\n namespace: undefined,\r\n endpoint: env('VITE_SERVICE_ENDPOINT'),\r\n axios: {},\r\n}\r\n\r\nexport default class Service {\r\n axios: AxiosInstance\r\n\r\n private headers: any\r\n\r\n private options: ServiceOptions = { ...defaultOptions }\r\n\r\n private token: string | null = ''\r\n\r\n /**\r\n * Creates an instance of Service.\r\n *\r\n * @memberOf Service\r\n */\r\n constructor(options?: ServiceOptions) {\r\n this.options = { ...defaultOptions, ...options }\r\n const baseURL = this.options.endpoint || env('VITE_SERVICE_ENDPOINT')\r\n this.axios = axios.create({\r\n baseURL,\r\n ...this.options.axios,\r\n })\r\n // this.token = cookies.get(AUTH_TOKEN_KEY)\r\n }\r\n\r\n /**\r\n * Call a service action via REST API\r\n *\r\n * @param {any} action name of action\r\n * @param {any} params parameters to request\r\n * @returns {Promise}\r\n *\r\n * @memberOf Service\r\n */\r\n public async rest

(\r\n action: string,\r\n params?: P,\r\n options = {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n method: 'post',\r\n },\r\n ) {\r\n const { headers } = options\r\n try {\r\n this.token = localStorage.getItem(AUTH_TOKEN_KEY) || sessionStorage.getItem(AUTH_TOKEN_KEY)\r\n // const isTokenExpire = checkTokenExpire(this.token);\r\n\r\n // const request = {\r\n // ...loginRequest,\r\n // };\r\n\r\n // if(isTokenExpire){\r\n // await isAuthenticated(\r\n // msalInstance,\r\n // InteractionType.Redirect,\r\n // request\r\n // );\r\n // const response = await msalInstance.acquireTokenSilent({\r\n // ...tokenRequest,\r\n // });\r\n // this.token = response.accessToken\r\n // localStorage.setItem(AUTH_TOKEN_KEY, response.accessToken);\r\n // }\r\n\r\n\r\n const opts: AxiosRequestConfig = {\r\n url: action.startsWith(\"http\") ? action : `${env('VITE_SERVICE_ENDPOINT')}${action}`,\r\n method: options.method as Method,\r\n data: JSON.stringify(params),\r\n headers: {\r\n ...(this.headers || {}),\r\n ...headers,\r\n Authorization: this.token ? `Bearer ${this.token}` : '',\r\n },\r\n }\r\n const response = await axios.request(opts)\r\n return response.data\r\n } catch (err) {\r\n throw (err as AxiosError).response\r\n }\r\n }\r\n\r\n public get

(action: string, params?: P, options: any = {}) {\r\n const { headers = {} } = options\r\n let query = ''\r\n if (params) {\r\n query = toQueryString(params)\r\n }\r\n const path = query ? `${action}?${query}` : action\r\n return this.rest(\r\n path,\r\n {},\r\n {\r\n method: 'get',\r\n headers,\r\n },\r\n )\r\n }\r\n\r\n public post(action: string, params?: any, options: any = {}) {\r\n const { headers = {} } = options\r\n return this.rest(action, params, {\r\n method: 'post',\r\n headers,\r\n })\r\n }\r\n\r\n public put(action: string, params?: any, options?: any) {\r\n return this.rest(action, params, {\r\n method: 'put',\r\n baseURL: `${env('VITE_SERVICE_ENDPOINT')}`,\r\n ...options,\r\n headers: {\r\n Authorization: this.token ? `Bearer ${this.token}` : '',\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n }\r\n\r\n public patch(action: string, params?: any, options?: any) {\r\n return this.rest(action, params, {\r\n method: 'Patch',\r\n baseURL: `${env('VITE_SERVICE_ENDPOINT')}`,\r\n ...options,\r\n headers: {\r\n Authorization: this.token ? `Bearer ${this.token}` : '',\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n }\r\n public delete(action: string, params?: any, options: any = {}) {\r\n const { headers = {} } = options\r\n const query = toQueryString(params)\r\n const path = query ? `${action}/${query}` : action\r\n return this.rest(\r\n path,\r\n {},\r\n {\r\n method: 'delete',\r\n headers,\r\n },\r\n )\r\n }\r\n\r\n /**\r\n * POST FORM DATA FILE\r\n * @param action \r\n * @param data \r\n * @param options \r\n */\r\n public async postFormData(action: string, data: any, options: any = {}) {\r\n this.token = localStorage.getItem(AUTH_TOKEN_KEY) || sessionStorage.getItem(AUTH_TOKEN_KEY)\r\n var config = {\r\n method: 'POST',\r\n url: `${env('VITE_SERVICE_ENDPOINT')}${action}`,\r\n ...options,\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n Authorization: this.token ? `Bearer ${this.token}` : '',\r\n },\r\n data: data\r\n };\r\n\r\n return await axios(config).then(function (response) {\r\n if (response.status == 200 || response.status == 201) {\r\n return response.data;\r\n }\r\n })\r\n .catch(function (error) {\r\n throw (error as AxiosError).response\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Download file function\r\n * @param action \r\n * @param params \r\n * @param options \r\n * @returns \r\n */\r\n public async downloadFile

(action: string, params?: P, options: any = {}) {\r\n this.token = localStorage.getItem(AUTH_TOKEN_KEY) || sessionStorage.getItem(AUTH_TOKEN_KEY)\r\n var config = {\r\n method: 'GET',\r\n url: `${env('VITE_SERVICE_ENDPOINT')}${action}`,\r\n ...options,\r\n headers: {\r\n Authorization: this.token ? `Bearer ${this.token}` : '',\r\n },\r\n // responseType: 'blob',\r\n };\r\n\r\n return await axios(config)\r\n\r\n .catch(function (error) {\r\n throw (error as AxiosError).response\r\n });\r\n\r\n }\r\n // public async renewToken() {\r\n // store.commit('SET_LOADING', true)\r\n // return axios\r\n // .post(`${env('VITE_SERVICE_ENDPOINT')}/admin/renew-token`, {\r\n // loginId: cookies.get(LOGIN_ID_KEY),\r\n // id_token: cookies.get(ID_TOKEN_KEY),\r\n // refresh_token: cookies.get(REFRESH_TOKEN_KEY),\r\n // })\r\n // .then((res) => {\r\n // if (res.data.data) {\r\n // const { data } = res.data\r\n // store.dispatch('auth/actSetToken', {\r\n // idToken: data.id_token,\r\n // accessToken: data.access_token,\r\n // refreshToken: data.refresh_token,\r\n // })\r\n // this.token = cookies.get(AUTH_TOKEN_KEY)\r\n // }\r\n // })\r\n // .catch(() => store.dispatch('auth/actLogout'))\r\n // .finally(() => store.commit('SET_LOADING', false))\r\n // }\r\n}\r\n","import Service from 'core/service'\r\nimport { CurrentUserModel } from '../store/types'\r\nimport { AxiosError } from 'axios';\r\nexport class AuthService extends Service {\r\n me(): Promise {\r\n return this.get('/auth/me')\r\n }\r\n login(body: any, options: any): Promise {\r\n return this.post(\"/auth/login\", body, options);\r\n }\r\n forgotPassword(body: any, options: any): Promise {\r\n return this.post(\"/auth/forgot-password\", body, options);\r\n }\r\n verifyCode(body: any, options: any): Promise {\r\n return this.post(\"/auth/verify-code\", body, options);\r\n }\r\n resetPassword(body: any, options: any): Promise {\r\n return this.post(\"/auth/new-password\", body, options);\r\n }\r\n resendCode(body: any, options: any): Promise {\r\n return this.post(\"/auth/resend-code\", body, options);\r\n }\r\n refreshToken(body: any, options: any): Promise {\r\n return this.post(\"/auth/refresh-token\", body, options);\r\n }\r\n}\r\n\r\n","export interface AuthState {\r\n isAuthenticated: boolean,\r\n currentUser: CurrentUserModel,\r\n allFieldIsValid: boolean,\r\n}\r\n \r\nexport interface CurrentUserModel {\r\n userId?: string;\r\n firstName?: string;\r\n lastName?: string;\r\n email?: string;\r\n userType?: string;\r\n taskType?: number;\r\n approvalGroups?: any[];\r\n approvalUsers?: any[];\r\n scopes?: string[];\r\n userStatus?: string;\r\n hasProfile?: boolean;\r\n defaultStartTime?: string;\r\n payLocation?: string;\r\n division?: string|any[];\r\n}\r\n \r\n\r\nexport const SET_USER = 'SET_USER'\r\nexport const SET_IS_VALID = 'SET_IS_VALID'\r\n","import { AUTH_TOKEN_KEY, REFRESH_TOKEN_KEY } from \"core/constants\";\r\nimport { RootState } from \"store\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { AuthService } from \"../service\";\r\nimport { AuthState, CurrentUserModel, SET_USER } from \"./types\";\r\nconst service = new AuthService()\r\nexport const actions: ActionTree = {\r\n actClearToken({ commit }) {\r\n localStorage.removeItem(AUTH_TOKEN_KEY);\r\n },\r\n actSetToken({ commit }, params: any) {\r\n if(params.rememberMe) {\r\n localStorage.setItem(AUTH_TOKEN_KEY, params.token);\r\n }\r\n else {\r\n sessionStorage.setItem(AUTH_TOKEN_KEY, params.token);\r\n }\r\n },\r\n actSetRefreshToken({ commit }, token: string) {\r\n document.cookie = `${REFRESH_TOKEN_KEY}=${token}`;\r\n },\r\n async actGetMe({commit}){\r\n try {\r\n const currentUser = await service.me()\r\n commit(SET_USER, currentUser)\r\n return currentUser\r\n } catch (error) {\r\n return null\r\n }\r\n },\r\n async actLogin({ commit }, params: any, options?: any) {\r\n if(params){\r\n const data = await service.login(params, options);\r\n return data;\r\n }\r\n },\r\n async actForgotPassword({ commit }, params: any, options?: any) {\r\n if(params){\r\n const data = await service.forgotPassword(params, options);\r\n return data;\r\n }\r\n },\r\n async actVerifyCode({ commit }, params: any, options?: any) {\r\n if(params){\r\n const data = await service.verifyCode(params, options);\r\n return data;\r\n }\r\n },\r\n async actResetPassword({ commit }, params: any, options?: any) {\r\n if(params){\r\n const data = await service.resetPassword(params, options);\r\n return data;\r\n }\r\n },\r\n async actResendCode({ commit }, params: any, options?: any) {\r\n if(params){\r\n const data = await service.resendCode(params, options);\r\n return data;\r\n }\r\n },\r\n async actRefreshToken({ commit }, params: any, options?: any) {\r\n if(params){\r\n const data = await service.refreshToken(params, options);\r\n return data;\r\n }\r\n },\r\n};\r\n","import { GetterTree } from 'vuex'\r\nimport { RootState } from 'store'\r\nimport { AuthState } from './types'\r\nimport { AUTH_TOKEN_KEY } from 'core/constants'\r\n\r\nexport const getters: GetterTree = {\r\n isAuthenticated: (state: AuthState) => {\r\n var token =localStorage.getItem(AUTH_TOKEN_KEY) || sessionStorage.getItem(AUTH_TOKEN_KEY);\r\n if(!token){\r\n return false;\r\n }else{\r\n const base64Url = token.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n }).join(''));\r\n const jwtPayload = JSON.parse(jsonPayload);\r\n if (jwtPayload.exp < Date.now()/1000) {\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n }\r\n },\r\n currentUser:(state: AuthState) => state.currentUser,\r\n allFieldIsValid:(state: AuthState) => state.allFieldIsValid,\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { AuthState, CurrentUserModel, SET_USER, SET_IS_VALID } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n [SET_USER](state: AuthState, user: CurrentUserModel) {\r\n state.currentUser = user;\r\n },\r\n [SET_IS_VALID](state: AuthState, data: boolean ) {\r\n state.allFieldIsValid = data;\r\n },\r\n};\r\n","import { Module } from 'vuex'\r\nimport { state } from './state'\r\nimport { actions } from './actions'\r\nimport { getters } from './getters'\r\nimport { mutations } from './mutations'\r\nimport { RootState } from 'store'\r\nimport { AuthState } from './types'\r\n\r\nexport const auth: Module = {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n}\r\n\r\n","import { DashboardState } from './types'\r\n\r\nexport const state: DashboardState = {\r\n dropdownSite: [],\r\n action: undefined,\r\n timeSheets: [],\r\n countTimeSheetStatus: {\r\n total: 0,\r\n totalApproved: 0,\r\n totalCanceled: 0,\r\n totalDraft: 0,\r\n totalPendingApproved: 0,\r\n totalDeclined: 0\r\n },\r\n filterTimeSheet: {},\r\n countNotiUnRead: 0,\r\n loading: false,\r\n isEditAddTask: false,\r\n totalHour: 0,\r\n timeSheetsLine: []\r\n}","import { AxiosError } from 'axios';\r\nimport Service from 'core/service'\r\n\r\nconst PAGE_SIZE = 25;\r\nexport class DashboardService extends Service {\r\n createTimeSheet(data: TimeSheetHeader){\r\n return this.post('/Timesheet',data)\r\n }\r\n\r\n fetchTimeSheet(expand?: string, filter?: string, pageSize: number = PAGE_SIZE, currentPage: number = 1){\r\n let params: any = {\r\n '$orderby': 'CreatedOn desc'\r\n };\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n if(filter){\r\n params[\"$filter\"] = filter;\r\n }\r\n params[\"$top\"] = pageSize;\r\n params[\"$skip\"] = currentPage == 1 ? 0 : (currentPage - 1) * pageSize;\r\n return this.get(\"/Timesheet\", params);\r\n }\r\n\r\n fetchTimeSheetById(id:number, expand?: string, select?: string){\r\n let params: any = {\r\n };\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n if (select) {\r\n params[\"$select\"] = select;\r\n }\r\n return this.get(`/Timesheet(${id})`, params);\r\n }\r\n\r\n countTimeSheetByStatus(filter?: string){\r\n let params: any = {\r\n $count: true\r\n };\r\n params[\"$top\"] = 0\r\n if (filter) {\r\n params[\"$filter\"] = filter;\r\n }\r\n return this.get(\"/Timesheet\", params);\r\n }\r\n\r\n updateTimeSheet(dataUpdate: any){\r\n return this.patch(`/Timesheet(${dataUpdate.Id})`, dataUpdate)\r\n }\r\n\r\n fetchTimesheetEvent(expand?: string, filter?: string){\r\n let params: any = {\r\n '$orderby': 'TimesheetEventDateTime desc'\r\n };\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n if (filter) {\r\n params[\"$filter\"] = filter;\r\n }\r\n return this.get(\"/TimesheetEvent\", params);\r\n }\r\n\r\n async fetchAllTimesheet(expand: string, filterStr?: string, params?: any){\r\n const response = await this.fetchTimeSheet(expand, filterStr, PAGE_SIZE, params?.page ?? 1);\r\n return response.value;\r\n }\r\n\r\n async uploadSignature (formData: any): Promise {\r\n try {\r\n return this.postFormData(\"/Timesheet/UploadSignature\", formData);\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n\r\n async getBase64FromUrl(url: string) {\r\n const data = await this.get(url);\r\n const blob = await data.blob();\r\n return new Promise((resolve) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onloadend = () => {\r\n const base64data = reader.result;\r\n resolve(base64data);\r\n }\r\n });\r\n }\r\n\r\n async fetchTotalTimesheet(selectProps: string, expand: string, filter?: string, pageSize: number = 100, currentPage: number = 1){\r\n let params: any = {\r\n '$orderby': 'CreatedOn desc',\r\n $select: selectProps,\r\n };\r\n if(filter){\r\n params[\"$filter\"] = filter;\r\n }\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n params[\"$top\"] = pageSize;\r\n params[\"$skip\"] = currentPage == 1 ? 0 : (currentPage - 1) * pageSize;\r\n return this.get(\"/Timesheet\", params);\r\n }\r\n}\r\n\r\n","export interface DashboardState {\r\n dropdownSite: Equipment[]\r\n action?: Actions\r\n timeSheets?: TimeSheetHeader[]\r\n timeSheetEvents?: [],\r\n countNotiUnRead?: number,\r\n countTimeSheetStatus: CountTimeSheetStatus\r\n filterTimeSheet: FilterTimeSheet,\r\n loading: boolean,\r\n isEditAddTask: boolean,\r\n totalHour: number,\r\n timeSheetsLine: any[];\r\n}\r\n\r\nexport enum Actions {\r\n SAVE = 'SAVE',\r\n UPDATE = 'UPDATE',\r\n UPDATE_CONFIRM = 'UPDATE_CONFIRM',\r\n CONFIRM = 'CONFIRM',\r\n}\r\n\r\nexport interface CountTimeSheetStatus {\r\n totalDraft: number,\r\n total: number,\r\n totalApproved: number,\r\n totalPendingApproved: number,\r\n totalCanceled: number,\r\n totalDeclined: number,\r\n}\r\n\r\nexport const timeSheetStatusName = Object.freeze({\r\n 0: 'Draft',\r\n 1: 'Pending',\r\n 2: 'Approved',\r\n 3: 'Declined',\r\n 4: 'Recalled',\r\n 5: 'Cancelled',\r\n})\r\n\r\nexport interface FilterTimeSheet {\r\n fromDay?: string,\r\n toDay?: string,\r\n timeSheetStatus?: number,\r\n timeSheetId?: string,\r\n divisionJob?: string,\r\n}\r\n\r\nexport const SET_DROPDOWN_SITE = 'SET_DROPDOWN_SITE'\r\nexport const SET_ACTION_TIME_SHEET = 'SET_ACTION_TIME_SHEET'\r\nexport const SET_LIST_TIME_SHEET = 'SET_LIST_TIME_SHEET'\r\nexport const SET_COUNT_TIME_SHEET_STATUS = 'SET_COUNT_TIME_SHEET_STATUS'\r\nexport const SET_LIST_TIME_SHEET_EVENT = 'SET_LIST_TIME_SHEET_EVENT'\r\nexport const SET_COUNT_NOTI_UNREAD = 'SET_COUNT_NOTI_UNREAD'\r\nexport const SET_FILTER_TIME_SHEET = 'SET_FILTER_TIME_SHEET'\r\nexport const SET_LOADING_NOTI = 'SET_LOADING_NOTI'\r\nexport const SET_IS_EDIT_ADD_TASK = 'SET_IS_EDIT_ADD_TASK'\r\nexport const SET_TOTAL_HOUR_TIME_SHEET = 'SET_TOTAL_HOUR_TIME_SHEET'\r\nexport const SET_LIST_TIME_SHEET_LINE = 'SET_LIST_TIME_SHEET_LINE'","import Service from \"core/service\";\r\nexport class NotificationService extends Service {\r\n fetchNotification(\r\n currentPage: number,\r\n pageSize: number,\r\n expand?: string,\r\n filter?: string,\r\n orderby?: string,\r\n count: boolean = false,\r\n ) {\r\n let params: any = {\r\n \"$expand\": \"TimesheetHeader($expand=Approver, User), User, ActorUser\",\r\n \"$orderby\": 'TimesheetNotificationDateTime desc'\r\n };\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n if (filter) {\r\n params[\"$filter\"] = filter;\r\n }\r\n if (orderby) {\r\n params[\"$orderby\"] = orderby;\r\n }\r\n if (count) {\r\n params[\"$count\"] = true;\r\n params[\"$top\"] = pageSize;\r\n params[\"$skip\"] = currentPage == 1 ? 0 : (currentPage - 1) * pageSize;\r\n }\r\n return this.get(\"/TimesheetNotification\", params);\r\n }\r\n\r\n fetchCountNotiUnRead(\r\n ) {\r\n let params: any = {\r\n \"$filter\": \"IsRead eq false\",\r\n \"$orderby\": 'TimesheetNotificationDateTime desc'\r\n };\r\n return this.get(\"/TimesheetNotification/$count\", params);\r\n }\r\n\r\n markAllRead(\r\n ) {\r\n return this.post(\"/TimesheetNotification/MarkAllRead\");\r\n }\r\n\r\n updateNotification(dataUpdate: any) {\r\n return this.patch(`/TimesheetNotification/${dataUpdate.Id}`, {\r\n IsRead: dataUpdate.IsRead\r\n });\r\n }\r\n\r\n registerToken(data: any) {\r\n return this.post(`/NotificationHub`, data);\r\n }\r\n}\r\n","import { RootState } from \"store\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { DashboardService } from \"../service\";\r\nimport {\r\n DashboardState,\r\n FilterTimeSheet,\r\n SET_COUNT_NOTI_UNREAD,\r\n SET_COUNT_TIME_SHEET_STATUS,\r\n SET_LIST_TIME_SHEET, SET_LIST_TIME_SHEET_EVENT,\r\n timeSheetStatusName,\r\n SET_TOTAL_HOUR_TIME_SHEET,\r\n SET_LIST_TIME_SHEET_LINE\r\n} from \"./types\";\r\nimport dayjs from \"dayjs\";\r\nimport { NotificationService } from \"modules/notifications/service\";\r\nimport { SET_USER } from \"modules/auth/store/types\";\r\n\r\n\r\nconst service = new DashboardService();\r\nconst notificationService = new NotificationService();\r\nexport const actions: ActionTree = {\r\n async actCreateTimeSheet({ commit }, params: any) {\r\n return service.createTimeSheet(params)\r\n },\r\n\r\n async actLoadTimeSheet({ commit }, params: any) {\r\n const filterTimeSheet: FilterTimeSheet = this.getters[\"dashboard/filterTimeSheet\"];\r\n let filterExpandLine = \"\"\r\n // if (filterTimeSheet.divisionJob) {\r\n // filterExpandLine = `$filter=(TimesheetLineType eq 2 and (JobCostCode eq null or JobCostCode/Job/Division eq '${filterTimeSheet.divisionJob}')) or TimesheetLineType ne 2;`\r\n // }\r\n const expand = `TimesheetLines(${filterExpandLine}$expand=WorkOrder,JobCostCode($expand=Job),GLAccount,WorkOrderTask,TimesheetAdditionals($select=Manufacturer)),Approver`\r\n let filterStr = []\r\n const lstTimeSheet = this.getters[\"dashboard/timeSheets\"]\r\n if (filterTimeSheet.timeSheetId) {\r\n filterStr.push(`startswith(cast(TimesheetHeaderId, 'Edm.String'),'${filterTimeSheet.timeSheetId.toString()}')`)\r\n }\r\n if (filterTimeSheet.fromDay && filterTimeSheet.toDay) {\r\n filterStr.push(`StartDate ge ${filterTimeSheet.fromDay} and StartDate le ${filterTimeSheet.toDay}`);\r\n }\r\n if (filterTimeSheet.timeSheetStatus || filterTimeSheet.timeSheetStatus == 0) {\r\n filterStr.push(`TimesheetStatus eq ${filterTimeSheet.timeSheetStatus}`);\r\n }\r\n\r\n // if (filterTimeSheet.divisionJob) {\r\n // filterStr.push(`TimesheetLines/any(line: (line/TimesheetLineType eq 2 and (line/JobCostCode eq null or line/JobCostCode/Job/Division eq '${filterTimeSheet.divisionJob}')) or line/TimesheetLineType ne 2)`)\r\n // }\r\n\r\n const result = await service.fetchAllTimesheet(expand, filterStr.join(' and '), params)\r\n const data = result.map((item: TimeSheetHeader) => {\r\n const timeSheet: TimeSheetHeader = {\r\n ...item\r\n }\r\n if (timeSheet.StartDate) {\r\n timeSheet.StartDate = dayjs(timeSheet.StartDate).format('MMM DD, YYYY')\r\n }\r\n timeSheet.TimesheetLines = []\r\n if (timeSheet.TimesheetStatus || timeSheet.TimesheetStatus === 0) {\r\n timeSheet.TimesheetStatusName = timeSheetStatusName[timeSheet.TimesheetStatus as keyof typeof timeSheetStatusName]\r\n }\r\n if (item.TimesheetLines && item.TimesheetLines.length > 0) {\r\n item.TimesheetLines.forEach((line) => {\r\n\r\n const timesheetLine: TimeSheetLine = {\r\n ...line\r\n }\r\n timesheetLine.JobTitle = '---'\r\n\r\n if (line.TimesheetLineType === 0) {\r\n timesheetLine.JobType = 'Rental'\r\n } else if (line.TimesheetLineType === 1) {\r\n timesheetLine.JobType = 'Unbill'\r\n } else if (line.TimesheetLineType === 2) {\r\n timesheetLine.JobType = 'Job cost'\r\n }\r\n\r\n if (line.WorkOrderTaskId && line.WorkOrderTask) {\r\n timesheetLine.JobTitle = `${line.WorkOrderTask.Name} ${line.WorkOrderTask.Description}`\r\n }\r\n if (line.JobCostCodeId && line.JobCostCode) {\r\n timesheetLine.JobTitle = `${line.JobCostCode.Name} ${line.JobCostCode.Description}`\r\n }\r\n if (line.Glaccount && line.GlaccountId) {\r\n timesheetLine.JobTitle = `${line.Glaccount.Description}`\r\n }\r\n if (line.TimesheetLineMinutes && line.TimesheetLineMinutes > 0) {\r\n timesheetLine.TimesheetLineMinutesTitle = `${Math.floor(line.TimesheetLineMinutes / 60)}h ${line.TimesheetLineMinutes % 60}min`\r\n }\r\n timeSheet.TimesheetLines?.push(timesheetLine)\r\n })\r\n }\r\n if (timeSheet.TotalDuration > 0) {\r\n timeSheet.TotalWorkingTitle = `${Math.floor(timeSheet.TotalDuration / 60)}h ${timeSheet.TotalDuration % 60}min`\r\n timeSheet.TotalWorkingHours = timeSheet.TotalDuration / 60\r\n } else {\r\n timeSheet.TotalWorkingTitle = '0h'\r\n timeSheet.TotalWorkingHours = 0\r\n }\r\n return timeSheet;\r\n })\r\n commit(SET_LIST_TIME_SHEET, [...lstTimeSheet, ...data])\r\n },\r\n\r\n async actCountTimeSheetStatus({ commit }, params: any) {\r\n let filterStr = undefined\r\n const filterTimeSheet: FilterTimeSheet = this.getters[\"dashboard/filterTimeSheet\"]\r\n if (filterTimeSheet.timeSheetId) {\r\n filterStr = `startswith(cast(TimesheetHeaderId, 'Edm.String'),'${filterTimeSheet.timeSheetId.toString()}')`;\r\n }\r\n if (filterTimeSheet.fromDay && filterTimeSheet.toDay) {\r\n filterStr = filterStr ? filterStr + ` and StartDate ge ${filterTimeSheet.fromDay} and StartDate le ${filterTimeSheet.toDay}` : `StartDate ge ${filterTimeSheet.fromDay} and StartDate le ${filterTimeSheet.toDay}`;\r\n }\r\n // if (filterTimeSheet.divisionJob) {\r\n // const filterDivisionJob = `TimesheetLines/any(line: (line/TimesheetLineType eq 2 and (line/JobCostCode eq null or line/JobCostCode/Job/Division eq '${filterTimeSheet.divisionJob}')) or line/TimesheetLineType ne 2)`\r\n // filterStr = filterStr ? filterStr + `and (${filterDivisionJob})` : `(${filterDivisionJob})`\r\n // }\r\n const promise = []\r\n promise.push(service.countTimeSheetByStatus(filterStr).then((res: any) => res['@odata.count'])) // count all\r\n promise.push(service.countTimeSheetByStatus(`TimesheetStatus eq 0 ${filterStr ? 'and ' + filterStr : ''}`).then((res: any) => res['@odata.count'])) // count Draft\r\n promise.push(service.countTimeSheetByStatus(`TimesheetStatus eq 1 ${filterStr ? 'and ' + filterStr : ''}`).then((res: any) => res['@odata.count'])) // count Pending\r\n promise.push(service.countTimeSheetByStatus(`TimesheetStatus eq 2 ${filterStr ? 'and ' + filterStr : ''}`).then((res: any) => res['@odata.count'])) // count Approve\r\n promise.push(service.countTimeSheetByStatus(`TimesheetStatus eq 3 ${filterStr ? 'and ' + filterStr : ''}`).then((res: any) => res['@odata.count'])) // count Declined\r\n promise.push(service.countTimeSheetByStatus(`TimesheetStatus eq 5 ${filterStr ? 'and ' + filterStr : ''}`).then((res: any) => res['@odata.count'])) // count Cancelled\r\n const [total, totalDraft, totalPendingApproved, totalApproved, totalDeclined, totalCanceled] = await Promise.all(promise)\r\n const data = {\r\n total,\r\n totalDraft,\r\n totalPendingApproved,\r\n totalApproved,\r\n totalDeclined,\r\n totalCanceled,\r\n }\r\n commit(SET_COUNT_TIME_SHEET_STATUS, data)\r\n return data\r\n },\r\n\r\n async actGetTimeSheet({ commit }, params: any) {\r\n const expand = `TimesheetLines($expand=JobCostCode,GLAccount,WorkOrderTask,\r\n TimesheetAdditionals(select=TimesheetAdditionalId,Manufacturer,Model,Smureading,SerialNumber,CustomerName,CustomerEmail,Locations,TravelKms,\r\n Rego,WorkerSignature,CustomerSignature,AdditionalInfo,CustomerAcceptanceName))\r\n ,Approver,User`\r\n const select = `EndTime,Shift,StartDate,StartTime,SubmittedCount,TimesheetHeaderId,TimesheetStatus,UserId`\r\n const result = await service.fetchTimeSheetById(params.id, expand, select)\r\n return result\r\n },\r\n\r\n async actGetTimeSheetEvent({ commit }, params: any) {\r\n const countNotiUnRead = await notificationService.fetchCountNotiUnRead()\r\n const result = await notificationService.fetchNotification(1, 1000000)\r\n commit(SET_LIST_TIME_SHEET_EVENT, result)\r\n commit(SET_COUNT_NOTI_UNREAD, countNotiUnRead)\r\n return result\r\n },\r\n\r\n async actUpdateTimeSheet({ commit }, params: any) {\r\n const result = await service.updateTimeSheet(params)\r\n return result\r\n },\r\n\r\n async actFetchMessage({ commit }, params: any) {\r\n const filters = `TimesheetHeaderId eq ${params.TimesheetHeaderId}`\r\n const expand = `TimesheetEventNotifications(expand=User(select=FirstName,LastName,Email,AvatarUrl))`\r\n const result = await service.fetchTimesheetEvent(expand, filters)\r\n const messageModel: MessageEventModel[] = []\r\n if (result.value) {\r\n result.value.forEach((timesheetEvent: TimesheetEvent) => {\r\n if (timesheetEvent.TimesheetEventNotifications) {\r\n timesheetEvent.TimesheetEventNotifications.forEach((timesheetEventNotification) => {\r\n messageModel.push({\r\n TimesheetEventDateTime: timesheetEventNotification.TimesheetEventNotificationDateTime,\r\n TimesheetEventId: timesheetEvent.TimesheetEventId,\r\n TimesheetEventType: timesheetEvent.TimesheetEventType,\r\n User: timesheetEventNotification.User,\r\n Message: timesheetEventNotification.Message,\r\n TimesheetEventNotificationId: timesheetEventNotification.TimesheetEventNotificationId\r\n })\r\n })\r\n }\r\n });\r\n }\r\n return messageModel\r\n },\r\n\r\n async uploadSignature({ commit }, params: any) {\r\n const data = await service.uploadSignature(params);\r\n return data;\r\n },\r\n async getBase64FromUrl({ commit }, params: any) {\r\n const data = await service.getBase64FromUrl(params);\r\n return data;\r\n },\r\n\r\n async loadCountTotalTimesheet({ commit }, params: any) {\r\n let filterStr = ''\r\n let totalHour = 0\r\n filterStr = (`StartDate ge ${params.date} and StartDate le ${params.date} and TimesheetStatus eq 1 or StartDate ge ${params.date} and StartDate le ${params.date} and TimesheetStatus eq 2`);\r\n const selectProps = 'TotalDuration,UserId,TimesheetHeaderId'\r\n const expand = `TimesheetLines($select=StartTime,EndTime)`\r\n let currentUser = this.getters[\"auth/currentUser\"];\r\n\r\n const data = await service.fetchTotalTimesheet(selectProps, expand, filterStr)\r\n\r\n const dataByUserId = data.value.filter((item: any) => params?.userId ? item.UserId == params?.userId : item.UserId == currentUser.userId)\r\n const checkCurrentData = dataByUserId.filter((item: any) => item?.TimesheetHeaderId !== params?.timesheetId)\r\n\r\n if (checkCurrentData.length > 0) {\r\n totalHour = checkCurrentData.reduce((accumulator: any, currentValue: any) => accumulator + currentValue.TotalDuration, 0);\r\n }\r\n commit(SET_TOTAL_HOUR_TIME_SHEET, totalHour);\r\n commit(SET_LIST_TIME_SHEET_LINE, checkCurrentData);\r\n },\r\n\r\n};\r\n","import { GetterTree } from 'vuex'\r\nimport { RootState } from 'store'\r\nimport { DashboardState } from './types'\r\n\r\nexport const getters: GetterTree = {\r\n dropdownSite:(state: DashboardState) => state.dropdownSite,\r\n action:(state: DashboardState) => state.action,\r\n timeSheets:(state: DashboardState) => state.timeSheets,\r\n timeSheetEvents:(state: DashboardState) => state.timeSheetEvents,\r\n countNotiUnRead:(state: DashboardState) => state.countNotiUnRead,\r\n countTimeSheetStatus:(state: DashboardState) => state.countTimeSheetStatus,\r\n filterTimeSheet:(state: DashboardState) => state.filterTimeSheet,\r\n loading: (state: DashboardState) => state.loading,\r\n isEditAddTask: (state: DashboardState) => state.isEditAddTask,\r\n totalHour: (state: DashboardState) => state.totalHour,\r\n timeSheetsLine: (state: DashboardState) => state.timeSheetsLine,\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport {\r\n DashboardState,\r\n SET_DROPDOWN_SITE,\r\n SET_ACTION_TIME_SHEET,\r\n SET_LIST_TIME_SHEET,\r\n SET_COUNT_TIME_SHEET_STATUS,\r\n SET_FILTER_TIME_SHEET,\r\n CountTimeSheetStatus,\r\n FilterTimeSheet,\r\n Actions, SET_LIST_TIME_SHEET_EVENT, SET_COUNT_NOTI_UNREAD,\r\n SET_LOADING_NOTI,\r\n SET_IS_EDIT_ADD_TASK,\r\n SET_TOTAL_HOUR_TIME_SHEET,\r\n SET_LIST_TIME_SHEET_LINE\r\n} from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n [SET_DROPDOWN_SITE](state: DashboardState, data: Equipment[]) {\r\n state.dropdownSite = data;\r\n },\r\n [SET_ACTION_TIME_SHEET](state: DashboardState, data: Actions) {\r\n state.action = data;\r\n },\r\n [SET_LIST_TIME_SHEET](state: DashboardState, data: TimeSheetHeader[]) {\r\n state.timeSheets = data;\r\n },\r\n [SET_COUNT_TIME_SHEET_STATUS](state: DashboardState, data: CountTimeSheetStatus) {\r\n state.countTimeSheetStatus = data;\r\n },\r\n [SET_FILTER_TIME_SHEET](state: DashboardState, data: FilterTimeSheet) {\r\n state.filterTimeSheet = data;\r\n },\r\n [SET_LIST_TIME_SHEET_EVENT](state: DashboardState, data: any) {\r\n state.timeSheetEvents = data;\r\n },\r\n [SET_COUNT_NOTI_UNREAD](state: DashboardState, data: any) {\r\n state.countNotiUnRead = data;\r\n },\r\n [SET_LOADING_NOTI](state: DashboardState, status: boolean) {\r\n state.loading = status;\r\n },\r\n [SET_IS_EDIT_ADD_TASK](state: DashboardState, status: boolean) {\r\n state.isEditAddTask = status;\r\n },\r\n [SET_TOTAL_HOUR_TIME_SHEET](state: DashboardState, data: number) {\r\n state.totalHour = data;\r\n },\r\n [SET_LIST_TIME_SHEET_LINE](state: DashboardState, data: any) {\r\n state.timeSheetsLine = data;\r\n },\r\n};\r\n","import { Module } from 'vuex'\r\nimport { state } from './state'\r\nimport { actions } from './actions'\r\nimport { getters } from './getters'\r\nimport { mutations } from './mutations'\r\nimport { RootState } from 'store'\r\nimport { DashboardState } from './types'\r\n\r\nexport const dashboard: Module = {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n}\r\n\r\n","import { ProfileState } from './types'\r\n\r\nexport const state: ProfileState = {\r\n}","import Service from \"core/service\";\r\nimport type { AxiosError } from 'axios';\r\nexport class ProfileService extends Service {\r\n dropDownSite(selectProps?: string, filter?: string, apply?: string, limit?: number, active?: number): Promise {\r\n let params: any = { \"$filter\": active == -1 ? '' : active == 1 || active == undefined ? \"(Active eq true)\" : \"(Active eq false)\" };\r\n if (selectProps) {\r\n params['$select'] = selectProps\r\n }\r\n if (filter && apply) {\r\n params[\"$apply\"] = `filter(${filter})/${apply}`;\r\n } else {\r\n if (filter) {\r\n params[\"$filter\"] += params[\"$filter\"].length > 0 ? ` and (${filter})` : `${filter}`;\r\n }\r\n if (apply) {\r\n params[\"$apply\"] = apply;\r\n }\r\n }\r\n if (limit) {\r\n params[\"$top\"] = limit;\r\n }\r\n\r\n return this.get(\"/Site\", params);\r\n }\r\n\r\n dropDownEquipment(selectProps?: string, filter?: string, apply?: string, limit?: number, active?: number): Promise {\r\n let params: any = { \"$filter\": active == -1 ? '' : active == 1 || active == undefined ? \"(Active eq true)\" : \"(Active eq false)\" };\r\n if (selectProps) {\r\n params['$select'] = selectProps\r\n }\r\n if (filter && apply) {\r\n params[\"$apply\"] = `filter(${filter})/${apply}`;\r\n } else {\r\n if (filter) {\r\n params[\"$filter\"] += params[\"$filter\"].length > 0 ? ` and ${filter}` : `${filter}`;\r\n }\r\n if (apply) {\r\n params[\"$apply\"] = apply;\r\n }\r\n }\r\n if (limit) {\r\n params[\"$top\"] = limit;\r\n }\r\n return this.get(\"/Equipment\", params);\r\n }\r\n\r\n getEquipmentById(id: number, expand?: string): Promise {\r\n let params: any = {};\r\n if (expand) {\r\n params['$expand'] = expand\r\n }\r\n return this.get(`/Equipment(${id})`, params);\r\n }\r\n\r\n dropDownJob(selectProps: string, filter: string | null, limit?: number, active?: number): Promise {\r\n let params: any = {\r\n $select: selectProps,\r\n \"$filter\": active == -1 ? '' : active == 1 || active == undefined ? \"(Active eq true)\" : \"(Active eq false)\"\r\n };\r\n if (filter) {\r\n params[\"$filter\"] += params[\"$filter\"].length > 0 ? ` and (${filter})` : `${filter}`;\r\n }\r\n if (limit) {\r\n params[\"$top\"] = limit;\r\n }\r\n return this.get(\"/Job\", params);\r\n }\r\n\r\n dropDownJobCost(selectProps: string, filter: string | null, limit?: number, active?: number): Promise {\r\n let params: any = {\r\n $select: selectProps,\r\n \"$filter\": active == -1 ? '' : active == 1 || active == undefined ? \"(Active eq true)\" : \"(Active eq false)\"\r\n };\r\n if (filter) {\r\n params[\"$filter\"] += params[\"$filter\"].length > 0 ? ` and (${filter})` : `${filter}`;\r\n }\r\n if (limit) {\r\n params[\"$top\"] = limit;\r\n }\r\n return this.get(\"/JobCostCode\", params);\r\n }\r\n\r\n dropDownWorkOrder(selectProps: string, filter: string | null, expand?: string | null, limit?: number, active?: number): Promise {\r\n let params: any = {\r\n $select: selectProps,\r\n \"$filter\": active == -1 ? '' : active == 1 || active == undefined ? \"(Active eq true)\" : \"(Active eq false)\"\r\n };\r\n if (filter) {\r\n params[\"$filter\"] += params[\"$filter\"].length > 0 ? ` and (${filter})` : `${filter}`;\r\n }\r\n if (expand) {\r\n params['$expand'] = expand\r\n }\r\n\r\n params[\"$top\"] = limit || 200;\r\n\r\n return this.get(\"/WorkOrder\", params);\r\n }\r\n\r\n getWorkOrderById(id: number, expand?: string): Promise {\r\n let params: any = {\r\n\r\n };\r\n if (expand) {\r\n params['$expand'] = expand\r\n }\r\n return this.get(`/WorkOrder(${id})`, params);\r\n }\r\n\r\n dropDownWorkOrderTask(selectProps: string, filter: string | null, limit?: number, active?: number): Promise {\r\n let params: any = {\r\n $select: selectProps,\r\n \"$filter\": active == -1 ? '' : active == 1 || active == undefined ? \"(Active eq true)\" : \"(Active eq false)\"\r\n };\r\n if (filter) {\r\n params[\"$filter\"] += params[\"$filter\"].length > 0 ? ` and (${filter})` : `${filter}`;\r\n }\r\n if (limit) {\r\n params[\"$top\"] = limit;\r\n }\r\n return this.get(\"/WorkOrderTask\", params);\r\n }\r\n\r\n dropDownGLAccount(selectProps: string, filter: string | null, active?: number): Promise {\r\n let params: any = {\r\n $select: selectProps,\r\n \"$filter\": active == -1 ? '' : active == 1 || active == undefined ? \"(Active eq true)\" : \"(Active eq false)\"\r\n };\r\n if (filter) {\r\n params[\"$filter\"] += params[\"$filter\"].length > 0 ? ` and (${filter})` : `${filter}`;\r\n }\r\n return this.get(\"/GLAccount\", params);\r\n }\r\n\r\n getWorkOrderTaskById(id: number, expand?: string): Promise {\r\n let params: any = {\r\n\r\n };\r\n if (expand) {\r\n params['$expand'] = expand\r\n }\r\n return this.get(`/WorkOrderTask(${id})`, params);\r\n }\r\n\r\n getJobCostCodeById(id: number, expand?: string): Promise {\r\n let params: any = {\r\n\r\n };\r\n if (expand) {\r\n params['$expand'] = expand\r\n }\r\n return this.get(`/JobCostCode(${id})`, params);\r\n }\r\n\r\n getGlAccountById(id: number): Promise {\r\n return this.get(`/GLAccount(${id})`);\r\n }\r\n\r\n fetchTimeSheet(expand?: string, filter?: string) {\r\n let params: any = {\r\n // '$orderby': 'CreatedOn desc'\r\n };\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n if (filter) {\r\n params[\"$filter\"] = filter;\r\n }\r\n return this.get(\"/Timesheet\", params);\r\n }\r\n\r\n getTopApprover(expand?: string, filter?: string) {\r\n let params: any = {\r\n // '$orderby': 'CreatedOn desc'\r\n };\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n if (filter) {\r\n params[\"$filter\"] = filter;\r\n }\r\n return this.get(\"/Timesheet\", params);\r\n }\r\n\r\n async updateAvatar(formData: any): Promise {\r\n try {\r\n return this.postFormData(\"/User/Avatar\", formData);\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n\r\n async selectWorkingHour(param: any) {\r\n try {\r\n let params: any = {\r\n };\r\n\r\n if (param) {\r\n params[\"summary\"] = param.sortBy; //Month or Year\r\n }\r\n const res = this.get(\"/Profile/WorkingHours\", params);\r\n return res;\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n\r\n async selectTopApprover(param: any) {\r\n try {\r\n let params: any = {\r\n };\r\n\r\n if (param) {\r\n params[\"summary\"] = param.sortBy; //Month or Year\r\n }\r\n const res = this.get(\"/Profile/TopApprovers\", params);\r\n return res;\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n\r\n patchForceLogout() {\r\n try {\r\n return this.patch(\"/Profile/ForceLogout\");\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n\r\n dropDownTaskCategory(filter?: string): Promise {\r\n let params: any = {};\r\n\r\n if (filter) {\r\n params[\"$filter\"] = filter;\r\n }\r\n return this.get(\"/TaskCategory\", params);\r\n }\r\n\r\n}\r\n","import itemVue from \"modules/super/notifications/components/item.vue\";\r\nimport { RootState } from \"store\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { ProfileService } from \"../service\";\r\nimport { ProfileState } from \"./types\";\r\nconst service = new ProfileService()\r\nexport const actions: ActionTree = {\r\n async actGetDropDownSite({ commit }, params: any) {\r\n let filter = ``\r\n const active = params?.active\r\n if (params.filter) {\r\n filter = filter + `contains(tolower(Location),'${params.filter.toLowerCase()}')`\r\n }\r\n const data = await service.dropDownSite('', filter, undefined, params.limit, active);\r\n return data.value;\r\n },\r\n async actGetDropDownFleet({ commit }, params: any) {\r\n const active = params?.active\r\n\r\n if (params.filter && (params.search !== undefined)) {\r\n const filter = `(Location eq '${params.filter}') and (contains(tolower(Name),'${params.search.toLowerCase()}'))`\r\n const data = await service.dropDownEquipment('EquipmentId, Location, Name,Description', filter, undefined, params.limit, active);\r\n return data.value;\r\n }\r\n\r\n if (params.id) {\r\n const filter = `EquipmentId eq ${params.id}`\r\n const data = await service.dropDownEquipment('EquipmentId, Location, Name,Description', filter, undefined, params.limit, active);\r\n return data.value;\r\n }\r\n\r\n if (params.filter) {\r\n const filter = `Location eq '${params.filter}'`\r\n const data = await service.dropDownEquipment('EquipmentId, Location, Name,Description', filter, undefined, params.limit, active);\r\n return data.value;\r\n }\r\n\r\n if (params.search !== undefined) {\r\n const filter = `(contains(tolower(Name),'${params.search.toLowerCase()}'))`\r\n const data = await service.dropDownEquipment('EquipmentId, Location, Name,Description', filter, undefined, params.limit, active);\r\n return data.value;\r\n }\r\n return []\r\n },\r\n async actGetFleetById({ commit }, params: any) {\r\n const data = await service.getEquipmentById(\r\n params.id,\r\n params.expand\r\n );\r\n return data;\r\n },\r\n async actGetDropDownWorkOrder({ commit }, params: any) {\r\n const active = params?.active\r\n if (params.search == undefined && !params.filter) return []\r\n\r\n let filter = ``;\r\n\r\n if (params.filter) {\r\n filter = `(EquipmentId eq ${params.filter})`;\r\n }\r\n\r\n if (params.search !== undefined) {\r\n filter = `(contains(tolower(Name),'${params.search.toLowerCase()}') or contains(tolower(Description),'${params.search.toLowerCase()}'))`\r\n }\r\n\r\n if (params.filter && (params.search !== undefined)) {\r\n console.log(`(EquipmentId eq ${params.filter}) and (contains(tolower(Name),'${params.search.toLowerCase()}') or contains(tolower(Description),'${params.search.toLowerCase()}'))`)\r\n filter = `(EquipmentId eq ${params.filter}) and (contains(tolower(Name),'${params.search.toLowerCase()}') or contains(tolower(Description),'${params.search.toLowerCase()}'))`\r\n }\r\n\r\n if (params.filter && params.parent == 'Site') {\r\n filter = params.filter\r\n }\r\n if (params.filter && params.parent == 'Site' && (params.search !== undefined)) {\r\n filter = `(${params.filter}) and (contains(tolower(Name),'${params.search.toLowerCase()}') or contains(tolower(Description),'${params.search.toLowerCase()}'))`\r\n }\r\n\r\n const data = await service.dropDownWorkOrder(\r\n \"WorkOrderId, Name, EquipmentId, Description, Active\",\r\n filter,\r\n undefined, params.limit,\r\n active\r\n );\r\n\r\n return data.value.map((item: any) => {\r\n return {\r\n ...item,\r\n FullName: `${item.Name} ${item.Description}`,\r\n };\r\n });\r\n },\r\n async actGetWorkOrderById({ commit }, params: any) {\r\n const data = await service.getWorkOrderById(\r\n params.id,\r\n params.expand\r\n );\r\n return data;\r\n },\r\n async actGetDropDownWorkOrderTask({ commit }, params: any) {\r\n const active = params?.active\r\n if (params.search == undefined && !params.filter) return []\r\n\r\n let filter = ``;\r\n\r\n if (params.filter) {\r\n filter = `WorkOrderId eq ${params.filter}`;\r\n }\r\n\r\n if (params.search) {\r\n filter = `(contains(tolower(Name),'${params.search.toLowerCase()}') or contains(tolower(Description),'${params.search.toLowerCase()}'))`;\r\n }\r\n\r\n if (params.filter && (params.search !== undefined)) {\r\n filter = `(WorkOrderId eq ${params.filter}) and (contains(tolower(Name),'${params.search.toLowerCase()}') or contains(tolower(Description),'${params.search.toLowerCase()}'))`\r\n }\r\n\r\n if (params.filter && params.parent == 'Site') {\r\n filter = params.filter\r\n }\r\n if (params.filter && params.parent == 'Site' && (params.search !== undefined)) {\r\n filter = `(${params.filter}) and (contains(tolower(Name),'${params.search.toLowerCase()}') or contains(tolower(Description),'${params.search.toLowerCase()}'))`\r\n }\r\n\r\n const data = await service.dropDownWorkOrderTask(\r\n \"WorkOrderTaskId, WorkOrderId, Name, Description, Active\",\r\n filter,\r\n params.limit,\r\n active\r\n );\r\n\r\n return data.value.map((item: any) => {\r\n return {\r\n ...item,\r\n FullName: `${item.Name} ${item.Description}`,\r\n };\r\n });\r\n },\r\n async actGetWorkOrderTaskById({ commit }, params: any) {\r\n const data = await service.getWorkOrderTaskById(\r\n params.id,\r\n params.expand\r\n );\r\n return data;\r\n },\r\n async actGetDropDownJob({ commit }, params: any) {\r\n const active = params?.active\r\n let filter = null\r\n let data: any\r\n if (params.filter) {\r\n filter = `contains(tolower(Name),'${params.filter.toLowerCase()}') or contains(tolower(Description),'${params.filter.toLowerCase()}')`\r\n }\r\n if (params.division && !Array.isArray(params.division)) {\r\n const filterDivision = `Division eq '${params.division}'`\r\n filter = filter ? `(${filter}) and ${filterDivision}` : filterDivision\r\n }\r\n if (params.division && Array.isArray(params.division)) {\r\n const conditions = params.division.map((item: any) => `(Division eq '${item}')`);\r\n const filterDivision = conditions.join(' or ');\r\n filter = filter ? `(${filter}) ${filterDivision ? `and (${filterDivision})` : ''}` : filterDivision\r\n }\r\n if (params.JobId) {\r\n filter = `JobId eq ${params.JobId}`\r\n }\r\n data = await service.dropDownJob('JobId, Division, Name, Description', filter, params.limit, active);\r\n return data.value.map((item: any) => {\r\n return {\r\n ...item,\r\n FullName: `${item.Name} ${item.Description} (${item.Division})`\r\n }\r\n });\r\n },\r\n async actGetDropDownJobCost({ commit }, params: any) {\r\n const active = params?.active\r\n let filter = ``;\r\n\r\n if (params.filter) {\r\n filter = `JobId eq ${params.filter}`\r\n }\r\n\r\n if (params.search) {\r\n filter = `(contains(tolower(Name),'${params.search.toLowerCase()}') or contains(tolower(Description),'${params.search.toLowerCase()}'))`\r\n }\r\n\r\n if (params.filter && (params.search !== undefined)) {\r\n filter = `JobId eq ${params.filter} and (contains(tolower(Name),'${params.search.toLowerCase()}') or contains(tolower(Description),'${params.search.toLowerCase()}'))`\r\n }\r\n\r\n if (params.division && !Array.isArray(params.division)) {\r\n const filterDivision = `Job/Division eq '${params.division}'`\r\n filter = filter ? `(${filter}) and ${filterDivision}` : filterDivision\r\n }\r\n\r\n if (params.division && Array.isArray(params.division)) {\r\n const conditions = params.division.map((item: any) => `(Job/Division eq '${item}')`);\r\n const filterDivision = conditions.join(' or ')\r\n filter = filter ? `(${filter}) ${filterDivision ? `and (${filterDivision})` : ''}` : filterDivision\r\n }\r\n\r\n const data = await service.dropDownJobCost('JobCostCodeId, JobId, Name, Description', filter, params.limit, active);\r\n return data.value.map((item: any) => {\r\n return {\r\n ...item,\r\n FullName: `${item.Name} ${item.Description}`\r\n }\r\n });\r\n },\r\n\r\n async actGetDropDownGLAccount({ commit }, params: any) {\r\n const active = params?.active\r\n const data = await service.dropDownGLAccount('GLAccountId, Description', null, active);\r\n return data.value\r\n },\r\n\r\n async actGetJobCostCodeById({ commit }, params: any) {\r\n const expand = `Job`\r\n const data = await service.getJobCostCodeById(params.id, expand)\r\n return data\r\n },\r\n\r\n async actGetGlAccountById({ commit }, params: any) {\r\n const data = await service.getGlAccountById(params.id)\r\n return data\r\n },\r\n\r\n async selectWorkingHour({ commit }, params: any) {\r\n const data = await service.selectWorkingHour(params);\r\n return data;\r\n },\r\n\r\n async selectTopApprover({ commit }, params: any) {\r\n const data = await service.selectTopApprover(params);\r\n return data.data.map((item: any) => {\r\n return {\r\n ...item,\r\n total: item.totalApproved,\r\n totalApprover: data[\"totalApproved\"],\r\n }\r\n });\r\n },\r\n\r\n async updateAvatar({ commit }, params: any) {\r\n let data: any;\r\n data = await service.updateAvatar(params);\r\n return data;\r\n },\r\n\r\n async forceLogout({ commit }) {\r\n await service.patchForceLogout();\r\n return;\r\n },\r\n\r\n async actGetDropDownTaskCategory({ commit }, params: any) {\r\n let filter = ``\r\n const active = params?.active\r\n if (params.filter) {\r\n filter = filter + `contains(tolower(Name),'${params.filter.toLowerCase()}')`\r\n }\r\n const data = await service.dropDownTaskCategory(filter);\r\n console.log(data)\r\n return data.value;\r\n },\r\n\r\n};\r\n","import { GetterTree } from 'vuex'\r\nimport { RootState } from 'store'\r\nimport { ProfileState } from './types'\r\nimport { AUTH_TOKEN_KEY } from 'core/constants'\r\n\r\nexport const getters: GetterTree = {\r\n \r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { ProfileState, } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n \r\n};\r\n","import { Module } from 'vuex'\r\nimport { state } from './state'\r\nimport { actions } from './actions'\r\nimport { getters } from './getters'\r\nimport { mutations } from './mutations'\r\nimport { RootState } from 'store'\r\nimport { ProfileState } from './types'\r\n\r\nexport const profile: Module = {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n}\r\n\r\n","import { ManualState } from './types'\r\n\r\nexport const state: ManualState = {\r\n percent: 0,\r\n loading: false\r\n}","import Service from \"core/service\";\r\nimport type { AxiosInstance, AxiosRequestConfig, Method, AxiosError } from 'axios'\r\n\r\nexport class ManualService extends Service {\r\n\r\n insert(formData: any, options: any): Promise {\r\n try {\r\n return this.postFormData(\"/Manual\", formData, options);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n update(body: any, id: any): Promise {\r\n try {\r\n return this.patch(`/Manual/${id}`, body);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n select(selectProps: string, filter: string | null, active?:number): Promise {\r\n try {\r\n let params: any = {\r\n $select: selectProps,\r\n \"$filter\": active == -1 ? '' : active == 1|| active == undefined ? \"(Active eq true)\" : \"(Active eq false)\"\r\n };\r\n if (filter) {\r\n params[\"$filter\"] += params[\"$filter\"].length > 0 ? ` and (${filter})` : `${filter}`;\r\n }\r\n return this.get(\"/Manual\", params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n selectById(selectProps: string, id: number | null): Promise {\r\n try {\r\n \r\n return this.get(`/Manual/${id}`);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n deleteManual(params: any): Promise {\r\n try {\r\n return this.delete(`/Manual/${params.ManualId}`);\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n downloadFileById(id: number | null): Promise {\r\n try {\r\n const options = {responseType: 'blob',};\r\n return this.downloadFile(`/Manual/downloadFile/${id}`, null,options);\r\n \r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n}\r\n","import { RootState } from \"store\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { ManualService } from \"../service\";\r\nimport { ManualState } from \"./types\";\r\n\r\nconst service = new ManualService()\r\n\r\nexport const actions: ActionTree = {\r\n \r\n async insert({ commit }, params: any, options?: any) {\r\n\r\n const config = {\r\n onUploadProgress: function(progressEvent: any) {\r\n const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);\r\n if(percentCompleted < 100 ){\r\n commit('SET_PERCENT_UPLOAD', percentCompleted);\r\n\r\n }\r\n }\r\n }\r\n\r\n if(params){\r\n const data = await service.insert(params, config).then(((res) => {\r\n commit('SET_PERCENT_UPLOAD', 100);\r\n }));\r\n return data;\r\n }\r\n },\r\n async update ({ commit }, params: any) {\r\n if(params){\r\n const data = await service.update(params, params.ManualId);\r\n return data;\r\n }\r\n},\r\n\r\n async select({ commit }, params: any) {\r\n const filter = null;\r\n const active = params?.active\r\n const selectProps = 'ManualId, Name, Description, Active, VisibleTypes';\r\n \r\n const data = await service.select(selectProps, filter, active);\r\n return data.value.map((item:any) => {\r\n return {\r\n ...item,\r\n }\r\n });\r\n },\r\n async selectById({ commit }, id: any) {\r\n let data: any;\r\n data = await service.selectById('ManualId, Name, Description, Active, VisibleTypes', id);\r\n return data;\r\n },\r\n\r\n async deleteManual({ commit }, params: any) {\r\n if(params){\r\n const data = await service.deleteManual(params);\r\n return data;\r\n }\r\n },\r\n\r\n async downloadFileById({ commit }, id: any) {\r\n let data: any;\r\n data = await service.downloadFileById(id);\r\n return data;\r\n },\r\n \r\n \r\n};\r\n","import { GetterTree } from 'vuex'\r\nimport { RootState } from 'store'\r\nimport { ManualState } from './types'\r\n\r\nexport const getters: GetterTree = {\r\n percentUpload: (state: ManualState) => state.percent,\r\n loading: (state: ManualState) => state.loading,\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { ManualState, SET_PERCENT_UPLOAD} from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n SET_PERCENT_UPLOAD: (state: ManualState, percent: number) => {\r\n state.percent = percent;\r\n },\r\n SET_LOADING_MANUAL: (state: ManualState, status: boolean) => {\r\n state.loading = status\r\n },\r\n \r\n};\r\n","import { Module } from 'vuex'\r\nimport { state } from './state'\r\nimport { actions } from './actions'\r\nimport { getters } from './getters'\r\nimport { mutations } from './mutations'\r\nimport { RootState } from 'store'\r\nimport { ManualState } from './types'\r\n\r\nexport const manual: Module = {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n}\r\n\r\n","import { ApprovalGroupState } from './types'\r\n\r\nexport const state: ApprovalGroupState = {\r\n lsGroupApproval: [],\r\n countGroupApproval: 0,\r\n loading: false,\r\n}","import Service from \"core/service\";\r\nimport type { AxiosInstance, AxiosRequestConfig, Method, AxiosError } from 'axios'\r\n\r\nexport class ApprovalGroupService extends Service {\r\n\r\n insert(formData: any, options: any): Promise {\r\n try {\r\n return this.post(\"/approvalGroup\", formData, options);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n update(body: any, id: any): Promise {\r\n try {\r\n return this.patch(`/approvalGroup/${id}`, body);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n select(currentPage: number = 1,pageSize: number = 20,selectProps: string, expand: string | null, filter: string | null, sort:{ field:string, sortOrder:string}): Promise {\r\n try {\r\n let params: any = {\r\n $select: selectProps,\r\n $Count: true\r\n };\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n if(filter){\r\n params[\"$filter\"] = filter;\r\n }\r\n if(sort){\r\n params[\"$orderby\"] = `${sort.field} ${sort.sortOrder || \"asc\"}`\r\n }\r\n params[\"$Top\"] = pageSize;\r\n params[\"$Skip\"] = currentPage == 1 ? 0 : (currentPage - 1) * pageSize;\r\n return this.get(\"/approvalGroup\", params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n selectSubmitter(currentPage: number = 1,pageSize: number = 20, filter: string | null, sort: string, expand?: string): Promise {\r\n try {\r\n let params: any = {\r\n $Count: true\r\n };\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n if(filter){\r\n params[\"$filter\"] = filter;\r\n }\r\n if(sort){\r\n params[\"$orderby\"] = `${sort}`\r\n }\r\n params[\"$Top\"] = pageSize;\r\n params[\"$Skip\"] = currentPage == 1 ? 0 : (currentPage - 1) * pageSize;\r\n return this.get(\"/User\", params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n deleteApprovalGroup(params: any): Promise {\r\n try {\r\n return this.delete(`/approvalGroup/${params.ApprovalGroupId}`);\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n userList(selectProps: string, filter: string | null, limit: number | null): Promise {\r\n try {\r\n let params: any = {\r\n $select: selectProps,\r\n };\r\n if (filter) {\r\n params[\"$filter\"] = filter;\r\n \r\n }\r\n if (limit) {\r\n params[\"$top\"] = limit;\r\n } else {\r\n params[\"$top\"] = 100;\r\n }\r\n return this.get(\"/user\", params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n}\r\n","import { RootState } from \"store\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { ApprovalGroupService } from \"../service\";\r\nimport { ApprovalGroupState } from \"./types\";\r\nconst service = new ApprovalGroupService();\r\n\r\nexport const actions: ActionTree = {\r\n async insert({ commit }, params: any, options?: any) {\r\n if (params) {\r\n const data = await service.insert(params, options);\r\n return data;\r\n }\r\n },\r\n\r\n async update({ commit }, params: any) {\r\n if (params) {\r\n const _params = {\r\n ...params,\r\n }\r\n delete _params.Users\r\n delete _params['Users@odata.count']\r\n const data = await service.update(_params, params.ApprovalGroupId);\r\n return data;\r\n }\r\n },\r\n\r\n async select({ commit }, params: any) {\r\n let filterStr = [];\r\n if (params.filter && params.filter.Search !== undefined) {\r\n filterStr.push(\r\n `(contains(Name,'${params.filter.Search}') or contains(cast(ApprovalGroupId, 'Edm.String'),'${params.filter.Search}'))`\r\n );\r\n }\r\n if (params.filter && params.filter.Status !== undefined) {\r\n filterStr.push(`(Status eq ${params.filter.Status})`);\r\n }\r\n if (params.filter && params.filter.ApprovalGroupId !== undefined) {\r\n filterStr.push(`(ApprovalGroupId eq ${params.filter.ApprovalGroupId})`);\r\n }\r\n const expand =\r\n \"ApprovalGroupMembers($expand=Approver), Users($count=true;$top=0)\";\r\n\r\n const selectProps = \"ApprovalGroupId, Name, Status, CreatedOn, UpdatedOn, GPBatchPrefix, GPBatchNotificationTo, GPBatchNotificationCC\";\r\n\r\n const data = await service.select(\r\n params.currentPage || 1,\r\n params.pageSize || 20,\r\n selectProps,\r\n expand,\r\n filterStr.join(\" and \"),\r\n params.sort\r\n );\r\n commit(\"SET_LIST_APPROVAL\", data.value);\r\n commit(\"SET_COUNT_APPROVAL\", data[\"@odata.count\"]);\r\n return data.value;\r\n },\r\n\r\n async selectSubmitter({ commit }, params: any) {\r\n let filterStr = [];\r\n if (params.filter && params.filter.ApprovalGroupId !== undefined) {\r\n filterStr.push(`(ApprovalGroupId eq ${params.filter.ApprovalGroupId})`);\r\n }\r\n const expand =\r\n \"ApprovalGroupMembers($expand=ApprovalGroup)\";\r\n const data = await service.selectSubmitter(\r\n params.currentPage || 1,\r\n params.pageSize || 20,\r\n filterStr.join(\" and \"),\r\n params.sort,\r\n expand\r\n );\r\n\r\n return data;\r\n },\r\n\r\n async userList({ commit }, params: any) {\r\n let selectProps = \"\";\r\n let expand = \"\";\r\n let filter = `UserType eq 1 and UserStatus eq 1 or UserType eq 3 and UserStatus eq 1`;\r\n if (params.query) {\r\n filter = `UserType eq 1 and UserStatus eq 1 and (contains(tolower(FirstName), '${params.query.toLowerCase()}') or contains(tolower(LastName), '${params.query.toLowerCase()}') or contains(tolower(Email),'${params.query.toLowerCase()}')) or UserType eq 3 and UserStatus eq 1 and (contains(tolower(FirstName), '${params.query.toLowerCase()}') or contains(tolower(LastName), '${params.query.toLowerCase()}') or contains(tolower(Email),'${params.query.toLowerCase()}'))`;\r\n }\r\n if (params.userIds && params.userIds.length > 0) {\r\n if (params.query) {\r\n filter = `UserType eq 1 and UserStatus eq 1 and (contains(tolower(FirstName), '${params?.query?.toLowerCase()}') or contains(tolower(LastName), '${params?.query?.toLowerCase()}') or contains(tolower(Email),'${params?.query?.toLowerCase()}')) and not(UserId in (${params?.userIds?.join(\",\")})) or UserType eq 3 and UserStatus eq 1 and (contains(tolower(FirstName), '${params?.query?.toLowerCase()}') or contains(tolower(LastName), '${params?.query?.toLowerCase()}') or contains(tolower(Email),'${params?.query?.toLowerCase()}')) and not(UserId in (${params?.userIds?.join(\",\")}))` ;\r\n } else {\r\n filter = `UserType eq 1 and UserStatus eq 1 and not(UserId in (${params.userIds.join(\",\")})) or UserType eq 3 and UserStatus eq 1 and not(UserId in (${params.userIds.join(\",\")}))` ;\r\n }\r\n }\r\n const data = await service.userList(selectProps, filter, params.limit);\r\n return data.value.map((item: any) => {\r\n return {\r\n ...item,\r\n FullName: `${item.FirstName} ${item.LastName ? item.LastName : \"\"}`,\r\n };\r\n });\r\n },\r\n\r\n async deleteApprovalGroup({ commit }, params: any) {\r\n if (params) {\r\n const data = await service.deleteApprovalGroup(params);\r\n return data;\r\n }\r\n },\r\n};\r\n","import { GetterTree } from 'vuex'\r\nimport { RootState } from 'store'\r\nimport { ApprovalGroupState } from './types'\r\n\r\nexport const getters: GetterTree = {\r\n lsGroupApproval: (state: ApprovalGroupState) => state.lsGroupApproval,\r\n countGroupApproval: (state: ApprovalGroupState) => state.countGroupApproval,\r\n loading: (state: ApprovalGroupState) => state.loading,\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { ApprovalGroupState, } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n SET_LIST_APPROVAL: (state: ApprovalGroupState, lsGroupApproval: ApprovalGroupModel[]) => {\r\n state.lsGroupApproval = lsGroupApproval;\r\n },\r\n SET_COUNT_APPROVAL: (state: ApprovalGroupState, countGroupApproval: number) => {\r\n state.countGroupApproval = countGroupApproval;\r\n },\r\n SET_LOADING_GROUP: (state: ApprovalGroupState, status: boolean) => {\r\n state.loading = status\r\n },\r\n};\r\n","import { Module } from 'vuex'\r\nimport { state } from './state'\r\nimport { actions } from './actions'\r\nimport { getters } from './getters'\r\nimport { mutations } from './mutations'\r\nimport { RootState } from 'store'\r\nimport { ApprovalGroupState } from './types'\r\n\r\nexport const approvalGroup: Module = {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n}\r\n\r\n","import { UserState } from './types'\r\n\r\nexport const state: UserState = {\r\n userList: [],\r\n userCount: 1,\r\n userParam: null,\r\n defaultStartTime: null,\r\n loading: false,\r\n employeeList: [],\r\n loadingEmployee: false,\r\n employeeCount: 1,\r\n loadingSendMail: false,\r\n sendMailResult: 'INIT',\r\n userLogs: [],\r\n userLogsCount: 1,\r\n loadingUserLogs: false,\r\n}","import Service from \"core/service\";\r\nimport type { AxiosError } from 'axios'\r\nimport axios from \"axios\";\r\n\r\nexport class UserService extends Service {\r\n\r\n insert(body: any, options: any): Promise {\r\n try {\r\n return this.post(\"/User\", body, options);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n update(params: any): Promise {\r\n try {\r\n return this.updateUserById(params[0].UserId, params[0]);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n updateDetail(params: any): Promise {\r\n try {\r\n return this.patch(`/user/${params.UserId}`, params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n updateUserById(id: any, user: any): Promise {\r\n try {\r\n return this.patch(`/User/${id}`, user);\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n updateStatus(params: any, newStatus: number) {\r\n try {\r\n if(params['Users'].length > 0){\r\n let arrPromise = [];\r\n for(let i = 0; i < params['Users'].length; i ++ ){\r\n const promise = this.updateStatusByUser(params.Users[i].UserId, params.Users[i]);\r\n arrPromise.push(promise);\r\n }\r\n return Promise.all(arrPromise);\r\n }\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n updateStatusByUser(id: any, user: any): Promise {\r\n try {\r\n return this.patch(`/User/${id}`, user);\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n \r\n select(selectProps: string, req: any | null): Promise {\r\n try {\r\n let params: any = {\r\n $select: selectProps,\r\n $expand: \"ApprovalGroupMembers($expand=ApprovalGroup), TimesheetHeaderUsers\",\r\n '$orderby': 'CreatedOn desc'\r\n };\r\n\r\n if(req){\r\n if(req.filter){\r\n params[\"$filter\"] = req.filter;\r\n }\r\n\r\n if (req.orderBy) {\r\n params[\"$orderby\"] = req.orderBy;\r\n }\r\n \r\n params[\"$count\"] = req.count ? req.count : true;\r\n params[\"$top\"] = req.pageSize ? req.pageSize : 100;\r\n params[\"$skip\"] = req.pageSize * (req.currentPage ? req.currentPage - 1 : 0);\r\n \r\n } else {\r\n params[\"$count\"] = true;\r\n params[\"$top\"] = 1;\r\n params[\"$skip\"] = 0;\r\n }\r\n const response = this.get(\"/User\", params);\r\n return response;\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n selectUserById(id: number, expand?: string) {\r\n let params: any = {};\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n return this.get(`/User(${id})`, params);\r\n }\r\n\r\n\r\n selectByUserId(selectProps: string, req: any | null): Promise {\r\n try {\r\n\r\n let params: any = {\r\n $select: selectProps,\r\n };\r\n\r\n if(req){\r\n if(req.filter){\r\n params[\"$filter\"] = req.filter;\r\n\r\n }\r\n }\r\n const response = this.get(\"/User\", params);\r\n return response;\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n isExistEmail(email: any | null): Promise {\r\n try {\r\n\r\n let params: any = {\r\n $filter: email\r\n };\r\n\r\n const response = this.get(\"/User\", params);\r\n return response;\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n deleteUsers(params: any) {\r\n try {\r\n if(params['Users'].length > 0){\r\n let arrPromise = [];\r\n for(let i = 0; i < params['Users'].length; i ++ ){\r\n const promise = this.deleteUserById(params['Users'][i].UserId);\r\n arrPromise.push(promise);\r\n }\r\n return Promise.all(arrPromise);\r\n }\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n deleteUserById(id: any): Promise {\r\n try {\r\n return this.delete(`/User/${id}`);\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n appovalGroupList(selectProps: string, filter: string | null, limit: number | null): Promise {\r\n try {\r\n let params: any = {\r\n $select: selectProps,\r\n };\r\n \r\n return this.get(\"/approvalGroup\", params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n dropDownDivisionPayLocation(selectProps: string, filter: string | null, active?:number): Promise {\r\n let params: any = {\r\n $select: selectProps,\r\n \"$filter\": active == -1 ? '' : active == 1|| active == undefined ? \"(Active eq true)\" : \"(Active eq false)\"\r\n };\r\n if (filter) {\r\n params[\"$filter\"] += params[\"$filter\"].length > 0 ? ` and (${filter})` : `${filter}`;\r\n }\r\n return this.get(\"/JobDivisionPayLocation\", params);\r\n }\r\n \r\n dropPayLocation(selectProps: string, filter: string | null, active?:number): Promise {\r\n let params: any = {\r\n $select: selectProps,\r\n $filter: filter,\r\n };\r\n return this.get(\"/PayLocation\", params);\r\n }\r\n\r\n getListGPEmployee(selectProps: string, req: any | null): Promise {\r\n try {\r\n let params: any = {\r\n $select: selectProps,\r\n };\r\n\r\n if(req){\r\n if(req.filter){\r\n params[\"$filter\"] = req.filter;\r\n }\r\n\r\n if (req.orderBy) {\r\n params[\"$orderby\"] = req.orderBy;\r\n }\r\n \r\n params[\"$count\"] = req.count ? req.count : true;\r\n params[\"$top\"] = req.pageSize ? req.pageSize : 100;\r\n params[\"$skip\"] = req.pageSize * (req.currentPage ? req.currentPage - 1 : 0);\r\n \r\n } else {\r\n params[\"$count\"] = true;\r\n params[\"$top\"] = 1;\r\n params[\"$skip\"] = 0;\r\n }\r\n const response = this.get(\"/GPEmployee\", params);\r\n return response;\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n\r\n }\r\n \r\n getGroupMember(selectProps: string, expand: string | null): Promise {\r\n try {\r\n let params: any = {\r\n $select: selectProps,\r\n $Count: true\r\n };\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n return this.get(\"/approvalGroup\", params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n \r\n sendWelcomeEmail(params: any) {\r\n try {\r\n if(params['Users'].length > 0){\r\n let arrPromise = [];\r\n for(let i = 0; i < params['Users'].length; i ++ ){\r\n const promise = this.sendWelcomeByEmail(params.Users[i].UserId);\r\n arrPromise.push(promise);\r\n }\r\n return Promise.all(arrPromise);\r\n }\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n sendWelcomeByEmail(id: any): Promise {\r\n try {\r\n return this.get(`/Profile/SendWelComeEmail/${id}`);\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n getAprrovalgroup(selectProps: string, expand: string | null): Promise {\r\n try {\r\n let params: any = {\r\n $select: selectProps,\r\n $Count: true\r\n };\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n params[\"$filter\"] = 'Status eq 1';\r\n params[\"$Top\"] = 100;\r\n params[\"$Skip\"] = 0;\r\n return this.get(\"/approvalGroup\", params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n\r\n selectUserLogs(req: any | null): Promise {\r\n try {\r\n let params: any = {};\r\n\r\n if(req){\r\n if(req.filter){\r\n params[\"$filter\"] = req.filter;\r\n }\r\n if(req.UserLogType !== null){\r\n params[\"UserLogType\"] = req.UserLogType;\r\n }\r\n if(req.orderBy){\r\n params[\"$orderBy\"] = req.orderBy;\r\n }\r\n params[\"$count\"] = req.count ? req.count : true;\r\n params[\"$top\"] = req.pageSize ? req.pageSize : 100;\r\n params[\"$skip\"] = req.pageSize * (req.currentPage ? req.currentPage - 1 : 0);\r\n \r\n } else {\r\n params[\"$count\"] = true;\r\n params[\"$top\"] = 1;\r\n params[\"$skip\"] = 0;\r\n }\r\n const response = this.get(\"/UserLog\", params);\r\n return response;\r\n\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n \r\n }\r\n}\r\n\r\n\r\n","import { RootState } from \"store\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { UserService } from \"../service\";\r\nimport { UserState } from \"./types\";\r\nconst service = new UserService()\r\n\r\nexport const actions: ActionTree = {\r\n \r\n async insert({ commit }, params: any, options?: any) {\r\n if(params){\r\n const data = await service.insert(params, options);\r\n return data;\r\n }\r\n },\r\n \r\n async update ({ commit }, params: any) {\r\n if(params){\r\n const data = await service.update(params);\r\n return data;\r\n }\r\n },\r\n\r\n async updateDetail ({ commit }, params: any) {\r\n if(params){\r\n const data = await service.updateDetail(params);\r\n return data;\r\n }\r\n },\r\n\r\n async updateStatus ({ commit }, params: any) {\r\n if(params){\r\n const newStatus = params.UserStatus;\r\n const data = await service.updateStatus(params, newStatus);\r\n return data;\r\n }\r\n },\r\n\r\n async select({ commit }, params: any) {\r\n if(params) {\r\n let filter = \"\";\r\n if(params.conditionSearch) {\r\n filter = params.conditionSearch.join(' and ');\r\n }\r\n const selectProps = \"\"; \r\n params.filter = filter;\r\n const response = await service.select(selectProps, params);\r\n return response;\r\n }\r\n return [];\r\n },\r\n\r\n async selectUserLog({ commit }, params: any) {\r\n if(params) {\r\n let filter = \"\";\r\n if(params.conditionSearch) {\r\n filter = params.conditionSearch.join(' and ');\r\n }\r\n if(!params?.orderBy) {\r\n params.orderBy = 'UserLogDateTime desc'\r\n }\r\n params.filter = filter;\r\n const response = await service.selectUserLogs(params);\r\n commit(\"SET_USER_LOGS\", response.value);\r\n commit(\"SET_USER_LOGS_COUNT\", response[\"@odata.count\"]);\r\n }\r\n },\r\n\r\n async selectByUserId({ commit }, params: any) {\r\n if(params) {\r\n let filter = \"\";\r\n if(params.Email) {\r\n filter = `tolower(Email) eq tolower('${params.Email}')`;\r\n }\r\n const selectProps = \"\"; \r\n params.filter = filter;\r\n const response = await service.selectByUserId(selectProps, params);\r\n return response;\r\n }\r\n return [];\r\n },\r\n\r\n async selectUserById({ commit }, id: any) {\r\n if(id) {\r\n const response = await service.selectUserById(id);\r\n return response;\r\n }\r\n return [];\r\n },\r\n\r\n async isExistEmail({ commit }, email: any) {\r\n if(email) {\r\n const filter = `tolower(Email) eq tolower('${email}')`;\r\n const response = await service.isExistEmail(filter);\r\n if(response.value && response.value.length > 0){\r\n return true;\r\n }\r\n return false;\r\n }\r\n return false;\r\n },\r\n\r\n async appovalGroupList({ commit }, params: any) {\r\n let selectProps = \"\";\r\n let expand = \"\";\r\n const filter = \"\";\r\n const data = await service.appovalGroupList(selectProps, filter, params.limit);\r\n return data.value;\r\n },\r\n \r\n async delete({ commit }, params: any) {\r\n if(params){\r\n const data = await service.deleteUsers(params);\r\n return data;\r\n }\r\n },\r\n\r\n async dropDownDivisionPayLocation({ commit }, params: any) {\r\n let filter = ``;\r\n const active = params?.active\r\n if (params.search) {\r\n filter = `contains(tolower(PayLocation),'${params.search.toLowerCase()}')`\r\n }\r\n const data = await service.dropDownDivisionPayLocation(\"JobDivisionPayLocationId, PayLocation, Division, Active\", filter, active)\r\n return data.value\r\n },\r\n async dropPayLocation({ commit }, params: any) {\r\n let filter = ``;\r\n if (params.search) {\r\n filter = `contains(tolower(Name),'${params.search.toLowerCase()}')`\r\n }\r\n const data = await service.dropPayLocation(\"Name\", filter)\r\n return data.value\r\n },\r\n \r\n async getListGPEmployee({ commit }, params: any) {\r\n if(params) {\r\n let filter = \"\";\r\n\r\n if(params.conditionSearch) {\r\n filter = params.conditionSearch.join(' and ');\r\n }\r\n const selectProps = \"\"; \r\n params.filter = filter;\r\n const response = await service.getListGPEmployee(selectProps, params);\r\n return response;\r\n }\r\n return [];\r\n },\r\n\r\n async getGroupMember({ commit }, params: any) {\r\n const expand =\r\n \"ApprovalGroupMembers($expand=Approver($select=FirstName, LastName, Email, AvatarUrl, UserType))\";\r\n const selectProps = \"ApprovalGroupId, Name, Status, CreatedOn, UpdatedOn, GPBatchPrefix, GPBatchNotificationTo, GPBatchNotificationCC\";\r\n const data = await service.getGroupMember(\r\n selectProps,\r\n expand,\r\n );\r\n return data.value;\r\n },\r\n\r\n async sendWelcomeEmail ({ commit }, params: any) {\r\n if(params){\r\n const data = await service.sendWelcomeEmail(params);\r\n return data;\r\n }\r\n },\r\n \r\n async getAprrovalgroup ({ commit }, params: any) {\r\n \r\n const expand =\r\n \"ApprovalGroupMembers($expand=Approver), Users($count=true)\";\r\n\r\n const selectProps = \"ApprovalGroupId, Name, Status, CreatedOn, UpdatedOn, GPBatchPrefix, GPBatchNotificationTo, GPBatchNotificationCC\";\r\n\r\n const data = await service.getAprrovalgroup(\r\n selectProps,\r\n expand,\r\n );\r\n return data.value\r\n },\r\n\r\n\r\n};\r\n","import { GetterTree } from 'vuex'\r\nimport { RootState } from 'store'\r\nimport { UserState } from './types'\r\n\r\nexport const getters: GetterTree = {\r\n userList: (state: UserState) => state.userList,\r\n userCount: (state: UserState) => state.userCount,\r\n userParam: (state: UserState) => state.userParam,\r\n defaultStartTime: (state: UserState) => state.defaultStartTime,\r\n loading: (state: UserState) => state.loading,\r\n employeeList: (state: UserState) => state.employeeList,\r\n loadingEmployee: (state: UserState) => state.loadingEmployee,\r\n employeeCount: (state: UserState) => state.employeeCount,\r\n loadingSendMail: (state: UserState) => state.loadingSendMail,\r\n sendMailResult: (state: UserState) => state.sendMailResult,\r\n userLogs: (state: UserState) => state.userLogs,\r\n userLogsCount: (state: UserState) => state.userLogsCount,\r\n loadingUserLogs: (state: UserState) => state.loadingUserLogs\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { UserState } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n SET_USER_LIST: (state: UserState, userList: UserModel[]) => {\r\n state.userList = userList;\r\n },\r\n SET_USER_LOGS: (state: UserState, userLogs: UserModel[]) => {\r\n state.userLogs = userLogs;\r\n },\r\n SET_USER_COUNT: (state: UserState, userCount: number) => {\r\n state.userCount = userCount;\r\n },\r\n SET_USER_LOGS_COUNT: (state: UserState, userLogscount: number) => {\r\n state.userLogsCount = userLogscount;\r\n },\r\n SET_LOADING_USER_LOGS: (state: UserState, status: boolean) => {\r\n state.loadingUserLogs = status\r\n },\r\n SET_USER_PRAM: (state: UserState, userParam: any) => {\r\n state.userParam = userParam;\r\n },\r\n SET_DEFAULT_START_TIME: (state: UserState, defaultStartTime: any) => {\r\n state.defaultStartTime = defaultStartTime;\r\n },\r\n SET_LOADING_USER: (state: UserState, status: boolean) => {\r\n state.loading = status\r\n },\r\n SET_EMPLOYEE_LIST: (state: UserState, userList: UserModel[]) => {\r\n state.employeeList = userList;\r\n },\r\n SET_LOADING_EMPLOYEE: (state: UserState, status: boolean) => {\r\n state.loadingEmployee = status\r\n },\r\n SET_EMPLOYEE_COUNT: (state: UserState, userCount: number) => {\r\n state.employeeCount = userCount;\r\n },\r\n SET_LOADING_SEND_MAIL: (state: UserState, status: boolean) => {\r\n state.loadingSendMail = status;\r\n },\r\n SET_LOADING_SEND_MAIL_SUCCESS: (state: UserState, status: string) => {\r\n state.sendMailResult = status;\r\n },\r\n SET_LOADING_SEND_MAIL_FAIL: (state: UserState, status: string) => {\r\n state.sendMailResult = status;\r\n },\r\n};\r\n","import { Module } from 'vuex'\r\nimport { state } from './state'\r\nimport { actions } from './actions'\r\nimport { getters } from './getters'\r\nimport { mutations } from './mutations'\r\nimport { RootState } from 'store'\r\nimport { UserState } from './types'\r\n\r\nexport const user: Module = {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n}\r\n\r\n","import { TimesheetApproveState } from './types'\r\n\r\nexport const state: TimesheetApproveState = {\r\n timeSheetsApprove: [],\r\n filters: {},\r\n totalRowFetchTimeSheet: 0,\r\n loading: false,\r\n totalHour: 0,\r\n sortParams: '',\r\n}","import Service from \"core/service\";\r\nexport class TimeSheetApproveService extends Service {\r\n fetchTimeSheet(\r\n currentPage: number,\r\n pageSize: number,\r\n expand?: string,\r\n filter?: string,\r\n orderby?: string\r\n ) {\r\n let params: any = {\r\n $orderby: \"CreatedOn desc\",\r\n };\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n if (filter) {\r\n params[\"$filter\"] = filter;\r\n }\r\n if (orderby) {\r\n params[\"$orderby\"] = orderby;\r\n }\r\n params[\"$count\"] = true;\r\n params[\"$top\"] = pageSize;\r\n params[\"$skip\"] = currentPage == 1 ? 0 : (currentPage - 1) * pageSize;\r\n return this.get(\"/Timesheet\", params);\r\n }\r\n\r\n fetchTimeSheetById(id: number, expand?: string) {\r\n let params: any = {};\r\n if (expand) {\r\n params[\"$expand\"] = expand;\r\n }\r\n return this.get(`/Timesheet(${id})`, params);\r\n }\r\n\r\n updateTimeSheet(dataUpdate: any) {\r\n return this.patch(`/Timesheet(${dataUpdate.Id})`, dataUpdate);\r\n }\r\n\r\n approveTimeSheets(ids: any) {\r\n return this.post(`/Timesheet/Approvals`, { ids });\r\n }\r\n\r\n fetchUserApprove(filter?: string) {\r\n let params: any = {};\r\n if (filter) {\r\n params[\"$filter\"] = filter;\r\n }\r\n return this.get(\"/User\", params);\r\n }\r\n\r\n updateApprovalGroup(TimesheetHeaderId: number, approvalGroupId: number) {\r\n return this.patch(`/Timesheet/${TimesheetHeaderId}/approval-groups/${approvalGroupId}`);\r\n }\r\n}\r\n","export interface TimesheetApproveState {\r\n timeSheetsApprove?: TimeSheetHeader[],\r\n totalRowFetchTimeSheet: number,\r\n filters?: FilterTimeSheet,\r\n loading: boolean,\r\n totalHour: number,\r\n sortParams: string,\r\n}\r\n\r\nexport interface FilterTimeSheet {\r\n fromDay?: string,\r\n toDay?: string,\r\n status?: number,\r\n approveBy?: string,\r\n search?: string,\r\n searchById?: string,\r\n searchSubmitter?: string,\r\n searchReviewer?: string,\r\n timeSheetId?: string;\r\n divisionJob?: string,\r\n searchApprovalGroup?: string,\r\n ownTimesheet?: number;\r\n}\r\n\r\nexport const SET_TIME_SHEETS_APPROVE = 'SET_TIME_SHEETS_APPROVE'\r\nexport const SET_TIME_SHEETS_FILTER = 'SET_TIME_SHEETS_FILTER'\r\nexport const SET_LOADING_TIME_SHEETS = 'SET_LOADING_TIME_SHEETS'\r\nexport const SET_TOTAL_HOUR_TIME_SHEET = 'SET_TOTAL_HOUR_TIME_SHEET'\r\nexport const SET_SORT_PARAMS_TIME_SHEET = 'SET_SORT_PARAMS_TIME_SHEET'\r\n","import { RootState } from \"store\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { TimeSheetApproveService } from \"../service\";\r\nimport { TimesheetApproveState, SET_TIME_SHEETS_APPROVE, FilterTimeSheet, SET_TOTAL_HOUR_TIME_SHEET, SET_SORT_PARAMS_TIME_SHEET } from \"./types\";\r\nimport { timeSheetStatusName } from '../../../dashboard/store/types'\r\nimport _ from 'lodash'\r\nimport dayjs from \"dayjs\";\r\nimport { convertTaskIdToType, formatTime } from \"../../../../utils\";\r\nimport { ProfileService } from '../../../profile/service'\r\n\r\nconst service = new TimeSheetApproveService();\r\nconst profileService =new ProfileService()\r\nexport const actions: ActionTree = {\r\n\r\n async actLoadTimeSheet({ commit }, params: any) {\r\n const filterTimeSheet:FilterTimeSheet = this.getters['timeSheetsApprove/filters']\r\n let expand = `TimesheetLines($expand=Job,JobCostCode,GLAccount,WorkOrderTask, WorkOrder,TimesheetAdditionals($select=Manufacturer)),User($expand=ApprovalGroup),LastActorUser($select=Email,FirstName,LastName),\r\n ApprovalGroup($select=Name,ApprovalGroupId)`\r\n const filters = []\r\n const currentUser = this.getters['auth/currentUser']\r\n if (filterTimeSheet){\r\n if (filterTimeSheet.fromDay && filterTimeSheet.toDay){\r\n filters.push(`StartDate ge ${filterTimeSheet.fromDay} and StartDate le ${filterTimeSheet.toDay}`)\r\n }\r\n if ((filterTimeSheet.status || filterTimeSheet.status === 0) && filterTimeSheet.status != -1) {\r\n filters.push(`TimesheetStatus eq ${filterTimeSheet.status}`)\r\n }\r\n if (filterTimeSheet.approveBy) {\r\n filters.push(`ApproverId eq ${filterTimeSheet.approveBy}`)\r\n }\r\n if (filterTimeSheet.search) {\r\n const isNumber = !isNaN(parseInt(filterTimeSheet.search))\r\n if (isNumber) {\r\n filters.push(`startswith(cast(TimesheetHeaderId, 'Edm.String'),'${filterTimeSheet.search.toString()}')`)\r\n }else{\r\n filters.push(`(contains(tolower(User/FirstName),'${filterTimeSheet.search.toLowerCase()}') or contains(tolower(User/LastName),'${filterTimeSheet.search.toLowerCase()}'))`)\r\n }\r\n }\r\n\r\n if (filterTimeSheet.searchById) {\r\n filters.push(`startswith(cast(TimesheetHeaderId, 'Edm.String'),'${filterTimeSheet.searchById.toString()}')`)\r\n }\r\n\r\n if(filterTimeSheet.searchSubmitter) {\r\n filters.push(`(contains(tolower(User/Email), '${filterTimeSheet.searchSubmitter}') or contains(tolower(concat(concat(User/FirstName,' '), User/LastName)), '${filterTimeSheet.searchSubmitter}') )`);\r\n }\r\n\r\n if(filterTimeSheet.searchReviewer) {\r\n filters.push(`(contains(tolower(Approver/Email), '${filterTimeSheet.searchReviewer}') or contains(tolower(concat(concat(Approver/FirstName,' '), Approver/LastName)), '${filterTimeSheet.searchReviewer}') )`);\r\n }\r\n if (filterTimeSheet.searchApprovalGroup) {\r\n const isNumber = !isNaN(parseInt(filterTimeSheet.searchApprovalGroup))\r\n if (isNumber) {\r\n filters.push(`startswith(cast(User/ApprovalGroupId, 'Edm.String'),'${filterTimeSheet.searchApprovalGroup.toString()}')`)\r\n } else {\r\n filters.push(`contains(tolower(User/ApprovalGroup/Name),'${filterTimeSheet.searchApprovalGroup.toLowerCase()}')`)\r\n }\r\n }\r\n if(filterTimeSheet.ownTimesheet) {\r\n filters.push(`UserId eq ${currentUser.userId}`)\r\n }\r\n }\r\n \r\n const result = await service.fetchTimeSheet(params.currentPage, params.pageSize, expand, filters.join(' and '), params.orderby)\r\n const data = result.value.map((item: TimeSheetHeader)=>{\r\n const timeSheet: TimeSheetHeader = {\r\n ...item\r\n }\r\n if (timeSheet.StartDate) {\r\n timeSheet.StartDate = dayjs(timeSheet.StartDate).format('MMM DD, YYYY')\r\n }\r\n timeSheet.TimesheetLines = []\r\n if (timeSheet.TimesheetStatus || timeSheet.TimesheetStatus === 0) {\r\n timeSheet.TimesheetStatusName = timeSheetStatusName[timeSheet.TimesheetStatus as keyof typeof timeSheetStatusName]\r\n }\r\n if (item.User) {\r\n item.User.FullName = `${item.User.LastName ?? ''} ${item.User.FirstName ?? ''}`\r\n }\r\n if (item.Approver) {\r\n item.Approver.FullName = `${item.Approver.LastName ?? ''} ${item.Approver.FirstName ?? ''}`\r\n }\r\n \r\n if (item.TimesheetLines && item.TimesheetLines.length > 0){\r\n item.TimesheetLines.forEach((line)=> {\r\n \r\n const timesheetLine: TimeSheetLine = {\r\n ...line\r\n }\r\n timesheetLine.JobTitle = '---'\r\n\r\n if (line.TimesheetLineType === 0){\r\n timesheetLine.JobType = 'Rental'\r\n } else if(line.TimesheetLineType === 1){\r\n timesheetLine.JobType = 'Unbill'\r\n } else if(line.TimesheetLineType === 2){\r\n timesheetLine.JobType = 'Job cost'\r\n }\r\n\r\n if (line.WorkOrderTaskId && line.WorkOrderTask) {\r\n timesheetLine.JobTitle = `${line.WorkOrderTask.Name} ${line.WorkOrderTask.Description}`\r\n }\r\n if (line.JobCostCodeId && line.JobCostCode) {\r\n timesheetLine.JobTitle = `${line.JobCostCode.Name} ${line.JobCostCode.Description}`\r\n }\r\n if (line.Glaccount && line.GlaccountId) {\r\n timesheetLine.JobTitle = `${line.Glaccount.Description}`\r\n }\r\n if (line.TimesheetLineMinutes && line.TimesheetLineMinutes > 0) {\r\n timesheetLine.TimesheetLineMinutesTitle = `${Math.floor(line.TimesheetLineMinutes/60)}h ${line.TimesheetLineMinutes%60}min`\r\n }\r\n timeSheet.TimesheetLines?.push(timesheetLine)\r\n })\r\n }\r\n if (timeSheet.TotalDuration > 0){\r\n timeSheet.TotalWorkingTitle = `${Math.floor(timeSheet.TotalDuration/60)}h ${timeSheet.TotalDuration%60}min`\r\n timeSheet.TotalWorkingHours = timeSheet.TotalDuration/60\r\n }else {\r\n timeSheet.TotalWorkingTitle = '0h'\r\n timeSheet.TotalWorkingHours = 0\r\n }\r\n return timeSheet;\r\n })\r\n commit(SET_TIME_SHEETS_APPROVE, {lstTimeSheets: data, count: result['@odata.count']})\r\n commit(SET_SORT_PARAMS_TIME_SHEET, params?.orderby || \"\")\r\n },\r\n\r\n async actGetTimeSheet({ commit }, params: any){\r\n const expand = `TimesheetLines($expand=JobCostCode,GLAccount,WorkOrderTask,\r\n TimesheetAdditionals(select=TimesheetAdditionalId,Manufacturer,Model,Smureading,SerialNumber,CustomerName,CustomerEmail,Locations,TravelKms,\r\n Rego,WorkerSignature,CustomerSignature,AdditionalInfo,CustomerAcceptanceName)),Approver`\r\n const result: TimeSheetHeader = await service.fetchTimeSheetById(params.id, expand)\r\n const lstTimeSheetLineRental:any = []\r\n const lstTimeSheetLineJob:any = []\r\n const lstTimeSheetLineUnbill:any = []\r\n if (result) {\r\n if (result.TimesheetLines){\r\n for (let index = 0; index < result.TimesheetLines.length; index++) {\r\n const line = result.TimesheetLines[index]\r\n \r\n line.JobTitle = ''\r\n if (line.TimesheetLineMinutes && line.TimesheetLineMinutes > 0) {\r\n line.TimesheetLineMinutesTitle = `${Math.floor(line.TimesheetLineMinutes/60)}h ${line.TimesheetLineMinutes%60}min`\r\n }else {\r\n line.TimesheetLineMinutesTitle = '0h'\r\n }\r\n if (line.WorkOrderTaskId && line.WorkOrderTask) {\r\n line.JobTitle = `${line.WorkOrderTask.Name} ${line.WorkOrderTask.Description}`\r\n line.JobType = 'Rental'\r\n const expandWorkOrder = 'WorkOrder($expand=Equipment)'\r\n const workOder = await profileService.getWorkOrderTaskById(line.WorkOrderTaskId, expandWorkOrder)\r\n line.WorkOrderTask = { ...workOder }\r\n lstTimeSheetLineRental.push({...line})\r\n \r\n }\r\n if (line.JobCostCodeId && line.JobCostCode) {\r\n line.JobTitle = `${line.JobCostCode.Name} ${line.JobCostCode.Description}`\r\n line.JobType = 'Job cost'\r\n lstTimeSheetLineJob.push({...line})\r\n }\r\n if (line.Glaccount && line.GlaccountId) {\r\n line.JobTitle = `${line.Glaccount.Description}`\r\n line.JobType = 'Unbill'\r\n lstTimeSheetLineUnbill.push({...line})\r\n }\r\n }\r\n }\r\n if (result.StartDate) {\r\n result.StartDate = dayjs(result.StartDate).format('MMM DD, YYYY')\r\n }\r\n if (result.StartTime) {\r\n result.StartTimeObjects = formatTime(result.StartTime)\r\n }\r\n if (result.TimesheetStatus || result.TimesheetStatus === 0) {\r\n result.TimesheetStatusName = timeSheetStatusName[result.TimesheetStatus as keyof typeof timeSheetStatusName]\r\n }\r\n if (result.TotalDuration > 0){\r\n result.TotalWorkingTitle = `${Math.floor(result.TotalDuration/60)}h ${result.TotalDuration%60}min`\r\n result.TotalWorkingHours = result.TotalDuration/60\r\n }else {\r\n result.TotalWorkingTitle = '0h'\r\n result.TotalWorkingHours = result.TotalDuration/60\r\n }\r\n result.StartDate\r\n }\r\n return {\r\n timeSheetHeader: result,\r\n lstTimeSheetLineRental,\r\n lstTimeSheetLineJob,\r\n lstTimeSheetLineUnbill\r\n }\r\n },\r\n\r\n async actApproveTimeSheet({ commit }, params: any){\r\n const dataApprove = {\r\n Id: params.id,\r\n TimesheetStatus: 2\r\n }\r\n const result = await service.updateTimeSheet(dataApprove)\r\n return result\r\n },\r\n\r\n async actApproveTimeSheets({ commit }, params: any){\r\n const result = await service.approveTimeSheets( params.ids )\r\n return result\r\n },\r\n \r\n async actCancelTimeSheet({ commit }, params: any){\r\n const dataApprove = {\r\n Id: params.id,\r\n TimesheetStatus: 5\r\n }\r\n const result = await service.updateTimeSheet(dataApprove)\r\n return result\r\n },\r\n\r\n async actDeclineTimeSheet({ commit }, params: any){\r\n const dataApprove = {\r\n Id: params.id,\r\n TimesheetStatus: 3,\r\n Reason: params.reason\r\n }\r\n const result = await service.updateTimeSheet(dataApprove)\r\n return result\r\n },\r\n\r\n async actReassignApprovalGroup({ commit }, params: any) {\r\n const result = await service.updateApprovalGroup(params.TimesheetHeaderId, params.ApprovalGroupId)\r\n return result\r\n },\r\n\r\n async actFetchUserApprove({commit}, params:any){\r\n let filter = 'UserType ne 0'\r\n const result = await service.fetchUserApprove(filter)\r\n return result.value;\r\n },\r\n \r\n async loadCountSuperTotalTimesheet({ commit }, params: any) {\r\n let filterStr = ''\r\n let totalHour = 0\r\n const currentUser:any = this.getters['auth/currentUser']\r\n const filterTimeSheet = dayjs().format(\"YYYY-MM-DD\");\r\n filterStr = (`StartDate ge ${filterTimeSheet} and StartDate le ${filterTimeSheet} and TimesheetStatus eq 1 or StartDate ge ${filterTimeSheet} and StartDate le ${filterTimeSheet} and TimesheetStatus eq 2`);\r\n const response = await service.fetchTimeSheet(1, 100, '', filterStr, params?.orderby)\r\n const result = response.value.filter((item: any) => item.UserId == currentUser.userId)\r\n if (result.length > 0) {\r\n totalHour = result.reduce((accumulator: any, currentValue: any) => accumulator + currentValue.TotalDuration, 0);\r\n }\r\n commit(SET_TOTAL_HOUR_TIME_SHEET, totalHour)\r\n },\r\n};\r\n","import { GetterTree } from 'vuex'\r\nimport { RootState } from 'store'\r\nimport { TimesheetApproveState } from './types'\r\n\r\nexport const getters: GetterTree = {\r\n listTimeSheets:(state: TimesheetApproveState) => state.timeSheetsApprove,\r\n filters:(state: TimesheetApproveState) => state.filters,\r\n totalRowFetchTimeSheet:(state: TimesheetApproveState) => state.totalRowFetchTimeSheet,\r\n loading: (state: TimesheetApproveState) => state.loading,\r\n totalHour: (state: TimesheetApproveState) => state.totalHour,\r\n sortParams: (state: TimesheetApproveState) => state.sortParams,\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { TimesheetApproveState, \r\n SET_TIME_SHEETS_APPROVE,\r\n SET_TIME_SHEETS_FILTER,\r\n FilterTimeSheet,\r\n SET_LOADING_TIME_SHEETS,\r\n SET_TOTAL_HOUR_TIME_SHEET,\r\n SET_SORT_PARAMS_TIME_SHEET,\r\n} from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n [SET_TIME_SHEETS_APPROVE](state: TimesheetApproveState, data: any) {\r\n state.timeSheetsApprove = data.lstTimeSheets;\r\n state.totalRowFetchTimeSheet = data.count;\r\n },\r\n [SET_TIME_SHEETS_FILTER](state: TimesheetApproveState, data: FilterTimeSheet) {\r\n state.filters = data\r\n },\r\n [SET_LOADING_TIME_SHEETS](state: TimesheetApproveState, status: boolean) {\r\n state.loading = status\r\n },\r\n [SET_TOTAL_HOUR_TIME_SHEET](state: TimesheetApproveState, data: number) {\r\n state.totalHour = data;\r\n },\r\n [SET_SORT_PARAMS_TIME_SHEET](state: TimesheetApproveState, data: string) {\r\n state.sortParams = data;\r\n },\r\n};\r\n","import { Module } from 'vuex'\r\nimport { state } from './state'\r\nimport { actions } from './actions'\r\nimport { getters } from './getters'\r\nimport { mutations } from './mutations'\r\nimport { RootState } from 'store'\r\nimport { TimesheetApproveState } from './types'\r\n\r\nexport const timeSheetsApprove: Module = {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n}\r\n\r\n","import { TimeSheetTrackingState } from './types'\r\n\r\nexport const state: TimeSheetTrackingState = {\r\n filterTimeSheetTracking: {},\r\n timeSheetTrackings: [],\r\n timeSheetTrackingCount: 0,\r\n loading: false\r\n}","import Service from 'core/service'\r\nimport { FilterTimeSheetTracking } from '../store/types';\r\n\r\nconst PAGE_SIZE = 25;\r\nexport class TimeSheetTrackingService extends Service {\r\n fetchTimeSheetTracking(filter: FilterTimeSheetTracking, currentPage: number = 1, pageSize: number = PAGE_SIZE,) {\r\n const dataFilter = {...filter}\r\n dataFilter._Top = pageSize;\r\n dataFilter._Skip = currentPage == 1 ? 0 : (currentPage - 1) * pageSize;\r\n if(dataFilter.Status == -1){\r\n dataFilter.Status = undefined\r\n }\r\n return this.get(\"/TimesheetHistory/GetExpands\", dataFilter);\r\n }\r\n\r\n}","import { convertStatusTimeSheet, convertTaskIdToType } from \"../../../../utils\"\r\nimport {getHoursAndMinutes} from \"../../../../utils/time\"\r\n\r\nexport interface FilterTimeSheetTracking {\r\n UserId?: string,\r\n Search?: string,\r\n Email?: string,\r\n SearchByField?: string,\r\n TimesheetHeaderId?: number,\r\n ActionArea?: number,\r\n ActionType?: number,\r\n Status?: number,\r\n FromDate?: number,\r\n ToDate?: number,\r\n _Top?: number,\r\n _Skip?: number,\r\n _OrderBy?: string,\r\n _OrderType?: string,\r\n}\r\n\r\nexport interface TimeSheetHistory {\r\n timesheetHistoryId: number\r\n timesheetHeaderId: number\r\n userId: string\r\n actionType: number\r\n actionArea: number\r\n time: string\r\n changeDetail: string\r\n user: {\r\n userId: string\r\n userType: number\r\n firstName?: string\r\n email?: string\r\n lastName?: string\r\n avatarUrl?: string\r\n }\r\n}\r\n\r\nexport interface TimeSheetHistoryParse {\r\n timesheetHistoryId: number\r\n timesheetHeaderId: number\r\n taskId?: number\r\n userId: string\r\n actionType: string\r\n actionArea: string\r\n time: string\r\n changeDetail: {\r\n field: string\r\n previousValue?: string | number | null\r\n currentValue?: string | number | null\r\n previousTextValue?: string | null\r\n currentTextValue?: string | null\r\n }[]\r\n user: {\r\n userId: string\r\n userType: number\r\n avatarUrl?: string\r\n name?: string\r\n email?: string\r\n }\r\n}\r\n\r\nexport interface TimeSheetTrackingState {\r\n timeSheetTrackings: TimeSheetHistory[],\r\n filterTimeSheetTracking: FilterTimeSheetTracking,\r\n timeSheetTrackingCount: number,\r\n loading: boolean\r\n}\r\n\r\nexport const SET_LIST_TIME_SHEET_TRACKING = 'SET_LIST_TIME_SHEET_TRACKING'\r\nexport const SET_FILTER_TIME_SHEET_TRACKING = 'SET_FILTER_TIME_SHEET_TRACKING'\r\nexport const SET_TIME_SHEET_TRACKING_COUNT = 'SET_TIME_SHEET_TRACKING_COUNT'\r\nexport const SET_LOADING_TIME_SHEET_TRACKING = 'SET_LOADING_TIME_SHEET_TRACKING'\r\n\r\nexport const timesheetActionArea = Object.freeze({\r\n 0: 'Header',\r\n 1: 'Task',\r\n 2: 'Status changed',\r\n 3: 'Field Service'\r\n\r\n})\r\n\r\nexport const timesheetActionType = Object.freeze({\r\n 0: 'Create',\r\n 1: 'Edit',\r\n 2: 'Delete'\r\n})\r\n\r\nexport const convertValueHistory = (field: string, value: string): string => {\r\n switch (field) {\r\n case \"Header.TimesheetStatus\":\r\n return value != null ? convertStatusTimeSheet(+value) : value\r\n case \"Task.TimesheetLineType\":\r\n return value != null ? convertTaskIdToType(+value) : value\r\n case \"Task.StartTime\":\r\n case \"Task.EndTime\":\r\n if(value == null || value === '')\r\n return value\r\n const hoursAndMinutes = getHoursAndMinutes(+value)\r\n const hours = hoursAndMinutes.hours<10?\"0\"+hoursAndMinutes.hours:hoursAndMinutes.hours\r\n const minutes = hoursAndMinutes.minutes<10?\"0\"+hoursAndMinutes.minutes:hoursAndMinutes.minutes\r\n let formatHours\r\n if (hours == 0) {\r\n formatHours = 12\r\n } else {\r\n formatHours = hours > 12 ? hours as number % 12 : hours \r\n }\r\n return `${formatHours}:${minutes} ${hoursAndMinutes.isAm? \"am\" : \"pm\"}`\r\n default:\r\n return value\r\n }\r\n}","export interface UserState {\r\n userList: UserModel[],\r\n userCount: number,\r\n userParam: any,\r\n defaultStartTime: any,\r\n loading: boolean,\r\n employeeList: any[],\r\n loadingEmployee: boolean,\r\n employeeCount: number,\r\n loadingSendMail: boolean,\r\n sendMailResult: string,\r\n userLogs: any[],\r\n userLogsCount: number,\r\n loadingUserLogs: boolean,\r\n}\r\n\r\nexport const userTypeList = Object.freeze({\r\n 0: 'Staff',\r\n 1: 'Approver',\r\n 2: 'User_Administrator',\r\n 3: 'System_Administrator',\r\n})\r\n\r\nexport const userStatusList = Object.freeze({\r\n 0: 'Disabled',\r\n 1: 'Enabled',\r\n 2: 'Created'\r\n})\r\n\r\nexport interface JobDivisionPayLocation {\r\n JobDivisionPayLocationId: number\r\n PayLocation: string\r\n Division: string\r\n Active?: boolean\r\n}\r\n\r\nexport interface PayLocation {\r\n Name: string\r\n}","import { RootState } from \"store\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { TimeSheetTrackingService } from \"../service\";\r\nimport { FilterTimeSheetTracking, SET_LIST_TIME_SHEET_TRACKING, SET_TIME_SHEET_TRACKING_COUNT, TimeSheetHistoryParse, TimeSheetTrackingState, TimeSheetHistory, timesheetActionArea, timesheetActionType, convertValueHistory } from \"./types\";\r\nimport { userTypeList } from \"modules/admin/users/store/types\";\r\nimport { formatDate } from \"../../../../utils/time\";\r\n\r\nconst service = new TimeSheetTrackingService();\r\nexport const actions: ActionTree = {\r\n async actLoadTimeSheetTracking({ commit }, params: any) {\r\n const filterTimeSheet: FilterTimeSheetTracking = this.getters[\"timeSheetTracking/filterTimeSheetTracking\"];\r\n const data = await service.fetchTimeSheetTracking(filterTimeSheet, params.currentPage, params.pageSize)\r\n const result: TimeSheetHistoryParse[] = data.data.map((e: TimeSheetHistory) => {\r\n let dataChange = JSON.parse(e.changeDetail);\r\n let changeDetail = [];\r\n if ([1,3].includes(e.actionArea)) {\r\n changeDetail = dataChange[\"Detail\"].map((c: any) => ({\r\n field: c.Field,\r\n textField: c.TextField,\r\n previousValue: convertValueHistory(`Task.${c.Field}`,c.PreviousValue),\r\n currentValue: convertValueHistory(`Task.${c.Field}`,c.CurrentValue),\r\n previousTextValue: c.PreviousTextValue,\r\n currentTextValue: c.CurrentTextValue\r\n }))\r\n } else {\r\n changeDetail = dataChange.map((c: any) => {\r\n return {\r\n field: c.Field,\r\n textField: c.TextField,\r\n previousValue: convertValueHistory(`Header.${c.Field}`,c.PreviousValue),\r\n currentValue: convertValueHistory(`Header.${c.Field}`,c.CurrentValue),\r\n previousTextValue: c.PreviousTextValue,\r\n currentTextValue: c.CurrentTextValue\r\n }\r\n })\r\n }\r\n return {\r\n timesheetHistoryId: e.timesheetHistoryId,\r\n timesheetHeaderId: e.timesheetHeaderId,\r\n taskId: e.actionArea == 1 ? dataChange[\"TimesheetLineId\"] : null,\r\n userId: e.userId,\r\n actionType: timesheetActionType[e.actionType],\r\n actionArea: timesheetActionArea[e.actionArea],\r\n time: formatDate(e.time),\r\n changeDetail,\r\n user: {\r\n userId: e.userId,\r\n userType: userTypeList[e.user?.userType],\r\n email: e.user.email,\r\n name: e.user?.firstName + \" \" + e.user?.lastName,\r\n avatarUrl: e.user?.avatarUrl,\r\n }\r\n }\r\n })\r\n commit(SET_LIST_TIME_SHEET_TRACKING, result)\r\n commit(SET_TIME_SHEET_TRACKING_COUNT, data.count)\r\n },\r\n};","import { GetterTree } from 'vuex'\r\nimport { RootState } from 'store'\r\nimport { TimeSheetTrackingState } from './types'\r\n\r\nexport const getters: GetterTree = {\r\n timeSheetTrackings: (state: TimeSheetTrackingState) => state.timeSheetTrackings,\r\n filterTimeSheetTracking: (state: TimeSheetTrackingState) => state.filterTimeSheetTracking,\r\n timeSheetTrackingCount: (state: TimeSheetTrackingState) => state.timeSheetTrackingCount,\r\n loading: (state: TimeSheetTrackingState) => state.loading,\r\n}","import { MutationTree } from \"vuex\";\r\nimport {\r\n TimeSheetTrackingState,\r\n FilterTimeSheetTracking,\r\n SET_LIST_TIME_SHEET_TRACKING,\r\n SET_FILTER_TIME_SHEET_TRACKING,\r\n SET_TIME_SHEET_TRACKING_COUNT,\r\n TimeSheetHistory,\r\n SET_LOADING_TIME_SHEET_TRACKING\r\n} from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n [SET_FILTER_TIME_SHEET_TRACKING](state: TimeSheetTrackingState, data: FilterTimeSheetTracking) {\r\n state.filterTimeSheetTracking = data;\r\n },\r\n [SET_LIST_TIME_SHEET_TRACKING](state: TimeSheetTrackingState, data: TimeSheetHistory[]) {\r\n state.timeSheetTrackings = data;\r\n },\r\n [SET_TIME_SHEET_TRACKING_COUNT](state: TimeSheetTrackingState, data: number) {\r\n state.timeSheetTrackingCount = data;\r\n },\r\n [SET_LOADING_TIME_SHEET_TRACKING](state: TimeSheetTrackingState, status: boolean) {\r\n state.loading = status;\r\n },\r\n\r\n};\r\n","import { Module } from 'vuex'\r\nimport { state } from './state'\r\nimport { actions } from './actions'\r\nimport { getters } from './getters'\r\nimport { mutations } from './mutations'\r\nimport { RootState } from 'store'\r\nimport { TimeSheetTrackingState } from './types'\r\n\r\nexport const timeSheetTracking: Module = {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n}","import { SettingState } from './types'\r\n\r\nexport const state: SettingState = {\r\n paylocationCount: 1,\r\n settings: {}\r\n}","import { AxiosError } from \"axios\";\r\nimport Service from \"core/service\";\r\n\r\nexport class SettingsService extends Service {\r\n getSettings(): Promise {\r\n try {\r\n return this.get(\"/Setting\");\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n \r\n patchSettings(params: any): Promise {\r\n try {\r\n return this.patch(\"/Setting\", params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n\r\n dropdownPayLocation(\r\n selectProps: string,\r\n req: any | null\r\n ): Promise {\r\n try {\r\n let params: any = {\r\n $select: selectProps,\r\n };\r\n if (req) {\r\n if (req.filter) {\r\n params[\"$filter\"] = req.filter;\r\n }\r\n\r\n if (req.orderBy) {\r\n params[\"$orderby\"] = req.orderBy;\r\n }\r\n\r\n params[\"$count\"] = req.count ? req.count : true;\r\n params[\"$top\"] = req.pageSize ? req.pageSize : 100;\r\n params[\"$skip\"] =\r\n req.pageSize * (req.currentPage ? req.currentPage - 1 : 0);\r\n } else {\r\n params[\"$count\"] = true;\r\n params[\"$top\"] = 1;\r\n params[\"$skip\"] = 0;\r\n }\r\n\r\n return this.get(\"/PayLocation\", params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n\r\n patchPayLocation(params: any): Promise {\r\n try {\r\n return this.post(\"/PayLocation\", params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n\r\n updatePayLocation(params: any, id: string): Promise {\r\n try {\r\n return this.patch(`/PayLocation/${id}`, params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n\r\n deletePayLocation(params: any): Promise {\r\n try {\r\n return this.post(\"/PayLocation/DeleteMany\", params);\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n\r\n resetSetting(): Promise {\r\n try {\r\n return this.put(\"/Setting/Reset\");\r\n } catch (error) {\r\n throw (error as AxiosError).response;\r\n }\r\n }\r\n}\r\n","import store, { RootState } from \"store\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { SettingsService } from \"../service\";\r\nimport { SettingState } from \"./types\";\r\n\r\nconst service = new SettingsService()\r\n\r\nexport const actions: ActionTree = {\r\n\r\n async getSettings({ commit }, params: any) {\r\n const data = await service.getSettings()\r\n commit('SET_SETTINGS', data);\r\n return data\r\n },\r\n\r\n async deletePayLocation({ commit }, params: any) {\r\n const data = await service.deletePayLocation(params)\r\n return data\r\n },\r\n\r\n async patchSettings({ commit }, params: any) {\r\n const data = await service.patchSettings(params)\r\n commit('SET_SETTINGS', data);\r\n },\r\n \r\n async resetSetting({ commit }) {\r\n await service.resetSetting()\r\n },\r\n\r\n async dropdownPayLocation({ commit }, params: any) {\r\n let filter = ``;\r\n if (params.search) {\r\n filter = `contains(tolower(Name),'${params.search.toLowerCase()}')`\r\n }\r\n params.filter = filter;\r\n const selectProps = \"PayLocationId, Name, Region\"; \r\n const data = await service.dropdownPayLocation(selectProps, params)\r\n commit('SET_PAYLOCATION_COUNT', data[\"@odata.count\"])\r\n return data.value\r\n },\r\n\r\n async patchPayLocation({ commit }, params: any) {\r\n await service.patchPayLocation(params)\r\n },\r\n \r\n async updatePayLocation({ commit }, params: any) {\r\n await service.updatePayLocation(params.data, params.id)\r\n },\r\n\r\n async getPayLocationAndRegion({ commit }, params: any) {\r\n let filter = ``;\r\n if (params.search) {\r\n if (params.search.Region) {\r\n filter = `contains(tolower(Name),'${params.search.Name.toLowerCase()}') and Region eq '${params.search.Region}'`\r\n } else {\r\n filter = `contains(tolower(Name),'${params.search.Name.toLowerCase()}')`\r\n }\r\n }\r\n params.filter = filter;\r\n const selectProps = \"PayLocationId, Name, Region\"; \r\n const data = await service.dropdownPayLocation(selectProps, params)\r\n return data.value\r\n },\r\n \r\n async getListRegion({ commit }, params: any) {\r\n const selectProps = \"PayLocationId, Name, Region\"; \r\n const data = await service.dropdownPayLocation(selectProps, params)\r\n return data.value\r\n },\r\n\r\n\r\n};","import { GetterTree } from 'vuex'\r\nimport { RootState } from 'store'\r\nimport { SettingState } from './types'\r\n\r\nexport const getters: GetterTree = {\r\n payLocationCount: (state: SettingState) => state.paylocationCount,\r\n settings: (state: SettingState) => state.settings,\r\n}","import { MutationTree } from \"vuex\";\r\nimport { SettingState } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n SET_PAYLOCATION_COUNT: (state: SettingState, itemCount: number) => {\r\n state.paylocationCount = itemCount;\r\n },\r\n SET_SETTINGS: (state: SettingState, data: any) => {\r\n state.settings = data;\r\n },\r\n};","import { Module } from 'vuex'\r\nimport { state } from './state'\r\nimport { actions } from './actions'\r\nimport { getters } from './getters'\r\nimport { mutations } from './mutations'\r\nimport { RootState } from 'store'\r\nimport { SettingState } from './types'\r\n\r\nexport const setting: Module = {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n}","import { createStore } from 'vuex'\r\nimport { auth } from '../modules/auth/store/index'\r\nimport { dashboard } from '../modules/dashboard/store/index'\r\nimport { profile } from '../modules/profile/store/index'\r\nimport { manual } from '../modules/manual/store/index'\r\nimport { approvalGroup } from '../modules/admin/groups/store/index'\r\nimport { user } from '../modules/admin/users/store/index'\r\nimport { timeSheetsApprove } from '../modules/super/dashboard/store/index'\r\nimport { timeSheetTracking } from 'modules/super/timesheetTrackings/store'\r\nimport { setting } from '../modules/settings/store/index'\r\nimport { AUTO_THEME, DARK_THEME, LIGHT_THEME } from 'core/constants'\r\n\r\nexport type RootState = {\r\n version: string\r\n initialized: boolean\r\n loading: boolean\r\n statusCode: number\r\n isOpen: boolean\r\n currentTheme: string\r\n isOpenPopupUserForm: boolean\r\n isOpenPopupGroupForm: boolean\r\n editApproveGroup?: ApprovalGroupModel\r\n isOpenPopupAddTask: boolean\r\n isAfterEditAprroveGroup: boolean\r\n filterSelect: any\r\n isCollapseSidebar: boolean\r\n}\r\n\r\nconst store = createStore({\r\n state: {\r\n version: '1.0.0',\r\n initialized: false,\r\n loading: false,\r\n statusCode: 404,\r\n isOpen: false,\r\n currentTheme: 'light',\r\n isOpenPopupUserForm: false,\r\n isOpenPopupGroupForm: false,\r\n isOpenPopupAddTask: false,\r\n isAfterEditAprroveGroup: false,\r\n filterSelect: {},\r\n isCollapseSidebar: false\r\n },\r\n mutations: {\r\n INITIALIZED: (state: RootState, status: boolean) => {\r\n state.initialized = status\r\n },\r\n SET_LOADING: (state: RootState, status: boolean) => {\r\n state.loading = status\r\n },\r\n SET_STATUS_CODE: (state: RootState, statusCode: number) => {\r\n state.statusCode = statusCode\r\n },\r\n SET_OPEN_POPUP_TIMEOUT: (state: RootState, open: boolean) => {\r\n state.isOpen = open\r\n },\r\n SET_THEME: (state: RootState, theme: string) => {\r\n console.log(theme)\r\n state.currentTheme = theme\r\n },\r\n SET_OPEN_POPUP_USER_FORM: (state: RootState, isOpen: boolean) => {\r\n state.isOpenPopupUserForm = isOpen\r\n },\r\n SET_OPEN_POPUP_GROUP_FORM: (state: RootState, isOpen: boolean) => {\r\n state.isOpenPopupGroupForm = isOpen\r\n },\r\n SET_EDIT_GROUP_FORM: (state: RootState, itemGroup?: ApprovalGroupModel) => {\r\n state.editApproveGroup = itemGroup\r\n },\r\n SET_OPEN_POPUP_ADD_TASK: (state: RootState, isOpen: boolean) => {\r\n state.isOpenPopupAddTask = isOpen\r\n },\r\n SET_AFTER_EDIT_APPROVE_GROUP: (state: RootState, isOpen: boolean) => {\r\n state.isAfterEditAprroveGroup = isOpen\r\n },\r\n SET_FILTER_SELECT_APPROVE_GROUP: (state: RootState, filter: any) => {\r\n state.filterSelect = filter\r\n },\r\n TOGGLE_SIDEBAR: (state: RootState) => {\r\n state.isCollapseSidebar = !state.isCollapseSidebar\r\n }\r\n },\r\n actions: {\r\n initialized(ctx, status?: boolean) {\r\n ctx.commit('INITIALIZED', status)\r\n let theme = localStorage.getItem('vueuse-color-scheme');\r\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)');\r\n const prefersLight = window.matchMedia('(prefers-color-scheme: light)');\r\n\r\n if (theme === AUTO_THEME) {\r\n if (prefersDark.matches) {\r\n ctx.commit('SET_THEME', DARK_THEME)\r\n }\r\n if (prefersLight.matches) {\r\n ctx.commit('SET_THEME', LIGHT_THEME)\r\n }\r\n } else {\r\n if (theme === LIGHT_THEME) {\r\n ctx.commit('SET_THEME', LIGHT_THEME)\r\n }\r\n if (theme === DARK_THEME) {\r\n ctx.commit('SET_THEME', DARK_THEME)\r\n }\r\n }\r\n },\r\n },\r\n getters: {\r\n currentTheme: (state: RootState) => state.currentTheme,\r\n },\r\n modules: {\r\n auth,\r\n dashboard,\r\n profile,\r\n manual,\r\n approvalGroup,\r\n user,\r\n timeSheetsApprove,\r\n timeSheetTracking,\r\n setting\r\n },\r\n})\r\n\r\nexport default store","import {\r\n InteractionType,\r\n PopupRequest,\r\n PublicClientApplication,\r\n RedirectRequest,\r\n} from \"@azure/msal-browser\";\r\nimport { AUTH_TOKEN_KEY, REFRESH_TOKEN_KEY, TASK_TYPES } from \"core/constants\";\r\nimport { msalInstance, tokenRequest } from \"../authConfig\";\r\nimport { getHoursAndMinutes } from \"./time\";\r\nimport store from \"store\";\r\n\r\nexport async function isAuthenticated(\r\n instance: PublicClientApplication,\r\n interactionType: InteractionType,\r\n loginRequest: PopupRequest | RedirectRequest\r\n): Promise {\r\n // If your application uses redirects for interaction, handleRedirectPromise must be called and awaited on each page load before determining if a user is signed in or not\r\n return instance\r\n .handleRedirectPromise()\r\n .then(() => {\r\n const accounts = instance.getAllAccounts();\r\n if (accounts.length > 0) {\r\n return true;\r\n }\r\n\r\n // User is not signed in and attempting to access protected route. Sign them in.\r\n if (interactionType === InteractionType.Popup) {\r\n return instance\r\n .loginPopup(loginRequest)\r\n .then(() => {\r\n return true;\r\n })\r\n .catch(() => {\r\n return false;\r\n });\r\n } else if (interactionType === InteractionType.Redirect) {\r\n return instance\r\n .loginRedirect(loginRequest)\r\n .then(() => {\r\n return true;\r\n })\r\n .catch(() => {\r\n return false;\r\n });\r\n }\r\n\r\n return false;\r\n })\r\n .catch(() => {\r\n return false;\r\n });\r\n}\r\n\r\nexport function checkTokenExpire(token: string | null) {\r\n if (!token) {\r\n return true;\r\n }\r\n const base64Url = token.split(\".\")[1];\r\n const base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n const jsonPayload = decodeURIComponent(\r\n atob(base64)\r\n .split(\"\")\r\n .map(function (c) {\r\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join(\"\")\r\n );\r\n const jwtPayload = JSON.parse(jsonPayload);\r\n if (jwtPayload.exp < Date.now() / 1000) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nexport function getTaskTypId(taskType: TASK_TYPES) {\r\n switch (taskType) {\r\n case TASK_TYPES.Rental:\r\n return 0;\r\n case TASK_TYPES.UnBilled:\r\n return 1;\r\n case TASK_TYPES.JobCost:\r\n return 2;\r\n default:\r\n return 0;\r\n }\r\n}\r\n\r\n\r\nexport function convertTaskIdToType(taskTypeId: number) {\r\n switch (taskTypeId) {\r\n case 0:\r\n return TASK_TYPES.Rental.toString();\r\n case 1:\r\n return TASK_TYPES.UnBilled.toString();\r\n case 2:\r\n return TASK_TYPES.JobCost.toString();\r\n default:\r\n return TASK_TYPES.JobCost.toString();\r\n }\r\n}\r\n\r\nexport function convertTaskIdToTypeText(taskTypeId: number) {\r\n switch (taskTypeId) {\r\n case 0:\r\n return 'Rental';\r\n case 1:\r\n return 'Unbilled';\r\n case 2:\r\n return 'Job Cost';\r\n default:\r\n return 'Job Cost';\r\n }\r\n}\r\n\r\n\r\nexport function convertTaskIdToVisbleType(taskTypeId: number) {\r\n switch (taskTypeId) {\r\n case 0:\r\n return 1\r\n case 1:\r\n return 2\r\n case 2:\r\n return 2\r\n default:\r\n return null\r\n }\r\n}\r\n\r\n\r\nexport function formatTime(timeVal: string): TimeObject {\r\n let timeObj: TimeObject = {\r\n hour: 0,\r\n minutes: 0,\r\n isAm: true,\r\n hours: 0,\r\n };\r\n\r\n if (timeVal) {\r\n const newStr = timeVal.replace('PT', '').replace('M', '').replace('H', ':').replace('S', '');\r\n if (!newStr.includes(\":\")) {\r\n if (newStr === '0') {\r\n return {\r\n hour: 12,\r\n minutes: 0,\r\n isAm: true,\r\n hours: 12,\r\n }\r\n } else {\r\n return {\r\n hour: 12,\r\n minutes: Number(newStr),\r\n isAm: true,\r\n hours: 12,\r\n }\r\n }\r\n }\r\n let [strHour, strMins] = newStr.split(':');\r\n if (!strMins) {\r\n strMins = '0'\r\n }\r\n if (strHour && strMins) {\r\n timeObj.hours = Number(strHour);\r\n timeObj.minutes = Number(strMins);\r\n let isAm = true;\r\n if (timeObj.hours > 12) {\r\n isAm = false;\r\n timeObj.hour = timeObj.hours - 12;\r\n } else {\r\n timeObj.hour = timeObj.hours;\r\n if (timeObj.hours === 12) {\r\n isAm = false;\r\n }\r\n }\r\n timeObj.isAm = isAm;\r\n }\r\n }\r\n\r\n return timeObj;\r\n}\r\n\r\nexport function convertStrToTime(timeVal: any) {\r\n let str = 'PT00H00M';\r\n //12:00:00.00\r\n if (timeVal) {\r\n const [strFullTime, strmiliSec] = timeVal.split('.');\r\n if (strFullTime) {\r\n const [hour, min, sec] = strFullTime.split(':');\r\n const value = `PT${hour.toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false })}H${min.toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false })}M`;\r\n str = value;\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\nexport function getClassByStatusTimeSheet(status: number) {\r\n switch (status) {\r\n case 0:\r\n return 'status-draff';\r\n case 1:\r\n return 'status-pending';\r\n case 2:\r\n return 'status-approve';\r\n case 3:\r\n return 'status-declined';\r\n case 5:\r\n return 'status-cancel';\r\n default:\r\n return 'status-draff';\r\n }\r\n}\r\n\r\nexport function setTimeStart(startTime: number, startDate: string) {\r\n const hourAndMinutes = getHoursAndMinutes(startTime);\r\n const hour = hourAndMinutes.hours.toString().padStart(2, '0');\r\n const minute = hourAndMinutes.minutes.toString().padStart(2, '0');\r\n return `${hour}:${minute}, ${startDate}`\r\n}\r\n\r\nexport function convertStatusTimeSheet(status?: number) {\r\n switch (status) {\r\n case 0:\r\n return 'Draft';\r\n case 1:\r\n return 'Pending Approval';\r\n case 2:\r\n return 'Approved';\r\n case 3:\r\n return 'Declined';\r\n case 5:\r\n return 'Cancelled';\r\n default:\r\n return 'Draft';\r\n }\r\n}\r\n\r\nexport function clearAllCookies() {\r\n // Get all cookies as a string (name=value; pairs)\r\n const cookies = document.cookie.split(';');\r\n // Loop through and delete each cookie\r\n cookies.forEach((cookie) => {\r\n // Extract cookie name\r\n const cookieName = cookie.split('=')[0].trim();\r\n // Set each cookie's expiration to a past date to delete it\r\n document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/`;\r\n document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=${location.hostname}`;\r\n });\r\n}\r\n\r\nexport function getCookie(name: string) {\r\n function escape(s: string) { return s.replace(/([.*+?\\^$(){}|\\[\\]\\/\\\\])/g, '\\\\$1'); }\r\n var match = document.cookie.match(RegExp('(?:^|;\\\\s*)' + escape(name) + '=([^;]*)'));\r\n return match ? match[1] : null;\r\n}\r\n\r\nexport async function autoRefreshToken() {\r\n window.location.href = '/login';\r\n localStorage.setItem(AUTH_TOKEN_KEY, '');\r\n sessionStorage.removeItem(AUTH_TOKEN_KEY)\r\n document.cookie = `${REFRESH_TOKEN_KEY}=`;\r\n}\r\n\r\nexport async function clearCookie() {\r\n var cookies = document.cookie.split(\"; \");\r\n for (var c = 0; c < cookies.length; c++) {\r\n var d = window.location.hostname.split(\".\");\r\n while (d.length > 0) {\r\n var cookieBase = encodeURIComponent(cookies[c].split(\";\")[0].split(\"=\")[0]) + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain=' + d.join('.') + ' ;path=';\r\n var p = location.pathname.split('/');\r\n document.cookie = cookieBase + '/';\r\n while (p.length > 0) {\r\n document.cookie = cookieBase + p.join('/');\r\n p.pop();\r\n };\r\n d.shift();\r\n }\r\n }\r\n}\r\n\r\nexport async function autoForceLogout() {\r\n await store.dispatch(\"profile/forceLogout\");\r\n let currentUser = store.getters[\"auth/currentUser\"];\r\n if (currentUser?.userId === undefined) {\r\n // frist login\r\n currentUser = await store.dispatch(\"auth/actGetMe\");\r\n if (!currentUser) {\r\n localStorage.setItem(AUTH_TOKEN_KEY, '');\r\n sessionStorage.setItem(AUTH_TOKEN_KEY, '');\r\n msalInstance.logoutRedirect()\r\n }\r\n } else {\r\n // had token\r\n localStorage.setItem(AUTH_TOKEN_KEY, '');\r\n sessionStorage.setItem(AUTH_TOKEN_KEY, '');\r\n msalInstance.logoutRedirect()\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n\r\n","import firebase from 'firebase/app';\r\nimport 'firebase/messaging';\r\nimport {firebaseConfig} from \"config/enviroments\";\r\n\r\nfirebase.initializeApp(firebaseConfig);\r\n\r\nexport const messaging = firebase.messaging();","\r\n\r\n\r\n\r\n","\r\n\r\n","export default \"__VITE_ASSET__23c34e33__\"","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n \r\n","\r\n\r\n","\r\n\r\n","\r\n\r\n","\r\n\r\n","\r\n \r\n ","\r\n\r\n\r\n\r\n","export const standardizeTime = (option: any) => {\r\n const data = {\r\n startTime: 0,\r\n endTime: 0,\r\n };\r\n\r\n if (!option.startTime?.isInit && !option.endTime?.isInit) {\r\n let startTimeHours = option?.startTime?.hours ?? 0;\r\n let endTimeHours = option?.endTime?.hours ?? 0;\r\n\r\n if (option?.startTime?.isAm) {\r\n if (option?.startTime?.hours == 12) {\r\n startTimeHours = 0;\r\n } else {\r\n startTimeHours = option?.startTime?.hours ?? 0;\r\n }\r\n }\r\n if (option?.endTime?.isAm) {\r\n if (option?.endTime?.hours == 12) {\r\n endTimeHours = 0;\r\n } else {\r\n endTimeHours = option?.endTime?.hours ?? 0;\r\n }\r\n }\r\n\r\n const startTimeMinutes = option?.startTime?.minutes ?? 0;\r\n const endTimeMinutes = option?.endTime?.minutes ?? 0;\r\n\r\n const totalStartTimeMinutes = startTimeMinutes + startTimeHours * 60;\r\n const totalEndTimeMinutes = endTimeMinutes + endTimeHours * 60;\r\n\r\n data.startTime = totalStartTimeMinutes;\r\n data.endTime = totalEndTimeMinutes;\r\n } else {\r\n if (option?.startTime?.isAm && option?.startTime?.hours == 12) {\r\n if (option?.startTime?.minutes == 0) {\r\n data.startTime = 0;\r\n } else {\r\n data.startTime =\r\n option?.startTime?.hours * 60 + option?.startTime?.minutes - 720;\r\n }\r\n }\r\n }\r\n\r\n return data;\r\n};\r\n\r\nexport const checkTimeInit = (timeSheetHeader: TimeSheetHeader) => {\r\n const result = timeSheetHeader.TimesheetLines?.map((timesheet) => {\r\n if (timesheet?.Option?.endTime?.isInit) {\r\n timesheet.EndTime = undefined;\r\n }\r\n if (timesheet?.Option?.startTime?.isInit) {\r\n timesheet.StartTime = undefined;\r\n }\r\n return timesheet;\r\n });\r\n\r\n return result;\r\n};\r\n","import {\r\n MESSAGE_CODES,\r\n TASK_TYPES,\r\n TASK_TYPES_VALUE,\r\n USER_TYPE_APPROVER,\r\n USER_TYPE_SYSTEM_ADMINISTRATOR,\r\n USER_TYPE_USER_ADMINISTRATOR,\r\n} from \"core/constants\";\r\nimport dayjs from \"dayjs\";\r\nimport { CurrentUserModel } from \"modules/auth/store/types\";\r\nimport { timeSheetStatusName } from \"modules/dashboard/store/types\";\r\nimport { computed, inject, ref, watch } from \"vue\";\r\nimport { useStore } from \"vuex\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport {\r\n convertTaskIdToType,\r\n convertTaskIdToVisbleType,\r\n formatTime,\r\n getTaskTypId,\r\n} from \"../utils\";\r\nimport { getHoursAndMinutes } from \"../utils/time\";\r\nimport { standardizeTime, checkTimeInit } from \"../utils/taskDetail\";\r\n\r\ninterface TimeRange {\r\n StartTime: number;\r\n EndTime: number;\r\n}\r\n\r\nexport default function useTaskDetail(ctx: any) {\r\n const store = useStore();\r\n\r\n const allowUpdate = ref(true);\r\n const totalHours = ref(0);\r\n const totalMins = ref(0);\r\n const displayButtonAddTask = ref(true);\r\n const currentTaskVisibleType = ref(null);\r\n const oldData = ref();\r\n\r\n const allTimesheetLine = computed(\r\n () => store.getters[\"dashboard/timeSheetsLine\"]\r\n );\r\n\r\n const timesheetOverlapCheckingEnable = computed(\r\n () => store.getters[\"setting/settings\"].TimesheetOverlapCheckingEnable\r\n );\r\n\r\n const timeSheetHeader = ref({\r\n Shift: false,\r\n StartDate: dayjs().format(\"YYYY-MM-DD\"),\r\n TimesheetLines: [],\r\n });\r\n\r\n const notify = inject(\"notify\", (type: string, message: string) => ({}));\r\n const currentUser = computed(\r\n () => store.getters[\"auth/currentUser\"]\r\n );\r\n\r\n const taskTypeDisplay = computed(() => {\r\n const userTaskType = currentUser.value.taskType;\r\n let taskType = userTaskType;\r\n const showConfig = {\r\n rental: false,\r\n jobCost: false,\r\n unBilled: false,\r\n };\r\n if (taskType === TASK_TYPES_VALUE.All) {\r\n showConfig.rental = true;\r\n showConfig.jobCost = true;\r\n showConfig.unBilled = true;\r\n } else if (taskType === TASK_TYPES_VALUE.Rental) {\r\n showConfig.rental = true;\r\n } else if (taskType === TASK_TYPES_VALUE.JobCost) {\r\n showConfig.jobCost = true;\r\n showConfig.unBilled = true;\r\n }\r\n return showConfig;\r\n });\r\n\r\n const defaultTaskHeaderType = computed(() => {\r\n if (taskTypeDisplay.value.rental) {\r\n return TASK_TYPES.Rental;\r\n }\r\n return TASK_TYPES.JobCost;\r\n });\r\n\r\n const timesheetLineOptionInitData = {\r\n isExpend: true,\r\n type: defaultTaskHeaderType.value,\r\n hours: 0,\r\n mins: 0,\r\n visiblePopover: false,\r\n isValid: false,\r\n startTime: {\r\n hours: 0,\r\n isAm: true,\r\n minutes: 0,\r\n isInit: true,\r\n },\r\n endTime: {\r\n hours: 0,\r\n isAm: true,\r\n minutes: 0,\r\n isInit: true,\r\n },\r\n };\r\n\r\n const initTimesheetLine = async () => {\r\n timeSheetHeader.value.TimesheetLines?.push({\r\n TaskUuid: uuidv4(),\r\n Option: {\r\n ...timesheetLineOptionInitData,\r\n name: \"Task 1\"\r\n },\r\n });\r\n timeSheetHeader.value.StartDate = dayjs().format(\"YYYY-MM-DD\");\r\n timeSheetHeader.value.Shift = false\r\n await store.dispatch(\"setting/getSettings\").then((setting) => {\r\n if (\r\n currentUser.value.defaultStartTime &&\r\n timeSheetHeader?.value?.TimesheetLines?.[0]?.Option?.startTime\r\n ) {\r\n let timeObj\r\n if (setting.EnableUseDefaultStartTime) {\r\n timeObj = formatTime(setting.DefaultStartTime);\r\n } else {\r\n timeObj = formatTime(currentUser.value.defaultStartTime);\r\n }\r\n timeSheetHeader.value.TimesheetLines[0].StartTime =\r\n timeObj.hours * 60 + timeObj.minutes;\r\n timeSheetHeader.value.TimesheetLines[0].Option.startTime = {\r\n ...timeObj,\r\n }\r\n timeSheetHeader.value.TimesheetLines[0].Option.startTime.isInit = false\r\n }\r\n }).catch((error) => {\r\n if (\r\n currentUser.value.defaultStartTime &&\r\n timeSheetHeader?.value?.TimesheetLines?.[0]?.Option?.startTime\r\n ) {\r\n const timeObj = formatTime(currentUser.value.defaultStartTime);\r\n timeSheetHeader.value.TimesheetLines[0].StartTime =\r\n timeObj.hours * 60 + timeObj.minutes;\r\n timeSheetHeader.value.TimesheetLines[0].Option.startTime = {\r\n ...timeObj,\r\n }\r\n timeSheetHeader.value.TimesheetLines[0].Option.startTime.isInit = false\r\n }\r\n })\r\n };\r\n\r\n const funcFindMaxMinTime = () => {\r\n const arrayList = timeSheetHeader.value.TimesheetLines || [];\r\n const errors = [];\r\n const convertList = arrayList.map((item: any) => {\r\n return item;\r\n });\r\n\r\n convertList.sort(\r\n (taskA: any, taskB: any) => taskA.StartTime - taskB.StartTime\r\n );\r\n\r\n for (const shift of convertList) {\r\n if (\r\n !shift?.Option?.startTime?.isInit &&\r\n !shift?.Option?.endTime?.isInit\r\n ) {\r\n if (\r\n shift &&\r\n shift.StartTime !== undefined &&\r\n shift.EndTime !== undefined\r\n ) {\r\n const amStartTime = shift?.StartTime >= 0 && shift.StartTime <= 719;\r\n const pmStartTime = shift.StartTime >= 720 && shift.StartTime <= 1439;\r\n const amEndTime = shift.EndTime >= 0 && shift.EndTime <= 719;\r\n const pmEndTime = shift.EndTime >= 720 && shift.EndTime <= 1439;\r\n\r\n if (timeSheetHeader.value.Shift) {\r\n if (\r\n (amStartTime && pmEndTime) ||\r\n (pmStartTime && pmEndTime && shift?.EndTime < shift?.StartTime)\r\n ) {\r\n // case 1: shift flag = 'night shift', (startTime = AM time & endTime = PM Time)\r\n // case 2: ((startTime = PM time & endTime = PM time) & (endTime < startTime))\r\n errors.push({ dayShift: true });\r\n }\r\n } else {\r\n if (\r\n (pmStartTime && amEndTime) ||\r\n (amStartTime && amEndTime && shift?.EndTime < shift?.StartTime)\r\n ) {\r\n // case 1: shift flag = 'day shift', (startTime = PM time & endTime = AM Time)\r\n // case 2: ((startTime = AM time & endTime = AM time) & (endTime < startTime))\r\n errors.push({ nightShift: true });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return errors;\r\n };\r\n\r\n const funcOverLap = () => {\r\n if(!timesheetOverlapCheckingEnable.value) return\r\n let hasOverlap = false;\r\n const timesheetLines = timeSheetHeader?.value?.TimesheetLines ?? [];\r\n\r\n if (timesheetLines.length) {\r\n const sortedTasks: any = [...timesheetLines].sort(\r\n (a: any, b: any) => a.StartTime - b.StartTime\r\n );\r\n\r\n for (let i = 0; i < sortedTasks.length - 1; i++) {\r\n for (let j = i + 1; j < sortedTasks.length; j++) {\r\n let isInitStart1 = false;\r\n let isInitEnd1 = false;\r\n let isInitStart2 = false;\r\n let isInitEnd2 = false;\r\n\r\n let start1 =\r\n (timesheetLines?.[i]?.Option?.startTime?.hours ?? 0) * 60 +\r\n (timesheetLines?.[i]?.Option?.startTime?.minutes ?? 0);\r\n if (timesheetLines?.[i]?.Option?.startTime?.hours == 12) {\r\n if (timesheetLines?.[i]?.Option?.startTime?.isAm) {\r\n if (timesheetLines?.[i]?.Option?.startTime?.minutes ?? 0 > 0) {\r\n start1 = start1 - 720;\r\n } else {\r\n start1 = 0;\r\n }\r\n }\r\n }\r\n isInitStart1 = !!timesheetLines?.[i]?.Option?.startTime?.isInit;\r\n\r\n let end1 =\r\n (timesheetLines?.[i]?.Option?.endTime?.hours ?? 0) * 60 +\r\n (timesheetLines?.[i]?.Option?.endTime?.minutes ?? 0);\r\n if (timesheetLines?.[i]?.Option?.endTime?.hours == 12) {\r\n if (timesheetLines?.[i]?.Option?.endTime?.isAm) {\r\n if (timesheetLines?.[i]?.Option?.endTime?.minutes ?? 0 > 0) {\r\n end1 = end1 - 720;\r\n } else {\r\n end1 = 0;\r\n }\r\n }\r\n }\r\n isInitEnd1 = !!timesheetLines?.[i]?.Option?.endTime?.isInit;\r\n\r\n let start2 =\r\n (timesheetLines?.[j]?.Option?.startTime?.hours ?? 0) * 60 +\r\n (timesheetLines?.[j]?.Option?.startTime?.minutes ?? 0);\r\n if (timesheetLines?.[j]?.Option?.startTime?.hours == 12) {\r\n if (timesheetLines?.[j]?.Option?.startTime?.isAm) {\r\n if (timesheetLines?.[j]?.Option?.startTime?.minutes ?? 0 > 0) {\r\n start2 = start2 - 720;\r\n } else {\r\n start2 = 0;\r\n }\r\n }\r\n }\r\n isInitStart2 = !!timesheetLines?.[j]?.Option?.startTime?.isInit;\r\n\r\n let end2 =\r\n (timesheetLines?.[j]?.Option?.endTime?.hours ?? 0) * 60 +\r\n (timesheetLines?.[j]?.Option?.endTime?.minutes ?? 0);\r\n if (timesheetLines?.[j]?.Option?.endTime?.hours == 12) {\r\n if (timesheetLines?.[j]?.Option?.endTime?.isAm) {\r\n if (timesheetLines?.[j]?.Option?.endTime?.minutes ?? 0 > 0) {\r\n end2 = end2 - 720;\r\n } else {\r\n end2 = 0;\r\n }\r\n }\r\n }\r\n isInitEnd2 = !!timesheetLines?.[j]?.Option?.endTime?.isInit;\r\n\r\n const allIsInit =\r\n !isInitStart1 && !isInitEnd1 && !isInitStart2 && !isInitEnd2;\r\n\r\n if (allIsInit) {\r\n if (start1 > end1) {\r\n if (\r\n (start2 >= 0 && start2 < end1) ||\r\n (end2 > start1 && end2 <= 24 * 60)\r\n ) {\r\n hasOverlap = true;\r\n break;\r\n }\r\n }\r\n\r\n if (start2 > end2) {\r\n if (\r\n (start1 >= 0 && start1 < end2) ||\r\n (end1 > start2 && end1 <= 24 * 60)\r\n ) {\r\n hasOverlap = true;\r\n break;\r\n }\r\n }\r\n\r\n if (\r\n (start1 < end2 && end1 > start2) ||\r\n (start2 < end1 && end2 > start1) ||\r\n start1 == start2\r\n ) {\r\n hasOverlap = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (hasOverlap) {\r\n break;\r\n }\r\n }\r\n }\r\n return hasOverlap;\r\n };\r\n\r\n const funcOverLapLevel = (timeSheetHeader: any): boolean => {\r\n const checkOverlap = (range1: TimeRange, range2: TimeRange) => {\r\n return (\r\n range1.StartTime < range2.EndTime && range2.StartTime < range1.EndTime\r\n );\r\n };\r\n\r\n const checkTimeOverlap = (\r\n timesheetLines: TimeRange[],\r\n allTimesheetLines: TimeRange[][]\r\n ): boolean => {\r\n const allRanges: TimeRange[] = [];\r\n\r\n timesheetLines.forEach((line) => allRanges.push(line));\r\n allTimesheetLines.forEach((lines) =>\r\n lines.forEach((line) => allRanges.push(line))\r\n );\r\n\r\n allRanges.sort((a, b) => a.StartTime - b.StartTime);\r\n\r\n for (let i = 0; i < allRanges.length - 1; i++) {\r\n if (checkOverlap(allRanges[i], allRanges[i + 1])) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const overlapExists = checkTimeOverlap(\r\n timeSheetHeader.value?.TimesheetLines,\r\n allTimesheetLine.value.map((obj: any) => obj.TimesheetLines)\r\n );\r\n\r\n return overlapExists\r\n };\r\n\r\n const calTotalTimeSheet = () => {\r\n let totalMinuets = 0;\r\n timeSheetHeader.value.TimesheetLines?.forEach((item) => {\r\n totalMinuets += item.TimesheetLineMinutes ?? 0;\r\n });\r\n totalHours.value = Math.floor(totalMinuets / 60);\r\n totalMins.value = totalMinuets % 60;\r\n ctx.emit(\"changeMaxTimeMultipleTasks\", totalMinuets);\r\n const shiftCheck: any = funcFindMaxMinTime();\r\n if (shiftCheck.length > 0) {\r\n if (shiftCheck[0].dayShift) {\r\n ctx.emit(\"handleCheckDayShift\", true);\r\n } else {\r\n ctx.emit(\"handleCheckDayShift\", false);\r\n }\r\n if (shiftCheck[0].nightShift) {\r\n ctx.emit(\"handleCheckNightShift\", true);\r\n } else {\r\n ctx.emit(\"handleCheckNightShift\", false);\r\n }\r\n } else {\r\n ctx.emit(\"handleCheckDayShift\", false);\r\n ctx.emit(\"handleCheckNightShift\", false);\r\n }\r\n const isOverlapLevel = funcOverLapLevel(timeSheetHeader);\r\n ctx.emit(\"handlePopupOverLapLevel\", isOverlapLevel);\r\n };\r\n\r\n const handleSubmitTaskTime = (data: any) => {\r\n const task: any = timeSheetHeader.value.TimesheetLines?.find(\r\n (item) => item.TaskUuid === data.taskId\r\n );\r\n if (task) {\r\n const timesheetLineMinutes = data.hours * 60 + data.mins;\r\n task.TimesheetLineMinutes = timesheetLineMinutes;\r\n let startTimeHours = task?.Option?.startTime?.hours ?? 0;\r\n\r\n if (task?.Option?.startTime?.isAm) {\r\n if (task?.Option?.startTime?.hours == 12) {\r\n startTimeHours = 0;\r\n } else {\r\n startTimeHours = task?.Option?.startTime?.hours ?? 0;\r\n }\r\n }\r\n\r\n const startTimeMinutes = task?.Option?.startTime?.minutes ?? 0;\r\n let startTimeInMinutes = startTimeHours * 60 + startTimeMinutes;\r\n const endTimeInMinutes = startTimeInMinutes + timesheetLineMinutes;\r\n let endTimeFinalHour = Math.floor(endTimeInMinutes / 60);\r\n const endTimeFinalMinutes = endTimeInMinutes - endTimeFinalHour * 60;\r\n endTimeFinalHour = endTimeFinalHour == 24 ? 24 : endTimeFinalHour % 24;\r\n\r\n let time = {\r\n hours: Math.abs(endTimeFinalHour) == 24 ? 0 : Math.abs(endTimeFinalHour),\r\n minutes: Math.abs(endTimeFinalMinutes),\r\n isAm: endTimeFinalHour == 24 ? true : endTimeFinalHour < 12,\r\n };\r\n const startInit = task?.Option?.startTime?.isInit;\r\n const endInit = task?.Option?.endTime?.isInit;\r\n\r\n // AA, AB, BA, BB\r\n if (startInit && endInit) {\r\n task.Option.startTime = {\r\n hours: 12,\r\n minutes: 0,\r\n isAm: true,\r\n isInit: false,\r\n };\r\n task.Option.endTime = {\r\n ...time,\r\n isInit: false,\r\n };\r\n } else if (startInit && !endInit) {\r\n let endTimeInMinutes =\r\n (task?.Option?.endTime?.hours ?? 0) * 60 +\r\n (task?.Option?.endTime?.minutes ?? 0);\r\n\r\n if (task?.Option?.endTime?.isAm) {\r\n if (task?.Option?.endTime?.hours == 12) {\r\n endTimeInMinutes = 1440 + (task?.Option?.endTime?.minutes ?? 0);\r\n } else {\r\n endTimeInMinutes =\r\n (task?.Option?.endTime?.hours ?? 0) * 60 +\r\n (task?.Option?.endTime?.minutes ?? 0);\r\n }\r\n }\r\n let startTimeInMinutes =\r\n endTimeInMinutes - (data.hours * 60 + data.mins);\r\n let hours = Math.floor(startTimeInMinutes / 60);\r\n let minutes = startTimeInMinutes % 60;\r\n let isAm = hours < 12;\r\n if (!isAm && hours !== 12) {\r\n hours -= 12;\r\n }\r\n task.Option.startTime = {\r\n hours: hours == 0 ? 12 : hours,\r\n minutes: minutes,\r\n isAm: isAm,\r\n isInit: false,\r\n };\r\n } else if (!startInit && endInit) {\r\n task.Option.endTime = {\r\n ...time,\r\n isInit: false,\r\n };\r\n } else if (!startInit && !endInit) {\r\n task.Option.endTime = {\r\n ...time,\r\n isInit: false,\r\n };\r\n }\r\n task.Option.hours = data.hours;\r\n task.Option.mins = data.mins;\r\n const newOption = standardizeTime(task.Option);\r\n\r\n task.StartTime = newOption.startTime;\r\n task.EndTime = newOption.endTime;\r\n\r\n ctx.emit(\"changeEndTimePM\", time.hours * 60 + time.minutes);\r\n calTotalTimeSheet();\r\n const isOverlap = funcOverLap();\r\n if (isOverlap) {\r\n ctx.emit(\"handlePopupOverLap\", true);\r\n } else {\r\n ctx.emit(\"handlePopupOverLap\", false);\r\n }\r\n }\r\n };\r\n\r\n const updateTaskTime = (\r\n data: any,\r\n additionValues: { TaskUuid: string; isStartTime: boolean }\r\n ) => {\r\n const timesheetLineMinutes = data.hours * 60 + data.minutes;\r\n if (additionValues.isStartTime) {\r\n ctx.emit(\"changeStartTimeAM\", timesheetLineMinutes);\r\n } else {\r\n ctx.emit(\"changeEndTimePM\", timesheetLineMinutes);\r\n }\r\n const task = timeSheetHeader.value.TimesheetLines?.find(\r\n (item) => item.TaskUuid === additionValues.TaskUuid\r\n );\r\n if (task) {\r\n if (additionValues.isStartTime) {\r\n task.Option.startTime = {\r\n ...data,\r\n isInit: false,\r\n };\r\n task.StartTime = timesheetLineMinutes;\r\n } else {\r\n task.Option.endTime = {\r\n ...data,\r\n isInit: false,\r\n };\r\n task.EndTime = timesheetLineMinutes;\r\n }\r\n\r\n if (!task.Option.startTime?.isInit && !task.Option.endTime?.isInit) {\r\n let startTimeHours = task?.Option?.startTime?.hours ?? 0;\r\n let endTimeHours = task?.Option?.endTime?.hours ?? 0;\r\n\r\n if (task?.Option?.startTime?.isAm) {\r\n if (task?.Option?.startTime?.hours == 12) {\r\n startTimeHours = 0;\r\n } else {\r\n startTimeHours = task?.Option?.startTime?.hours ?? 0;\r\n }\r\n }\r\n if (task?.Option?.endTime?.isAm) {\r\n if (task?.Option?.endTime?.hours == 12) {\r\n endTimeHours = 0;\r\n } else {\r\n endTimeHours = task?.Option?.endTime?.hours ?? 0;\r\n }\r\n }\r\n const startTimeMinutes = task?.Option?.startTime?.minutes ?? 0;\r\n const endTimeMinutes = task?.Option?.endTime?.minutes ?? 0;\r\n let totalMins = endTimeMinutes - startTimeMinutes;\r\n let totalHours =\r\n endTimeHours - startTimeHours - (totalMins < 0 ? 1 : 0);\r\n totalMins = totalMins < 0 ? 60 - Math.abs(totalMins) : totalMins;\r\n const totalStartTimeMinutes = startTimeMinutes + startTimeHours * 60;\r\n const totalEndTimeMinutes = endTimeMinutes + endTimeHours * 60;\r\n if (totalHours < 0) {\r\n totalHours += 24;\r\n }\r\n task.Option.hours = totalHours;\r\n task.Option.mins = Math.abs(totalMins);\r\n\r\n task.StartTime = totalStartTimeMinutes;\r\n task.EndTime = totalEndTimeMinutes;\r\n\r\n task.TimesheetLineMinutes = totalHours * 60 + Math.abs(totalMins);\r\n\r\n calTotalTimeSheet();\r\n const isOverlap = funcOverLap();\r\n if (isOverlap) {\r\n ctx.emit(\"handlePopupOverLap\", true);\r\n } else {\r\n ctx.emit(\"handlePopupOverLap\", false);\r\n }\r\n } else {\r\n if (\r\n task?.Option?.startTime?.isAm &&\r\n task?.Option?.startTime?.hours == 12\r\n ) {\r\n if (task?.Option?.startTime?.minutes == 0) {\r\n task.StartTime = 0;\r\n } else {\r\n task.StartTime =\r\n task?.Option?.startTime?.hours * 60 +\r\n task?.Option?.startTime?.minutes -\r\n 720;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n const handleTaskSubmit = (data: any) => {\r\n const task = timeSheetHeader.value.TimesheetLines?.find(\r\n (x) => x.TaskUuid === data.taskId\r\n );\r\n\r\n if (task) {\r\n task.Option!.isValid = data.valid;\r\n\r\n if (!data.valid) {\r\n task.Option!.isExpend = true;\r\n return;\r\n }\r\n task.Notes = data.jobDescription;\r\n task.WorkOrderTaskId = undefined;\r\n task.JobCostCodeId = undefined;\r\n task.GlaccountId = undefined;\r\n if (task.Option!.type == TASK_TYPES.Rental.toString()) {\r\n task.TimesheetLineType = getTaskTypId(TASK_TYPES.Rental);\r\n task.TaskCategory = data.taskCategory\r\n task.WorkOrderTaskId = data.workOrderTaskId\r\n ? data.workOrderTaskId\r\n : undefined;\r\n task.WorkOrderId = data.workOrder ? data.workOrder : undefined;\r\n task.EquipmentId = data.fleet ? data.fleet : undefined;\r\n task.SiteId = parseInt(data?.site?.split(\"-\")?.[1] ?? null);\r\n task.SiteId = task.SiteId ? task.SiteId : undefined;\r\n }\r\n if (task.Option!.type == TASK_TYPES.JobCost.toString()) {\r\n task.TaskCategory = data.taskCategory\r\n task.TimesheetLineType = getTaskTypId(TASK_TYPES.JobCost);\r\n task.JobCostCodeId = data.costCode ? data.costCode : undefined;\r\n task.JobId = data.job ? data.job : undefined;\r\n task.EmecoSite = data.isEmecoSite;\r\n if (data.isEmecoSite) {\r\n task.WorkOrderId = data.workOrder ? data.workOrder : undefined;\r\n task.EquipmentId = data.fleet ? data.fleet : undefined;\r\n task.SiteId = parseInt(data?.site?.split(\"-\")?.[1] ?? null);\r\n task.SiteId = task.SiteId ? task.SiteId : undefined;\r\n } else {\r\n task.WorkOrderId = undefined;\r\n task.EquipmentId = undefined;\r\n task.SiteId = undefined;\r\n }\r\n }\r\n if (task.Option!.type == TASK_TYPES.UnBilled.toString()) {\r\n task.TimesheetLineType = getTaskTypId(TASK_TYPES.UnBilled);\r\n task.GlaccountId = data.glEntry;\r\n }\r\n if (data.additionInfo) {\r\n task.TimesheetAdditional = {\r\n TimesheetAdditionalId: data.TimesheetAdditionalId,\r\n Manufacturer: data.isEmecoSite ? \"\" : data.manufacturer,\r\n Model: data.isEmecoSite ? \"\" : data.model,\r\n Smureading: data.SMUHour,\r\n SerialNumber: data.isEmecoSite ? \"\" : data.serialNo,\r\n CustomerName: data.isEmecoSite ? \"Emeco\" : data.clientName,\r\n CustomerEmail: data.customerEmail,\r\n Locations: data.isEmecoSite ? \"\" : data.location,\r\n TravelKms: data.travelKMS,\r\n Rego: data.vehRegNo,\r\n WorkerSignature: data.mechanicalAcceptance,\r\n CustomerSignature: data.customerAcceptance,\r\n AdditionalInfo: data.fieldServiceNote,\r\n CustomerAcceptanceName: data.customerAcceptanceName,\r\n };\r\n } else {\r\n task.TimesheetAdditional = null as any;\r\n }\r\n }\r\n };\r\n\r\n const resetTaskData = (taskId: string) => {\r\n timeSheetHeader.value.TimesheetLines?.map((timesheetLine: any) => {\r\n if (timesheetLine.TaskUuid === taskId) {\r\n timesheetLine.SiteId = undefined;\r\n timesheetLine.EquipmentId = undefined;\r\n timesheetLine.WorkOrderId = undefined;\r\n timesheetLine.WorkOrderTask = {};\r\n timesheetLine.WorkOrderTaskId = undefined;\r\n timesheetLine.WorkOrderDescription = \"\";\r\n timesheetLine.JobCostCodeId = undefined;\r\n timesheetLine.JobId = undefined;\r\n timesheetLine.JobCostCode = {};\r\n timesheetLine.Glaccount = {};\r\n timesheetLine.GlaccountId = undefined;\r\n timesheetLine.TimesheetAdditional = null as any;\r\n timesheetLine.Notes = \"\";\r\n }\r\n return timesheetLine;\r\n });\r\n };\r\n\r\n const createTimeSheet = (timeSheetHeader: any) => {\r\n store.commit(\"SET_LOADING\", true);\r\n if (!timeSheetHeader.value?.TimesheetLines?.length) {\r\n store.commit(\"SET_LOADING\", false);\r\n return;\r\n }\r\n timeSheetHeader.value.StartDate = dayjs(\r\n timeSheetHeader.value.StartDate\r\n ).format(\"YYYY-MM-DD\");\r\n const resultCheckTimeInit = checkTimeInit(timeSheetHeader.value)\r\n timeSheetHeader.value.TimesheetLines = resultCheckTimeInit\r\n store.commit(\"SET_LOADING\", true);\r\n store\r\n .dispatch(\"dashboard/actCreateTimeSheet\", timeSheetHeader.value)\r\n .then(() => {\r\n store.commit(\"auth/SET_IS_VALID\", false);\r\n store.commit(\"dashboard/SET_LIST_TIME_SHEET\", []);\r\n store.dispatch(\"dashboard/actLoadTimeSheet\"),\r\n store.dispatch(\"dashboard/actCountTimeSheetStatus\"),\r\n store.commit(\"SET_LOADING\", false);\r\n\r\n notify(\"success\", MESSAGE_CODES.MSG_SAVE_SUCCESS);\r\n store.commit(\"SET_OPEN_POPUP_ADD_TASK\", false);\r\n timeSheetHeader.value = {\r\n StartDate: dayjs().format(\"YYYY-MM-DD\"),\r\n TimesheetLines: [\r\n {\r\n TaskUuid: uuidv4(),\r\n Option: {\r\n name: `Task 1`,\r\n ...timesheetLineOptionInitData,\r\n },\r\n },\r\n ],\r\n };\r\n totalHours.value = 0;\r\n totalMins.value = 0;\r\n })\r\n .catch(() => {\r\n store.commit(\"SET_LOADING\", false);\r\n notify(\"error\", MESSAGE_CODES.ERR_SERVER);\r\n });\r\n };\r\n\r\n const loadTimeSheetEdit = async (timeSheetHeaderId: number) => {\r\n store.commit(\"SET_LOADING\", true);\r\n const resultTimeSheetHeader = await store.dispatch(\r\n \"dashboard/actGetTimeSheet\",\r\n { id: timeSheetHeaderId }\r\n );\r\n\r\n timeSheetHeader.value = {\r\n ...resultTimeSheetHeader,\r\n StartDate: dayjs(resultTimeSheetHeader.StartDate).format(\"YYYY-MM-DD\"),\r\n TimesheetLines: [],\r\n };\r\n store.dispatch(\"dashboard/loadCountTotalTimesheet\", {\r\n date: dayjs(resultTimeSheetHeader.StartDate).format(\"YYYY-MM-DD\"),\r\n userId: resultTimeSheetHeader.UserId,\r\n timesheetId: resultTimeSheetHeader.TimesheetHeaderId,\r\n });\r\n ctx.emit(\"changeShift\", !!timeSheetHeader.value.Shift);\r\n\r\n timeSheetHeader.value.TimesheetStatusName =\r\n timeSheetStatusName[\r\n timeSheetHeader.value\r\n .TimesheetStatus! as keyof typeof timeSheetStatusName\r\n ];\r\n if ([1, 2, 3, 5].includes(timeSheetHeader.value.TimesheetStatus ?? 0)) {\r\n if (\r\n timeSheetHeader.value.TimesheetStatus == 1 &&\r\n (currentUser.value.userType == USER_TYPE_APPROVER ||\r\n currentUser.value.userType == USER_TYPE_SYSTEM_ADMINISTRATOR) &&\r\n currentUser.value.userId !== timeSheetHeader.value.UserId\r\n ) {\r\n allowUpdate.value = true;\r\n ctx.emit(\"changeAllowEdit\", true);\r\n } else {\r\n allowUpdate.value = false;\r\n ctx.emit(\"changeAllowEdit\", false);\r\n }\r\n } else {\r\n if (currentUser.value.userId !== timeSheetHeader.value.UserId) {\r\n allowUpdate.value = false;\r\n ctx.emit(\"changeAllowEdit\", false);\r\n } else {\r\n allowUpdate.value = true;\r\n ctx.emit(\"changeAllowEdit\", true);\r\n }\r\n }\r\n if (currentUser.value.userType == USER_TYPE_USER_ADMINISTRATOR) {\r\n allowUpdate.value = false;\r\n }\r\n let lineVisibleTypes: number[] = [];\r\n if (resultTimeSheetHeader.TimesheetLines) {\r\n let totalMinEdit = 0;\r\n for (\r\n let index = 0;\r\n index < resultTimeSheetHeader.TimesheetLines.length;\r\n index++\r\n ) {\r\n const line = resultTimeSheetHeader.TimesheetLines[index];\r\n\r\n let hourLine = 0;\r\n let minLine = 0;\r\n if (line.TimesheetLineMinutes) {\r\n minLine = line.TimesheetLineMinutes % 60;\r\n hourLine = Math.floor(line.TimesheetLineMinutes / 60);\r\n totalMinEdit += line.TimesheetLineMinutes;\r\n }\r\n let additionInfo = undefined;\r\n if (line.TimesheetAdditionals && line.TimesheetAdditionals.length > 0) {\r\n additionInfo = { ...line.TimesheetAdditionals[0] };\r\n }\r\n delete line[\"TimesheetAdditionals\"];\r\n const timeSheetLine: TimeSheetLine = {\r\n ...line,\r\n TaskUuid: uuidv4(),\r\n Option: {\r\n isExpend: true,\r\n name: `Task ${index + 1}`,\r\n type: convertTaskIdToType(line.TimesheetLineType!),\r\n hours: hourLine,\r\n mins: minLine,\r\n visiblePopover: false,\r\n startTime: getHoursAndMinutes(\r\n line.StartTime,\r\n line.TimesheetLineMinutes\r\n ),\r\n endTime: getHoursAndMinutes(\r\n line.EndTime,\r\n line.TimesheetLineMinutes\r\n ),\r\n isValid: false,\r\n },\r\n };\r\n timeSheetLine.TimesheetAdditional = additionInfo;\r\n timeSheetHeader.value.TimesheetLines?.push(timeSheetLine);\r\n const lineVisibleType = convertTaskIdToVisbleType(\r\n line.TimesheetLineType!\r\n );\r\n if (lineVisibleType != null) {\r\n lineVisibleTypes = [...lineVisibleTypes, lineVisibleType];\r\n }\r\n }\r\n totalHours.value = Math.floor(totalMinEdit / 60);\r\n totalMins.value = totalMinEdit % 60;\r\n }\r\n\r\n if (\r\n currentUser.value.userType == USER_TYPE_APPROVER ||\r\n currentUser.value.userType == USER_TYPE_SYSTEM_ADMINISTRATOR\r\n ) {\r\n if (timeSheetHeader.value.UserId != currentUser.value.userId) {\r\n displayButtonAddTask.value = false;\r\n } else {\r\n if ([1, 2, 3, 5].includes(timeSheetHeader.value.TimesheetStatus ?? 0)) {\r\n displayButtonAddTask.value = false;\r\n } else {\r\n displayButtonAddTask.value = true;\r\n }\r\n }\r\n } else {\r\n if ([1, 2, 3, 5].includes(timeSheetHeader.value.TimesheetStatus ?? 0)) {\r\n displayButtonAddTask.value = false;\r\n } else {\r\n displayButtonAddTask.value = true;\r\n }\r\n }\r\n\r\n calTotalTimeSheet();\r\n\r\n const taskVisibleType =\r\n lineVisibleTypes.includes(1) && lineVisibleTypes.includes(2)\r\n ? 0\r\n : lineVisibleTypes[0];\r\n currentTaskVisibleType.value =\r\n taskVisibleType !== resultTimeSheetHeader?.User?.TaskType\r\n ? 0\r\n : taskVisibleType;\r\n store.commit(\"SET_LOADING\", false);\r\n oldData.value = {\r\n Id: timeSheetHeader.value.TimesheetHeaderId,\r\n StartDate: dayjs(timeSheetHeader.value.StartDate).format(\"YYYY-MM-DD\"),\r\n TimesheetStatus: timeSheetHeader.value.TimesheetStatus,\r\n Shift: !!timeSheetHeader.value.Shift,\r\n TimesheetLines: [],\r\n };\r\n timeSheetHeader.value.TimesheetLines?.forEach((line: any) => {\r\n const updateLine = {\r\n TimesheetLineId: line.TimesheetLineId,\r\n TimesheetLineMinutes: line.TimesheetLineMinutes,\r\n TimesheetLineType: line.TimesheetLineType,\r\n WorkOrderTaskId: line.WorkOrderTaskId ? line.WorkOrderTaskId : null,\r\n EquipmentId: line.EquipmentId ? line.EquipmentId : null,\r\n SiteId: line.SiteId ? line.SiteId : null,\r\n WorkOrderId: line.WorkOrderId ? line.WorkOrderId : null,\r\n JobId: line.JobId ? line.JobId : null,\r\n GlaccountId: line.GlaccountId ? line.GlaccountId : null,\r\n JobCostCodeId: line.JobCostCodeId ? line.JobCostCodeId : null,\r\n StartTime: line.StartTime ?? 0,\r\n EndTime: line.EndTime ?? 0,\r\n Notes: line.Notes,\r\n TimesheetAdditional: line.TimesheetAdditional\r\n ? line.TimesheetAdditional\r\n : undefined,\r\n Option: line.Option,\r\n };\r\n oldData.value.TimesheetLines.push(updateLine);\r\n });\r\n };\r\n\r\n const updateTimeSheet = async (timeSheetStatus: number) => {\r\n store.commit(\"SET_LOADING\", true);\r\n let result = false;\r\n if (!timeSheetHeader.value.TimesheetLines?.length) {\r\n return false;\r\n }\r\n const dataUpdate: any = {\r\n Id: timeSheetHeader.value.TimesheetHeaderId,\r\n StartDate: dayjs(timeSheetHeader.value.StartDate).format(\"YYYY-MM-DD\"),\r\n TimesheetStatus: timeSheetStatus,\r\n Shift: !!timeSheetHeader.value.Shift,\r\n TimesheetLines: [],\r\n };\r\n\r\n timeSheetHeader.value.TimesheetLines?.forEach((line: any) => {\r\n const updateLine = {\r\n TimesheetLineId: line.TimesheetLineId,\r\n TimesheetLineMinutes: line.TimesheetLineMinutes,\r\n TimesheetLineType: line.TimesheetLineType,\r\n WorkOrderTaskId: line.WorkOrderTaskId ? line.WorkOrderTaskId : null,\r\n EquipmentId: line.EquipmentId ? line.EquipmentId : null,\r\n SiteId: line.SiteId ? line.SiteId : null,\r\n WorkOrderId: line.WorkOrderId ? line.WorkOrderId : null,\r\n JobId: line.JobId ? line.JobId : null,\r\n GlaccountId: line.GlaccountId ? line.GlaccountId : null,\r\n JobCostCodeId: line.JobCostCodeId ? line.JobCostCodeId : null,\r\n StartTime: line.StartTime ?? 0,\r\n EndTime: line.EndTime ?? 0,\r\n Notes: line.Notes,\r\n TimesheetAdditional: line.TimesheetAdditional\r\n ? line.TimesheetAdditional\r\n : undefined,\r\n Option: line.Option,\r\n };\r\n dataUpdate.TimesheetLines.push(updateLine);\r\n });\r\n\r\n const resultCheckTimeInit = checkTimeInit(timeSheetHeader.value)\r\n dataUpdate.TimesheetLines = resultCheckTimeInit\r\n\r\n const objBefore = JSON.stringify(oldData.value);\r\n const objAfter = JSON.stringify(dataUpdate);\r\n\r\n if (objBefore === objAfter) {\r\n store.commit(\"SET_LOADING\", false);\r\n return true;\r\n }\r\n\r\n await store\r\n .dispatch(\"dashboard/actUpdateTimeSheet\", dataUpdate)\r\n .then(() => {\r\n store.commit(\"SET_LOADING\", false);\r\n store.commit(\"auth/SET_IS_VALID\", false);\r\n result = true;\r\n })\r\n .catch((error) => {\r\n console.log(\"error\", error.data.value);\r\n store.commit(\"SET_LOADING\", false);\r\n if (error.data.value !== \"Sequence contains no elements\") {\r\n notify(\"error\", MESSAGE_CODES.ERR_SERVER);\r\n }\r\n result = false;\r\n });\r\n return result;\r\n };\r\n\r\n watch(allTimesheetLine, () => {\r\n const isOverlapLevel = funcOverLapLevel(timeSheetHeader);\r\n ctx.emit(\"handlePopupOverLapLevel\", isOverlapLevel);\r\n })\r\n\r\n\r\n return {\r\n totalHours,\r\n totalMins,\r\n timeSheetHeader,\r\n updateTimeSheet,\r\n loadTimeSheetEdit,\r\n createTimeSheet,\r\n funcOverLap,\r\n funcFindMaxMinTime,\r\n handleSubmitTaskTime,\r\n updateTaskTime,\r\n handleTaskSubmit,\r\n resetTaskData,\r\n initTimesheetLine,\r\n funcOverLapLevel,\r\n allowUpdate,\r\n displayButtonAddTask\r\n };\r\n}\r\n","\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import { ref, computed } from 'vue'\r\nimport { useStore } from \"vuex\";\r\n\r\ninterface MessageConfirm {\r\n message: string;\r\n textButtonConfirm: string;\r\n textButtonCancel: string;\r\n type: string;\r\n icon: string;\r\n colorIcon: string;\r\n}\r\n\r\nexport default function useTaskPopup() {\r\n const store = useStore();\r\n const dialogVisibleEditTask = ref(false);\r\n const totalHour = computed(() => store.getters[\"dashboard/totalHour\"]);\r\n const shift = ref(false)\r\n const totalHourMultipleTasks = ref(0);\r\n const StartTimeAM = ref(510);\r\n const EndTimePM = ref(-1);\r\n const popupOverlap = ref(false);\r\n const popupOverlapLevel = ref(false);\r\n const nightShift = ref(false)\r\n const dayShift = ref(false)\r\n\r\n const isOpenPopupAddTask = computed(() => store.state.isOpenPopupAddTask);\r\n const totalHourSuper = computed(() => store.getters['timeSheetsApprove/totalHour']);\r\n const isClickSubmit = ref(false);\r\n const dialogCheckCondition = ref(false);\r\n const onClickSave = ref(false);\r\n const passAllTaskIsValid = ref(false);\r\n const isAllowEdit = ref(false);\r\n\r\n const messageConfirm = ref({\r\n message: 'Your timesheet will be submitted.\\nAre you sure?',\r\n textButtonConfirm: 'Yes',\r\n textButtonCancel: 'No',\r\n type: 'Confirm',\r\n icon: 'btn-fix',\r\n colorIcon: 'yellow'\r\n });\r\n\r\n const onChangeEndTimePM = (value: any) => {\r\n EndTimePM.value = value\r\n }\r\n const onChangeStartTimeAM = (value: any) => {\r\n StartTimeAM.value = value\r\n }\r\n const onChangeShift = (value: boolean) => {\r\n shift.value = value\r\n }\r\n\r\n const handleAllowEdit = (value: boolean) => {\r\n isAllowEdit.value = value\r\n }\r\n\r\n const handleMaxTimeMultipleTasks = (value: number) => {\r\n totalHourMultipleTasks.value = value\r\n }\r\n\r\n const handlePopupOverLap = (error: boolean) => {\r\n if (error) {\r\n popupOverlap.value = true\r\n } else {\r\n popupOverlap.value = false\r\n }\r\n }\r\n \r\n const handlePopupOverLapLevel = (error: boolean) => {\r\n if (error) {\r\n popupOverlapLevel.value = true\r\n } else {\r\n popupOverlapLevel.value = false\r\n }\r\n }\r\n\r\n const handleCheckNightShift = (value: boolean) => {\r\n nightShift.value = value\r\n }\r\n\r\n const handleCheckDayShift = (value: boolean) => {\r\n dayShift.value = value\r\n }\r\n\r\n const handleClosePopupConfirm = () => {\r\n dialogCheckCondition.value = false\r\n isClickSubmit.value = false\r\n onClickSave.value = false\r\n }\r\n\r\n const checkNightShiftMismatchWarning = (textType: string, textIcon: string, colorIcon: string) => {\r\n if (nightShift.value) {\r\n return {\r\n message: \"You have entered time for a Day shift that\\n passes midnight. Please change the\\n shift type to 'Night Shift' or correct the\\n task time before saving or submitting.\",\r\n textButtonConfirm: 'None',\r\n textButtonCancel: 'Fix',\r\n type: textType,\r\n icon: textIcon,\r\n colorIcon\r\n }\r\n }\r\n }\r\n const checkDayShiftMismatchWarning = (textType: string, textIcon: string, colorIcon: string) => {\r\n if (dayShift.value) {\r\n return {\r\n message: 'You have entered time for a Night shift \\nthat passes midday.\\n Please confirm this is accurate \\nor go back and correct the timesheet.',\r\n textButtonConfirm: 'Confirm',\r\n textButtonCancel: 'Fix',\r\n type: textType,\r\n icon: textIcon,\r\n colorIcon\r\n }\r\n }\r\n }\r\n const checkCurrentTimesheetTotalHours = (textType: string, textIcon: string, colorIcon: string) => {\r\n if (totalHourMultipleTasks.value > 960) {\r\n return {\r\n message: 'Total hours logged in the timesheet\\n is over 16 hours.\\n Please review and adjust your tasks\\n accordingly.',\r\n textButtonConfirm: 'None',\r\n textButtonCancel: 'Fix',\r\n type: textType,\r\n icon: textIcon,\r\n colorIcon\r\n }\r\n }\r\n }\r\n const checkOverlapWarning = (textType: string, textIcon: string, colorIcon: string) => {\r\n if (popupOverlap.value) {\r\n return {\r\n message: 'Overlapping tasks detected in the\\n timesheet. Ensure there are no conflicts\\n in your specified task times.',\r\n textButtonConfirm: 'None',\r\n textButtonCancel: 'Fix',\r\n type: textType,\r\n icon: textIcon,\r\n colorIcon\r\n }\r\n }\r\n }\r\n\r\n const checkTimesheetTotalHours = (textType: string, textIcon: string, colorIcon: string) => {\r\n if ((totalHourMultipleTasks.value + totalHour.value) > 960) {\r\n return {\r\n message: 'The combined total hours for all\\n timesheets on this day exceed 16 hours.\\n Please review and adjust your\\n timesheets.',\r\n textButtonConfirm: 'None',\r\n textButtonCancel: 'Fix',\r\n type: textType,\r\n icon: textIcon,\r\n colorIcon\r\n }\r\n }\r\n }\r\n \r\n const checkOverlapWarningLevel = (textType: string, textIcon: string, colorIcon: string) => {\r\n if (popupOverlapLevel.value) {\r\n return {\r\n message: \"Overlapping tasks detected with\\n another timesheet. Ensure no conflicts in\\n your specified task times with other\\n timesheet's task times\",\r\n textButtonConfirm: 'None',\r\n textButtonCancel: 'Fix',\r\n type: textType,\r\n icon: textIcon,\r\n colorIcon\r\n }\r\n }\r\n }\r\n\r\n const handleSaveCheckAndPopup = () => {\r\n onClickSave.value = true\r\n const checktotalHour = checkCurrentTimesheetTotalHours('Confirm', 'btn-fix', 'red');\r\n if (checktotalHour) {\r\n messageConfirm.value = checktotalHour\r\n dialogCheckCondition.value = true;\r\n return true\r\n }\r\n\r\n const checkOverlap = checkOverlapWarning('Confirm', 'btn-fix', 'red');\r\n if (checkOverlap) {\r\n messageConfirm.value = checkOverlap\r\n dialogCheckCondition.value = true;\r\n return true\r\n }\r\n\r\n const checkNight = checkNightShiftMismatchWarning('Confirm', 'btn-fix', 'red');\r\n if (checkNight) {\r\n messageConfirm.value = checkNight\r\n dialogCheckCondition.value = true;\r\n return true\r\n } \r\n\r\n const checkDay = checkDayShiftMismatchWarning('Confirm', 'btn-fix', 'yellow');\r\n if (checkDay) {\r\n messageConfirm.value = checkDay;\r\n dialogCheckCondition.value = true;\r\n return true\r\n }\r\n }\r\n\r\n const handleSubmitCheckAndPopup = () => {\r\n const checkCurrentHour = checkCurrentTimesheetTotalHours('Submitting', 'check-mark-circle', 'red');\r\n if (checkCurrentHour) {\r\n messageConfirm.value = checkCurrentHour\r\n dialogCheckCondition.value = true;\r\n return true\r\n }\r\n\r\n const checkTotalHours = checkTimesheetTotalHours('Submitting', 'check-mark-circle', 'red');\r\n if (checkTotalHours) {\r\n messageConfirm.value = checkTotalHours\r\n dialogCheckCondition.value = true;\r\n return true\r\n }\r\n\r\n const checkOverlap = checkOverlapWarning('Submitting', 'check-mark-circle', 'red');\r\n if (checkOverlap) {\r\n messageConfirm.value = checkOverlap\r\n dialogCheckCondition.value = true;\r\n return true\r\n }\r\n\r\n const checkOverlapLevel = checkOverlapWarningLevel('Submitting', 'check-mark-circle', 'red');\r\n if (checkOverlapLevel) {\r\n messageConfirm.value = checkOverlapLevel;\r\n dialogCheckCondition.value = true;\r\n return true\r\n }\r\n\r\n const checkNight = checkNightShiftMismatchWarning('Submitting', 'check-mark-circle', 'red');\r\n if (checkNight) {\r\n messageConfirm.value = checkNight\r\n dialogCheckCondition.value = true;\r\n return true\r\n }\r\n\r\n const checkDay = checkDayShiftMismatchWarning('Submitting', 'check-mark-circle', 'yellow');\r\n if (checkDay) {\r\n messageConfirm.value = checkDay;\r\n dialogCheckCondition.value = true;\r\n return true\r\n }\r\n \r\n }\r\n\r\n return {\r\n dialogVisibleEditTask,\r\n totalHour,\r\n shift,\r\n totalHourMultipleTasks,\r\n StartTimeAM,\r\n EndTimePM,\r\n popupOverlap,\r\n nightShift,\r\n dayShift,\r\n isOpenPopupAddTask,\r\n messageConfirm,\r\n totalHourSuper,\r\n isClickSubmit,\r\n dialogCheckCondition,\r\n onClickSave,\r\n passAllTaskIsValid,\r\n isAllowEdit,\r\n popupOverlapLevel,\r\n onChangeEndTimePM,\r\n onChangeStartTimeAM,\r\n onChangeShift,\r\n handleMaxTimeMultipleTasks,\r\n handlePopupOverLap,\r\n handleCheckNightShift,\r\n handleCheckDayShift,\r\n checkNightShiftMismatchWarning,\r\n checkDayShiftMismatchWarning,\r\n checkCurrentTimesheetTotalHours,\r\n checkOverlapWarning,\r\n checkTimesheetTotalHours,\r\n handleAllowEdit,\r\n handleClosePopupConfirm,\r\n handleSaveCheckAndPopup,\r\n handleSubmitCheckAndPopup,\r\n handlePopupOverLapLevel,\r\n checkOverlapWarningLevel\r\n }\r\n}","\r\n\r\n","\r\n\r\n\r\n ","\r\n\r\n\r\n","\r\n\r\n\r\n\r\n","import { USER_TYPE_APPROVER, USER_TYPE_STAFF, USER_TYPE_SYSTEM_ADMINISTRATOR, USER_TYPE_USER_ADMINISTRATOR } from 'core/constants';\r\n\r\nconst LoginView = () => import('modules/auth/views/login.vue');\r\nconst DashboardView = () => import('modules/dashboard/views/dashboard.vue');\r\n\r\nconst DashboardListView = () =>\r\n import('modules/super/dashboard/views/dashboard.vue');\r\n\r\nconst DashboardSuperEditView = () =>\r\n import('modules/super/dashboard/views/edit.vue');\r\n\r\nconst ManualView = () => import('modules/manual/views/manual.vue');\r\nconst ProfileView = () => import('modules/profile/views/profile.vue');\r\nconst NotificationsView = () =>\r\n import('modules/notifications/views/notificationv2.vue');\r\nconst ForgetPasswordView = () =>\r\n import('modules/auth/views/forget-password.vue');\r\nconst ResetPasswordView = () => import('modules/auth/views/reset-password.vue');\r\nconst RegisterView = () => import('modules/auth/views/register.vue');\r\nconst NotificationsSuperView = () =>\r\n import('modules/notifications/views/notificationv2.vue');\r\nconst UsersView = () =>\r\n import('modules/admin/users/views/users.vue');\r\nconst ApprovalGroupsView = () =>\r\n import('modules/admin/groups/views/approval-groups.vue');\r\nconst AccessDeniedView = () =>\r\n import('modules/errors/views/access-denied.vue');\r\nconst TimesheetTrackingListView = () =>\r\n import('modules/super/timesheetTrackings/views/timesheetTracking.vue');\r\nconst UserTrackingsView = () => import('modules/super/userTrackings/views/userTrackings.vue');\r\nconst SettingsView = () =>\r\n import('modules/settings/views/settings.vue');\r\n\r\nconst routes = [\r\n {\r\n path: '/:catchAll(.*)',\r\n redirect: 'dashboard'\r\n },\r\n {\r\n path: '/access-denied',\r\n name: 'Access Denied',\r\n meta: {\r\n requiresAuth: true,\r\n },\r\n component: AccessDeniedView\r\n },\r\n {\r\n path: '/callback',\r\n name: 'Callback',\r\n meta: {\r\n requiresAuth: false,\r\n },\r\n redirect: 'dashboard'\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: LoginView,\r\n meta: {\r\n requiresAuth: false,\r\n },\r\n },\r\n {\r\n path: '/forget-password',\r\n name: 'forget-password',\r\n component: ForgetPasswordView,\r\n meta: {\r\n requiresAuth: false,\r\n },\r\n },\r\n {\r\n path: '/reset-password',\r\n name: 'reset-password',\r\n component: ResetPasswordView,\r\n meta: {\r\n requiresAuth: false,\r\n },\r\n },\r\n {\r\n path: '/register',\r\n name: 'register',\r\n component: RegisterView,\r\n meta: {\r\n requiresAuth: false,\r\n },\r\n },\r\n {\r\n path: '/dashboard',\r\n component: DashboardView,\r\n name: 'Dashboard',\r\n meta: {\r\n // title: 'header.dashboard',\r\n requiresAuth: true,\r\n roles: [USER_TYPE_STAFF]\r\n },\r\n },\r\n {\r\n path: '/super/dashboard',\r\n component: DashboardListView,\r\n name: 'DashboardSuper',\r\n meta: {\r\n // title: 'header.dashboard',\r\n requiresAuth: true,\r\n roles: [USER_TYPE_APPROVER, USER_TYPE_SYSTEM_ADMINISTRATOR, USER_TYPE_USER_ADMINISTRATOR]\r\n },\r\n alias: ['/admin/dashboard']\r\n },\r\n {\r\n path: '/super/user-trackings',\r\n component: UserTrackingsView,\r\n name: 'UserTrackings',\r\n meta: {\r\n requiresAuth: true,\r\n roles: [USER_TYPE_SYSTEM_ADMINISTRATOR]\r\n },\r\n alias: ['/admin/user-trackings']\r\n },\r\n {\r\n path: '/super/timesheet-trackings',\r\n component: TimesheetTrackingListView,\r\n name: 'TimesheetTracking',\r\n meta: {\r\n // title: 'header.dashboard',\r\n requiresAuth: true,\r\n roles: [USER_TYPE_SYSTEM_ADMINISTRATOR, USER_TYPE_USER_ADMINISTRATOR]\r\n },\r\n alias: ['/admin/timesheet-trackings']\r\n },\r\n {\r\n path: '/super/dashboard/edit/:id',\r\n component: DashboardSuperEditView,\r\n name: 'DashboardSuperEdit',\r\n meta: {\r\n // title: 'header.dashboard',\r\n requiresAuth: true,\r\n roles: [USER_TYPE_APPROVER, USER_TYPE_SYSTEM_ADMINISTRATOR]\r\n },\r\n },\r\n {\r\n path: '/manuals',\r\n component: ManualView,\r\n name: 'Manuals',\r\n meta: {\r\n // title: 'header.dashboard',\r\n requiresAuth: true,\r\n roles: [USER_TYPE_APPROVER, USER_TYPE_STAFF, USER_TYPE_SYSTEM_ADMINISTRATOR, USER_TYPE_USER_ADMINISTRATOR]\r\n },\r\n },\r\n {\r\n path: '/profile',\r\n component: ProfileView,\r\n name: 'Profile',\r\n meta: {\r\n // title: 'header.dashboard',\r\n requiresAuth: true,\r\n roles: [USER_TYPE_APPROVER, USER_TYPE_STAFF, USER_TYPE_SYSTEM_ADMINISTRATOR, USER_TYPE_USER_ADMINISTRATOR]\r\n },\r\n },\r\n {\r\n path: '/notifications',\r\n component: NotificationsView,\r\n name: 'Notifications',\r\n meta: {\r\n // title: 'header.dashboard',\r\n requiresAuth: true,\r\n roles: [USER_TYPE_APPROVER, USER_TYPE_STAFF, USER_TYPE_SYSTEM_ADMINISTRATOR]\r\n },\r\n },\r\n {\r\n path: '/super/notifications',\r\n component: NotificationsSuperView,\r\n name: 'NotificationsSuper',\r\n meta: {\r\n // title: 'header.dashboard',\r\n requiresAuth: true,\r\n roles: [USER_TYPE_APPROVER, USER_TYPE_SYSTEM_ADMINISTRATOR]\r\n },\r\n },\r\n // {\r\n // path: '/admin/dashboard',\r\n // component: DashboardListView,\r\n // name: 'DashboardSuper',\r\n // meta: {\r\n // requiresAuth: false,\r\n // roles:[USER_TYPE_SYSTEM_ADMINISTRATOR]\r\n // },\r\n // },\r\n {\r\n path: '/admin/users',\r\n component: UsersView,\r\n name: 'Users',\r\n meta: {\r\n // title: 'header.dashboard',\r\n requiresAuth: true,\r\n roles: [USER_TYPE_SYSTEM_ADMINISTRATOR, USER_TYPE_USER_ADMINISTRATOR]\r\n },\r\n },\r\n {\r\n path: '/admin/approval-groups',\r\n component: ApprovalGroupsView,\r\n name: 'ApprovalGroups',\r\n meta: {\r\n // title: 'header.dashboard',\r\n requiresAuth: true,\r\n roles: [USER_TYPE_SYSTEM_ADMINISTRATOR, USER_TYPE_USER_ADMINISTRATOR]\r\n },\r\n // props: { isAdmin: false },\r\n },\r\n {\r\n path: '/admin/settings',\r\n component: SettingsView,\r\n name: 'Settings',\r\n meta: {\r\n requiresAuth: true,\r\n roles: [USER_TYPE_SYSTEM_ADMINISTRATOR]\r\n },\r\n },\r\n];\r\n\r\nexport default routes;\r\n","import store from \"store\";\r\nimport { computed, nextTick } from \"@vue/runtime-core\";\r\nimport {\r\n createRouter,\r\n createWebHistory,\r\n Router,\r\n RouteLocationNormalized,\r\n} from \"vue-router\";\r\nimport { msalInstance, loginRequest, tokenRequest } from \"../authConfig\";\r\nimport { InteractionType } from \"@azure/msal-browser\";\r\nimport routes from \"./routes\";\r\nimport { isAuthenticated, checkTokenExpire, clearCookie, autoRefreshToken, getCookie, clearAllCookies } from \"../utils\";\r\nimport {\r\n AUTH_TOKEN_KEY,\r\n REFRESH_TOKEN_KEY,\r\n USER_TYPE_APPROVER,\r\n USER_TYPE_SYSTEM_ADMINISTRATOR,\r\n USER_TYPE_USER_ADMINISTRATOR,\r\n} from \"core/constants\";\r\nconst router: Router = createRouter({\r\n history: createWebHistory(),\r\n routes,\r\n});\r\n\r\nrouter.beforeEach(async (to: any, from: RouteLocationNormalized) => {\r\n if (to.meta.requiresAuth) {\r\n try {\r\n const token = localStorage.getItem(AUTH_TOKEN_KEY) || sessionStorage.getItem(AUTH_TOKEN_KEY);\r\n const isTokenExpire = checkTokenExpire(token);\r\n // const request = {\r\n // ...loginRequest,\r\n // redirectStartPage: to.fullPath,\r\n // };\r\n let currentUser = store.getters[\"auth/currentUser\"];\r\n\r\n\r\n if (currentUser.userId === undefined || isTokenExpire) {\r\n currentUser = await store.dispatch(\"auth/actGetMe\");\r\n }\r\n if (currentUser) {\r\n const isDashBoard = to.matched.some(\r\n (p: any) => p.path.indexOf(\"/dashboard\") === 0\r\n );\r\n if (isDashBoard) {\r\n if (currentUser.userType === USER_TYPE_APPROVER) {\r\n return \"/super/dashboard\";\r\n }\r\n if (currentUser.userType === USER_TYPE_SYSTEM_ADMINISTRATOR) {\r\n return \"/admin/dashboard\";\r\n }\r\n if (currentUser.userType === USER_TYPE_USER_ADMINISTRATOR) {\r\n return '/admin/dashboard'\r\n }\r\n }\r\n // Check permission\r\n if (to.meta.roles !== undefined && to.meta.roles !== null) {\r\n if (!to.meta.roles.includes(currentUser.userType)) {\r\n return '/access-denied'\r\n }\r\n }\r\n }\r\n } catch (e: any) {\r\n localStorage.setItem(AUTH_TOKEN_KEY, \"\");\r\n sessionStorage.setItem(AUTH_TOKEN_KEY, \"\")\r\n // msalInstance.logoutRedirect()\r\n }\r\n }\r\n\r\n // let currentUser = store.getters[\"auth/currentUser\"];\r\n // if (currentUser.userId === undefined) {\r\n // currentUser = await store.dispatch(\"auth/actGetMe\");\r\n // if (!currentUser){\r\n // localStorage.setItem(AUTH_TOKEN_KEY, '');\r\n // msalInstance.logoutRedirect()\r\n // }\r\n // }\r\n return true;\r\n});\r\n\r\nexport default router;\r\n","import { NavigationClient, NavigationOptions } from \"@azure/msal-browser\";\r\nimport { Router } from \"vue-router\";\r\n\r\n/**\r\n * This is an example for overriding the default function MSAL uses to navigate to other urls in your webpage\r\n */\r\nexport class CustomNavigationClient extends NavigationClient{\r\n private router: Router;\r\n\r\n constructor(router: Router) {\r\n super();\r\n this.router = router;\r\n }\r\n\r\n /**\r\n * Navigates to other pages within the same web application\r\n * You can use the useHistory hook provided by react-router-dom to take advantage of client-side routing\r\n * @param url \r\n * @param options \r\n */\r\n async navigateInternal(url: string, options: NavigationOptions) {\r\n const relativePath = url.replace(window.location.origin, '');\r\n if (options.noHistory) {\r\n this.router.replace(relativePath);\r\n } else {\r\n this.router.push(relativePath);\r\n }\r\n\r\n return false;\r\n }\r\n}","import 'element-plus/dist/index.css'\r\nimport ElementPlus from 'element-plus'\r\nimport { createApp } from 'vue'\r\nimport App from './App.vue'\r\nimport store from './store'\r\nimport router from './router'\r\nimport './index.css'\r\nimport \"./styles/index.scss\";\r\nimport \"./styles/element/index.scss\";\r\nimport { msalPlugin } from \"./plugins/msalPlugin\";\r\nimport { messaging } from './firebase/firebase';\r\nimport { msalInstance } from \"./authConfig\";\r\nimport { AuthenticationResult, EventType } from \"@azure/msal-browser\";\r\nimport { CustomNavigationClient } from 'router/navigationClient'\r\nimport Vue3Signature from \"vue3-signature\"\r\nimport {NotificationService} from \"modules/notifications/service\";\r\nimport {AuthService} from \"modules/auth/service\";\r\nconst service = new AuthService()\r\n// The next 2 lines are optional. This is how you configure MSAL to take advantage of the router's navigate functions when MSAL redirects between pages in your app\r\nconst navigationClient = new CustomNavigationClient(router);\r\nmsalInstance.setNavigationClient(navigationClient);\r\n\r\n// Account selection logic is app dependent. Adjust as needed for different use cases.\r\nconst accounts = msalInstance.getAllAccounts();\r\nif (accounts.length > 0) {\r\n msalInstance.setActiveAccount(accounts[0]);\r\n}\r\n\r\nmsalInstance.addEventCallback((event) => {\r\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload) {\r\n const payload = event.payload as AuthenticationResult;\r\n const account = payload.account;\r\n msalInstance.setActiveAccount(account);\r\n }\r\n});\r\n\r\nconst app = createApp(App)\r\napp.use(ElementPlus)\r\napp.use(router)\r\napp.use(store)\r\napp.use(Vue3Signature as any)\r\napp.config.warnHandler = function (msg, vm, trace) {\r\n return null\r\n}\r\n\r\nif ('serviceWorker' in navigator) {\r\n navigator.serviceWorker\r\n .register('/firebase-messaging-sw.js')\r\n .then((registration) => {\r\n console.log('Service Worker registered:', registration);\r\n messaging.useServiceWorker(registration);\r\n })\r\n .catch((error) => {\r\n console.error('Service Worker registration failed:', error);\r\n });\r\n}\r\n\r\n// app.use(msalPlugin, msalInstance);\r\nrouter.isReady().then(() => {\r\n // For develop\r\n // const token ='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ilg1ZVhrNHh5b2pORnVtMWtsMll0djhkbE5QNC1jNTdkTzZRR1RWQndhTmsifQ.eyJpc3MiOiJodHRwczovL2VtZWNvdGltZXNoZWV0cy5iMmNsb2dpbi5jb20vNDYyYzZiOTItZDhmMi00OWZlLWJkNzUtNmUyYmFkZDg5MDFiL3YyLjAvIiwiZXhwIjoxNjc4MTIwMTIwLCJuYmYiOjE2NzgxMTI5MjAsImF1ZCI6ImI2YzM0MmNiLTE1NmQtNGE5Zi05ODdhLTJmYjk4ODg4ODIyZCIsIm9pZCI6ImJkM2Q4ODVkLTQ4YWQtNDBiNi04YTQ0LWUyYTkwMGE3MmVlYyIsInN1YiI6ImJkM2Q4ODVkLTQ4YWQtNDBiNi04YTQ0LWUyYTkwMGE3MmVlYyIsInRmcCI6IkIyQ18xX1NpZ25JbiIsIm5vbmNlIjoiZDVjZjcwODctY2VmMy00MzM0LWI1MDMtM2RiMDFlODEyMzMxIiwic2NwIjoiU3lzdGVtLkFkbWluIFVzZXIuTWFuYWdlIFRpbWVzaGVldC5SZXZpZXcgVGltZXNoZWV0LkFwcHJvdmUgVGltZXNoZWV0LlN1Ym1pdCIsImF6cCI6IjIyM2FlNTRhLWZhZGUtNGVhYS04N2NiLWI1OTg2NTA5OTBkYSIsInZlciI6IjEuMCIsImlhdCI6MTY3ODExMjkyMH0.HUtFj6BYNo6-pi-D48NV72IozwRF8vPFsTlaNiBxBXm4_ySXcQzJMZAH6PI2M-gyoViqPKJnNzXTIrYsgVF3PyiWnc_50uFY1ryZiuDw65QCnmNVQwc0IAIK_pQaBe1rhNddYbLP6deo1TjqoTSuEfNbgGim7H3x0O_t78IKnmH-HEDKQ59X3oz3_3-3uFg2Aqk4svw2D5DGvta6HViMv8jjLyiAzEI6eWe29f9RygN_0vVXws5wyPys2CIgeKVIVPgexq-bPJGB_VIfqoSbe9pEnmi7mjWmXX_1NzRDAo7x_gzSjc5arG8rK5azHajbMxRbI0uKS-Wkoaa8IpHYZw'\r\n // localStorage.setItem('access-token', token);\r\n\r\n\r\n // Waiting for the router to be ready prevents race conditions when returning from a loginRedirect or acquireTokenRedirect\r\n messaging.requestPermission()\r\n .then(() => {\r\n console.log('Notification permission granted.');\r\n return messaging.getToken();\r\n })\r\n .then(async (token) => {\r\n const notificationSvc = new NotificationService();\r\n\r\n const currentUser = await service.me()\r\n await notificationSvc.registerToken({\r\n \"DeviceId\": currentUser.userId?.toString(),\r\n \"Token\": token,\r\n \"Platform\": \"web\"\r\n })\r\n // Send the token to your server or store it for later use\r\n })\r\n .catch((error) => {\r\n console.error('Error requesting permission:', error);\r\n });\r\n app.mount('#app')\r\n});\r\n"],"file":"assets/index.ca7a8952.js"}