All files / source/reports range.js

100% Statements 29/29
46.66% Branches 7/15
100% Functions 7/7
100% Lines 26/26

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 82 83 84 85 86 87 88 89                        2x 12x   2x                                                                     2x   2x 12x   2x 2x 2x 2x 2x 2x 3x     2x 2x 3x 3x     2x 2x       2x   2x   2x 2x 12x   12x   2x      
import RangeDao from '../../database/dao/range';
import { models } from '../../../config/database';
import { mountWhereBasedFilter } from '../../helpers/reports/sequelize';
 
// Funcao criada para popular o array headers e rows enviados por parametro
export default async function generateData(
  columns,
  filters,
  headers = [],
  rows = [],
  opts = {}
) {
  const where = mountWhereBasedFilter(filters);
  const headersValue = columns.map((it) => it.value);
 
  const dados = await RangeDao.findRanges(where, {
    attributes: ['code', 'name', 'branchCode', 'limitProductsWave'],
    include: [
      {
        required: false,
        model: models.Branch,
        as: 'branch',
        attributes: ['code', 'name'],
      },
      {
        separate: true,
        required: false,
        model: models.StorageAddress,
        as: 'storageAddress',
        attributes: ['code'],
      },
      {
        separate: true,
        required: false,
        model: models.UsersRanges,
        as: 'usersRanges',
        attributes: ['rangeCode'],
        include: [
          {
            required: true,
            model: models.User,
            as: 'user',
            attributes: ['login', 'name'],
          },
        ],
      },
    ],
    ...opts,
  });
 
  const data = dados.map((value) => value.toJSON());
 
  columns.forEach((it) => {
    headers.push(it.label);
  });
  data.forEach((it) => {
    const storageAddressCodes = [];
    const usersRangesCodes = [];
    const usersRangesNames = [];
    Eif (it.storageAddress.length > 0) {
      it.storageAddress.forEach((storageAddress) =>
        storageAddressCodes.push(storageAddress.code)
      );
    }
    Eif (it.usersRanges.length > 0) {
      it.usersRanges.forEach((userRange) => {
        usersRangesCodes.push(userRange.user.login);
        usersRangesNames.push(userRange.user.name);
      });
    }
    it.branchCode = it.branch ? `${it.branch.code}-${it.branch.name}` : '';
    it.storageAddressesCode =
      storageAddressCodes.length > 0
        ? storageAddressCodes.toLocaleString()
        : '';
    it.usersRangesCode =
      usersRangesCodes.length > 0 ? usersRangesCodes.toLocaleString() : '';
    it.usersRangesName =
      usersRangesNames.length > 0 ? usersRangesNames.toLocaleString() : '';
    const row = [];
    for (let index = 0; index < headersValue.length; index++) {
      const column = headersValue[index];
 
      row.push(it[column]);
    }
    rows.push(row);
  });
}