// 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'], }, });