5c05c0675916da69389b0dbed223c980001ff3e0
[motion2.git] / server / api / openchannelMessage / openchannelMessage.controller.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x4308=['[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','rejectMessage','interface','rejectmessage','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','defaults','redis','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','request','then','OpenchannelMessage,\x20%s,\x20%s','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','status','end','count','offset','set','Content-Range','json','reject','save','destroy','sendStatus','stack','name','index','map','OpenchannelMessage','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','limit','order','sort','where','pick','filter','merge','includeAll','include','rows','show','params','rawAttributes','length','options','find','create','body','openchannel-interactions','accept','read','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','CmContact','Contact','get','OpenchannelInteraction','update','read1stAt','format','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','acceptMessage','SIP/%s','channel','event','EventManager','openchannel'];(function(_0x846db2,_0x560d57){var _0x1249de=function(_0x3a6bea){while(--_0x3a6bea){_0x846db2['push'](_0x846db2['shift']());}};_0x1249de(++_0x560d57);}(_0x4308,0x164));var _0x8430=function(_0x992fa7,_0x37c740){_0x992fa7=_0x992fa7-0x0;var _0x169e30=_0x4308[_0x992fa7];return _0x169e30;};'use strict';var pdf=require(_0x8430('0x0'));var emlformat=require(_0x8430('0x1'));var rimraf=require(_0x8430('0x2'));var zipdir=require(_0x8430('0x3'));var jsonpatch=require(_0x8430('0x4'));var rp=require(_0x8430('0x5'));var moment=require(_0x8430('0x6'));var BPromise=require(_0x8430('0x7'));var Mustache=require(_0x8430('0x8'));var util=require(_0x8430('0x9'));var path=require(_0x8430('0xa'));var sox=require(_0x8430('0xb'));var csv=require(_0x8430('0xc'));var ejs=require(_0x8430('0xd'));var fs=require('fs');var _=require(_0x8430('0xe'));var squel=require(_0x8430('0xf'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8430('0xc'));var querystring=require(_0x8430('0x10'));var Papa=require(_0x8430('0x11'));var Redis=require(_0x8430('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x8430('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8430('0x14'));var logger=require(_0x8430('0x15'))(_0x8430('0x16'));var utils=require(_0x8430('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x8430('0x18'))['db'];config['redis']=_[_0x8430('0x19')](config[_0x8430('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x8430('0x1b'))(new Redis(config[_0x8430('0x1a')]));require(_0x8430('0x1c'))[_0x8430('0x1d')](socket);var jayson=require(_0x8430('0x1e'));var client=jayson[_0x8430('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0x8430('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x598fea,_0x2cdb84,_0x2cedd5,_0x3a14bf){return new BPromise(function(_0x4af12b,_0x22a15f){var _0x8b88ce=_0x3a14bf||client;return _0x8b88ce[_0x8430('0x20')](_0x598fea,_0x2cedd5)[_0x8430('0x21')](function(_0x366c7d){logger['info'](_0x8430('0x22'),_0x2cdb84,'request\x20sent');logger[_0x8430('0x23')](_0x8430('0x24'),_0x2cdb84,_0x8430('0x25'),JSON[_0x8430('0x26')](_0x366c7d));if(_0x366c7d[_0x8430('0x27')]){if(_0x366c7d[_0x8430('0x27')]['code']===0x1f4){logger[_0x8430('0x27')]('OpenchannelMessage,\x20%s,\x20%s',_0x2cdb84,_0x366c7d[_0x8430('0x27')][_0x8430('0x28')]);return _0x22a15f(_0x366c7d[_0x8430('0x27')]['message']);}logger[_0x8430('0x27')](_0x8430('0x22'),_0x2cdb84,_0x366c7d[_0x8430('0x27')][_0x8430('0x28')]);return _0x4af12b(_0x366c7d[_0x8430('0x27')]['message']);}else{logger[_0x8430('0x29')](_0x8430('0x22'),_0x2cdb84,_0x8430('0x25'));_0x4af12b(_0x366c7d[_0x8430('0x2a')][_0x8430('0x28')]);}})[_0x8430('0x2b')](function(_0x5666e0){logger['error'](_0x8430('0x22'),_0x2cdb84,_0x5666e0);_0x22a15f(_0x5666e0);});});}function respondWithStatusCode(_0x235a23,_0x15d8de){_0x15d8de=_0x15d8de||0xcc;return function(_0x4d93e6){if(_0x4d93e6){return _0x235a23['sendStatus'](_0x15d8de);}return _0x235a23[_0x8430('0x2c')](_0x15d8de)[_0x8430('0x2d')]();};}function respondWithResult(_0x3b2f5b,_0x5641e2){_0x5641e2=_0x5641e2||0xc8;return function(_0x2c448f){if(_0x2c448f){return _0x3b2f5b[_0x8430('0x2c')](_0x5641e2)['json'](_0x2c448f);}};}function respondWithFilteredResult(_0x204e17,_0x4a693b){return function(_0x3edbeb){if(_0x3edbeb){var _0x3fc4e5=_0x3edbeb[_0x8430('0x2e')],_0x5cf7ca=_0x4a693b['offset'],_0x4c14a3=_0x4a693b[_0x8430('0x2f')]+_0x4a693b['limit'],_0x2a2b94;if(_0x4c14a3>=_0x3fc4e5){_0x4c14a3=_0x3fc4e5;_0x2a2b94=0xc8;}else{_0x2a2b94=0xce;}_0x204e17[_0x8430('0x2c')](_0x2a2b94);return _0x204e17[_0x8430('0x30')](_0x8430('0x31'),_0x5cf7ca+'-'+_0x4c14a3+'/'+_0x3fc4e5)[_0x8430('0x32')](_0x3edbeb);}return null;};}function patchUpdates(_0x59deaf){return function(_0x1dfb03){try{jsonpatch['apply'](_0x1dfb03,_0x59deaf,!![]);}catch(_0x233fc1){return BPromise[_0x8430('0x33')](_0x233fc1);}return _0x1dfb03[_0x8430('0x34')]();};}function saveUpdates(_0x447427,_0x31e2ea){return function(_0x45bb2c){if(_0x45bb2c){return _0x45bb2c['update'](_0x447427)[_0x8430('0x21')](function(_0x34c9ca){return _0x34c9ca;});}return null;};}function removeEntity(_0x136f5f,_0x2573ea){return function(_0x122ec9){if(_0x122ec9){return _0x122ec9[_0x8430('0x35')]()[_0x8430('0x21')](function(){_0x136f5f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x8cbd50,_0x290f12){return function(_0x2aef29){if(!_0x2aef29){_0x8cbd50[_0x8430('0x36')](0x194);}return _0x2aef29;};}function handleError(_0xf4fc94,_0x249f33){_0x249f33=_0x249f33||0x1f4;return function(_0x4ee8b6){logger[_0x8430('0x27')](_0x4ee8b6[_0x8430('0x37')]);if(_0x4ee8b6[_0x8430('0x38')]){delete _0x4ee8b6[_0x8430('0x38')];}_0xf4fc94[_0x8430('0x2c')](_0x249f33)['send'](_0x4ee8b6);};}exports[_0x8430('0x39')]=function(_0x4304bf,_0x15046d){var _0x19a423={},_0x37f6cf={},_0x7ae043={'count':0x0,'rows':[]};var _0x31a442=_[_0x8430('0x3a')](db[_0x8430('0x3b')]['rawAttributes'],function(_0x59a020){return{'name':_0x59a020[_0x8430('0x3c')],'type':_0x59a020[_0x8430('0x3d')][_0x8430('0x3e')]};});_0x37f6cf[_0x8430('0x3f')]=_['map'](_0x31a442,_0x8430('0x38'));_0x37f6cf[_0x8430('0x40')]=_[_0x8430('0x41')](_0x4304bf[_0x8430('0x40')]);_0x37f6cf[_0x8430('0x42')]=_[_0x8430('0x43')](_0x37f6cf[_0x8430('0x3f')],_0x37f6cf[_0x8430('0x40')]);_0x19a423[_0x8430('0x44')]=_['intersection'](_0x37f6cf['model'],qs[_0x8430('0x45')](_0x4304bf['query'][_0x8430('0x45')]));_0x19a423[_0x8430('0x44')]=_0x19a423[_0x8430('0x44')]['length']?_0x19a423['attributes']:_0x37f6cf[_0x8430('0x3f')];if(!_0x4304bf[_0x8430('0x40')]['hasOwnProperty'](_0x8430('0x46'))){_0x19a423[_0x8430('0x47')]=qs[_0x8430('0x47')](_0x4304bf['query'][_0x8430('0x47')]);_0x19a423['offset']=qs[_0x8430('0x2f')](_0x4304bf[_0x8430('0x40')][_0x8430('0x2f')]);}_0x19a423[_0x8430('0x48')]=qs[_0x8430('0x49')](_0x4304bf[_0x8430('0x40')][_0x8430('0x49')]);_0x19a423[_0x8430('0x4a')]=qs[_0x8430('0x42')](_[_0x8430('0x4b')](_0x4304bf[_0x8430('0x40')],_0x37f6cf[_0x8430('0x42')]),_0x31a442);if(_0x4304bf[_0x8430('0x40')][_0x8430('0x4c')]){_0x19a423[_0x8430('0x4a')]=_['merge'](_0x19a423[_0x8430('0x4a')],{'$or':_[_0x8430('0x3a')](_0x31a442,function(_0x293ed3){if(_0x293ed3[_0x8430('0x3d')]!=='VIRTUAL'){var _0x59ee20={};_0x59ee20[_0x293ed3['name']]={'$like':'%'+_0x4304bf[_0x8430('0x40')][_0x8430('0x4c')]+'%'};return _0x59ee20;}})});}_0x19a423=_[_0x8430('0x4d')]({},_0x19a423,_0x4304bf['options']);var _0x796602={'where':_0x19a423[_0x8430('0x4a')]};return db['OpenchannelMessage'][_0x8430('0x2e')](_0x796602)[_0x8430('0x21')](function(_0x3ad2e4){_0x7ae043[_0x8430('0x2e')]=_0x3ad2e4;if(_0x4304bf[_0x8430('0x40')][_0x8430('0x4e')]){_0x19a423[_0x8430('0x4f')]=[{'all':!![]}];}return db[_0x8430('0x3b')]['findAll'](_0x19a423);})[_0x8430('0x21')](function(_0xa7369d){_0x7ae043[_0x8430('0x50')]=_0xa7369d;return _0x7ae043;})[_0x8430('0x21')](respondWithFilteredResult(_0x15046d,_0x19a423))[_0x8430('0x2b')](handleError(_0x15046d,null));};exports[_0x8430('0x51')]=function(_0x13b70d,_0x1e7c07){var _0x3c4e4d={'raw':!![],'where':{'id':_0x13b70d[_0x8430('0x52')]['id']}},_0x5b25c8={};_0x5b25c8[_0x8430('0x3f')]=_[_0x8430('0x41')](db[_0x8430('0x3b')][_0x8430('0x53')]);_0x5b25c8['query']=_[_0x8430('0x41')](_0x13b70d[_0x8430('0x40')]);_0x5b25c8[_0x8430('0x42')]=_[_0x8430('0x43')](_0x5b25c8[_0x8430('0x3f')],_0x5b25c8['query']);_0x3c4e4d[_0x8430('0x44')]=_['intersection'](_0x5b25c8['model'],qs[_0x8430('0x45')](_0x13b70d[_0x8430('0x40')]['fields']));_0x3c4e4d['attributes']=_0x3c4e4d[_0x8430('0x44')][_0x8430('0x54')]?_0x3c4e4d[_0x8430('0x44')]:_0x5b25c8['model'];if(_0x13b70d[_0x8430('0x40')]['includeAll']){_0x3c4e4d['include']=[{'all':!![]}];}_0x3c4e4d=_[_0x8430('0x4d')]({},_0x3c4e4d,_0x13b70d[_0x8430('0x55')]);return db[_0x8430('0x3b')][_0x8430('0x56')](_0x3c4e4d)['then'](handleEntityNotFound(_0x1e7c07,null))['then'](respondWithResult(_0x1e7c07,null))[_0x8430('0x2b')](handleError(_0x1e7c07,null));};exports[_0x8430('0x57')]=function(_0x23b4a6,_0x54adfd){return db[_0x8430('0x3b')][_0x8430('0x57')](_0x23b4a6[_0x8430('0x58')],{})[_0x8430('0x21')](respondWithResult(_0x54adfd,0xc9))['catch'](handleError(_0x54adfd,null));};exports['update']=function(_0x2b1554,_0x407a95){if(_0x2b1554['body']['id']){delete _0x2b1554[_0x8430('0x58')]['id'];}return db[_0x8430('0x3b')][_0x8430('0x56')]({'where':{'id':_0x2b1554[_0x8430('0x52')]['id']}})[_0x8430('0x21')](handleEntityNotFound(_0x407a95,null))['then'](saveUpdates(_0x2b1554['body'],null))[_0x8430('0x21')](respondWithResult(_0x407a95,null))['catch'](handleError(_0x407a95,null));};exports[_0x8430('0x35')]=function(_0x3af984,_0x1c87c4){return db[_0x8430('0x3b')][_0x8430('0x56')]({'where':{'id':_0x3af984['params']['id']}})[_0x8430('0x21')](handleEntityNotFound(_0x1c87c4,null))[_0x8430('0x21')](removeEntity(_0x1c87c4,null))[_0x8430('0x2b')](handleError(_0x1c87c4,null));};exports['describe']=function(_0x3b57fd,_0x178af1){return db['OpenchannelMessage']['describe']()[_0x8430('0x21')](respondWithResult(_0x178af1,null))[_0x8430('0x2b')](handleError(_0x178af1,null));};var interaction_log=require('../../config/logger')(_0x8430('0x59'));exports[_0x8430('0x5a')]=function(_0x4e0998,_0x21763c,_0x356605){var _0x4e23f2={'agent':{},'channel':'openchannel'};if(_0x4e0998[_0x8430('0x58')]['id']){delete _0x4e0998['body']['id'];}_0x4e0998[_0x8430('0x58')][_0x8430('0x5b')]=!![];_0x4e0998[_0x8430('0x58')]['readAt']=moment()['format'](_0x8430('0x5c'));_0x4e0998[_0x8430('0x58')][_0x8430('0x5d')]=_0x4e0998[_0x8430('0x58')][_0x8430('0x5d')]||_0x4e0998[_0x8430('0x5e')]['id'];_0x4e23f2[_0x8430('0x5f')]['id']=_0x4e0998[_0x8430('0x58')][_0x8430('0x5d')];return db[_0x8430('0x3b')][_0x8430('0x56')]({'where':{'id':_0x4e0998[_0x8430('0x52')]['id'],'UserId':null},'include':[{'model':db[_0x8430('0x60')],'as':_0x8430('0x61')}]})[_0x8430('0x21')](handleEntityNotFound(_0x21763c,null))[_0x8430('0x21')](saveUpdates(_0x4e0998[_0x8430('0x58')],null))['then'](function(_0x3a13c9){if(_0x3a13c9){_0x4e23f2[_0x8430('0x28')]=_0x3a13c9[_0x8430('0x62')]({'plain':!![]});return db[_0x8430('0x63')]['find']({'where':{'id':_0x3a13c9['OpenchannelInteractionId']}});}return null;})[_0x8430('0x21')](handleEntityNotFound(_0x21763c,null))[_0x8430('0x21')](function(_0xf3d344){if(_0xf3d344){return _0xf3d344[_0x8430('0x64')]({'UserId':_0x4e0998[_0x8430('0x58')]['UserId'],'read1stAt':_['isNil'](_0xf3d344[_0x8430('0x65')])?moment()[_0x8430('0x66')](_0x8430('0x5c')):undefined});}return null;})[_0x8430('0x21')](function(_0x156168){if(_0x156168){_0x4e23f2[_0x8430('0x67')]=_0x156168[_0x8430('0x62')]({'plain':!![]});interaction_log[_0x8430('0x29')](_0x8430('0x68'),_0x4e0998['user']['id'],_0x4e0998[_0x8430('0x5e')][_0x8430('0x38')],_0x4e0998[_0x8430('0x5e')][_0x8430('0x69')],_0x4e23f2[_0x8430('0x67')]['id'],_0x4e0998['body']?JSON['stringify'](_0x4e0998[_0x8430('0x58')]):'null');return respondWithRpcPromise('AcceptMessage',_0x8430('0x6a'),_0x4e23f2);}return null;})[_0x8430('0x21')](function(_0x53ce4d){if(_0x53ce4d){if(_0x4e0998[_0x8430('0x58')]['manual']){_0x4e23f2[_0x8430('0x28')]['interface']=util[_0x8430('0x66')](_0x8430('0x6b'),_0x4e0998[_0x8430('0x5e')][_0x8430('0x38')]);_0x4e23f2[_0x8430('0x28')][_0x8430('0x6c')]=_0x4e23f2[_0x8430('0x6c')];_0x4e23f2[_0x8430('0x28')][_0x8430('0x6d')]=_0x8430('0x5a');return respondWithRpcPromise(_0x8430('0x6e'),_0x8430('0x6e'),{'event':'acceptmessage','message':_0x4e23f2[_0x8430('0x28')]},client9002)['then'](function(){return _0x4e23f2;});}return _0x4e23f2;}return null;})[_0x8430('0x21')](respondWithResult(_0x21763c,null))[_0x8430('0x2b')](handleError(_0x21763c,null));};var interaction_log=require(_0x8430('0x15'))(_0x8430('0x59'));exports[_0x8430('0x33')]=function(_0x1bad04,_0xcce14f,_0xfe704a){var _0x10ba6f={'agent':{},'channel':_0x8430('0x6f')};if(_0x1bad04[_0x8430('0x58')]['id']){delete _0x1bad04[_0x8430('0x58')]['id'];}_0x1bad04[_0x8430('0x58')][_0x8430('0x5d')]=_0x1bad04[_0x8430('0x58')][_0x8430('0x5d')]||_0x1bad04['user']['id'];_0x10ba6f[_0x8430('0x5f')]['id']=_0x1bad04['body'][_0x8430('0x5d')];return db[_0x8430('0x3b')][_0x8430('0x56')]({'where':{'id':_0x1bad04[_0x8430('0x52')]['id'],'UserId':null}})[_0x8430('0x21')](handleEntityNotFound(_0xcce14f,null))[_0x8430('0x21')](function(_0x52b995){if(_0x52b995){_0x10ba6f[_0x8430('0x28')]=_0x52b995[_0x8430('0x62')]({'plain':!![]});return db[_0x8430('0x63')][_0x8430('0x56')]({'where':{'id':_0x52b995['OpenchannelInteractionId']}});}return null;})[_0x8430('0x21')](handleEntityNotFound(_0xcce14f,null))[_0x8430('0x21')](function(_0x46bd1c){if(_0x46bd1c){_0x10ba6f[_0x8430('0x67')]=_0x46bd1c['get']({'plain':!![]});interaction_log['info'](_0x8430('0x70'),_0x1bad04['user']['id'],_0x1bad04['user'][_0x8430('0x38')],_0x1bad04[_0x8430('0x5e')][_0x8430('0x69')],_0x10ba6f['interaction']['id'],_0x1bad04[_0x8430('0x58')]?JSON[_0x8430('0x26')](_0x1bad04['body']):_0x8430('0x71'));return respondWithRpcPromise('RejectMessage',_0x8430('0x72'),_0x10ba6f);}return null;})['then'](function(_0x4372dc){if(_0x4372dc){_0x4372dc[_0x8430('0x28')][_0x8430('0x73')]=util[_0x8430('0x66')](_0x8430('0x6b'),_0x1bad04[_0x8430('0x5e')][_0x8430('0x38')]);_0x4372dc['message']['channel']=_0x10ba6f['channel'];_0x4372dc['message'][_0x8430('0x6d')]='reject';respondWithRpcPromise(_0x8430('0x6e'),'EventManager',{'event':_0x8430('0x74'),'message':_0x4372dc[_0x8430('0x28')]},client9002);return _0x10ba6f;}return null;})[_0x8430('0x21')](respondWithResult(_0xcce14f,null))[_0x8430('0x2b')](handleError(_0xcce14f,null));};