All files / middlewares resupplyValidations.js

100% Statements 35/35
100% Branches 24/24
100% Functions 6/6
100% Lines 35/35

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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146              5x   5x   5x 1x         4x       4x 1x             3x 1x         2x       2x 1x                 3x 3x 1x   2x 2x 1x           2x   2x 2x       2x 1x                         2x 2x 2x         2x 1x                         2x   2x 1x                     2x   2x         2x 1x                                        
import APIError from '../helpers/error';
import { t } from '../helpers/i18n';
import BranchInformation from '../source/branches/information';
import DepositInformation from '../source/deposits/information';
import ResupplyInformation from '../source/resupply/information';
 
async function validExistsData(req) {
  const { filter } = req.body;
 
  const { depositCode, branchCode } = filter;
 
  if (!branchCode) {
    throw new APIError(
      'INVALID_BRANCH_CODE',
      t('BEE1285' /* Código da filial deve ser informado */)
    );
  } else {
    const existBranch = await BranchInformation.getBranch({
      code: branchCode,
    });
 
    if (!existBranch) {
      throw new APIError(
        'NOT_EXIST_BRANCH_CODE',
        t('BEE1170', { 0: branchCode } /* Filial %{0} não localizada */)
      );
    }
  }
 
  if (!depositCode) {
    throw new APIError(
      'INVALID_DEPOSIT_CODE',
      t('BEE1171' /* Código deve ser informado ! */)
    );
  } else {
    const existDeposit = await DepositInformation.getDeposit({
      code: depositCode,
    });
 
    if (!existDeposit) {
      throw new APIError(
        'NOT_EXIST_DEPOSIT_CODE',
        t('BEE1193', { 0: depositCode } /* Deposito %{0} não localizada */)
      );
    }
  }
}
 
async function validResupplyId(req) {
  const { resupplyId } = req.body;
  if (!resupplyId) {
    throw new APIError('', t('BEE2758' /* Ressuprimento não encontrado */));
  } else {
    const resupply = await ResupplyInformation.getResupply({ id: resupplyId });
    if (!resupply) {
      throw new APIError('', t('BEE2758' /* Ressuprimento não encontrado */));
    }
  }
}
 
async function validStatus(req) {
  const { resupplyId, updateData } = req.body;
  const status =
    updateData.urgent === false || updateData.urgent ? [1] : [1, 2];
  const resupply = await ResupplyInformation.getResupply({
    id: resupplyId,
    status,
  });
  if (!resupply) {
    throw new APIError(
      '',
      t(
        'BEE2757',
        {
          0: resupplyId,
        } /* O Ressuprimento %{0} ja foi iniciado não é possível executar esta ação */
      )
    );
  }
}
 
async function validStatusAndUser(req) {
  const { resupplyId } = req.body;
  const { userId } = req;
  const resupply = await ResupplyInformation.getResupply({
    id: resupplyId,
    status: [1, 2],
    resupplyUser: userId,
  });
  if (!resupply) {
    throw new APIError(
      'INVALID_STATUS',
      t(
        'BEE2759',
        {
          0: resupplyId,
        } /* O ressuprimento %{0} não foi encontrado. Verifique se o ressuprimento foi cancelado ou atribuido para outro usuário.. */
      )
    );
  }
}
 
async function validQuantity(req) {
  const { quantity } = req.body;
 
  if (quantity <= 0) {
    throw new APIError(
      'INVALID_STATUS',
      t(
        'BEE1980'
        /* Quantidade deve ser informada e maior que 0 (zero)! */
      )
    );
  }
}
 
async function validStatusToCancel(req) {
  const { resupplyId } = req.body;
 
  const resupply = await ResupplyInformation.getResupply({
    id: resupplyId,
    status: [1, 2],
  });
 
  if (!resupply) {
    throw new APIError(
      '',
      t(
        'BEE2757',
        {
          0: resupplyId,
        } /* O Ressuprimento %{0} ja foi iniciado não é possível executar esta ação */
      )
    );
  }
}
 
export default {
  validExistsData,
  validStatus,
  validStatusAndUser,
  validResupplyId,
  validQuantity,
  validStatusToCancel,
};