/var/www/greso.tech/server/nsm/services
NameSizeModeActions
auth.service.js9740644editdlrm
company.service.js15340644editdlrm
index.js9350644editdlrm
inventory.service.js21180644editdlrm
lead.service.js15180644editdlrm
mail.service.js99910644editdlrm
order.service.js53520644editdlrm
rateArea.service.js20220644editdlrm
system.service.js8720644editdlrm
webSocket.service.js46110644editdlrm
Edit: /var/www/greso.tech/server/nsm/services/order.service.js (5352B)
const logger = require('../logger')({ service: 'OrderService' }) const { Op } = require('sequelize') const { OrderModel } = require('../responseModels') const uuid = require('uuid'); module.exports = class OrderService { constructor({ db, config }) { this.db = db this.interval = null this.config = config logger.child({ service: 'OrderService', method: 'Constructor' }).info('Success') } async Run() { logger.child({ service: 'OrderService', method: 'Run' }).info('Success') } async Stop() { this.interval = null logger.child({ service: 'OrderService', method: 'Stop' }).info('Success') } async OrderStatus(ord, status) { // DOCUMENT ACTION CREATE ON STATUS --> const documents = await this.db.documents.findAll(); const documentsMap = new Map(); // add all root for (let index = 0; index < documents.length; index++) { if(documents[index].rootDocumentId==null||documents[index].rootDocumentId==''){ documentsMap.set(documents[index].id, documents[index]); } } // replace company documents for (let index = 0; index < documents.length; index++) { if(documents[index].companyId == ord.companyId && documents[index].rootDocumentId != null && documents[index].rootDocumentId != ''){ documentsMap.set(documents[index].rootDocumentId, documents[index]); } } // search create document action var docForCreate = []; documentsMap.forEach(doc => { try{ var pages = JSON.parse(doc.dataValues.objects); pages.forEach(page => { try{ var objects = JSON.parse(page.objects); objects.forEach(object => { if(object.key == 'actionCreateThisDocument' && object.value == ord.status){ docForCreate.push(doc); // console.log(object.value); } }); }catch(e){ console.log(e); } }); }catch(e){ console.log(e); } }); // get order documents const orderDocuments = await this.db.orderDocument.findAll({ where: { orderId: ord.id, inventoryId: ord.orderInventoryId } }); // ------- create document for (let index = 0; index < docForCreate.length; index++) { // check exist order document let exist = false; for (let index2 = 0; index2 < orderDocuments.length; index2++) { if(orderDocuments[index2].documentId == docForCreate[index].id){ exist = true; } } if(!exist){ // create document var params = { // id, orderId: ord.id, inventoryId: ord.orderInventoryId, documentId: docForCreate[index].id, userId: ord.updateUserId, name: docForCreate[index].name, rootDocumentId: '', status: 'edit', link: '', objects: '[]' } try{ await this.db.orderDocument.create(params) await this.db.orderHistory.create({ orderId: ord.id, userId: ord.updateUserId, status: ord.status, comment: 'Auto create document ' + docForCreate[index].name + ' on status ' + ord.status }) }catch(e){ console.log(e); } } } // <-- DOCUMENT ACTION CREATE ON STATUS let include = [ { model: this.db.user, include: [ this.db.userEmail, this.db.userPhone ], as: 'user' }, { model: this.db.user, include: [ this.db.userEmail, this.db.userPhone ], as: 'destinationUser' }, {model: this.db.address, as: 'pickupAddress'}, {model: this.db.address, as: 'deliveryAddress'}, {model: this.db.orderDocument, as: 'orderDocuments'}, ] let where = { 'id' : ord.id } const order = await this.db.order.findOne({ include: include, where, }) const inventories = await this.db.orderInventory.findAll({ include: [ { model: this.db.inventoryItemsCategories, as: 'itemsCategory' }, { model: this.db.inventoryExtras, as: 'extras' }, { model: this.db.inventoryItems, as: 'items', include: [ { model: this.db.inventoryItemsConditions, as: 'conditions' }, { model: this.db.inventoryItemsPackages, as: 'packages' }, { model: this.db.inventoryItemsAttachments, as: 'attachments' } ], }, ], where: { 'orderId' : ord.id }, }) order.dataValues['inventories'] = inventories const payments = await this.db.orderPayment.findAll({ where: { 'orderId' : ord.id }, }) order.dataValues['payments'] = payments const movements = await this.db.orderMovement.findAll({ include: [ { model: this.db.user, include: [ this.db.userEmail, this.db.userPhone ], as: 'workers' } ], where: { 'orderId' : ord.id }, order: [ ['createdAt', 'ASC'], ], }) order.dataValues['movements'] = movements const headerClients = new OrderModel(order.dataValues) const headerOperators = new OrderModel(order.dataValues) // отправить клинету await SERVICES.WebSocketService.SendToClient(order.userId, status, headerClients) // отправить company if(order.companyId != null && order.companyId != ''){ await SERVICES.WebSocketService.SendToCrmByCompany( order.companyId, status, headerOperators ) } // отправить branch // if(order.branchId != null && order.branchId != ''){ // await SERVICES.WebSocketService.SendToCrmByBranch( // order.branchId, // status, // headerOperators // ) // } } }