All files / controllers wizard.js

100% Statements 16/16
100% Branches 7/7
100% Functions 2/2
100% Lines 16/16

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                  4x 4x                                             3x   3x                                   3x 1x     2x   2x                                               2x       2x 1x     1x               1x       3x 3x     3x          
import moment from 'moment-timezone';
 
import { sequelize } from '../../config/database';
import CompanyCreate from '../source/companies/create';
import APIError from '../helpers/error';
import { t } from '../helpers/i18n';
import UserCreate from '../source/users/create';
 
async function createUserAndCompany(req, res) {
  try {
    await sequelize.transaction(async (transaction) => {
      const {
        email,
        login,
        name,
        password,
        code,
        corporateName,
        companyName,
        companyEmail,
        phone,
        cnpj,
        stateRegistration = '',
        note,
        postalCode,
        street,
        number,
        complement = '',
        district,
        city,
        state,
        country,
        ibge = 0,
      } = req.body;
 
      const newUser = await UserCreate.createUser(
        {
          email,
          login,
          name,
          type: 1,
          status: 1,
          password,
          passValid: moment('9999-12-31').format(),
          code: '',
          accessProfile: 'beestock',
          userBranches: '',
          createdUser: 1,
          updatedUser: 1,
        },
        { transaction }
      );
 
      if (!newUser) {
        throw new APIError('', t('BEE3223' /* Falha ao criar usuário */));
      }
 
      const userId = newUser.id;
 
      const company = {
        code,
        corporateName,
        companyName,
        email: companyEmail,
        phone,
        cnpj,
        stateRegistration,
        note,
        postalCode,
        ibge,
        street,
        number,
        complement,
        district,
        city,
        state,
        country,
        fractionalQuantity: 0,
        daysOfPasswordValidity: 9999,
        createdUser: userId,
        updatedUser: userId,
      };
 
      const newCompany = await CompanyCreate.createCompany(company, {
        transaction,
      });
 
      if (!newCompany) {
        throw new APIError('', t('BEE3224' /* Falha ao criar a empresa */));
      }
 
      const response = {
        success: true,
        data: {
          user: newUser,
          company: newCompany,
        },
      };
 
      res.json(response);
    });
  } catch (err) {
    // eslint-disable-next-line no-console
    console.log(err);
    const response = {
      success: false,
    };
    res.json(response);
  }
}
 
export default { createUserAndCompany };