import axios from "axios";
import config from "@/app.config";

import { useQuasar } from "quasar";
import { useCounterMixin } from "@/stores/mixin";

const $q = useQuasar();

const mixin = useCounterMixin();
const { showLoader, hideLoader, messageError } = mixin;

async function genReport(data: any, fileName: string, type: string = "docx") {
  showLoader();
  await axios
    .post(`${config.API.reportTemplate}/docx`, data, {
      headers:
        type == "docx"
          ? {
              accept:
                "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
              "content-Type": "application/json",
            }
          : {
              accept: "application/pdf",
              "content-Type": "application/json",
            },
      responseType: "arraybuffer",
    })
    .then((res) => {
      const data = res.data;
      if (data) {
        // สร้าง Blob จาก array buffer
        const blob = new Blob([data], {
          type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
        });

        // สร้าง URL สำหรับไฟล์ Blob
        const url = URL.createObjectURL(blob);

        // สร้างลิงก์เพื่อดาวน์โหลดไฟล์
        const link = document.createElement("a");
        link.href = url;
        link.download = `${fileName}.${type === "docx" ? "docx" : "pdf"}`; // กำหนดชื่อไฟล์ที่จะดาวน์โหลด
        document.body.appendChild(link);
        link.click();

        // ลบ URL ที่สร้างขึ้นหลังจากใช้งาน
        URL.revokeObjectURL(url);
      }
    })
    .catch((err) => {
      messageError($q, err);
    })
    .finally(() => {
      hideLoader();
    });
}

export default genReport;
