/* eslint-disable */
import { useExpensesStore } from "src/stores/expense-store";
import { useTimesheetStore } from "src/stores/timesheet-store";
import { Expense } from "src/modules/timesheets/models/expense.models";
import { date } from "quasar";

export const useExpensesApi = () => {
    const expenses_store = useExpensesStore();
    const timesheet_store = useTimesheetStore();

    const upsertExpense = async (expense: Expense, file: File, employee_email: string): Promise<string> => {
        const presignedURL = expenses_store.uploadAttachment(file);
        if (!presignedURL) return 'PRESIGN_FAILED';

        const success = await expenses_store.upsertExpense(expense, employee_email);
        
        if (success) {
            expenses_store.current_expense = new Expense(date.formatDate( new Date(), 'YYYY-MM-DD'));
            timesheet_store.getTimesheetsByOptionalEmployeeEmail(employee_email);
            return 'SUCCESS';
        }   

        return 'INVALID_EXPENSE';
    };

    const deleteExpenseById = async (expense_id: number, employee_email?: string): Promise<void> => {
        const success = await expenses_store.deleteExpenseById(expense_id);
        if (success) {
            timesheet_store.getTimesheetsByOptionalEmployeeEmail(employee_email);
        }   
    };

    return {
        upsertExpense,
        deleteExpenseById,
    };
};