43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import type { Ref } from 'vue'
|
|
import type { EmployeeRttSummary } from '~/services/dto/employee-rtt-summary'
|
|
import type { Employee } from '~/services/dto/employee'
|
|
import { getEmployeeRttSummary, createRttPayment } from '~/services/employee-rtt-summary'
|
|
|
|
export const useEmployeeRtt = (employee: Ref<Employee | null>, reloadEmployee: () => Promise<void>) => {
|
|
const rttSummary = ref<EmployeeRttSummary | null>(null)
|
|
const isRttLoading = ref(false)
|
|
const rttDataLoaded = ref(false)
|
|
|
|
const loadRttData = async () => {
|
|
if (!employee.value || isRttLoading.value) return
|
|
isRttLoading.value = true
|
|
try {
|
|
const rttYear = new Date().getMonth() >= 5 ? new Date().getFullYear() + 1 : new Date().getFullYear()
|
|
rttSummary.value = await getEmployeeRttSummary(employee.value.id, rttYear)
|
|
rttDataLoaded.value = true
|
|
} finally {
|
|
isRttLoading.value = false
|
|
}
|
|
}
|
|
|
|
const resetLoaded = () => {
|
|
rttDataLoaded.value = false
|
|
}
|
|
|
|
const submitRttPayment = async (month: number, base25Minutes: number, bonus25Minutes: number, base50Minutes: number, bonus50Minutes: number) => {
|
|
if (!employee.value) return
|
|
const year = rttSummary.value?.year ?? undefined
|
|
await createRttPayment(employee.value.id, month, base25Minutes, bonus25Minutes, base50Minutes, bonus50Minutes, year)
|
|
await reloadEmployee()
|
|
}
|
|
|
|
return {
|
|
rttSummary,
|
|
isRttLoading,
|
|
rttDataLoaded,
|
|
loadRttData,
|
|
resetLoaded,
|
|
submitRttPayment
|
|
}
|
|
}
|