93 lines
3.5 KiB
TypeScript
93 lines
3.5 KiB
TypeScript
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<SchedulePreset[]>([new SchedulePreset]);
|
|
const current_schedule_preset = ref<SchedulePresetFrontend>(new SchedulePresetFrontend);
|
|
const schedule_preset_dialog_mode = ref<PresetManagerMode>('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<boolean> => {
|
|
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<boolean> => {
|
|
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<boolean> => {
|
|
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<boolean> => {
|
|
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,
|
|
}
|
|
}) |