import type { Request, Response } from "express";
import finalReportService from "../services/FinalReportService.js";

export class FinalReportController {
  async getReport(req: Request, res: Response) {
    try {
      const dateStr = req.query.date as string | undefined;
      const data = await finalReportService.getFinalReport(dateStr);
      return res.status(200).json({
        status: true,
        message: "Final report fetched successfully",
        data,
      });
    } catch (error: any) {
      return res.status(500).json({
        status: false,
        message: error.message || "Failed to fetch final report",
      });
    }
  }

  async exportPdf(req: Request, res: Response) {
    try {
      const dateStr = req.query.date as string | undefined;
      const data = await finalReportService.getFinalReport(dateStr);
      
      const { FinalReportPdf } = await import("../utils/pdf/FinalReportPdf.js");
      await FinalReportPdf.generate(data, res);
      
    } catch (error: any) {
      if (!res.headersSent) {
        return res.status(500).json({
          status: false,
          message: error.message || "Failed to export final report PDF",
        });
      }
    }
  }
}

export default new FinalReportController();
