5b015c56a6a707b711ef9b1b24607f4ab0bb0189
[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 _0x9c2c=['squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','info','result','catch','sendStatus','end','status','offset','limit','Content-Range','json','reject','update','destroy','stack','name','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','OpenchannelMessage','count','includeAll','include','findAll','rows','show','params','create','body','find','describe','openchannel-interactions','accept','openchannel','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','Contact','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','interaction','AcceptMessage','acceptMessage','manual','channel','event','EventManager','agent','get','role','null','RejectMessage','rejectMessage','interface','html-pdf','eml-format','request-promise','bluebird','mustache','sox','ejs','lodash'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0x9c2c,0x1c0));var _0xc9c2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9c2c[_0x3dd15e];return _0x231fd0;};'use strict';var pdf=require(_0xc9c2('0x0'));var emlformat=require(_0xc9c2('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc9c2('0x2'));var moment=require('moment');var BPromise=require(_0xc9c2('0x3'));var Mustache=require(_0xc9c2('0x4'));var util=require('util');var path=require('path');var sox=require(_0xc9c2('0x5'));var csv=require('to-csv');var ejs=require(_0xc9c2('0x6'));var fs=require('fs');var _=require(_0xc9c2('0x7'));var squel=require(_0xc9c2('0x8'));var crypto=require(_0xc9c2('0x9'));var jsforce=require(_0xc9c2('0xa'));var deskjs=require(_0xc9c2('0xb'));var toCsv=require(_0xc9c2('0xc'));var querystring=require(_0xc9c2('0xd'));var Papa=require(_0xc9c2('0xe'));var Redis=require('ioredis');var authService=require(_0xc9c2('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xc9c2('0x10'));var hardwareService=require(_0xc9c2('0x11'));var logger=require(_0xc9c2('0x12'))(_0xc9c2('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc9c2('0x14'));var db=require(_0xc9c2('0x15'))['db'];config['redis']=_[_0xc9c2('0x16')](config[_0xc9c2('0x17')],{'host':_0xc9c2('0x18'),'port':0x18eb});var socket=require(_0xc9c2('0x19'))(new Redis(config[_0xc9c2('0x17')]));require(_0xc9c2('0x1a'))[_0xc9c2('0x1b')](socket);var jayson=require(_0xc9c2('0x1c'));var client=jayson[_0xc9c2('0x1d')][_0xc9c2('0x1e')]({'port':0x232c});var client9002=jayson[_0xc9c2('0x1d')][_0xc9c2('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x480d7c,_0x27840d,_0xc554be,_0x728017){return new BPromise(function(_0x240099,_0x21fd6d){var _0x49413b=_0x728017||client;return _0x49413b[_0xc9c2('0x1f')](_0x480d7c,_0xc554be)[_0xc9c2('0x20')](function(_0x273c08){logger['info'](_0xc9c2('0x21'),_0x27840d,_0xc9c2('0x22'));logger[_0xc9c2('0x23')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x27840d,_0xc9c2('0x22'),JSON[_0xc9c2('0x24')](_0x273c08));if(_0x273c08['error']){if(_0x273c08['error'][_0xc9c2('0x25')]===0x1f4){logger['error'](_0xc9c2('0x21'),_0x27840d,_0x273c08[_0xc9c2('0x26')][_0xc9c2('0x27')]);return _0x21fd6d(_0x273c08[_0xc9c2('0x26')][_0xc9c2('0x27')]);}logger['error'](_0xc9c2('0x21'),_0x27840d,_0x273c08[_0xc9c2('0x26')][_0xc9c2('0x27')]);return _0x240099(_0x273c08[_0xc9c2('0x26')][_0xc9c2('0x27')]);}else{logger[_0xc9c2('0x28')]('OpenchannelMessage,\x20%s,\x20%s',_0x27840d,_0xc9c2('0x22'));_0x240099(_0x273c08[_0xc9c2('0x29')]['message']);}})[_0xc9c2('0x2a')](function(_0x4b3b97){logger[_0xc9c2('0x26')](_0xc9c2('0x21'),_0x27840d,_0x4b3b97);_0x21fd6d(_0x4b3b97);});});}function respondWithStatusCode(_0x1765fb,_0x2222e4){_0x2222e4=_0x2222e4||0xcc;return function(_0x484d55){if(_0x484d55){return _0x1765fb[_0xc9c2('0x2b')](_0x2222e4);}return _0x1765fb['status'](_0x2222e4)[_0xc9c2('0x2c')]();};}function respondWithResult(_0x3bd8e8,_0x41f3e8){_0x41f3e8=_0x41f3e8||0xc8;return function(_0x305531){if(_0x305531){return _0x3bd8e8[_0xc9c2('0x2d')](_0x41f3e8)['json'](_0x305531);}};}function respondWithFilteredResult(_0x3cedb5,_0xe2f93b){return function(_0x40033a){if(_0x40033a){var _0x1554ae=_0x40033a['count'],_0xa89cb8=_0xe2f93b[_0xc9c2('0x2e')],_0x460832=_0xe2f93b['offset']+_0xe2f93b[_0xc9c2('0x2f')],_0x24a100;if(_0x460832>=_0x1554ae){_0x460832=_0x1554ae;_0x24a100=0xc8;}else{_0x24a100=0xce;}_0x3cedb5[_0xc9c2('0x2d')](_0x24a100);return _0x3cedb5['set'](_0xc9c2('0x30'),_0xa89cb8+'-'+_0x460832+'/'+_0x1554ae)[_0xc9c2('0x31')](_0x40033a);}return null;};}function patchUpdates(_0x15101b){return function(_0x1f4c93){try{jsonpatch['apply'](_0x1f4c93,_0x15101b,!![]);}catch(_0x6f66ae){return BPromise[_0xc9c2('0x32')](_0x6f66ae);}return _0x1f4c93['save']();};}function saveUpdates(_0x595df6,_0x3fe55c){return function(_0x111563){if(_0x111563){return _0x111563[_0xc9c2('0x33')](_0x595df6)['then'](function(_0x5754c5){return _0x5754c5;});}return null;};}function removeEntity(_0xcc8917,_0x369048){return function(_0x563647){if(_0x563647){return _0x563647[_0xc9c2('0x34')]()['then'](function(){_0xcc8917[_0xc9c2('0x2d')](0xcc)[_0xc9c2('0x2c')]();});}};}function handleEntityNotFound(_0x27e255,_0x39e04d){return function(_0x3bc01b){if(!_0x3bc01b){_0x27e255[_0xc9c2('0x2b')](0x194);}return _0x3bc01b;};}function handleError(_0x2f26c5,_0x1cd2f3){_0x1cd2f3=_0x1cd2f3||0x1f4;return function(_0x19632c){logger['error'](_0x19632c[_0xc9c2('0x35')]);if(_0x19632c['name']){delete _0x19632c[_0xc9c2('0x36')];}_0x2f26c5[_0xc9c2('0x2d')](_0x1cd2f3)['send'](_0x19632c);};}exports[_0xc9c2('0x37')]=function(_0x9d8e40,_0x4eac60){var _0x449658={},_0x22a935={},_0x264fd7={'count':0x0,'rows':[]};var _0x47d6aa=_[_0xc9c2('0x38')](db['OpenchannelMessage'][_0xc9c2('0x39')],function(_0x50be67){return{'name':_0x50be67['fieldName'],'type':_0x50be67[_0xc9c2('0x3a')][_0xc9c2('0x3b')]};});_0x22a935[_0xc9c2('0x3c')]=_[_0xc9c2('0x38')](_0x47d6aa,_0xc9c2('0x36'));_0x22a935[_0xc9c2('0x3d')]=_[_0xc9c2('0x3e')](_0x9d8e40[_0xc9c2('0x3d')]);_0x22a935[_0xc9c2('0x3f')]=_[_0xc9c2('0x40')](_0x22a935[_0xc9c2('0x3c')],_0x22a935['query']);_0x449658['attributes']=_[_0xc9c2('0x40')](_0x22a935[_0xc9c2('0x3c')],qs[_0xc9c2('0x41')](_0x9d8e40[_0xc9c2('0x3d')][_0xc9c2('0x41')]));_0x449658[_0xc9c2('0x42')]=_0x449658['attributes'][_0xc9c2('0x43')]?_0x449658[_0xc9c2('0x42')]:_0x22a935[_0xc9c2('0x3c')];if(!_0x9d8e40[_0xc9c2('0x3d')][_0xc9c2('0x44')]('nolimit')){_0x449658[_0xc9c2('0x2f')]=qs[_0xc9c2('0x2f')](_0x9d8e40[_0xc9c2('0x3d')]['limit']);_0x449658[_0xc9c2('0x2e')]=qs[_0xc9c2('0x2e')](_0x9d8e40[_0xc9c2('0x3d')][_0xc9c2('0x2e')]);}_0x449658[_0xc9c2('0x45')]=qs['sort'](_0x9d8e40['query'][_0xc9c2('0x46')]);_0x449658[_0xc9c2('0x47')]=qs['filters'](_[_0xc9c2('0x48')](_0x9d8e40[_0xc9c2('0x3d')],_0x22a935[_0xc9c2('0x3f')]),_0x47d6aa);if(_0x9d8e40[_0xc9c2('0x3d')][_0xc9c2('0x49')]){_0x449658[_0xc9c2('0x47')]=_[_0xc9c2('0x4a')](_0x449658['where'],{'$or':_[_0xc9c2('0x38')](_0x47d6aa,function(_0x592905){if(_0x592905[_0xc9c2('0x3a')]!=='VIRTUAL'){var _0x33ea8c={};_0x33ea8c[_0x592905['name']]={'$like':'%'+_0x9d8e40[_0xc9c2('0x3d')]['filter']+'%'};return _0x33ea8c;}})});}_0x449658=_[_0xc9c2('0x4a')]({},_0x449658,_0x9d8e40[_0xc9c2('0x4b')]);var _0x56820e={'where':_0x449658[_0xc9c2('0x47')]};return db[_0xc9c2('0x4c')][_0xc9c2('0x4d')](_0x56820e)[_0xc9c2('0x20')](function(_0x4b0729){_0x264fd7[_0xc9c2('0x4d')]=_0x4b0729;if(_0x9d8e40[_0xc9c2('0x3d')][_0xc9c2('0x4e')]){_0x449658[_0xc9c2('0x4f')]=[{'all':!![]}];}return db[_0xc9c2('0x4c')][_0xc9c2('0x50')](_0x449658);})['then'](function(_0x3f97b5){_0x264fd7[_0xc9c2('0x51')]=_0x3f97b5;return _0x264fd7;})[_0xc9c2('0x20')](respondWithFilteredResult(_0x4eac60,_0x449658))[_0xc9c2('0x2a')](handleError(_0x4eac60,null));};exports[_0xc9c2('0x52')]=function(_0xc8b0b2,_0x18cb6b){var _0x413247={'raw':!![],'where':{'id':_0xc8b0b2[_0xc9c2('0x53')]['id']}},_0x5dc6d9={};_0x5dc6d9[_0xc9c2('0x3c')]=_[_0xc9c2('0x3e')](db[_0xc9c2('0x4c')][_0xc9c2('0x39')]);_0x5dc6d9['query']=_[_0xc9c2('0x3e')](_0xc8b0b2[_0xc9c2('0x3d')]);_0x5dc6d9[_0xc9c2('0x3f')]=_['intersection'](_0x5dc6d9[_0xc9c2('0x3c')],_0x5dc6d9['query']);_0x413247[_0xc9c2('0x42')]=_['intersection'](_0x5dc6d9['model'],qs[_0xc9c2('0x41')](_0xc8b0b2[_0xc9c2('0x3d')][_0xc9c2('0x41')]));_0x413247[_0xc9c2('0x42')]=_0x413247[_0xc9c2('0x42')][_0xc9c2('0x43')]?_0x413247[_0xc9c2('0x42')]:_0x5dc6d9[_0xc9c2('0x3c')];if(_0xc8b0b2[_0xc9c2('0x3d')][_0xc9c2('0x4e')]){_0x413247[_0xc9c2('0x4f')]=[{'all':!![]}];}_0x413247=_['merge']({},_0x413247,_0xc8b0b2[_0xc9c2('0x4b')]);return db[_0xc9c2('0x4c')]['find'](_0x413247)[_0xc9c2('0x20')](handleEntityNotFound(_0x18cb6b,null))[_0xc9c2('0x20')](respondWithResult(_0x18cb6b,null))[_0xc9c2('0x2a')](handleError(_0x18cb6b,null));};exports['create']=function(_0x54d639,_0x245c4c){return db[_0xc9c2('0x4c')][_0xc9c2('0x54')](_0x54d639[_0xc9c2('0x55')],{})[_0xc9c2('0x20')](respondWithResult(_0x245c4c,0xc9))[_0xc9c2('0x2a')](handleError(_0x245c4c,null));};exports[_0xc9c2('0x33')]=function(_0x42905b,_0x158632){if(_0x42905b[_0xc9c2('0x55')]['id']){delete _0x42905b[_0xc9c2('0x55')]['id'];}return db[_0xc9c2('0x4c')][_0xc9c2('0x56')]({'where':{'id':_0x42905b[_0xc9c2('0x53')]['id']}})[_0xc9c2('0x20')](handleEntityNotFound(_0x158632,null))['then'](saveUpdates(_0x42905b[_0xc9c2('0x55')],null))[_0xc9c2('0x20')](respondWithResult(_0x158632,null))[_0xc9c2('0x2a')](handleError(_0x158632,null));};exports['destroy']=function(_0xb9f0d7,_0x85a090){return db[_0xc9c2('0x4c')]['find']({'where':{'id':_0xb9f0d7['params']['id']}})[_0xc9c2('0x20')](handleEntityNotFound(_0x85a090,null))[_0xc9c2('0x20')](removeEntity(_0x85a090,null))[_0xc9c2('0x2a')](handleError(_0x85a090,null));};exports[_0xc9c2('0x57')]=function(_0x3e2edd,_0x281fbe){return db[_0xc9c2('0x4c')][_0xc9c2('0x57')]()['then'](respondWithResult(_0x281fbe,null))[_0xc9c2('0x2a')](handleError(_0x281fbe,null));};var interaction_log=require(_0xc9c2('0x12'))(_0xc9c2('0x58'));exports[_0xc9c2('0x59')]=function(_0x36434c,_0x3a9466,_0x2e6166){var _0x490781={'channel':_0xc9c2('0x5a')};if(_0x36434c[_0xc9c2('0x55')]['id']){delete _0x36434c[_0xc9c2('0x55')]['id'];}_0x36434c[_0xc9c2('0x55')]['read']=!![];_0x36434c[_0xc9c2('0x55')]['readAt']=moment()[_0xc9c2('0x5b')](_0xc9c2('0x5c'));_0x36434c[_0xc9c2('0x55')]['UserId']=_0x36434c[_0xc9c2('0x55')][_0xc9c2('0x5d')]||_0x36434c[_0xc9c2('0x5e')]['id'];return db['OpenchannelMessage'][_0xc9c2('0x56')]({'where':{'id':_0x36434c[_0xc9c2('0x53')]['id'],'UserId':null},'include':[{'model':db['CmContact'],'as':_0xc9c2('0x5f')}]})['then'](handleEntityNotFound(_0x3a9466,null))[_0xc9c2('0x20')](saveUpdates(_0x36434c[_0xc9c2('0x55')],null))[_0xc9c2('0x20')](function(_0x58c235){if(_0x58c235){_0x490781[_0xc9c2('0x27')]=_0x58c235['get']({'plain':!![]});return db[_0xc9c2('0x60')][_0xc9c2('0x56')]({'where':{'id':_0x58c235[_0xc9c2('0x61')]}});}return null;})['then'](handleEntityNotFound(_0x3a9466,null))[_0xc9c2('0x20')](function(_0x961ff7){if(_0x961ff7){return _0x961ff7[_0xc9c2('0x33')]({'UserId':_0x36434c[_0xc9c2('0x55')][_0xc9c2('0x5d')],'read1stAt':_[_0xc9c2('0x62')](_0x961ff7[_0xc9c2('0x63')])?moment()[_0xc9c2('0x5b')](_0xc9c2('0x5c')):undefined});}return null;})[_0xc9c2('0x20')](function(_0x1fb773){if(_0x1fb773){_0x490781['interaction']=_0x1fb773['get']({'plain':!![]});interaction_log['info']('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x36434c[_0xc9c2('0x5e')]['id'],_0x36434c[_0xc9c2('0x5e')][_0xc9c2('0x36')],_0x36434c[_0xc9c2('0x5e')]['role'],_0x490781[_0xc9c2('0x64')]['id'],_0x36434c[_0xc9c2('0x55')]?JSON['stringify'](_0x36434c[_0xc9c2('0x55')]):'null');return respondWithRpcPromise(_0xc9c2('0x65'),_0xc9c2('0x66'),_0x490781);}return null;})[_0xc9c2('0x20')](function(_0x480adc){if(_0x480adc){if(_0x36434c[_0xc9c2('0x55')][_0xc9c2('0x67')]){_0x490781[_0xc9c2('0x27')]['interface']=util['format']('SIP/%s',_0x36434c[_0xc9c2('0x5e')][_0xc9c2('0x36')]);_0x490781[_0xc9c2('0x27')]['channel']=_0x490781[_0xc9c2('0x68')];_0x490781[_0xc9c2('0x27')][_0xc9c2('0x69')]=_0xc9c2('0x59');return respondWithRpcPromise(_0xc9c2('0x6a'),_0xc9c2('0x6a'),{'event':'acceptmessage','message':_0x490781[_0xc9c2('0x27')]},client9002)['then'](function(){return _0x490781;});}return _0x490781;}return null;})['then'](respondWithResult(_0x3a9466,null))[_0xc9c2('0x2a')](handleError(_0x3a9466,null));};var interaction_log=require(_0xc9c2('0x12'))(_0xc9c2('0x58'));exports[_0xc9c2('0x32')]=function(_0x1d0faa,_0x5a0793,_0x448ef5){var _0x39daf8={'agent':{},'channel':_0xc9c2('0x5a')};if(_0x1d0faa[_0xc9c2('0x55')]['id']){delete _0x1d0faa[_0xc9c2('0x55')]['id'];}_0x1d0faa[_0xc9c2('0x55')][_0xc9c2('0x5d')]=_0x1d0faa[_0xc9c2('0x55')][_0xc9c2('0x5d')]||_0x1d0faa[_0xc9c2('0x5e')]['id'];_0x39daf8[_0xc9c2('0x6b')]['id']=_0x1d0faa[_0xc9c2('0x55')][_0xc9c2('0x5d')];return db['OpenchannelMessage']['find']({'where':{'id':_0x1d0faa[_0xc9c2('0x53')]['id'],'UserId':null}})[_0xc9c2('0x20')](handleEntityNotFound(_0x5a0793,null))['then'](function(_0x55b255){if(_0x55b255){_0x39daf8[_0xc9c2('0x27')]=_0x55b255['get']({'plain':!![]});return db['OpenchannelInteraction'][_0xc9c2('0x56')]({'where':{'id':_0x55b255[_0xc9c2('0x61')]}});}return null;})['then'](handleEntityNotFound(_0x5a0793,null))[_0xc9c2('0x20')](function(_0x53febe){if(_0x53febe){_0x39daf8[_0xc9c2('0x64')]=_0x53febe[_0xc9c2('0x6c')]({'plain':!![]});interaction_log[_0xc9c2('0x28')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1d0faa[_0xc9c2('0x5e')]['id'],_0x1d0faa[_0xc9c2('0x5e')][_0xc9c2('0x36')],_0x1d0faa[_0xc9c2('0x5e')][_0xc9c2('0x6d')],_0x39daf8[_0xc9c2('0x64')]['id'],_0x1d0faa[_0xc9c2('0x55')]?JSON[_0xc9c2('0x24')](_0x1d0faa[_0xc9c2('0x55')]):_0xc9c2('0x6e'));return respondWithRpcPromise(_0xc9c2('0x6f'),_0xc9c2('0x70'),_0x39daf8);}return null;})['then'](function(_0x3ad8ba){if(_0x3ad8ba){_0x3ad8ba[_0xc9c2('0x27')][_0xc9c2('0x71')]=util[_0xc9c2('0x5b')]('SIP/%s',_0x1d0faa[_0xc9c2('0x5e')][_0xc9c2('0x36')]);_0x3ad8ba['message'][_0xc9c2('0x68')]=_0x39daf8[_0xc9c2('0x68')];_0x3ad8ba[_0xc9c2('0x27')][_0xc9c2('0x69')]=_0xc9c2('0x32');respondWithRpcPromise('EventManager',_0xc9c2('0x6a'),{'event':'rejectmessage','message':_0x3ad8ba['message']},client9002);return _0x39daf8;}return null;})[_0xc9c2('0x20')](respondWithResult(_0x5a0793,null))[_0xc9c2('0x2a')](handleError(_0x5a0793,null));};