import { ref } from "vue"; import { defineStore } from "pinia"; import { SchedulePresetsService } from "src/modules/employee-list/services/schedule-presets-service"; import { type PresetManagerMode, SchedulePreset, SchedulePresetFrontend } from "src/modules/employee-list/models/schedule-presets.models"; export const useSchedulePresetsStore = defineStore('schedule_presets_store', () => { const schedule_presets = ref([new SchedulePreset]); const current_schedule_preset = ref(new SchedulePresetFrontend); const schedule_preset_dialog_mode = ref('create'); const is_manager_open = ref(false); const openSchedulePresetManager = (preset_id: number) => { if (preset_id === -1) current_schedule_preset.value = new SchedulePresetFrontend; else if (schedule_preset_dialog_mode.value === 'copy') { const preset = schedule_presets.value.find(preset => preset.id === preset_id)!; const copied_preset = new SchedulePresetFrontend(preset); copied_preset.id = -1; copied_preset.name = ""; current_schedule_preset.value = copied_preset; } else setCurrentSchedulePreset(preset_id); is_manager_open.value = true; }; const setCurrentSchedulePreset = (preset_id: number) => { if (preset_id === -1) { current_schedule_preset.value = new SchedulePresetFrontend; return; } current_schedule_preset.value = new SchedulePresetFrontend(schedule_presets.value.find(preset => preset.id === preset_id)) }; const createSchedulePreset = async (preset: SchedulePreset): Promise => { try { const response = await SchedulePresetsService.createSchedulePresets(preset); return response.success; } catch (error) { console.error('DEV ERROR || error while creating schedule preset: ', error); return false; } }; const updateSchedulePreset = async (preset: SchedulePreset): Promise => { try { const response = await SchedulePresetsService.updateSchedulePresets(preset); return response.success; } catch (error) { console.error('DEV ERROR || error while updating schedule preset: ', error); return false; } }; const deleteSchedulePreset = async (preset_id: number): Promise => { try { const response = await SchedulePresetsService.deleteSchedulePresets(preset_id); return response.success; } catch (error) { console.error('DEV ERROR || error while deleting schedule preset: ', error); return false; } }; const findSchedulePresetList = async (): Promise => { try { const response = await SchedulePresetsService.getSchedulePresetsList(); if (response.success && response.data) schedule_presets.value = response.data; return response.success; } catch (error) { console.error('DEV ERROR || error while searching for schedule presets: ', error); return false } }; return { schedule_presets, current_schedule_preset, schedule_preset_dialog_mode, is_manager_open, setCurrentSchedulePreset, openSchedulePresetManager, createSchedulePreset, updateSchedulePreset, deleteSchedulePreset, findSchedulePresetList, } })