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

/**
 * importType
 */
import type {
  ListMenu,
  ChildLevelTree,
  DataPermissions,
} from "@/interface/response/main";

export const useMenuDataStore = defineStore("menuUse", () => {
  /****************** เมนู **************************/
  /** รายการเมนู*/
  const menuList = ref<ListMenu[]>([]);

  /** ข้อมูล Level3*/
  const childLevelTree = ref<ChildLevelTree>({
    SYS_EVA_INDICATOR: [
      {
        sysName: "ตามแผน",
        path: "KPIIndicatorByPlan",
        meta: {
          Auth: true,
          Key: "SYS_EVA_INDICATOR",
          Role: "STAFF",
        },
      },
      {
        sysName: "ตามตำแหน่ง",
        path: "KPIIndicatorByRole",
        meta: {
          Auth: true,
          Key: "SYS_EVA_INDICATOR",
          Role: "STAFF",
        },
      },
      {
        sysName: "งานอื่นๆ ที่ได้รับมอบหมาย",
        path: "KPIAssignment",
        meta: {
          Auth: true,
          Key: "SYS_EVA_INDICATOR",
          Role: "STAFF",
        },
      },
    ],
    SYS_EXAM_CONTEST: [
      {
        sysName: "จัดการรอบสอบแข่งขัน",
        path: "competePeriod",
      },
      {
        sysName: "สถิติสมัครสอบแข่งขัน",
        path: "competePeriodStat",
      },
    ],
    SYS_EXAM_SELECT: [
      {
        sysName: "จัดการรอบคัดเลือก",
        path: "qualifyPeriod",
      },
      {
        sysName: "จัดการรอบคัดเลือกคนพิการ",
        path: "disablePeriod",
      },
      {
        sysName: "จัดการรายชื่อคัดเลือก",
        path: "manage",
      },
      {
        sysName: "สถิติสมัครคัดเลือก",
        path: "qualifyPeriodStat",
      },
      {
        sysName: "สถิติสมัครคัดเลือกคนพิการ",
        path: "qualifyPeriodStatDisable",
      },
    ],
    SYS_DISCIPLINE_INFO: [
      {
        sysName: "กรรมการ",
        path: "disciplineDirector",
      },
      {
        sysName: "ช่องทางการร้องเรียน",
        path: "disciplineChannel",
      },
    ],
    SYS_EVA_INFO: [
      {
        sysName: "กรรมการ",
        path: "evaluateDirector",
      },
      {
        sysName: "การประชุม",
        path: "evaluateMeeting",
      },
    ],
  });

  /**
   * function เรียกรายการเมนูทั้งหมด
   * @param data ข้อมูลรายการทั้งหมด
   */
  function fetchListMenu(data: ListMenu[]) {
    if (data) {
      menuList.value = [
        {
          id: "dashboard",
          order: 0,
          icon: "mdi-home-variant-outline",
          sysName: "หน้าแรก",
          sysDescription: "หน้าแรก",
          path: "dashboard",
          parentId: null,
          children: [],
        },
        ...data,
      ];
    }
  }

  /****************** สิทธิ์ **************************/
  const permissions = ref<DataPermissions>();

  /**
   * function เรียก
   * @param data ข้อมูลสิทธิ์
   */
  function fetchDataPermission(data: DataPermissions) {
    permissions.value = data;
  }

  return {
    /****************** เมนู **************************/
    fetchListMenu,
    menuList,
    /****************** สิทธิ์ **************************/
    fetchDataPermission,
    permissions,
  };
});
