f8bd630bf7521f2d3749053c498c173dfea83e5e
[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 _0x77a2=['stack','name','map','ChatMessage','rawAttributes','fieldName','type','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','sort','filters','filter','where','includeAll','include','findAll','rows','show','params','options','find','catch','create','update','body','describe','../../config/logger','chat-interactions','accept','read','format','UserId','CmContact','Contact','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null','AcceptMessage','acceptMessage','manual','interface','SIP/%s','channel','EventManager','acceptmessage','merge','formData','chat','agent','role','RejectMessage','rejectMessage','rejectmessage','html-pdf','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','end','json','count','offset','limit','Content-Range','apply','reject','save','destroy'];(function(_0x406ae7,_0x12181b){var _0x5a5b9d=function(_0x3f20c2){while(--_0x3f20c2){_0x406ae7['push'](_0x406ae7['shift']());}};_0x5a5b9d(++_0x12181b);}(_0x77a2,0x1b0));var _0x277a=function(_0x2d8a35,_0x1d7f2b){_0x2d8a35=_0x2d8a35-0x0;var _0x38ac7d=_0x77a2[_0x2d8a35];return _0x38ac7d;};'use strict';var pdf=require(_0x277a('0x0'));var emlformat=require(_0x277a('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x277a('0x2'));var rp=require(_0x277a('0x3'));var moment=require(_0x277a('0x4'));var BPromise=require(_0x277a('0x5'));var Mustache=require(_0x277a('0x6'));var util=require(_0x277a('0x7'));var path=require(_0x277a('0x8'));var sox=require(_0x277a('0x9'));var csv=require(_0x277a('0xa'));var ejs=require(_0x277a('0xb'));var fs=require('fs');var _=require(_0x277a('0xc'));var squel=require(_0x277a('0xd'));var crypto=require(_0x277a('0xe'));var jsforce=require(_0x277a('0xf'));var deskjs=require(_0x277a('0x10'));var toCsv=require(_0x277a('0xa'));var querystring=require(_0x277a('0x11'));var Papa=require(_0x277a('0x12'));var Redis=require('ioredis');var authService=require(_0x277a('0x13'));var qs=require(_0x277a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x277a('0x15'));var utils=require(_0x277a('0x16'));var config=require(_0x277a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x277a('0x18'))['db'];config[_0x277a('0x19')]=_['defaults'](config[_0x277a('0x19')],{'host':_0x277a('0x1a'),'port':0x18eb});var socket=require(_0x277a('0x1b'))(new Redis(config[_0x277a('0x19')]));require(_0x277a('0x1c'))[_0x277a('0x1d')](socket);var jayson=require(_0x277a('0x1e'));var client=jayson[_0x277a('0x1f')][_0x277a('0x20')]({'port':0x232c});var client9002=jayson['client'][_0x277a('0x20')]({'port':0x232a});function respondWithRpcPromise(_0xcf60df,_0x202369,_0x3fd8c9,_0x13abb0){return new BPromise(function(_0x354374,_0x103868){var _0xd682d5=_0x13abb0||client;return _0xd682d5[_0x277a('0x21')](_0xcf60df,_0x3fd8c9)[_0x277a('0x22')](function(_0x29cb38){logger[_0x277a('0x23')](_0x277a('0x24'),_0x202369,_0x277a('0x25'));logger[_0x277a('0x26')](_0x277a('0x27'),_0x202369,_0x277a('0x25'),JSON[_0x277a('0x28')](_0x29cb38));if(_0x29cb38[_0x277a('0x29')]){if(_0x29cb38[_0x277a('0x29')][_0x277a('0x2a')]===0x1f4){logger[_0x277a('0x29')]('ChatMessage,\x20%s,\x20%s',_0x202369,_0x29cb38[_0x277a('0x29')][_0x277a('0x2b')]);return _0x103868(_0x29cb38[_0x277a('0x29')][_0x277a('0x2b')]);}logger[_0x277a('0x29')](_0x277a('0x24'),_0x202369,_0x29cb38[_0x277a('0x29')][_0x277a('0x2b')]);return _0x354374(_0x29cb38['error'][_0x277a('0x2b')]);}else{logger[_0x277a('0x23')](_0x277a('0x24'),_0x202369,'request\x20sent');_0x354374(_0x29cb38['result'][_0x277a('0x2b')]);}})['catch'](function(_0x3b9855){logger['error']('ChatMessage,\x20%s,\x20%s',_0x202369,_0x3b9855);_0x103868(_0x3b9855);});});}function respondWithStatusCode(_0x5a97e2,_0x220432){_0x220432=_0x220432||0xcc;return function(_0x137a61){if(_0x137a61){return _0x5a97e2[_0x277a('0x2c')](_0x220432);}return _0x5a97e2[_0x277a('0x2d')](_0x220432)[_0x277a('0x2e')]();};}function respondWithResult(_0x516eb3,_0x61b1a1){_0x61b1a1=_0x61b1a1||0xc8;return function(_0x2b6448){if(_0x2b6448){return _0x516eb3['status'](_0x61b1a1)[_0x277a('0x2f')](_0x2b6448);}};}function respondWithFilteredResult(_0x43f31a,_0x51d5a3){return function(_0x400235){if(_0x400235){var _0x5a84e7=_0x400235[_0x277a('0x30')],_0x15408e=_0x51d5a3[_0x277a('0x31')],_0x15109b=_0x51d5a3[_0x277a('0x31')]+_0x51d5a3[_0x277a('0x32')],_0x3aae50;if(_0x15109b>=_0x5a84e7){_0x15109b=_0x5a84e7;_0x3aae50=0xc8;}else{_0x3aae50=0xce;}_0x43f31a['status'](_0x3aae50);return _0x43f31a['set'](_0x277a('0x33'),_0x15408e+'-'+_0x15109b+'/'+_0x5a84e7)[_0x277a('0x2f')](_0x400235);}return null;};}function patchUpdates(_0x4d9165){return function(_0x26f8fa){try{jsonpatch[_0x277a('0x34')](_0x26f8fa,_0x4d9165,!![]);}catch(_0x163222){return BPromise[_0x277a('0x35')](_0x163222);}return _0x26f8fa[_0x277a('0x36')]();};}function saveUpdates(_0x45651d,_0xc896e2){return function(_0x125d6b){if(_0x125d6b){return _0x125d6b['update'](_0x45651d)[_0x277a('0x22')](function(_0x58cb47){return _0x58cb47;});}return null;};}function removeEntity(_0x3b4338,_0xe3c670){return function(_0x8e1ab3){if(_0x8e1ab3){return _0x8e1ab3[_0x277a('0x37')]()[_0x277a('0x22')](function(){_0x3b4338['status'](0xcc)[_0x277a('0x2e')]();});}};}function handleEntityNotFound(_0x295a93,_0x2af170){return function(_0x338c27){if(!_0x338c27){_0x295a93[_0x277a('0x2c')](0x194);}return _0x338c27;};}function handleError(_0x5f20c5,_0x301b7d){_0x301b7d=_0x301b7d||0x1f4;return function(_0x52815b){logger[_0x277a('0x29')](_0x52815b[_0x277a('0x38')]);if(_0x52815b[_0x277a('0x39')]){delete _0x52815b['name'];}_0x5f20c5[_0x277a('0x2d')](_0x301b7d)['send'](_0x52815b);};}exports['index']=function(_0x5add23,_0x5dfb9e){var _0xd917e3={},_0x5716ca={},_0x23f377={'count':0x0,'rows':[]};var _0xec22=_[_0x277a('0x3a')](db[_0x277a('0x3b')][_0x277a('0x3c')],function(_0x1d1a57){return{'name':_0x1d1a57[_0x277a('0x3d')],'type':_0x1d1a57[_0x277a('0x3e')]['key']};});_0x5716ca[_0x277a('0x3f')]=_[_0x277a('0x3a')](_0xec22,_0x277a('0x39'));_0x5716ca['query']=_[_0x277a('0x40')](_0x5add23[_0x277a('0x41')]);_0x5716ca['filters']=_[_0x277a('0x42')](_0x5716ca[_0x277a('0x3f')],_0x5716ca[_0x277a('0x41')]);_0xd917e3[_0x277a('0x43')]=_['intersection'](_0x5716ca[_0x277a('0x3f')],qs['fields'](_0x5add23[_0x277a('0x41')][_0x277a('0x44')]));_0xd917e3[_0x277a('0x43')]=_0xd917e3[_0x277a('0x43')]['length']?_0xd917e3['attributes']:_0x5716ca[_0x277a('0x3f')];if(!_0x5add23[_0x277a('0x41')][_0x277a('0x45')](_0x277a('0x46'))){_0xd917e3[_0x277a('0x32')]=qs[_0x277a('0x32')](_0x5add23['query'][_0x277a('0x32')]);_0xd917e3[_0x277a('0x31')]=qs['offset'](_0x5add23[_0x277a('0x41')][_0x277a('0x31')]);}_0xd917e3['order']=qs[_0x277a('0x47')](_0x5add23[_0x277a('0x41')]['sort']);_0xd917e3['where']=qs['filters'](_['pick'](_0x5add23[_0x277a('0x41')],_0x5716ca[_0x277a('0x48')]),_0xec22);if(_0x5add23[_0x277a('0x41')][_0x277a('0x49')]){_0xd917e3['where']=_['merge'](_0xd917e3[_0x277a('0x4a')],{'$or':_[_0x277a('0x3a')](_0xec22,function(_0x523aae){if(_0x523aae[_0x277a('0x3e')]!=='VIRTUAL'){var _0x4e8748={};_0x4e8748[_0x523aae[_0x277a('0x39')]]={'$like':'%'+_0x5add23[_0x277a('0x41')]['filter']+'%'};return _0x4e8748;}})});}_0xd917e3=_['merge']({},_0xd917e3,_0x5add23['options']);var _0x2d7e1b={'where':_0xd917e3['where']};return db['ChatMessage'][_0x277a('0x30')](_0x2d7e1b)[_0x277a('0x22')](function(_0x490f37){_0x23f377[_0x277a('0x30')]=_0x490f37;if(_0x5add23[_0x277a('0x41')][_0x277a('0x4b')]){_0xd917e3[_0x277a('0x4c')]=[{'all':!![]}];}return db['ChatMessage'][_0x277a('0x4d')](_0xd917e3);})[_0x277a('0x22')](function(_0x168a13){_0x23f377[_0x277a('0x4e')]=_0x168a13;return _0x23f377;})[_0x277a('0x22')](respondWithFilteredResult(_0x5dfb9e,_0xd917e3))['catch'](handleError(_0x5dfb9e,null));};exports[_0x277a('0x4f')]=function(_0x428e58,_0x3f8400){var _0x3bb076={'raw':!![],'where':{'id':_0x428e58[_0x277a('0x50')]['id']}},_0x52706d={};_0x52706d[_0x277a('0x3f')]=_['keys'](db[_0x277a('0x3b')][_0x277a('0x3c')]);_0x52706d[_0x277a('0x41')]=_['keys'](_0x428e58[_0x277a('0x41')]);_0x52706d['filters']=_[_0x277a('0x42')](_0x52706d[_0x277a('0x3f')],_0x52706d[_0x277a('0x41')]);_0x3bb076[_0x277a('0x43')]=_[_0x277a('0x42')](_0x52706d[_0x277a('0x3f')],qs[_0x277a('0x44')](_0x428e58[_0x277a('0x41')][_0x277a('0x44')]));_0x3bb076[_0x277a('0x43')]=_0x3bb076[_0x277a('0x43')]['length']?_0x3bb076[_0x277a('0x43')]:_0x52706d[_0x277a('0x3f')];if(_0x428e58[_0x277a('0x41')]['includeAll']){_0x3bb076[_0x277a('0x4c')]=[{'all':!![]}];}_0x3bb076=_['merge']({},_0x3bb076,_0x428e58[_0x277a('0x51')]);return db['ChatMessage'][_0x277a('0x52')](_0x3bb076)['then'](handleEntityNotFound(_0x3f8400,null))[_0x277a('0x22')](respondWithResult(_0x3f8400,null))[_0x277a('0x53')](handleError(_0x3f8400,null));};exports[_0x277a('0x54')]=function(_0x2a13b7,_0x25f026){return db[_0x277a('0x3b')]['create'](_0x2a13b7['body'],{})[_0x277a('0x22')](respondWithResult(_0x25f026,0xc9))[_0x277a('0x53')](handleError(_0x25f026,null));};exports[_0x277a('0x55')]=function(_0x5060f3,_0x207918){if(_0x5060f3[_0x277a('0x56')]['id']){delete _0x5060f3[_0x277a('0x56')]['id'];}return db[_0x277a('0x3b')][_0x277a('0x52')]({'where':{'id':_0x5060f3['params']['id']}})[_0x277a('0x22')](handleEntityNotFound(_0x207918,null))[_0x277a('0x22')](saveUpdates(_0x5060f3[_0x277a('0x56')],null))['then'](respondWithResult(_0x207918,null))['catch'](handleError(_0x207918,null));};exports[_0x277a('0x37')]=function(_0x2d669a,_0xffdde2){return db[_0x277a('0x3b')][_0x277a('0x52')]({'where':{'id':_0x2d669a[_0x277a('0x50')]['id']}})[_0x277a('0x22')](handleEntityNotFound(_0xffdde2,null))[_0x277a('0x22')](removeEntity(_0xffdde2,null))['catch'](handleError(_0xffdde2,null));};exports[_0x277a('0x57')]=function(_0x3924a6,_0x33937f){return db[_0x277a('0x3b')]['describe']()[_0x277a('0x22')](respondWithResult(_0x33937f,null))[_0x277a('0x53')](handleError(_0x33937f,null));};var interaction_log=require(_0x277a('0x58'))(_0x277a('0x59'));exports[_0x277a('0x5a')]=function(_0x3da8a3,_0x1091eb,_0x382c44){var _0x4b3b0a={'channel':'chat'};if(_0x3da8a3[_0x277a('0x56')]['id']){delete _0x3da8a3[_0x277a('0x56')]['id'];}_0x3da8a3[_0x277a('0x56')][_0x277a('0x5b')]=!![];_0x3da8a3[_0x277a('0x56')]['readAt']=moment()[_0x277a('0x5c')]('YYYY-MM-DD\x20HH:mm:ss');_0x3da8a3['body'][_0x277a('0x5d')]=_0x3da8a3[_0x277a('0x56')][_0x277a('0x5d')]||_0x3da8a3['user']['id'];return db[_0x277a('0x3b')][_0x277a('0x52')]({'where':{'id':_0x3da8a3[_0x277a('0x50')]['id'],'UserId':null},'include':[{'model':db[_0x277a('0x5e')],'as':_0x277a('0x5f')}]})['then'](handleEntityNotFound(_0x1091eb,null))['then'](saveUpdates(_0x3da8a3[_0x277a('0x56')],null))[_0x277a('0x22')](function(_0x44eadc){if(_0x44eadc){_0x4b3b0a['message']=_0x44eadc[_0x277a('0x60')]({'plain':!![]});return db[_0x277a('0x61')][_0x277a('0x52')]({'where':{'id':_0x44eadc[_0x277a('0x62')]}});}return null;})[_0x277a('0x22')](handleEntityNotFound(_0x1091eb,null))[_0x277a('0x22')](function(_0x525a96){if(_0x525a96){return _0x525a96[_0x277a('0x55')]({'UserId':_0x3da8a3[_0x277a('0x56')][_0x277a('0x5d')],'read1stAt':_[_0x277a('0x63')](_0x525a96[_0x277a('0x64')])?moment()[_0x277a('0x5c')](_0x277a('0x65')):undefined});}return null;})[_0x277a('0x22')](function(_0x2a551d){if(_0x2a551d){_0x4b3b0a[_0x277a('0x66')]=_0x2a551d[_0x277a('0x60')]({'plain':!![]});interaction_log[_0x277a('0x23')](_0x277a('0x67'),_0x3da8a3['user']['id'],_0x3da8a3[_0x277a('0x68')]['name'],_0x3da8a3['user']['role'],_0x4b3b0a['interaction']['id'],_0x3da8a3[_0x277a('0x56')]?JSON['stringify'](_0x3da8a3[_0x277a('0x56')]):_0x277a('0x69'));return respondWithRpcPromise(_0x277a('0x6a'),_0x277a('0x6b'),_0x4b3b0a);}return null;})[_0x277a('0x22')](function(_0x397f7d){if(_0x397f7d){if(_0x3da8a3[_0x277a('0x56')][_0x277a('0x6c')]){_0x4b3b0a[_0x277a('0x2b')][_0x277a('0x6d')]=util[_0x277a('0x5c')](_0x277a('0x6e'),_0x3da8a3['user'][_0x277a('0x39')]);_0x4b3b0a[_0x277a('0x2b')][_0x277a('0x6f')]=_0x4b3b0a[_0x277a('0x6f')];_0x4b3b0a[_0x277a('0x2b')]['event']=_0x277a('0x5a');return respondWithRpcPromise(_0x277a('0x70'),_0x277a('0x70'),{'event':_0x277a('0x71'),'message':_[_0x277a('0x72')](_0x4b3b0a[_0x277a('0x2b')],JSON['parse'](_0x4b3b0a['interaction'][_0x277a('0x73')]))},client9002)[_0x277a('0x22')](function(){return _0x4b3b0a;});}return _0x4b3b0a;}return null;})[_0x277a('0x22')](respondWithResult(_0x1091eb,null))[_0x277a('0x53')](handleError(_0x1091eb,null));};var interaction_log=require(_0x277a('0x58'))(_0x277a('0x59'));exports['reject']=function(_0x9c92d1,_0x2e37f0,_0x3fe4e3){var _0x535626={'agent':{},'channel':_0x277a('0x74')};if(_0x9c92d1[_0x277a('0x56')]['id']){delete _0x9c92d1[_0x277a('0x56')]['id'];}_0x9c92d1['body']['UserId']=_0x9c92d1[_0x277a('0x56')][_0x277a('0x5d')]||_0x9c92d1['user']['id'];_0x535626[_0x277a('0x75')]['id']=_0x9c92d1[_0x277a('0x56')][_0x277a('0x5d')];return db[_0x277a('0x3b')][_0x277a('0x52')]({'where':{'id':_0x9c92d1['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2e37f0,null))['then'](function(_0x19fbe3){if(_0x19fbe3){_0x535626['message']=_0x19fbe3[_0x277a('0x60')]({'plain':!![]});return db[_0x277a('0x61')][_0x277a('0x52')]({'where':{'id':_0x19fbe3[_0x277a('0x62')]}});}return null;})['then'](handleEntityNotFound(_0x2e37f0,null))['then'](function(_0x42a25e){if(_0x42a25e){_0x535626[_0x277a('0x66')]=_0x42a25e[_0x277a('0x60')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x9c92d1[_0x277a('0x68')]['id'],_0x9c92d1[_0x277a('0x68')][_0x277a('0x39')],_0x9c92d1['user'][_0x277a('0x76')],_0x535626[_0x277a('0x66')]['id'],_0x9c92d1[_0x277a('0x56')]?JSON[_0x277a('0x28')](_0x9c92d1[_0x277a('0x56')]):'null');return respondWithRpcPromise(_0x277a('0x77'),_0x277a('0x78'),_0x535626);}return null;})[_0x277a('0x22')](function(_0x3ef58){if(_0x3ef58){_0x3ef58['message'][_0x277a('0x6d')]=util[_0x277a('0x5c')](_0x277a('0x6e'),_0x9c92d1[_0x277a('0x68')][_0x277a('0x39')]);_0x3ef58['message'][_0x277a('0x6f')]=_0x535626[_0x277a('0x6f')];_0x3ef58[_0x277a('0x2b')]['event']='reject';respondWithRpcPromise(_0x277a('0x70'),_0x277a('0x70'),{'event':_0x277a('0x79'),'message':_0x3ef58[_0x277a('0x2b')]},client9002);return _0x535626;}return null;})[_0x277a('0x22')](respondWithResult(_0x2e37f0,null))[_0x277a('0x53')](handleError(_0x2e37f0,null));};