df37ee1e43cc94a5c672f764bd1a7ba36c0f3212
[motion2.git] / server / api / chatMessage / chatMessage.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 _0xa9e0=['query','keys','intersection','attributes','fields','length','order','sort','filters','pick','filter','where','type','VIRTUAL','options','includeAll','include','findAll','rows','params','find','create','../../config/logger','chat-interactions','accept','chat','read','readAt','format','UserId','user','CmContact','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','role','acceptMessage','manual','interface','channel','event','EventManager','acceptmessage','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','rejectmessage','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','client','http','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','destroy','stack','name','send','render','merge','body','agent','interaction','index','ChatMessage','rawAttributes','fieldName','model','map'];(function(_0x16ea87,_0x378d8b){var _0x6e7b1c=function(_0x26306e){while(--_0x26306e){_0x16ea87['push'](_0x16ea87['shift']());}};_0x6e7b1c(++_0x378d8b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];config[_0x0a9e('0x15')]=_[_0x0a9e('0x16')](config[_0x0a9e('0x15')],{'host':_0x0a9e('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x15')]));require(_0x0a9e('0x18'))[_0x0a9e('0x19')](socket);var jayson=require(_0x0a9e('0x1a'));var client=jayson[_0x0a9e('0x1b')][_0x0a9e('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x0a9e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5d0880,_0x1985b6,_0x519dfd,_0x16033c){return new BPromise(function(_0x12066b,_0x48f32d){var _0x225616=_0x16033c||client;return _0x225616['request'](_0x5d0880,_0x519dfd)[_0x0a9e('0x1d')](function(_0x478723){logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));logger[_0x0a9e('0x21')](_0x0a9e('0x22'),_0x1985b6,_0x0a9e('0x20'),JSON[_0x0a9e('0x23')](_0x478723));if(_0x478723[_0x0a9e('0x24')]){if(_0x478723[_0x0a9e('0x24')][_0x0a9e('0x25')]===0x1f4){logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')]['message']);return _0x48f32d(_0x478723[_0x0a9e('0x24')]['message']);}logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')][_0x0a9e('0x26')]);return _0x12066b(_0x478723[_0x0a9e('0x24')]['message']);}else{logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));_0x12066b(_0x478723[_0x0a9e('0x27')][_0x0a9e('0x26')]);}})[_0x0a9e('0x28')](function(_0x16b1ca){logger['error']('ChatMessage,\x20%s,\x20%s',_0x1985b6,_0x16b1ca);_0x48f32d(_0x16b1ca);});});}function respondWithStatusCode(_0x197ec0,_0x3a8e58){_0x3a8e58=_0x3a8e58||0xcc;return function(_0x40c424){if(_0x40c424){return _0x197ec0[_0x0a9e('0x29')](_0x3a8e58);}return _0x197ec0['status'](_0x3a8e58)[_0x0a9e('0x2a')]();};}function respondWithResult(_0x479bc4,_0x45a1e7){_0x45a1e7=_0x45a1e7||0xc8;return function(_0x5bfb33){if(_0x5bfb33){return _0x479bc4[_0x0a9e('0x2b')](_0x45a1e7)[_0x0a9e('0x2c')](_0x5bfb33);}};}function respondWithFilteredResult(_0x25fba9,_0x14433c){return function(_0x140511){if(_0x140511){var _0x1538a4=typeof _0x14433c[_0x0a9e('0x2d')]===_0x0a9e('0x2e')&&typeof _0x14433c['limit']===_0x0a9e('0x2e');var _0x468813=_0x140511[_0x0a9e('0x2f')];var _0x2ec755=_0x1538a4?0x0:_0x14433c['offset'];var _0x15b200=_0x1538a4?_0x140511[_0x0a9e('0x2f')]:_0x14433c[_0x0a9e('0x2d')]+_0x14433c[_0x0a9e('0x30')];var _0x58b06f;if(_0x15b200>=_0x468813){_0x15b200=_0x468813;_0x58b06f=0xc8;}else{_0x58b06f=0xce;}_0x25fba9[_0x0a9e('0x2b')](_0x58b06f);return _0x25fba9[_0x0a9e('0x31')](_0x0a9e('0x32'),_0x2ec755+'-'+_0x15b200+'/'+_0x468813)[_0x0a9e('0x2c')](_0x140511);}return null;};}function patchUpdates(_0x540530){return function(_0x426950){try{jsonpatch['apply'](_0x426950,_0x540530,!![]);}catch(_0x2407f9){return BPromise[_0x0a9e('0x33')](_0x2407f9);}return _0x426950[_0x0a9e('0x34')]();};}function saveUpdates(_0x33bdb7,_0x25ce3a){return function(_0x5180f1){if(_0x5180f1){return _0x5180f1[_0x0a9e('0x35')](_0x33bdb7)[_0x0a9e('0x1d')](function(_0x40cb85){return _0x40cb85;});}return null;};}function removeEntity(_0x2da5c0,_0x2b45ea){return function(_0x409319){if(_0x409319){return _0x409319[_0x0a9e('0x36')]()[_0x0a9e('0x1d')](function(){_0x2da5c0['status'](0xcc)[_0x0a9e('0x2a')]();});}};}function handleEntityNotFound(_0x5e7238,_0x2cc7a0){return function(_0x14b13f){if(!_0x14b13f){_0x5e7238[_0x0a9e('0x29')](0x194);}return _0x14b13f;};}function handleError(_0x3f3d41,_0x567193){_0x567193=_0x567193||0x1f4;return function(_0x191e91){logger[_0x0a9e('0x24')](_0x191e91[_0x0a9e('0x37')]);if(_0x191e91[_0x0a9e('0x38')]){delete _0x191e91['name'];}_0x3f3d41['status'](_0x567193)[_0x0a9e('0x39')](_0x191e91);};}function getMustacheRender(_0x5640eb,_0x24936a){return Mustache[_0x0a9e('0x3a')](_0x5640eb,_[_0x0a9e('0x3b')](_0x24936a[_0x0a9e('0x3c')],{'contact':_0x24936a['contact'],'message':_0x24936a[_0x0a9e('0x26')],'agent':_0x24936a[_0x0a9e('0x3d')],'interaction':_0x24936a[_0x0a9e('0x3e')],'account':_0x24936a['account']}))||'';}exports[_0x0a9e('0x3f')]=function(_0x1a180b,_0x289467){var _0x4c1c0e={},_0x546ef8={},_0x11b61d={'count':0x0,'rows':[]};var _0x40d766=_['map'](db[_0x0a9e('0x40')][_0x0a9e('0x41')],function(_0x2e1b3a){return{'name':_0x2e1b3a[_0x0a9e('0x42')],'type':_0x2e1b3a['type']['key']};});_0x546ef8[_0x0a9e('0x43')]=_[_0x0a9e('0x44')](_0x40d766,'name');_0x546ef8[_0x0a9e('0x45')]=_[_0x0a9e('0x46')](_0x1a180b[_0x0a9e('0x45')]);_0x546ef8['filters']=_[_0x0a9e('0x47')](_0x546ef8[_0x0a9e('0x43')],_0x546ef8[_0x0a9e('0x45')]);_0x4c1c0e[_0x0a9e('0x48')]=_[_0x0a9e('0x47')](_0x546ef8[_0x0a9e('0x43')],qs[_0x0a9e('0x49')](_0x1a180b[_0x0a9e('0x45')][_0x0a9e('0x49')]));_0x4c1c0e[_0x0a9e('0x48')]=_0x4c1c0e[_0x0a9e('0x48')][_0x0a9e('0x4a')]?_0x4c1c0e[_0x0a9e('0x48')]:_0x546ef8[_0x0a9e('0x43')];if(!_0x1a180b[_0x0a9e('0x45')]['hasOwnProperty']('nolimit')){_0x4c1c0e[_0x0a9e('0x30')]=qs[_0x0a9e('0x30')](_0x1a180b[_0x0a9e('0x45')][_0x0a9e('0x30')]);_0x4c1c0e[_0x0a9e('0x2d')]=qs[_0x0a9e('0x2d')](_0x1a180b[_0x0a9e('0x45')][_0x0a9e('0x2d')]);}_0x4c1c0e[_0x0a9e('0x4b')]=qs[_0x0a9e('0x4c')](_0x1a180b[_0x0a9e('0x45')][_0x0a9e('0x4c')]);_0x4c1c0e['where']=qs[_0x0a9e('0x4d')](_[_0x0a9e('0x4e')](_0x1a180b[_0x0a9e('0x45')],_0x546ef8[_0x0a9e('0x4d')]),_0x40d766);if(_0x1a180b[_0x0a9e('0x45')][_0x0a9e('0x4f')]){_0x4c1c0e[_0x0a9e('0x50')]=_[_0x0a9e('0x3b')](_0x4c1c0e['where'],{'$or':_[_0x0a9e('0x44')](_0x40d766,function(_0x48fd45){if(_0x48fd45[_0x0a9e('0x51')]!==_0x0a9e('0x52')){var _0x8d6dd1={};_0x8d6dd1[_0x48fd45['name']]={'$like':'%'+_0x1a180b[_0x0a9e('0x45')][_0x0a9e('0x4f')]+'%'};return _0x8d6dd1;}})});}_0x4c1c0e=_[_0x0a9e('0x3b')]({},_0x4c1c0e,_0x1a180b[_0x0a9e('0x53')]);var _0x45c845={'where':_0x4c1c0e[_0x0a9e('0x50')]};return db[_0x0a9e('0x40')]['count'](_0x45c845)[_0x0a9e('0x1d')](function(_0x1bde3c){_0x11b61d[_0x0a9e('0x2f')]=_0x1bde3c;if(_0x1a180b[_0x0a9e('0x45')][_0x0a9e('0x54')]){_0x4c1c0e[_0x0a9e('0x55')]=[{'all':!![]}];}return db[_0x0a9e('0x40')][_0x0a9e('0x56')](_0x4c1c0e);})[_0x0a9e('0x1d')](function(_0x58a5c2){_0x11b61d[_0x0a9e('0x57')]=_0x58a5c2;return _0x11b61d;})[_0x0a9e('0x1d')](respondWithFilteredResult(_0x289467,_0x4c1c0e))['catch'](handleError(_0x289467,null));};exports['show']=function(_0x5ddf84,_0x1adfee){var _0x4317e3={'raw':!![],'where':{'id':_0x5ddf84[_0x0a9e('0x58')]['id']}},_0x37edaa={};_0x37edaa[_0x0a9e('0x43')]=_[_0x0a9e('0x46')](db[_0x0a9e('0x40')][_0x0a9e('0x41')]);_0x37edaa['query']=_['keys'](_0x5ddf84['query']);_0x37edaa[_0x0a9e('0x4d')]=_[_0x0a9e('0x47')](_0x37edaa[_0x0a9e('0x43')],_0x37edaa['query']);_0x4317e3[_0x0a9e('0x48')]=_[_0x0a9e('0x47')](_0x37edaa['model'],qs['fields'](_0x5ddf84[_0x0a9e('0x45')]['fields']));_0x4317e3[_0x0a9e('0x48')]=_0x4317e3['attributes'][_0x0a9e('0x4a')]?_0x4317e3[_0x0a9e('0x48')]:_0x37edaa[_0x0a9e('0x43')];if(_0x5ddf84['query'][_0x0a9e('0x54')]){_0x4317e3[_0x0a9e('0x55')]=[{'all':!![]}];}_0x4317e3=_['merge']({},_0x4317e3,_0x5ddf84['options']);return db[_0x0a9e('0x40')][_0x0a9e('0x59')](_0x4317e3)['then'](handleEntityNotFound(_0x1adfee,null))[_0x0a9e('0x1d')](respondWithResult(_0x1adfee,null))['catch'](handleError(_0x1adfee,null));};exports[_0x0a9e('0x5a')]=function(_0x523cd2,_0xe22ccc){return db['ChatMessage']['create'](_0x523cd2['body'],{})[_0x0a9e('0x1d')](respondWithResult(_0xe22ccc,0xc9))['catch'](handleError(_0xe22ccc,null));};exports[_0x0a9e('0x35')]=function(_0x65432,_0x3cfd00){if(_0x65432[_0x0a9e('0x3c')]['id']){delete _0x65432[_0x0a9e('0x3c')]['id'];}return db[_0x0a9e('0x40')][_0x0a9e('0x59')]({'where':{'id':_0x65432[_0x0a9e('0x58')]['id']}})['then'](handleEntityNotFound(_0x3cfd00,null))[_0x0a9e('0x1d')](saveUpdates(_0x65432[_0x0a9e('0x3c')],null))[_0x0a9e('0x1d')](respondWithResult(_0x3cfd00,null))[_0x0a9e('0x28')](handleError(_0x3cfd00,null));};exports[_0x0a9e('0x36')]=function(_0x156662,_0x5d86e9){return db[_0x0a9e('0x40')][_0x0a9e('0x59')]({'where':{'id':_0x156662['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x5d86e9,null))['then'](removeEntity(_0x5d86e9,null))[_0x0a9e('0x28')](handleError(_0x5d86e9,null));};exports['describe']=function(_0x4b3c1a,_0x5674ee){return db[_0x0a9e('0x40')]['describe']()[_0x0a9e('0x1d')](respondWithResult(_0x5674ee,null))[_0x0a9e('0x28')](handleError(_0x5674ee,null));};var interaction_log=require(_0x0a9e('0x5b'))(_0x0a9e('0x5c'));exports[_0x0a9e('0x5d')]=function(_0x26d7db,_0x49eed0,_0x1627a7){var _0x5854cc={'agent':{},'channel':_0x0a9e('0x5e')};if(_0x26d7db[_0x0a9e('0x3c')]['id']){delete _0x26d7db[_0x0a9e('0x3c')]['id'];}_0x26d7db['body'][_0x0a9e('0x5f')]=!![];_0x26d7db[_0x0a9e('0x3c')][_0x0a9e('0x60')]=moment()[_0x0a9e('0x61')]('YYYY-MM-DD\x20HH:mm:ss');_0x26d7db[_0x0a9e('0x3c')][_0x0a9e('0x62')]=_0x26d7db['body'][_0x0a9e('0x62')]||_0x26d7db[_0x0a9e('0x63')]['id'];_0x5854cc[_0x0a9e('0x3d')]['id']=_0x26d7db[_0x0a9e('0x3c')][_0x0a9e('0x62')];return db['ChatMessage'][_0x0a9e('0x59')]({'where':{'id':_0x26d7db[_0x0a9e('0x58')]['id'],'UserId':null},'include':[{'model':db[_0x0a9e('0x64')],'as':'Contact'}]})[_0x0a9e('0x1d')](handleEntityNotFound(_0x49eed0,null))['then'](saveUpdates(_0x26d7db['body'],null))[_0x0a9e('0x1d')](function(_0x4556c5){if(_0x4556c5){_0x5854cc[_0x0a9e('0x26')]=_0x4556c5[_0x0a9e('0x65')]({'plain':!![]});return db[_0x0a9e('0x66')][_0x0a9e('0x59')]({'where':{'id':_0x4556c5[_0x0a9e('0x67')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x49eed0,null))[_0x0a9e('0x1d')](function(_0x1cc4f3){if(_0x1cc4f3){return _0x1cc4f3[_0x0a9e('0x35')]({'UserId':_0x26d7db[_0x0a9e('0x3c')][_0x0a9e('0x62')],'read1stAt':_[_0x0a9e('0x68')](_0x1cc4f3[_0x0a9e('0x69')])?moment()[_0x0a9e('0x61')](_0x0a9e('0x6a')):undefined});}return null;})[_0x0a9e('0x1d')](function(_0x5150a4){if(_0x5150a4){_0x5854cc[_0x0a9e('0x3e')]=_0x5150a4[_0x0a9e('0x65')]({'plain':!![]});interaction_log[_0x0a9e('0x1e')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x26d7db[_0x0a9e('0x63')]['id'],_0x26d7db[_0x0a9e('0x63')]['name'],_0x26d7db[_0x0a9e('0x63')][_0x0a9e('0x6b')],_0x5854cc[_0x0a9e('0x3e')]['id'],_0x26d7db[_0x0a9e('0x3c')]?JSON[_0x0a9e('0x23')](_0x26d7db['body']):'null');return respondWithRpcPromise('AcceptMessage',_0x0a9e('0x6c'),_0x5854cc);}return null;})[_0x0a9e('0x1d')](function(_0x1104ad){if(_0x1104ad){if(_0x26d7db[_0x0a9e('0x3c')][_0x0a9e('0x6d')]){_0x5854cc[_0x0a9e('0x26')][_0x0a9e('0x6e')]=util[_0x0a9e('0x61')]('SIP/%s',_0x26d7db[_0x0a9e('0x63')][_0x0a9e('0x38')]);_0x5854cc[_0x0a9e('0x26')]['channel']=_0x5854cc[_0x0a9e('0x6f')];_0x5854cc['message'][_0x0a9e('0x70')]=_0x0a9e('0x5d');return respondWithRpcPromise('EventManager',_0x0a9e('0x71'),{'event':_0x0a9e('0x72'),'message':_[_0x0a9e('0x3b')](_0x5854cc[_0x0a9e('0x26')],JSON['parse'](_0x5854cc[_0x0a9e('0x3e')][_0x0a9e('0x73')]))},client9002)[_0x0a9e('0x1d')](function(){return _0x5854cc;});}return _0x5854cc;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x49eed0,null))['catch'](handleError(_0x49eed0,null));};var interaction_log=require(_0x0a9e('0x5b'))(_0x0a9e('0x5c'));exports[_0x0a9e('0x33')]=function(_0x361b21,_0x4abc8f,_0x290d43){var _0x3511c9={'agent':{},'channel':_0x0a9e('0x5e')};if(_0x361b21[_0x0a9e('0x3c')]['id']){delete _0x361b21[_0x0a9e('0x3c')]['id'];}_0x361b21[_0x0a9e('0x3c')][_0x0a9e('0x62')]=_0x361b21[_0x0a9e('0x3c')][_0x0a9e('0x62')]||_0x361b21[_0x0a9e('0x63')]['id'];_0x3511c9[_0x0a9e('0x3d')]['id']=_0x361b21[_0x0a9e('0x3c')][_0x0a9e('0x62')];return db[_0x0a9e('0x40')]['find']({'where':{'id':_0x361b21[_0x0a9e('0x58')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4abc8f,null))[_0x0a9e('0x1d')](function(_0x563627){if(_0x563627){_0x3511c9[_0x0a9e('0x26')]=_0x563627[_0x0a9e('0x65')]({'plain':!![]});return db[_0x0a9e('0x66')][_0x0a9e('0x59')]({'where':{'id':_0x563627['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x4abc8f,null))[_0x0a9e('0x1d')](function(_0x2bbdb5){if(_0x2bbdb5){_0x3511c9['interaction']=_0x2bbdb5[_0x0a9e('0x65')]({'plain':!![]});interaction_log['info'](_0x0a9e('0x74'),_0x361b21[_0x0a9e('0x63')]['id'],_0x361b21['user'][_0x0a9e('0x38')],_0x361b21[_0x0a9e('0x63')][_0x0a9e('0x6b')],_0x3511c9[_0x0a9e('0x3e')]['id'],_0x361b21[_0x0a9e('0x3c')]?JSON[_0x0a9e('0x23')](_0x361b21[_0x0a9e('0x3c')]):'null');return respondWithRpcPromise(_0x0a9e('0x75'),_0x0a9e('0x76'),_0x3511c9);}return null;})[_0x0a9e('0x1d')](function(_0x16e5b9){if(_0x16e5b9){_0x16e5b9['message'][_0x0a9e('0x6e')]=util[_0x0a9e('0x61')]('SIP/%s',_0x361b21[_0x0a9e('0x63')]['name']);_0x16e5b9[_0x0a9e('0x26')][_0x0a9e('0x6f')]=_0x3511c9[_0x0a9e('0x6f')];_0x16e5b9[_0x0a9e('0x26')]['event']='reject';respondWithRpcPromise(_0x0a9e('0x71'),_0x0a9e('0x71'),{'event':_0x0a9e('0x77'),'message':_0x16e5b9['message']},client9002);return _0x3511c9;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x4abc8f,null))[_0x0a9e('0x28')](handleError(_0x4abc8f,null));};