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

/** importType*/
import type {
  ItemsMenu,
  DataOption,
} from "@/modules/13_salary/interface/index/Main";
import type { DataPeriodLatest } from "@/modules/13_salary/interface/response/SalaryList";

export const useSalaryListSDataStore = defineStore("salaryListStore", () => {
  const tabGroup = ref<string>("group1");
  const tabType = ref<string>("PENDING");
  const groupOp = ref<DataOption[]>([
    { id: "", name: "กลุ่ม1" },
    { id: "", name: "กลุ่ม2" },
  ]);

  const remaining = ref<number>(0);

  const statusQuota = ref<string>("");
  const groupId = ref<string>("");
  const rootId = ref<string>("");
  const roundMainCode = ref<string>("");
  const roundYear = ref<number>(0);
  const roundCode = ref<string>("");
  const isClosedRound = ref<boolean>(false); // การปิดรอบ
  /** List Menu*/
  const itemMenu = ref<ItemsMenu[]>([
    {
      label: "แก้ไขเงินเดือน",
      icon: "edit",
      color: "edit",
      type: "edit",
    },
    {
      label: "ย้ายกลุ่ม",
      icon: "mdi-account-arrow-right-outline",
      color: "indigo-6",
      type: "moveGroup",
    },
    {
      label: "เลื่อนขั้น",
      icon: "mdi-swap-vertical-bold",
      color: "green-6",
      type: "moveLevel",
    },
    {
      label: "แก้ไขคุณสมบัติ",
      icon: "mdi-format-list-checks",
      color: "blue-6",
      type: "properties",
    },
    {
      label: "ลบ",
      icon: "delete",
      color: "red",
      type: "delete",
    },
  ]);

  /** List Download รายงานของรอบเมษายน*/
  const itemDownloadApr = ref<DataOption[]>([
    {
      id: "gov-01",
      name: "รายชื่อข้าราชการผู้ที่ครองตำแหน่ง ณ วันที่ 1 มีนาคม",
    },
    {
      id: "gov-02",
      name: "บัญชีการคำนวณโควตาเลื่อนเงินเดือน รอบเมษายน",
    },
    {
      id: "gov-03",
      name: "รายชื่อข้าราชการที่ได้รับการเสนอขอเลื่อนหนึ่งขั้น",
    },
    {
      id: "gov-04",
      name: "แบบ 1 กท รอบเมษายน",
    },
    {
      id: "gov-05",
      name: "แบบ 2 กท รอบเมษายน",
    },
    {
      id: "go1",
      name: "แบบ 3 กท บัญชีแสดงวันลาครึ่งปี ขรก.",
    },
    {
      id: "gov-07",
      name: "แนบท้ายคำสั่งเลื่อนเงินเดือน รอบเมษายน",
    },
    {
      id: "gov-07",
      name: "แนบท้ายคำสั่งเลื่อนเงินเดือน รอบเมษายน (PDF)",
      type: "pdf",
    },
    {
      id: "gov-08",
      name: "แนบท้ายคำสั่งค่าตอบแทนพิเศษ และผู้ไม่ได้เลื่อน รอบเมษายน",
    },
    {
      id: "gov-08",
      name: "แนบท้ายคำสั่งค่าตอบแทนพิเศษ และผู้ไม่ได้เลื่อน รอบเมษายน (PDF)",
      type: "pdf",
    },
  ]);

  /** List Download รายงานของรอบตุลาคม*/
  const itemDownloadOct = ref<DataOption[]>([
    {
      id: "gov-01",
      name: "รายชื่อข้าราชการผู้ที่ครองตำแหน่ง ณ วันที่ 1 กันยายน",
    },
    {
      id: "gov-02",
      name: "บัญชีการคำนวณวงเงินเลื่อนเงินเดือน รอบตุลาคม",
    },
    {
      id: "gov-03",
      name: "รายชื่อข้าราชการผู้ที่ได้รับการเสนอขอเลื่อนเงินเดือนทั้งปีสองขั้น",
    },
    {
      id: "gov-04",
      name: "แบบ 1 กท รอบตุลาคม",
    },
    {
      id: "gov-04-01",
      name: "แบบ 1 กท รอบตุลาคม (เกษียณอายุราชการ)",
    },
    {
      id: "gov-05",
      name: "แบบ 2 กท รอบตุลาคม",
    },
    {
      id: "gov-05-01",
      name: "แบบ 2 กท รอบตุลาคม (เกษียณอายุราชการ)",
    },
    {
      id: "go2",
      name: "แบบ 3 กท บัญชีแสดงวันลาครึ่งปี ขรก. ",
    },
    {
      id: "go2-01",
      name: "แบบ 3 กท บัญชีแสดงวันลาครึ่งปี ขรก. (เกษียณอายุราชการ)",
    },
    {
      id: "gov-07-01",
      name: "แนบท้ายคำสั่งเลื่อนเงินเดือนข้าราชการเกษียณ",
    },
    {
      id: "gov-07-01",
      name: "แนบท้ายคำสั่งเลื่อนเงินเดือนข้าราชการเกษียณ (PDF)",
      type: "pdf",
    },
    {
      id: "gov-07",
      name: "แนบท้ายคำสั่งเลื่อนเงินเดือน รอบตุลาคม",
    },
    {
      id: "gov-07",
      name: "แนบท้ายคำสั่งเลื่อนเงินเดือน รอบตุลาคม (PDF)",
      type: "pdf",
    },
    {
      id: "gov-08",
      name: "แนบท้ายคำสั่งค่าตอบแทนพิเศษ และผู้ไม่ได้เลื่อนเงินเดือน รอบตุลาคม",
    },
    {
      id: "gov-08",
      name: "แนบท้ายคำสั่งค่าตอบแทนพิเศษ และผู้ไม่ได้เลื่อนเงินเดือน รอบตุลาคม (PDF)",
      type: "pdf",
    },
  ]);

  function fetchPeriodLatest(data: DataPeriodLatest, type: string) {
    groupId.value = type === "group1" ? data.group1id : data.group2id;
    roundCode.value = data.period;
    groupOp.value[0].id = data.group1id;
    groupOp.value[1].id = data.group2id;
  }
  return {
    tabGroup,
    tabType,
    itemMenu,
    itemDownloadOct,
    itemDownloadApr,
    groupId,
    fetchPeriodLatest,
    rootId,
    roundCode,
    groupOp,
    roundMainCode,
    remaining,
    isClosedRound,
    roundYear,
    statusQuota,
  };
});
