import { defineStore } from "pinia";
import { ref, } from "vue";
import { useCounterMixin } from "@/stores/mixin";

const mixin = useCounterMixin();
const {
  date2Thai,

} = mixin;

export const useResultDataStore = defineStore("insigniaResult", () => {
  const insignia = ref<string>('')
  const insigniaOp = ref<any[]>([{ name: "ทั้งหมด", id: "" }])
  const insigniaOp2 = ref<any[]>([])
  const insigniaType = ref<any>()
  const invoiceType = ref<string>('all')
  const invoiceTypeop = ref<any>([{ name: "ทั้งหมด", id: "all" }, { name: "ใบกำกับที่ค้างจ่าย", id: "noDate" }, { name: "ใบกำกับที่จ่ายแล้ว", id: "haveDate" }])
  const employeeClass = ref<string>("all");
  const employeeClassOps = ref<any>([{ name: "ทั้งหมด", id: "all" }, { name: "ข้าราชการ กทม.สามัญ", id: "officer" }, { name: "ลูกจ้างประจำ", id: "perm" }])
  const rows = ref<any>([])
  const listInsignia = ref<any>([])


  const fetchDatainsignia = async (data: any) => {
    insignia.value = ''
    invoiceType.value = 'all'
    data.forEach((e: any) => {
      insigniaOp.value.push({ name: e.name, id: e.id })
    });
    data.forEach((e: any) => {
      insigniaOp2.value.push({ name: e.name, id: e.id })
    });
  }
  const fetchDatainsigniaType = async (data: any) => {
    insigniaType.value = data.map((e: any) => ({ name: e.id, label: e.name }))
  }
  const fetchlistinsignia = async (data: any) => {
    rows.value = [];
    let alllist = await data.map((e: any) => ({
      id: e.id,
      citizenId: e.citizenId,
      prefix: e.prefix,
      position: e.position,
      status: status(e.status),
      dateReceive: date2Thai(e.dateReceive),
      name: e.prefix + e.fullName,
      type: e.requestInsignia,
      employeeType: profileType(e.profileType),
      profileType: e.profileType,
      date: date2Thai(e.date),
      volumeNo: e.volumeNo,
      section: e.section,
      page: e.page,
      number: e.no,
      vatnumber: e.number,
      datepay: date2Thai(e.datePayment),
      typepay: e.typePayment,
      address: e.address,
    }));
    rows.value = alllist
    listInsignia.value = alllist
    searchData(invoiceType.value, employeeClass.value);

  }
  const searchData = (invoice: string, employeeClass: string) => {
    if (invoice !== 'all' && employeeClass !== 'all') {
      let list = listInsignia.value.filter((e: any) => convertDatepay(e.datepay) === invoice && e.employeeType === profileType(employeeClass))
      rows.value = list
    } else if (invoice !== 'all' && employeeClass === 'all') {
      let list = listInsignia.value.filter((e: any) => convertDatepay(e.datepay) === invoice)
      rows.value = list
    } else if (invoice === 'all' && employeeClass !== 'all') {
      let list = listInsignia.value.filter((e: any) => e.employeeType === profileType(employeeClass))
      rows.value = list
    }
  }
  const status = (val: string) => {
    switch (val) {
      case "PENDING":
        return "รอบันทึกข้อมูล";
      case "REJECT":
        return "ยกเลิก";
      case "DELETE":
        return "ลบ";
      case "DONE":
        return "บันทึกลง ก.พ. 7 แล้ว";
    }
  }
  const profileType = (val: string) => {
    switch (val) {
      case "officer":
        return "ข้าราชการ กทม.สามัญ";
      case "employee":
        return "ลูกจ้างประจำ";
    }
  }
  const convertDatepay = (val: any) => {
    switch (val) {
      case null:
        return "noDate";
      default:
        return "haveDate";
    }
  }
  return {
    rows,
    insignia,
    insigniaOp,
    insigniaOp2,
    insigniaType,
    invoiceType,
    invoiceTypeop,
    employeeClass,
    employeeClassOps,
    fetchDatainsignia,
    fetchDatainsigniaType,
    status,
    profileType,
    fetchlistinsignia,
    searchData,
    // selectInvoice,
    // selectEmployeeClass,
  };
});
