import { defineStore } from "pinia";
import { ref } from "vue";
import type { DataOption } from "@/modules/14_KPI/interface/index/Main";

// store
export const useKPIDataStore = defineStore("KPIDataStore", () => {
  const competencyTypeVal = ref<string>("HEAD");

  const tabMain = ref<string>("1");
  const dataProfile = ref<any>();
  const dataEvaluation = ref<any>({
    plannedPoint: 0,
    rolePoint: 0,
    specialPoint: 0,
    capacityPoint: 0,
  });

  const competencyType = ref<DataOption[]>([
    {
      id: "HEAD",
      name: "สมรรถนะหลัก",
    },
    {
      id: "GROUP",
      name: "สมรรถนะประจำกลุ่มงาน",
    },
    {
      id: "EXECUTIVE",
      name: "สมรรถนะประจำผู้บริหารกรุงเทพมหานคร",
    },
    {
      id: "DIRECTOR",
      name: "สมรรถนะเฉพาะสำหรับตำแหน่ง ผอ.เขต ผช.ผอ.เขต และหัวหน้าฝ่ายในสังกัด สนง.เขต",
    },
    {
      id: "INSPECTOR",
      name: "สมรรถนะเฉพาะสำหรับตำแหน่งผู้ตรวจราชการ กทม. และผู้ตรวจราชการ",
    },
  ]);

  function convertStatus(val: string) {
    switch (val) {
      case "PENDING":
        return "รอดำเนินการ";
      case "INPROGRESS":
        return "กําลังดำเนินการ";
      case "DONE":
        return "ประเมินเสร็จสิ้น";
      default:
        break;
    }
  }

  function convertResults(val: string) {
    switch (val) {
      case "PENDING":
        return "รอดำเนินการ";
      case "PASSED":
        return "ผ่านการประเมิน";
      case "NOTPASSED":
        return "ไม่ผ่านการประเมิน";
      default:
        break;
    }
  }

  const ratingColors = ref<string[]>([
    "light-blue-3",
    "light-blue-6",
    "blue",
    "blue-9",
    "blue-10",
  ]);

  function checkCompetency() {
    const position = dataProfile.value.position;
    const posTypeName = dataProfile.value.posTypeName;
    const posLevelName = dataProfile.value.posLevelName;

    if (
      position == "ผู้ตรวจราชการกรุงเทพมหานคร" ||
      position == "ผู้ตรวจราชการ"
    ) {
      competencyType.value = competencyType.value.filter(
        (x: DataOption) => x.id == "HEAD" || x.id == "INSPECTOR"
      );
    } else if (position == "ผู้อำนวยการเขต") {
      competencyType.value = competencyType.value.filter(
        (x: DataOption) => x.id == "HEAD" || x.id == "DIRECTOR"
      );
    } else {
      switch (posTypeName + " " + posLevelName) {
        // case "ทั่วไป ปฏิบัติงาน":
        // case "ทั่วไป ชำนาญงาน":
        // case "ทั่วไป อาวุโส":
        // case "วิชาการ ปฏิบัติการ":
        // case "วิชาการ ชำนาญการ":
        // case "วิชาการ ชำนาญการพิเศษ":
        // case "วิชาการ เชี่ยวชาญ":
        // case "วิชาการ ทรงคุณวุฒิ":
        //   competencyType.value = competencyType.value.filter(
        //     (x: DataOptions) => x.id == "HEAD" || x.id == "GROUP"
        //   );
        //   break;
        case "อำนวยการ ต้น":
        case "อำนวยการ สูง":
        case "บริหาร ต้น":
        case "บริหาร สูง":
          competencyType.value = competencyType.value.filter(
            (x: DataOption) => x.id == "HEAD" || x.id == "EXECUTIVE"
          );
          break;
        default:
          competencyType.value = competencyType.value.filter(
            (x: DataOption) => x.id == "HEAD" || x.id == "GROUP"
          );
          break;
      }
    }
  }

  const defaultCompetencyCoreLevel = ref<number>();
  const defaultCompetencyGroupLevel = ref<number | null>(null);
  function checkCompetencyDefaultCompetencyLevel() {
    const posTypeName = dataProfile.value.posTypeName;
    const posLevelName = dataProfile.value.posLevelName;

    switch (posTypeName + " " + posLevelName) {
      case "บริหาร สูง":
        defaultCompetencyCoreLevel.value = 5;
        break;
      case "บริหาร ต้น":
        defaultCompetencyCoreLevel.value = 4;
        break;
      case "อำนวยการ สูง":
        defaultCompetencyCoreLevel.value = 4;
        break;
      case "อำนวยการ ต้น":
        defaultCompetencyCoreLevel.value = 3;
        break;
      case "วิชาการ ทรงคุณวุฒิ":
        defaultCompetencyCoreLevel.value = 5;
        defaultCompetencyGroupLevel.value = 5;
        break;
      case "วิชาการ เชี่ยวชาญ":
        defaultCompetencyCoreLevel.value = 4;
        defaultCompetencyGroupLevel.value = 4;
        break;
      case "วิชาการ ชำนาญการพิเศษ":
        defaultCompetencyCoreLevel.value = 3;
        defaultCompetencyGroupLevel.value = 4;
        break;
      case "วิชาการ ชำนาญการ":
        defaultCompetencyCoreLevel.value = 2;
        defaultCompetencyGroupLevel.value = 3;
        break;
      case "วิชาการ ปฏิบัติการ":
        defaultCompetencyCoreLevel.value = 1;
        defaultCompetencyGroupLevel.value = 2;
        break;
      case "ทั่วไป ทักษะพิเศษ":
        defaultCompetencyCoreLevel.value = 4;
        defaultCompetencyGroupLevel.value = 4;
        break;
      case "ทั่วไป อาวุโส":
        defaultCompetencyCoreLevel.value = 3;
        defaultCompetencyGroupLevel.value = 3;
        break;
      case "ทั่วไป ชำนาญงาน":
        defaultCompetencyCoreLevel.value = 2;
        defaultCompetencyGroupLevel.value = 2;
        break;
      case "ทั่วไป ปฏิบัติงาน":
        defaultCompetencyCoreLevel.value = 1;
        defaultCompetencyGroupLevel.value = 1;
        break;
      default:
        break;
    }
  }

  return {
    competencyTypeVal,
    competencyType,
    convertStatus,
    convertResults,
    tabMain,
    dataProfile,
    dataEvaluation,
    ratingColors,
    checkCompetency,
    checkCompetencyDefaultCompetencyLevel,
  };
});
