All files / source/carriers import.js

100% Statements 33/33
66.66% Branches 24/36
100% Functions 3/3
100% Lines 33/33

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 90 91 92 93 94 95 96 97 98 99 100 101              4x 4x 4x   4x 1x 1x 1x     4x 1x 1x 1x     4x 1x 1x 1x 3x 1x 1x 1x           4x               4x   4x 4x   4x 2x           2x                                             2x       2x 1x 20x   1x   1x         4x            
/* eslint-disable no-restricted-syntax */
import CarrierCreate from './create';
import CarrierUpdate from './update';
import CarrierInformation from './information';
import { t } from '../../helpers/i18n';
 
async function validCarrier(carrier) {
  let isValid = true;
  let code = '';
  let message = '';
 
  if (!carrier.code) {
    isValid = false;
    code = 9000;
    message = t('BEE1171' /* Código deve ser informado ! */);
  }
 
  if (!carrier.name) {
    isValid = false;
    code = 9002;
    message = t('BEE1259' /* Nome deve ser informado ! */);
  }
 
  if (!carrier.mode) {
    isValid = false;
    code = 9004;
    message = t('BEE1182' /* Via de transporte deve ser informada ! */);
  } else if (carrier.mode > 5) {
    isValid = false;
    code = 9005;
    message = t(
      'BEE1183',
      { 0: carrier.mode } /* Via de transporte %{0} inválida! */
    );
  }
 
  return {
    isValid,
    code,
    message,
  };
}
 
async function importCarriers(carriers, userId) {
  const listCarriersErrors = [];
 
  for (const carrier of carriers) {
    const valid = await validCarrier(carrier);
 
    if (!valid.isValid) {
      listCarriersErrors.push({
        code: carrier.code,
        error: valid.code,
        message: valid.message,
      });
    } else {
      const newCarrier = {
        code: carrier.code,
        name: carrier.name,
        businessName: carrier.businessName,
        mode: carrier.mode,
        email: carrier.email,
        phone: carrier.phone.replace(/\D/g, '') || '',
        cnpj: carrier.cnpj.replace(/\D/g, ''),
        stateRegistration: carrier.stateRegistration || '',
        ibge: '',
        postalCode: carrier.postalCode.replace(/\D/g, '') || '',
        street: carrier.street || '',
        number: carrier.number || '',
        complement: carrier.complement || '',
        district: carrier.district || '',
        city: carrier.city || '',
        state: carrier.state || '',
        country: carrier.country || 'Brasil',
        note: carrier.note || '',
        createdUser: userId,
        updatedUser: userId,
      };
 
      const carrierExistente = await CarrierInformation.getCarrier({
        code: carrier.code,
      });
 
      if (carrierExistente) {
        Object.keys(newCarrier).forEach(
          (key) => newCarrier[key] == null && delete newCarrier[key]
        );
        await CarrierUpdate.updateCarrier(carrierExistente.id, newCarrier);
      } else {
        await CarrierCreate.createCarrier(newCarrier);
      }
    }
  }
 
  return { listCarriersErrors };
}
 
export default {
  importCarriers,
};