All files / middlewares dockVolumeRemovalValidations.js

100% Statements 9/9
100% Branches 6/6
100% Functions 1/1
100% Lines 9/9

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                      4x 4x     4x                                                 4x 1x                   3x 1x           2x 1x                    
import { Op } from 'sequelize';
 
import APIError from '../helpers/error';
import { t } from '../helpers/i18n';
 
import { models } from '../../config/database';
 
import DockVolumeRemovalInformation from '../source/dockVolumeRemoval/information';
import DockVolumeRemovalUpdate from '../source/dockVolumeRemoval/update';
 
async function validOutboundOrder(req) {
  const { outboundOrderId, outboundVolumeId } = req.body;
  const { userId } = req;
 
  const dockVolumeRemoval =
    await DockVolumeRemovalInformation.getDockVolumeRemoval(
      {
        outboundOrderId,
        removalUser: {
          [Op.or]: [userId, null, ''],
        },
        status: {
          [Op.in]: [1, 2],
        },
      },
      {
        include: [
          {
            required: true,
            model: models.OutboundVolume,
            as: 'outboundVolume',
            attributes: ['id', 'status'],
            where: {
              id: outboundVolumeId,
            },
          },
        ],
      }
    );
 
  if (!dockVolumeRemoval) {
    throw new APIError(
      '',
      t(
        'BEE3785',
        { 0: outboundVolumeId }
        /* O volume não pertence ao documento. */
      )
    );
  }
 
  if (dockVolumeRemoval.outboundVolume.status === 2) {
    throw new APIError(
      '',
      t('BEE3784', { 0: outboundVolumeId } /* O volume já foi removido. */)
    );
  }
 
  if (!dockVolumeRemoval.removalUser) {
    await DockVolumeRemovalUpdate.updateDockVolumeRemoval(
      dockVolumeRemoval.id,
      { removalUser: userId }
    );
  }
}
 
export default {
  validOutboundOrder,
};