diff --git a/src/boot/axios.js b/src/boot/axios.js index 9b32275bd..99a163cca 100644 --- a/src/boot/axios.js +++ b/src/boot/axios.js @@ -5,8 +5,10 @@ import useNotify from 'src/composables/useNotify.js'; const session = useSession(); const { notify } = useNotify(); +const baseUrl = '/api/'; -axios.defaults.baseURL = '/api/'; +axios.defaults.baseURL = baseUrl; +const axiosNoError = axios.create({ baseURL: baseUrl }); const onRequest = (config) => { const token = session.getToken(); @@ -79,5 +81,7 @@ const onResponseError = (error) => { axios.interceptors.request.use(onRequest, onRequestError); axios.interceptors.response.use(onResponse, onResponseError); +axiosNoError.interceptors.request.use(onRequest); +axiosNoError.interceptors.response.use(onResponse); -export { onRequest, onResponseError }; +export { onRequest, onResponseError, axiosNoError }; diff --git a/src/pages/Worker/Card/WorkerTimeControl.vue b/src/pages/Worker/Card/WorkerTimeControl.vue index abf60a078..9ae91f8ce 100644 --- a/src/pages/Worker/Card/WorkerTimeControl.vue +++ b/src/pages/Worker/Card/WorkerTimeControl.vue @@ -2,6 +2,7 @@ import { useI18n } from 'vue-i18n'; import { useRoute } from 'vue-router'; import { onMounted, ref, computed, onBeforeMount, nextTick, reactive } from 'vue'; +import { axiosNoError } from 'src/boot/axios'; import FetchData from 'components/FetchData.vue'; import WorkerTimeHourChip from 'pages/Worker/Card/WorkerTimeHourChip.vue'; @@ -12,7 +13,6 @@ import WorkerTimeControlCalendar from 'pages/Worker/Card/WorkerTimeControlCalend import useNotify from 'src/composables/useNotify.js'; import axios from 'axios'; -import { useRole } from 'src/composables/useRole'; import { useAcl } from 'src/composables/useAcl'; import { useWeekdayStore } from 'src/stores/useWeekdayStore'; import { useStateStore } from 'stores/useStateStore'; @@ -63,13 +63,16 @@ const selectedCalendarDates = ref([]); const selectedDateFormatted = ref(toDateString(defaultDate.value)); const arrayData = useArrayData('workerData'); - +const acl = useAcl(); const worker = computed(() => arrayData.store?.data); - -const isHr = computed(() => useRole().hasAny(['hr'])); - -const canSend = computed(() => useAcl().hasAny('WorkerTimeControl', 'sendMail', 'WRITE')); - +const canSend = computed(() => + acl.hasAny([{ model: 'WorkerTimeControl', props: 'sendMail', accessType: 'WRITE' }]) +); +const canUpdate = computed(() => + acl.hasAny([ + { model: 'WorkerTimeControl', props: 'updateMailState', accessType: 'WRITE' }, + ]) +); const isHimself = computed(() => user.value.id === Number(route.params.id)); const columns = computed(() => { @@ -257,58 +260,32 @@ const fetchHours = async () => { } }; -const fetchWorkerTimeControlMails = async (filter) => { - try { - const { data } = await axios.get('WorkerTimeControlMails', { - params: { filter: JSON.stringify(filter) }, - }); - - return data; - } catch (err) { - console.error('Error fetching worker time control mails'); - } -}; - const fetchWeekData = async () => { + const where = { + year: selectedDate.value.getFullYear(), + week: selectedWeekNumber.value, + }; try { - const filter = { - where: { - workerFk: route.params.id, - year: selectedDate.value ? selectedDate.value?.getFullYear() : null, - week: selectedWeekNumber.value, - }, - }; + const mail = ( + await axiosNoError.get(`Workers/${route.params.id}/mail`, { + params: { filter: { where } }, + }) + ).data[0]; - const data = await fetchWorkerTimeControlMails(filter); - if (!data.length) { - state.value = null; - } else { - const [mail] = data; + if (!mail) state.value = null; + else { state.value = mail.state; reason.value = mail.reason; } - await canBeResend(); + canResend.value = !!( + await axiosNoError.get('WorkerTimeControlMails/count', { params: { where } }) + ).data.count; } catch (err) { console.error('Error fetching week data'); } }; -const canBeResend = async () => { - canResend.value = false; - - const filter = { - where: { - year: selectedDate.value.getFullYear(), - week: selectedWeekNumber.value, - }, - limit: 1, - }; - - const data = await fetchWorkerTimeControlMails(filter); - if (data.length) canResend.value = true; -}; - const setHours = (data) => { for (const weekDay of weekDays.value) { if (data) { @@ -449,7 +426,7 @@ onMounted(async () => {