import { ReportType } from './types';

export const downloadExcel = async (rows: ReportType[]) => {
  const excelJS = require("exceljs");
  const workbook = new excelJS.Workbook();  // Create a new workbook
  const worksheet = workbook.addWorksheet("Reports"); // New Worksheet
  const path = "src/public/files";  // Path to download excel
  // Column for data in excel. key must match data key
  worksheet.columns = [
    { header: "Route ID", key: "routeId", width: 10 }, 
    { header: "Dispatcher Assigned", key: "dispatcher", width: 10 },
    { header: "Start Date", key: "startDate", width: 10 },
    { header: "End Date", key: "endDate", width: 10 },
    { header: "Expected Arrival Time", key: "expectedTime", width: 10 },
    { header: "Actual Arrival Time", key: "actualTime", width: 10 },
    { header: "Time Difference", key: "timeDifference", width: 10 },
  ];
  // Looping through User data
  let counter = 1;
  rows.forEach((row: any) => {
    row.routeId = counter;
    worksheet.addRow(row); // Add data in worksheet
    counter++;
  });
  // Making first line in excel bold
  worksheet.getRow(1).eachCell((cell: any) => {
    cell.font = { bold: true };
  });
  let fileName = "RMS-Route-Report-" + Date.now() + ".xlsx";
  try {
    return await workbook.xlsx.writeFile(`${path}/`+fileName)
    .then(() => {
      return {
        status: "success",
        file: fileName,
      }
    });
  } catch (err) {
    return {
      status: "failed",
    }
  }
};

