import type { Request, Response } from "express";
import financialSummaryService from "../services/FinancialSummaryService.js";
import FinancialSummaryPdf from "../utils/pdf/FinancialSummaryPdf.js";

export class FinancialSummaryController {
  async getSummary(req: Request, res: Response) {
    try {
      const dateStr = req.query.date as string | undefined;
      const data = await financialSummaryService.getFinancialSummary(dateStr);
      return res.status(200).json({
        status: true,
        message: "Financial summary fetched successfully",
        data,
      });
    } catch (error: any) {
      return res.status(500).json({
        status: false,
        message: error.message || "Failed to fetch financial summary",
      });
    }
  }

  async exportPdf(req: Request, res: Response) {
    try {
      const dateStr = req.query.date as string | undefined;
      const data = await financialSummaryService.getFinancialSummary(dateStr);
      await FinancialSummaryPdf.generate(data, res);
    } catch (error: any) {
      if (!res.headersSent) {
        return res.status(500).json({
          status: false,
          message: error.message || "Failed to export financial summary PDF",
        });
      }
    }
  }
}

export default new FinancialSummaryController();
