All files / controllers productionOrders.js

36.36% Statements 8/22
0% Branches 0/4
50% Functions 1/2
38.09% Lines 8/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81                        1x   1x 1x 1x     1x                                                                                                   1x 1x     1x              
import { endOfDay, startOfDay } from 'date-fns';
 
import ProductionOrderInformation from '../source/productionOrders/information';
 
async function getAllProductionOrders(req, res) {
  const {
    filterStartDate,
    filterEndDate,
    page,
    sorted = [],
    filtered,
    pageSize = 10,
  } = req.body;
 
  try {
    const startDateFormat = startOfDay(filterStartDate);
    const endDateFormat = endOfDay(filterEndDate);
 
    const productionOrders =
      await ProductionOrderInformation.getAllProductionOrders(
        startDateFormat,
        endDateFormat,
        page,
        pageSize,
        sorted,
        filtered,
        {
          userBranches: req.userBranches,
        }
      );
 
    const rows = [];
    for (const order of productionOrders.rows) {
      const totalSeconds = order.productionOrderTracking.reduce((acc, time) => {
        if (!time) return acc;
 
        const [hours, minutes, seconds] = time.dataValues.totalTime
          .split(':')
          .map(Number);
        return acc + hours * 3600 + minutes * 60 + seconds;
      }, 0);
 
      const hours = Math.floor(totalSeconds / 3600);
      const minutes = Math.floor((totalSeconds % 3600) / 60);
      const seconds = totalSeconds % 60;
 
      // Formata para garantir dois dígitos em cada unidade de tempo
      const totalTimeTracking = `${String(hours).padStart(2, '0')}:${String(
        minutes
      ).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
 
      rows.push({
        totalTimeTracking,
        ...order.dataValues,
      });
    }
 
    const response = {
      success: true,
      data: {
        rows,
        pages: Math.ceil(productionOrders.count / pageSize),
        totalDataLength: productionOrders.count,
      },
    };
 
    res.json(response);
  } catch (err) {
    // eslint-disable-next-line no-console
    console.log(err);
    const response = {
      success: false,
    };
    res.json(response);
  }
}
 
export default {
  getAllProductionOrders,
};