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

import { calculateFiscalYear } from "@/utils/function";

import type { QTableProps } from "quasar";
import type { FormAddProject } from "@/modules/15_development/interface/request/Main";

// store
export const useDevelopmentDataStore = defineStore(
  "developmentDataStore",
  () => {
    const projectName = ref<string>("");
    const projectStatus = ref<string>("ONGOING");
    const statusEdit = ref<boolean>(false);
    const formAddProject = reactive<FormAddProject>({
      year: calculateFiscalYear(new Date()), //ปีงบประมาณ*
      projectName: "", //ชื่อโครงการ/กิจกรรม/หลักสูตร*
      reason: "", //หลักการและเหตุผล
      objective: "", //วัตถุประสงค์
      metricType: "", //ประเภทตัวชี้วัด
      indicators: "", //ตัวชี้วัด
      target: "", //เป้าหมาย
      calculation: "", //วิธีการคำนวณ/เครื่องมือ
      measuRement: "", //ระยะเวลาวัดผล
      results: "", //ผลการดำเนิน
      obstacles: "", //ปัญหาอุปสรรค
      suggestions: "", //ข้อเสนอเเนะfalse
      project: "", //ประเภทโครงการ(โครงการที่เสนอขอ TN->OFFER ,โครงการที่ไม่เสนอขอ TN->NOOFFER)
      isPassAllocate: false, //ผ่านการพิจาณา ได้รับการจัดสรรงบประมาณตามข้อบัญญัติ
      isPassNoAllocate: false, //ผ่านการพิจารณา ไม่ได้รับการจัดสรรงบประมาณตามข้อบัญญัติ แต่ได้รับการจัดสรรเงินนอกงบประมาณ
      isNoPass: false, //ไม่ผ่านการพิจารณา แต่ได้รับการจัดสรรเงินนอกงบประมาณ
      isBudget: false, //แต่ได้รับการจัดสรรงบประมาณตามข้อบัญญัติ
      isOutBudget: false, //แต่ได้รับการจัดสรรเงินนอกงบประมาณ
      dateStart: null, //วันที่เริ่มต้น
      dateEnd: null, //วันที่สิ้นสุด
      totalDate: null, //รวมระยะเวลา (วัน)
      address: "", //ที่อยู่
      provinceIds: null, //จังหวัด
      budget: "", //ประเภทงบประมาณ(งบตามข้อบัญญัติ->REGULATIONBUDGET, งบประมาณกรุงเทพมหานคร->BANGKOKBUDGET, เงินนอกงบประมาณ->OUTSIDEBUDGET)
      budgetSub: "",
      accept: null, //จํานวนงบประมาณที่ขอรับการจัดสรรฯ
      receive: null, //จํานวนงบประมาณที่ได้รับการจัดสรรฯ
      approved: null, //จํานวนงบประมาณที่ได้รับอนุมัติ
      budgetPay: null, //จํานวนงบประมาณที่จ่ายจริง
      issues: "", //ประเด็นความเสี่ยง
      chance: 0, //โอกาสที่จะเกิด
      effects: 0, //ผลกระทบจากการเกิด
      riskLevel: "", //ระดับความเสี่ยง
      riskManagement: "", //เเนวทางการบริหารความเสี่ยง
      expect: "", //ประโยชน์ที่คาดว่าจะได้รับ
      topicAcademic: "", //หัวข้อ/ประเด็นการฝึกอบรม ศึกษาดูงาน
      addressAcademic: "", //สถานที่ฝึกอบรม ศึกษาดูงาน
      provinceActualId: "", //จังหวัด(ข้อมูลวิชาการ)
      actualPeoples: [], //เป้าหมายตามจริง ผู้เกี่ยวข้อง
      plannedPeoples: [], //เป้าหมายตามแผน ผู้เกี่ยวข้อง
      actualGoals: [], //เป้าหมายตามจริง กลุ่มเป้าหมาย
      plannedGoals: [], //เป้าหมายตามแผน กลุ่มเป้าหมาย
      // ลักษณะโครงการ
      projectType: "",
      projectCharacteristics: "",
      projectDay: null,
      projectNigth: null,
      projectTechniques: "",
      projectModal: null,
    });

    function clearFormAddProject() {
      /** ข้อมูลเบื้องต้น*/
      formAddProject.year = calculateFiscalYear(new Date());
      formAddProject.projectName = "";
      formAddProject.reason = " ";
      formAddProject.objective = "";

      /**เป้าหมาย*/
      formAddProject.plannedGoals = [];
      formAddProject.plannedPeoples = [];
      formAddProject.actualGoals = [];
      formAddProject.actualPeoples = [];

      // ลักษณะโครงการ
      formAddProject.projectType = "";
      formAddProject.projectCharacteristics = "";
      formAddProject.projectDay = null;
      formAddProject.projectNigth = null;
      formAddProject.projectTechniques = "";
      formAddProject.projectModal = null;

      /** การติดตามผลดารประเมิน*/
      formAddProject.metricType = "";
      formAddProject.indicators = "";
      formAddProject.target = "";
      formAddProject.calculation = "";
      formAddProject.measuRement = "";
      formAddProject.results = "";
      formAddProject.obstacles = "";
      formAddProject.suggestions = "";
      formAddProject.project = "";
      formAddProject.isPassAllocate = false;
      formAddProject.isPassNoAllocate = false;
      formAddProject.isNoPass = false;
      formAddProject.isBudget = false;
      formAddProject.isOutBudget = false;

      /** อื่นๆ*/
      formAddProject.dateStart = null;
      formAddProject.dateEnd = null;
      formAddProject.totalDate = null;
      formAddProject.address = "";
      formAddProject.provinceIds = [];
      formAddProject.budget = "";
      formAddProject.accept = null;
      formAddProject.receive = null;
      formAddProject.approved = null;
      formAddProject.budgetPay = null;
      formAddProject.issues = "";
      formAddProject.chance = 0;
      formAddProject.effects = 0;
      formAddProject.riskLevel = "";
      formAddProject.riskManagement = "";
      formAddProject.expect = "";
      formAddProject.topicAcademic = "";
      formAddProject.addressAcademic = "";
      formAddProject.provinceActualId = "";
    }

    const visibleColumns = ref<string[]>([]);
    const columns = ref<QTableProps["columns"]>([]);
    const rows = ref<any[]>([]);

    return {
      formAddProject,
      clearFormAddProject,
      visibleColumns,
      columns,
      rows,
      statusEdit,
      projectStatus,
      projectName,
    };
  }
);
