2adc654e8257bd5b23c398ceb6681a0d8afa0fdc
[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 _0x9990=['SIP/%s','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./openchannelMessage.socket','register','jayson/promise','client','http','request','info','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','OpenchannelMessage,\x20%s,\x20%s','result','catch','status','json','count','offset','limit','apply','reject','update','then','destroy','end','stack','name','index','map','OpenchannelMessage','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','find','create','body','describe','openchannel-interactions','openchannel','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','CmContact','Contact','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','acceptMessage','manual','interface','channel','event','EventManager','acceptmessage','agent','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage'];(function(_0x1093e4,_0x4d35c4){var _0x14bbd4=function(_0x53c6f3){while(--_0x53c6f3){_0x1093e4['push'](_0x1093e4['shift']());}};_0x14bbd4(++_0x4d35c4);}(_0x9990,0xf6));var _0x0999=function(_0x48efc4,_0x4035c0){_0x48efc4=_0x48efc4-0x0;var _0x151c20=_0x9990[_0x48efc4];return _0x151c20;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x0999('0x0'));var rimraf=require(_0x0999('0x1'));var zipdir=require(_0x0999('0x2'));var jsonpatch=require(_0x0999('0x3'));var rp=require(_0x0999('0x4'));var moment=require(_0x0999('0x5'));var BPromise=require(_0x0999('0x6'));var Mustache=require(_0x0999('0x7'));var util=require('util');var path=require(_0x0999('0x8'));var sox=require(_0x0999('0x9'));var csv=require(_0x0999('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x0999('0xb'));var squel=require(_0x0999('0xc'));var crypto=require(_0x0999('0xd'));var jsforce=require(_0x0999('0xe'));var deskjs=require(_0x0999('0xf'));var toCsv=require(_0x0999('0xa'));var querystring=require(_0x0999('0x10'));var Papa=require('papaparse');var Redis=require(_0x0999('0x11'));var authService=require(_0x0999('0x12'));var qs=require(_0x0999('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0999('0x14'));var logger=require(_0x0999('0x15'))(_0x0999('0x16'));var utils=require('../../config/utils');var config=require(_0x0999('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0999('0x18'))['db'];config[_0x0999('0x19')]=_[_0x0999('0x1a')](config[_0x0999('0x19')],{'host':_0x0999('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0999('0x19')]));require(_0x0999('0x1c'))[_0x0999('0x1d')](socket);var jayson=require(_0x0999('0x1e'));var client=jayson[_0x0999('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0x0999('0x1f')][_0x0999('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x6bf882,_0x4e4e53,_0x2d0ca2,_0xf680e){return new BPromise(function(_0x2fa43e,_0x4f5a9e){var _0xa82828=_0xf680e||client;return _0xa82828[_0x0999('0x21')](_0x6bf882,_0x2d0ca2)['then'](function(_0x107573){logger[_0x0999('0x22')]('OpenchannelMessage,\x20%s,\x20%s',_0x4e4e53,_0x0999('0x23'));logger[_0x0999('0x24')](_0x0999('0x25'),_0x4e4e53,_0x0999('0x23'),JSON[_0x0999('0x26')](_0x107573));if(_0x107573[_0x0999('0x27')]){if(_0x107573[_0x0999('0x27')][_0x0999('0x28')]===0x1f4){logger[_0x0999('0x27')]('OpenchannelMessage,\x20%s,\x20%s',_0x4e4e53,_0x107573[_0x0999('0x27')][_0x0999('0x29')]);return _0x4f5a9e(_0x107573['error']['message']);}logger[_0x0999('0x27')](_0x0999('0x2a'),_0x4e4e53,_0x107573[_0x0999('0x27')][_0x0999('0x29')]);return _0x2fa43e(_0x107573[_0x0999('0x27')][_0x0999('0x29')]);}else{logger['info'](_0x0999('0x2a'),_0x4e4e53,'request\x20sent');_0x2fa43e(_0x107573[_0x0999('0x2b')]['message']);}})[_0x0999('0x2c')](function(_0x106669){logger[_0x0999('0x27')](_0x0999('0x2a'),_0x4e4e53,_0x106669);_0x4f5a9e(_0x106669);});});}function respondWithStatusCode(_0x4ba35b,_0x55c8b3){_0x55c8b3=_0x55c8b3||0xcc;return function(_0x1cc734){if(_0x1cc734){return _0x4ba35b['sendStatus'](_0x55c8b3);}return _0x4ba35b[_0x0999('0x2d')](_0x55c8b3)['end']();};}function respondWithResult(_0x2273ad,_0x85cd84){_0x85cd84=_0x85cd84||0xc8;return function(_0x477a47){if(_0x477a47){return _0x2273ad[_0x0999('0x2d')](_0x85cd84)[_0x0999('0x2e')](_0x477a47);}};}function respondWithFilteredResult(_0x155d79,_0x3cf0d3){return function(_0x5c9fb4){if(_0x5c9fb4){var _0x1df4cf=_0x5c9fb4[_0x0999('0x2f')],_0x199df7=_0x3cf0d3['offset'],_0x36cd03=_0x3cf0d3[_0x0999('0x30')]+_0x3cf0d3[_0x0999('0x31')],_0x24411f;if(_0x36cd03>=_0x1df4cf){_0x36cd03=_0x1df4cf;_0x24411f=0xc8;}else{_0x24411f=0xce;}_0x155d79[_0x0999('0x2d')](_0x24411f);return _0x155d79['set']('Content-Range',_0x199df7+'-'+_0x36cd03+'/'+_0x1df4cf)[_0x0999('0x2e')](_0x5c9fb4);}return null;};}function patchUpdates(_0x138eab){return function(_0x4d8b2a){try{jsonpatch[_0x0999('0x32')](_0x4d8b2a,_0x138eab,!![]);}catch(_0x153f0c){return BPromise[_0x0999('0x33')](_0x153f0c);}return _0x4d8b2a['save']();};}function saveUpdates(_0x2296df,_0x50c123){return function(_0x38cd21){if(_0x38cd21){return _0x38cd21[_0x0999('0x34')](_0x2296df)[_0x0999('0x35')](function(_0x45b1ee){return _0x45b1ee;});}return null;};}function removeEntity(_0x2f9101,_0x53f08d){return function(_0x5388f8){if(_0x5388f8){return _0x5388f8[_0x0999('0x36')]()[_0x0999('0x35')](function(){_0x2f9101[_0x0999('0x2d')](0xcc)[_0x0999('0x37')]();});}};}function handleEntityNotFound(_0x5e0c04,_0x38083c){return function(_0x3baccc){if(!_0x3baccc){_0x5e0c04['sendStatus'](0x194);}return _0x3baccc;};}function handleError(_0x97fdf7,_0x2da3e3){_0x2da3e3=_0x2da3e3||0x1f4;return function(_0x4611f9){logger[_0x0999('0x27')](_0x4611f9[_0x0999('0x38')]);if(_0x4611f9[_0x0999('0x39')]){delete _0x4611f9['name'];}_0x97fdf7[_0x0999('0x2d')](_0x2da3e3)['send'](_0x4611f9);};}exports[_0x0999('0x3a')]=function(_0x3753df,_0x4215c7){var _0x4f1706={},_0x152887={},_0x2043c8={'count':0x0,'rows':[]};var _0x408f3c=_[_0x0999('0x3b')](db[_0x0999('0x3c')][_0x0999('0x3d')],function(_0x4724d5){return{'name':_0x4724d5[_0x0999('0x3e')],'type':_0x4724d5[_0x0999('0x3f')][_0x0999('0x40')]};});_0x152887['model']=_[_0x0999('0x3b')](_0x408f3c,_0x0999('0x39'));_0x152887['query']=_[_0x0999('0x41')](_0x3753df[_0x0999('0x42')]);_0x152887[_0x0999('0x43')]=_[_0x0999('0x44')](_0x152887[_0x0999('0x45')],_0x152887['query']);_0x4f1706[_0x0999('0x46')]=_[_0x0999('0x44')](_0x152887[_0x0999('0x45')],qs['fields'](_0x3753df[_0x0999('0x42')][_0x0999('0x47')]));_0x4f1706[_0x0999('0x46')]=_0x4f1706[_0x0999('0x46')][_0x0999('0x48')]?_0x4f1706[_0x0999('0x46')]:_0x152887[_0x0999('0x45')];if(!_0x3753df[_0x0999('0x42')][_0x0999('0x49')](_0x0999('0x4a'))){_0x4f1706[_0x0999('0x31')]=qs[_0x0999('0x31')](_0x3753df['query'][_0x0999('0x31')]);_0x4f1706[_0x0999('0x30')]=qs['offset'](_0x3753df['query'][_0x0999('0x30')]);}_0x4f1706['order']=qs['sort'](_0x3753df[_0x0999('0x42')][_0x0999('0x4b')]);_0x4f1706[_0x0999('0x4c')]=qs[_0x0999('0x43')](_[_0x0999('0x4d')](_0x3753df[_0x0999('0x42')],_0x152887[_0x0999('0x43')]),_0x408f3c);if(_0x3753df[_0x0999('0x42')][_0x0999('0x4e')]){_0x4f1706[_0x0999('0x4c')]=_[_0x0999('0x4f')](_0x4f1706['where'],{'$or':_['map'](_0x408f3c,function(_0x1da79c){if(_0x1da79c[_0x0999('0x3f')]!==_0x0999('0x50')){var _0x18722a={};_0x18722a[_0x1da79c[_0x0999('0x39')]]={'$like':'%'+_0x3753df[_0x0999('0x42')][_0x0999('0x4e')]+'%'};return _0x18722a;}})});}_0x4f1706=_[_0x0999('0x4f')]({},_0x4f1706,_0x3753df['options']);var _0x51443f={'where':_0x4f1706[_0x0999('0x4c')]};return db[_0x0999('0x3c')]['count'](_0x51443f)[_0x0999('0x35')](function(_0x4c56b8){_0x2043c8['count']=_0x4c56b8;if(_0x3753df[_0x0999('0x42')][_0x0999('0x51')]){_0x4f1706[_0x0999('0x52')]=[{'all':!![]}];}return db[_0x0999('0x3c')][_0x0999('0x53')](_0x4f1706);})[_0x0999('0x35')](function(_0x24e5a6){_0x2043c8[_0x0999('0x54')]=_0x24e5a6;return _0x2043c8;})[_0x0999('0x35')](respondWithFilteredResult(_0x4215c7,_0x4f1706))['catch'](handleError(_0x4215c7,null));};exports[_0x0999('0x55')]=function(_0x29879b,_0x2faed7){var _0x969999={'raw':!![],'where':{'id':_0x29879b[_0x0999('0x56')]['id']}},_0x3f2123={};_0x3f2123[_0x0999('0x45')]=_[_0x0999('0x41')](db[_0x0999('0x3c')]['rawAttributes']);_0x3f2123[_0x0999('0x42')]=_['keys'](_0x29879b[_0x0999('0x42')]);_0x3f2123[_0x0999('0x43')]=_[_0x0999('0x44')](_0x3f2123[_0x0999('0x45')],_0x3f2123[_0x0999('0x42')]);_0x969999['attributes']=_[_0x0999('0x44')](_0x3f2123[_0x0999('0x45')],qs[_0x0999('0x47')](_0x29879b[_0x0999('0x42')][_0x0999('0x47')]));_0x969999[_0x0999('0x46')]=_0x969999['attributes'][_0x0999('0x48')]?_0x969999[_0x0999('0x46')]:_0x3f2123[_0x0999('0x45')];if(_0x29879b[_0x0999('0x42')][_0x0999('0x51')]){_0x969999[_0x0999('0x52')]=[{'all':!![]}];}_0x969999=_[_0x0999('0x4f')]({},_0x969999,_0x29879b['options']);return db[_0x0999('0x3c')][_0x0999('0x57')](_0x969999)[_0x0999('0x35')](handleEntityNotFound(_0x2faed7,null))[_0x0999('0x35')](respondWithResult(_0x2faed7,null))['catch'](handleError(_0x2faed7,null));};exports[_0x0999('0x58')]=function(_0x2291aa,_0xb1675b){return db['OpenchannelMessage'][_0x0999('0x58')](_0x2291aa[_0x0999('0x59')],{})[_0x0999('0x35')](respondWithResult(_0xb1675b,0xc9))['catch'](handleError(_0xb1675b,null));};exports[_0x0999('0x34')]=function(_0x155312,_0x1dba17){if(_0x155312[_0x0999('0x59')]['id']){delete _0x155312[_0x0999('0x59')]['id'];}return db[_0x0999('0x3c')][_0x0999('0x57')]({'where':{'id':_0x155312[_0x0999('0x56')]['id']}})[_0x0999('0x35')](handleEntityNotFound(_0x1dba17,null))['then'](saveUpdates(_0x155312[_0x0999('0x59')],null))[_0x0999('0x35')](respondWithResult(_0x1dba17,null))[_0x0999('0x2c')](handleError(_0x1dba17,null));};exports[_0x0999('0x36')]=function(_0x239ee5,_0x4d86d4){return db['OpenchannelMessage'][_0x0999('0x57')]({'where':{'id':_0x239ee5[_0x0999('0x56')]['id']}})['then'](handleEntityNotFound(_0x4d86d4,null))['then'](removeEntity(_0x4d86d4,null))['catch'](handleError(_0x4d86d4,null));};exports[_0x0999('0x5a')]=function(_0x3b44b5,_0x124572){return db[_0x0999('0x3c')][_0x0999('0x5a')]()[_0x0999('0x35')](respondWithResult(_0x124572,null))[_0x0999('0x2c')](handleError(_0x124572,null));};var interaction_log=require(_0x0999('0x15'))(_0x0999('0x5b'));exports['accept']=function(_0x12e759,_0x4c1e24,_0x2a3f46){var _0x13f9c4={'channel':_0x0999('0x5c')};if(_0x12e759[_0x0999('0x59')]['id']){delete _0x12e759[_0x0999('0x59')]['id'];}_0x12e759['body']['read']=!![];_0x12e759[_0x0999('0x59')][_0x0999('0x5d')]=moment()[_0x0999('0x5e')](_0x0999('0x5f'));_0x12e759[_0x0999('0x59')]['UserId']=_0x12e759[_0x0999('0x59')][_0x0999('0x60')]||_0x12e759[_0x0999('0x61')]['id'];return db[_0x0999('0x3c')][_0x0999('0x57')]({'where':{'id':_0x12e759[_0x0999('0x56')]['id'],'UserId':null},'include':[{'model':db[_0x0999('0x62')],'as':_0x0999('0x63')}]})[_0x0999('0x35')](handleEntityNotFound(_0x4c1e24,null))[_0x0999('0x35')](saveUpdates(_0x12e759['body'],null))[_0x0999('0x35')](function(_0x1fef12){if(_0x1fef12){_0x13f9c4['message']=_0x1fef12[_0x0999('0x64')]({'plain':!![]});return db[_0x0999('0x65')][_0x0999('0x57')]({'where':{'id':_0x1fef12[_0x0999('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x4c1e24,null))[_0x0999('0x35')](function(_0x42e294){if(_0x42e294){return _0x42e294[_0x0999('0x34')]({'UserId':_0x12e759['body']['UserId'],'read1stAt':_[_0x0999('0x67')](_0x42e294[_0x0999('0x68')])?moment()[_0x0999('0x5e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x0999('0x35')](function(_0xbe138f){if(_0xbe138f){_0x13f9c4[_0x0999('0x69')]=_0xbe138f['get']({'plain':!![]});interaction_log['info'](_0x0999('0x6a'),_0x12e759[_0x0999('0x61')]['id'],_0x12e759[_0x0999('0x61')][_0x0999('0x39')],_0x12e759[_0x0999('0x61')]['role'],_0x13f9c4['interaction']['id'],_0x12e759['body']?JSON[_0x0999('0x26')](_0x12e759[_0x0999('0x59')]):_0x0999('0x6b'));return respondWithRpcPromise('AcceptMessage',_0x0999('0x6c'),_0x13f9c4);}return null;})[_0x0999('0x35')](function(_0x139d36){if(_0x139d36){if(_0x12e759['body'][_0x0999('0x6d')]){_0x13f9c4[_0x0999('0x29')][_0x0999('0x6e')]=util['format']('SIP/%s',_0x12e759[_0x0999('0x61')]['name']);_0x13f9c4[_0x0999('0x29')]['channel']=_0x13f9c4[_0x0999('0x6f')];_0x13f9c4[_0x0999('0x29')][_0x0999('0x70')]='accept';return respondWithRpcPromise(_0x0999('0x71'),'EventManager',{'event':_0x0999('0x72'),'message':_0x13f9c4[_0x0999('0x29')]},client9002)[_0x0999('0x35')](function(){return _0x13f9c4;});}return _0x13f9c4;}return null;})[_0x0999('0x35')](respondWithResult(_0x4c1e24,null))[_0x0999('0x2c')](handleError(_0x4c1e24,null));};var interaction_log=require(_0x0999('0x15'))(_0x0999('0x5b'));exports[_0x0999('0x33')]=function(_0x2dd361,_0x3b046f,_0xc2a04){var _0x462f02={'agent':{},'channel':'openchannel'};if(_0x2dd361[_0x0999('0x59')]['id']){delete _0x2dd361[_0x0999('0x59')]['id'];}_0x2dd361['body'][_0x0999('0x60')]=_0x2dd361[_0x0999('0x59')][_0x0999('0x60')]||_0x2dd361[_0x0999('0x61')]['id'];_0x462f02[_0x0999('0x73')]['id']=_0x2dd361[_0x0999('0x59')][_0x0999('0x60')];return db[_0x0999('0x3c')][_0x0999('0x57')]({'where':{'id':_0x2dd361['params']['id'],'UserId':null}})[_0x0999('0x35')](handleEntityNotFound(_0x3b046f,null))['then'](function(_0x1d68b8){if(_0x1d68b8){_0x462f02[_0x0999('0x29')]=_0x1d68b8[_0x0999('0x64')]({'plain':!![]});return db[_0x0999('0x65')][_0x0999('0x57')]({'where':{'id':_0x1d68b8['OpenchannelInteractionId']}});}return null;})[_0x0999('0x35')](handleEntityNotFound(_0x3b046f,null))['then'](function(_0x1b35e1){if(_0x1b35e1){_0x462f02[_0x0999('0x69')]=_0x1b35e1[_0x0999('0x64')]({'plain':!![]});interaction_log[_0x0999('0x22')](_0x0999('0x74'),_0x2dd361[_0x0999('0x61')]['id'],_0x2dd361['user']['name'],_0x2dd361[_0x0999('0x61')][_0x0999('0x75')],_0x462f02['interaction']['id'],_0x2dd361[_0x0999('0x59')]?JSON[_0x0999('0x26')](_0x2dd361[_0x0999('0x59')]):'null');return respondWithRpcPromise(_0x0999('0x76'),_0x0999('0x77'),_0x462f02);}return null;})['then'](function(_0x1d65e7){if(_0x1d65e7){_0x1d65e7[_0x0999('0x29')]['interface']=util[_0x0999('0x5e')](_0x0999('0x78'),_0x2dd361[_0x0999('0x61')]['name']);_0x1d65e7[_0x0999('0x29')]['channel']=_0x462f02['channel'];_0x1d65e7[_0x0999('0x29')]['event']=_0x0999('0x33');respondWithRpcPromise(_0x0999('0x71'),_0x0999('0x71'),{'event':_0x0999('0x79'),'message':_0x1d65e7[_0x0999('0x29')]},client9002);return _0x462f02;}return null;})[_0x0999('0x35')](respondWithResult(_0x3b046f,null))[_0x0999('0x2c')](handleError(_0x3b046f,null));};