import { defineStore } from "pinia";
import { ref } from "vue";

import type { DataOption } from "@/modules/11_discipline/interface/index/Main";

export const useReportDataStore = defineStore("DisciplineReport11", () => {
  const faultOp = ref<DataOption[]>();
  const ocSelectOp = ref<DataOption[]>();
  const governmentOp = ref<DataOption[]>();
  const faultOps = ref<DataOption[]>([
    { id: "001", name: "ยังไม่ระบุ" },
    { id: "002", name: "ไม่ร้ายเเรง" },
    { id: "003", name: "ร้ายเเรง" },
  ]);
  const ocSelectOps = ref<DataOption[]>([
    { id: "001", name: "กทม" },
    { id: "002", name: "กรุงเทพ" },
  ]);
  const governmentOps = ref<DataOption[]>([
    { id: "001", name: "กทม" },
    { id: "002", name: "กรุงเทพ" },
    { id: "003", name: "bankok" },
  ]);
  const optionReport = ref<DataOption[]>([
    { id: "1", name: "รายงานเรื่องร้องเรียนแยกรายวัน รายเดือน รายปี" },
    {
      id: "2",
      name: "รายงานเรื่องร้องเรียนข้าราชการสามัญ ฯ ในสังกัดกรุงเทพมหานคร แยกตามหน่วยงาน",
    },
    {
      id: "3",
      name: "รายงานจำนวนข้าราชการสามัญ ฯ ที่กระทำความผิดทางวินัย แยกตามลักษณะความผิด",
    },
    {
      id: "4",
      name: "รายงานรายชื่อข้าราชการสามัญ ฯ ที่กระทำความผิดทางวินัยแยกตามลักษณะความผิด",
    },
    {
      id: "5",
      name: "รายงานจำนวนข้าราชการสามัญ ฯ ที่กระทำความผิดแยกตามระดับความผิด",
    },
    {
      id: "6",
      name: "รายงานรายชื่อข้าราชการสามัญ ฯ ที่กระทำความผิดทางวินัยแยกตามลักษณะความผิด",
    },
    {
      id: "7",
      name: "รายงานจำนวนข้าราชการสามัญ ฯ ที่กระทำความผิดทางวินัยแต่ยุติเรื่อง แยกลักษณะความผิด",
    },
    {
      id: "8",
      name: "รายงานจำนวนข้าราชการสามัญ ฯ ที่กระทำความผิดทางวินัยแต่ยุติเรื่อง แยกตามตำแหน่ง",
    },
  ]);

  /**
   * ฟิลเตอร์ข้อมูลจาก input
   * @param val ค่าที่ป้อนให้ input
   * @param update function จาก quasar
   * @param type type ที่กำหนด ของ input นั้นๆ
   */
  function filterFnOptionsType(val: string, update: any, type: string) {
    update(() => {
      const needle = val.toLowerCase();
      if (type === "ocSelectOp") {
        ocSelectOp.value = ocSelectOps.value.filter(
          (v: any) => v.name.toLowerCase().indexOf(needle) > -1
        );
      } else if (type === "governmentOp") {
        governmentOp.value = governmentOps.value.filter(
          (v: any) => v.name.toLowerCase().indexOf(needle) > -1
        );
      } else if (type === "faultOp") {
        faultOp.value = faultOps.value.filter(
          (v: any) => v.name.toLowerCase().indexOf(needle) > -1
        );
      }
    });
  }
  return {
    optionReport,
    filterFnOptionsType,
    faultOp,
    ocSelectOp,
    governmentOp,
    faultOps,
    ocSelectOps,
    governmentOps,
  };
});
