Psyduck - 可達鴨 之 鴨力山大 v0.1

Current Path : home/irplbiz/node_application/icl_calc/routes/
Upload File :
Current File : /home/irplbiz/node_application/icl_calc/routes/calculate.js

const express = require('express');
const router = express.Router();
const ExcelJS = require('exceljs');
const path = require('path');

router.post('/', async (req, res) => {
  try {
    const {
      beltDesignation,
      beltWidth,
      rollLengthFeet,
      rollLengthMeters,
      topCover,
      bottomCover
    } = req.body;
console.log({
      beltDesignation,
      beltWidth,
      rollLengthFeet,
      rollLengthMeters,
      topCover,
      bottomCover
    } );

    const workbook = new ExcelJS.Workbook();
    const filePath = path.join(__dirname, '../excel/ICL_Calculator.xlsx');
    console.log("Path" , filePath);
    
    await workbook.xlsx.readFile(filePath);
    const sheet = workbook.getWorksheet('Final Sheet');
    workbook.calcProperties.fullCalcOnLoad = true;

    const row = sheet.getRow(4); // ✅ writing to Row 3
    row.getCell('A').value = parseInt(beltDesignation);
    row.getCell('B').value = parseInt(beltWidth);

    let finalRollLength = null;
    if (rollLengthFeet) {
      finalRollLength = rollLengthFeet ;
    } else if (rollLengthMeters) {
      finalRollLength = rollLengthMeters / 0.3048;
    }
    row.getCell('C').value = parseInt(finalRollLength);
    row.getCell('F').value = parseFloat(topCover);
    row.getCell('G').value = parseFloat(bottomCover);
    row.commit();

    await workbook.xlsx.writeFile(filePath).then( () => {console.log(sheet.getRow(4).getCell('AE').value)});
    

    await workbook.xlsx.readFile(filePath);
    const sheet1 = workbook.getWorksheet('Final Sheet');
    console.log(beltDesignation,beltWidth,rollLengthFeet,rollLengthMeters,finalRollLength, topCover, bottomCover);
    
    const rollsPer20ftContainer = sheet1.getRow(4).getCell('AE').value.result;
    const rollsPer40ftContainer = sheet1.getRow(4).getCell('AN').value.result;
    
    return res.json({
      rollsPer20ftContainer,
      rollsPer40ftContainer
    });
  } catch (err) {
    console.error(err);
    res.status(500).json({ error: 'Calculation failed.' });
  }
});

module.exports = router;