Files
web-antrean/stores/anjunganStore.js
T
2026-01-21 08:59:13 +07:00

94 lines
2.6 KiB
JavaScript

// stores/anjunganStore.js
import { defineStore } from 'pinia';
import { ref, computed } from 'vue';
export const useAnjunganStore = defineStore('anjungan', () => {
// Seed: existing static Anjungan page sebagai id 1
const anjunganItems = ref([
{
id: 1,
namaAnjungan: 'Anjungan Reguler',
jenisPasien: 'Reguler',
klinik: ['AK', 'AN', 'BD', 'GR', 'GM', 'GZ', 'HO', 'IP', 'JT', 'JW', 'KD', 'KK', 'KM', 'KO', 'MC', 'MT', 'ON', 'PR', 'RD', 'RM', 'RT', 'SR', 'TH'],
},
{
id: 2,
namaAnjungan: 'Anjungan Eksekutif',
jenisPasien: 'Eksekutif',
klinik: ['AK', 'AN', 'BD', 'GM', 'GR', 'GZ', 'HO', 'IP', 'JT', 'JW', 'KD', 'KK', 'KM', 'KO', 'MC', 'MT', 'ON', 'PR', 'RD', 'RM', 'RT', 'SR', 'TH'],
},
]);
const getAllAnjungan = computed(() => anjunganItems.value);
const getAnjunganById = (id) => {
return computed(() => {
const target = Number(id);
return anjunganItems.value.find((a) => Number(a.id) === target) || null;
});
};
const addAnjungan = (payload) => {
const maxId =
anjunganItems.value.length > 0
? Math.max(...anjunganItems.value.map((a) => Number(a.id) || 0))
: 0;
const newId = maxId + 1;
const newItem = {
...payload,
id: newId,
};
anjunganItems.value.push(newItem);
return {
success: true,
message: `Anjungan ${newItem.namaAnjungan} berhasil ditambahkan`,
data: newItem,
};
};
const updateAnjungan = (payload) => {
const idx = anjunganItems.value.findIndex(
(a) => Number(a.id) === Number(payload.id)
);
if (idx === -1) {
return { success: false, message: 'Anjungan tidak ditemukan' };
}
anjunganItems.value[idx] = {
...anjunganItems.value[idx],
...payload,
};
return {
success: true,
message: `Anjungan ${payload.namaAnjungan} berhasil diperbarui`,
};
};
const deleteAnjungan = (id) => {
const idx = anjunganItems.value.findIndex(
(a) => Number(a.id) === Number(id)
);
if (idx === -1) {
return { success: false, message: 'Anjungan tidak ditemukan' };
}
const name = anjunganItems.value[idx].namaAnjungan;
anjunganItems.value.splice(idx, 1);
return { success: true, message: `Anjungan ${name} berhasil dihapus` };
};
return {
anjunganItems,
getAllAnjungan,
getAnjunganById,
addAnjungan,
updateAnjungan,
deleteAnjungan,
};
}, {
persist: {
key: 'anjungan-store-state',
storage: typeof window !== 'undefined' ? localStorage : undefined,
paths: ['anjunganItems'],
},
});