/
var
/
www
/
greso.tech
/
server
/
nsm
/
controllers
/
order
/
document
/
/var/www/greso.tech/server/nsm/controllers/order/document
mkdir
upload
Name
Size
Mode
Actions
create.js
2312
0644
edit
dl
rm
delete.js
859
0644
edit
dl
rm
edit.js
13580
0644
edit
dl
rm
list.js
1284
0644
edit
dl
rm
send.js
5634
0644
edit
dl
rm
Edit:
/var/www/greso.tech/server/nsm/controllers/order/document/send.js
(5634B)
module.exports = function ({ db, logger }) { const { NotFound, BadRequest } = require('../../../responseModels/errors') const { isSet, isEmail, isPhone, isEmpty, minLength, isNumber, isStatusBiggerThen } = require('../../../utils/validator.util') const uuid = require('uuid'); return async (req, res, next) => { logger.child({ path: req.path }).info() let t1 = performance.now() try { const { id } = req.body if (!isSet(id) || isEmpty(id)) { throw new BadRequest({ code: 400, lang: req.user?.languageCode }) } // check order document const documentEdit = await db.orderDocument.findOne({ where: { id: id } }) if (!documentEdit) { throw new NotFound({ lang: req.user?.languageCode }) } // check document const document = await db.documents.findOne({ where: { id: documentEdit.documentId } }) if (!document) { throw new NotFound({ lang: req.user?.languageCode }) } // check order const order = await db.order.findOne({ where: { id: documentEdit.orderId } }) if (!order) { throw new NotFound({ code: 2032, lang: req.user?.languageCode }) } // check inventory const inventory = await db.orderInventory.findOne({ where: { id: documentEdit.inventoryId } }) if (!inventory) { throw new NotFound({ code: 2035, lang: req.user?.languageCode }) } // check sign before sent document var onSendOrderStatus = '' var onSendInventoryStatus = '' var beforeSignObjects = [] var beforeSignCount = 0; try{ // FIND ALL NEEDED SIGNATURES AND SET ACTIONS var pages = JSON.parse(document.objects) var orderDocumentObjects = documentEdit.objects!='' ? JSON.parse(documentEdit.objects) : [] for(var page in pages){ var objects = JSON.parse(pages[page].objects) for(var obj in objects){ if(objects[obj].type == 'sign' && objects[obj].key == 'signBeforeSend'){ beforeSignObjects.push(objects[obj]) } if(objects[obj].type == 'action'){ if(objects[obj].model == 'actionOnSend'){ if(objects[obj].key == 'actionSetOrderStatus'){ onSendOrderStatus = objects[obj].value } if(objects[obj].key == 'actionSetEstimateStatus'){ onSendInventoryStatus = objects[obj].value } } } } } // CHECK DOCUMENT SIGNATURES for(var d_obj in orderDocumentObjects){ for(var obj in beforeSignObjects){ if (beforeSignObjects[obj].id == orderDocumentObjects[d_obj].id) { beforeSignCount++ } } } if (beforeSignObjects.length != beforeSignCount) { throw new NotFound({ code: 2118, lang: req.user?.languageCode }) } } catch (e) { throw new NotFound({ code: 2119, lang: req.user?.languageCode }) } // check completed, start sending document const result = await SERVICES.MailService.SendDocument(documentEdit) var status = 'ERROR' if(result.accepted.length>0){ documentEdit.status = "sended" documentEdit.save() // --> Set order status if(onSendOrderStatus != '' && isStatusBiggerThen(onSendOrderStatus, order.status)){ order.status = onSendOrderStatus order.updateUserId = req.user.id; switch(order.status){ case ORDER_STATUS.ESTIMATE: order.estimateAt = Date.now() break; case ORDER_STATUS.BOOKED: order.bookedAt = Date.now() break; case ORDER_STATUS.CONFIRMED: order.confirmedAt = Date.now() break; case ORDER_STATUS.ONSITE: order.onsiteAt = Date.now() break; case ORDER_STATUS.PICKUP: order.pickupAt = Date.now() break; case ORDER_STATUS.PICKED_UP: order.pickedUpAt = Date.now() break; case ORDER_STATUS.WAREHOUSE: order.warehouseAt = Date.now() break; case ORDER_STATUS.STORAGE: order.storageAt = Date.now() break; case ORDER_STATUS.WAREHOUSE_UNLOADING: order.warehouseUnloadingAt = Date.now() break; case ORDER_STATUS.LOADING: order.loadingAt = Date.now() break; case ORDER_STATUS.ENROUTE: order.enrouteAt = Date.now() break; case ORDER_STATUS.ARRIVED: order.arrivedAt = Date.now() break; case ORDER_STATUS.UNLOADING: order.unloadingAt = Date.now() break; case ORDER_STATUS.COMPLETE: order.completeAt = Date.now() break; case ORDER_STATUS.CANCEL: order.cancelAt = Date.now() break; } order.save() await db.orderHistory.create({ orderId: order.id, userId: req.user.id || order.updateUserId, status: order.status, comment: 'Order set status ' + order.status + ' after send mail' }) } // --> Set inventory status if (onSendInventoryStatus != '') { inventory.status = onSendInventoryStatus await inventory.save() await db.orderHistory.create({ orderId: order.id, userId: req.user.id || order.updateUserId, status: order.status, comment: 'Inventory set status ' + inventory.status + ' after send mail' }) } // <-- CHECK SIGNATURES // ACTIONS status = 'OK' } var params = { id: uuid.v4(), orderId: order.id, userId: order.userId, type: 'email', message: document.name+' sent', status, } await db.orderMessage.create(params) await SERVICES.OrderService.OrderStatus(order, 'orderEdit') const time = performance.now() - t1 return res.status(200).json({ status: 'success', id: document.id, time }) } catch (err) { next(err) } } }
Save
cmd:
run