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

