e193b9c85781bf66f93ea726086db8869a256ebd
[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 _0x7846=['destroy','name','send','index','map','ChatMessage','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','count','includeAll','include','findAll','rows','show','params','rawAttributes','find','body','update','describe','../../config/logger','chat-interactions','accept','chat','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','CmContact','Contact','get','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','acceptMessage','manual','interface','SIP/%s','channel','event','EventManager','ChatInteraction','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectmessage','html-pdf','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatMessage.socket','register','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','offset','set','json','apply','reject'];(function(_0x177179,_0x2580aa){var _0xe94765=function(_0x17b8a9){while(--_0x17b8a9){_0x177179['push'](_0x177179['shift']());}};_0xe94765(++_0x2580aa);}(_0x7846,0x1b0));var _0x6784=function(_0xd39959,_0x302d09){_0xd39959=_0xd39959-0x0;var _0x1ff69c=_0x7846[_0xd39959];return _0x1ff69c;};'use strict';var pdf=require(_0x6784('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x6784('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6784('0x2'));var moment=require('moment');var BPromise=require(_0x6784('0x3'));var Mustache=require(_0x6784('0x4'));var util=require(_0x6784('0x5'));var path=require(_0x6784('0x6'));var sox=require(_0x6784('0x7'));var csv=require(_0x6784('0x8'));var ejs=require(_0x6784('0x9'));var fs=require('fs');var _=require('lodash');var squel=require(_0x6784('0xa'));var crypto=require(_0x6784('0xb'));var jsforce=require(_0x6784('0xc'));var deskjs=require(_0x6784('0xd'));var toCsv=require(_0x6784('0x8'));var querystring=require(_0x6784('0xe'));var Papa=require(_0x6784('0xf'));var Redis=require(_0x6784('0x10'));var authService=require(_0x6784('0x11'));var qs=require(_0x6784('0x12'));var as=require(_0x6784('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6784('0x14'));var utils=require(_0x6784('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6784('0x16'));var db=require(_0x6784('0x17'))['db'];config['redis']=_[_0x6784('0x18')](config[_0x6784('0x19')],{'host':_0x6784('0x1a'),'port':0x18eb});var socket=require(_0x6784('0x1b'))(new Redis(config[_0x6784('0x19')]));require(_0x6784('0x1c'))[_0x6784('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x6784('0x1e')][_0x6784('0x1f')]({'port':0x232c});var client9002=jayson[_0x6784('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5411d8,_0x268f60,_0x31f66e,_0x7474e7){return new BPromise(function(_0x1e3428,_0x3b9f15){var _0x1d8b18=_0x7474e7||client;return _0x1d8b18[_0x6784('0x20')](_0x5411d8,_0x31f66e)[_0x6784('0x21')](function(_0x462464){logger[_0x6784('0x22')](_0x6784('0x23'),_0x268f60,_0x6784('0x24'));logger['debug'](_0x6784('0x25'),_0x268f60,_0x6784('0x24'),JSON[_0x6784('0x26')](_0x462464));if(_0x462464['error']){if(_0x462464[_0x6784('0x27')][_0x6784('0x28')]===0x1f4){logger[_0x6784('0x27')]('ChatMessage,\x20%s,\x20%s',_0x268f60,_0x462464['error'][_0x6784('0x29')]);return _0x3b9f15(_0x462464['error'][_0x6784('0x29')]);}logger[_0x6784('0x27')](_0x6784('0x23'),_0x268f60,_0x462464['error'][_0x6784('0x29')]);return _0x1e3428(_0x462464['error'][_0x6784('0x29')]);}else{logger[_0x6784('0x22')](_0x6784('0x23'),_0x268f60,_0x6784('0x24'));_0x1e3428(_0x462464[_0x6784('0x2a')][_0x6784('0x29')]);}})[_0x6784('0x2b')](function(_0x5ca4e2){logger[_0x6784('0x27')](_0x6784('0x23'),_0x268f60,_0x5ca4e2);_0x3b9f15(_0x5ca4e2);});});}function respondWithStatusCode(_0x3f71e7,_0xd9e54b){_0xd9e54b=_0xd9e54b||0xcc;return function(_0x21e742){if(_0x21e742){return _0x3f71e7[_0x6784('0x2c')](_0xd9e54b);}return _0x3f71e7[_0x6784('0x2d')](_0xd9e54b)[_0x6784('0x2e')]();};}function respondWithResult(_0x5bf02c,_0x5c66e){_0x5c66e=_0x5c66e||0xc8;return function(_0x4385fc){if(_0x4385fc){return _0x5bf02c[_0x6784('0x2d')](_0x5c66e)['json'](_0x4385fc);}};}function respondWithFilteredResult(_0x1204c7,_0x9a2175){return function(_0x58c163){if(_0x58c163){var _0x271889=_0x58c163['count'],_0x3b6094=_0x9a2175['offset'],_0x1fc9d6=_0x9a2175[_0x6784('0x2f')]+_0x9a2175['limit'],_0x49fd54;if(_0x1fc9d6>=_0x271889){_0x1fc9d6=_0x271889;_0x49fd54=0xc8;}else{_0x49fd54=0xce;}_0x1204c7[_0x6784('0x2d')](_0x49fd54);return _0x1204c7[_0x6784('0x30')]('Content-Range',_0x3b6094+'-'+_0x1fc9d6+'/'+_0x271889)[_0x6784('0x31')](_0x58c163);}return null;};}function patchUpdates(_0x12a153){return function(_0x4f4fea){try{jsonpatch[_0x6784('0x32')](_0x4f4fea,_0x12a153,!![]);}catch(_0x4eea6d){return BPromise[_0x6784('0x33')](_0x4eea6d);}return _0x4f4fea['save']();};}function saveUpdates(_0x11371e,_0x5131bc){return function(_0x2b23b7){if(_0x2b23b7){return _0x2b23b7['update'](_0x11371e)[_0x6784('0x21')](function(_0x38ab2a){return _0x38ab2a;});}return null;};}function removeEntity(_0x1245a7,_0x1a953d){return function(_0x338db4){if(_0x338db4){return _0x338db4[_0x6784('0x34')]()['then'](function(){_0x1245a7[_0x6784('0x2d')](0xcc)[_0x6784('0x2e')]();});}};}function handleEntityNotFound(_0x53754a,_0x360472){return function(_0x5807fa){if(!_0x5807fa){_0x53754a[_0x6784('0x2c')](0x194);}return _0x5807fa;};}function handleError(_0x2c0bf5,_0x5c7a16){_0x5c7a16=_0x5c7a16||0x1f4;return function(_0x24edbf){logger[_0x6784('0x27')](_0x24edbf['stack']);if(_0x24edbf[_0x6784('0x35')]){delete _0x24edbf[_0x6784('0x35')];}_0x2c0bf5[_0x6784('0x2d')](_0x5c7a16)[_0x6784('0x36')](_0x24edbf);};}exports[_0x6784('0x37')]=function(_0x496ef5,_0x18e9f6){var _0x469cdc={},_0x57b650={},_0x254fe4={'count':0x0,'rows':[]};var _0x552d5f=_[_0x6784('0x38')](db[_0x6784('0x39')]['rawAttributes'],function(_0x4b984b){return{'name':_0x4b984b[_0x6784('0x3a')],'type':_0x4b984b['type'][_0x6784('0x3b')]};});_0x57b650['model']=_[_0x6784('0x38')](_0x552d5f,_0x6784('0x35'));_0x57b650[_0x6784('0x3c')]=_[_0x6784('0x3d')](_0x496ef5[_0x6784('0x3c')]);_0x57b650[_0x6784('0x3e')]=_[_0x6784('0x3f')](_0x57b650[_0x6784('0x40')],_0x57b650[_0x6784('0x3c')]);_0x469cdc[_0x6784('0x41')]=_['intersection'](_0x57b650['model'],qs[_0x6784('0x42')](_0x496ef5[_0x6784('0x3c')][_0x6784('0x42')]));_0x469cdc[_0x6784('0x41')]=_0x469cdc[_0x6784('0x41')][_0x6784('0x43')]?_0x469cdc['attributes']:_0x57b650[_0x6784('0x40')];if(!_0x496ef5[_0x6784('0x3c')][_0x6784('0x44')](_0x6784('0x45'))){_0x469cdc[_0x6784('0x46')]=qs[_0x6784('0x46')](_0x496ef5[_0x6784('0x3c')]['limit']);_0x469cdc[_0x6784('0x2f')]=qs[_0x6784('0x2f')](_0x496ef5['query'][_0x6784('0x2f')]);}_0x469cdc[_0x6784('0x47')]=qs[_0x6784('0x48')](_0x496ef5[_0x6784('0x3c')][_0x6784('0x48')]);_0x469cdc[_0x6784('0x49')]=qs[_0x6784('0x3e')](_[_0x6784('0x4a')](_0x496ef5[_0x6784('0x3c')],_0x57b650[_0x6784('0x3e')]),_0x552d5f);if(_0x496ef5['query'][_0x6784('0x4b')]){_0x469cdc[_0x6784('0x49')]=_[_0x6784('0x4c')](_0x469cdc[_0x6784('0x49')],{'$or':_[_0x6784('0x38')](_0x552d5f,function(_0x384ff1){if(_0x384ff1[_0x6784('0x4d')]!==_0x6784('0x4e')){var _0x48aa6d={};_0x48aa6d[_0x384ff1['name']]={'$like':'%'+_0x496ef5['query']['filter']+'%'};return _0x48aa6d;}})});}_0x469cdc=_[_0x6784('0x4c')]({},_0x469cdc,_0x496ef5['options']);var _0x41ddcc={'where':_0x469cdc['where']};return db[_0x6784('0x39')][_0x6784('0x4f')](_0x41ddcc)['then'](function(_0x248a99){_0x254fe4[_0x6784('0x4f')]=_0x248a99;if(_0x496ef5[_0x6784('0x3c')][_0x6784('0x50')]){_0x469cdc[_0x6784('0x51')]=[{'all':!![]}];}return db[_0x6784('0x39')][_0x6784('0x52')](_0x469cdc);})[_0x6784('0x21')](function(_0x4ef76b){_0x254fe4[_0x6784('0x53')]=_0x4ef76b;return _0x254fe4;})[_0x6784('0x21')](respondWithFilteredResult(_0x18e9f6,_0x469cdc))[_0x6784('0x2b')](handleError(_0x18e9f6,null));};exports[_0x6784('0x54')]=function(_0x227491,_0x1c559c){var _0x3bb7fd={'raw':!![],'where':{'id':_0x227491[_0x6784('0x55')]['id']}},_0x2c2d30={};_0x2c2d30[_0x6784('0x40')]=_[_0x6784('0x3d')](db[_0x6784('0x39')][_0x6784('0x56')]);_0x2c2d30['query']=_[_0x6784('0x3d')](_0x227491[_0x6784('0x3c')]);_0x2c2d30[_0x6784('0x3e')]=_[_0x6784('0x3f')](_0x2c2d30['model'],_0x2c2d30['query']);_0x3bb7fd['attributes']=_[_0x6784('0x3f')](_0x2c2d30[_0x6784('0x40')],qs[_0x6784('0x42')](_0x227491[_0x6784('0x3c')][_0x6784('0x42')]));_0x3bb7fd[_0x6784('0x41')]=_0x3bb7fd[_0x6784('0x41')][_0x6784('0x43')]?_0x3bb7fd['attributes']:_0x2c2d30[_0x6784('0x40')];if(_0x227491['query']['includeAll']){_0x3bb7fd[_0x6784('0x51')]=[{'all':!![]}];}_0x3bb7fd=_[_0x6784('0x4c')]({},_0x3bb7fd,_0x227491['options']);return db[_0x6784('0x39')][_0x6784('0x57')](_0x3bb7fd)[_0x6784('0x21')](handleEntityNotFound(_0x1c559c,null))[_0x6784('0x21')](respondWithResult(_0x1c559c,null))[_0x6784('0x2b')](handleError(_0x1c559c,null));};exports['create']=function(_0x436e63,_0x12730b){return db[_0x6784('0x39')]['create'](_0x436e63[_0x6784('0x58')],{})['then'](respondWithResult(_0x12730b,0xc9))[_0x6784('0x2b')](handleError(_0x12730b,null));};exports[_0x6784('0x59')]=function(_0x2e9d7e,_0x4df267){if(_0x2e9d7e[_0x6784('0x58')]['id']){delete _0x2e9d7e[_0x6784('0x58')]['id'];}return db['ChatMessage'][_0x6784('0x57')]({'where':{'id':_0x2e9d7e[_0x6784('0x55')]['id']}})[_0x6784('0x21')](handleEntityNotFound(_0x4df267,null))[_0x6784('0x21')](saveUpdates(_0x2e9d7e[_0x6784('0x58')],null))[_0x6784('0x21')](respondWithResult(_0x4df267,null))[_0x6784('0x2b')](handleError(_0x4df267,null));};exports[_0x6784('0x34')]=function(_0x36bc05,_0x513739){return db[_0x6784('0x39')][_0x6784('0x57')]({'where':{'id':_0x36bc05[_0x6784('0x55')]['id']}})[_0x6784('0x21')](handleEntityNotFound(_0x513739,null))['then'](removeEntity(_0x513739,null))['catch'](handleError(_0x513739,null));};exports[_0x6784('0x5a')]=function(_0x5dc9e6,_0x4c3992){return db[_0x6784('0x39')][_0x6784('0x5a')]()[_0x6784('0x21')](respondWithResult(_0x4c3992,null))['catch'](handleError(_0x4c3992,null));};var interaction_log=require(_0x6784('0x5b'))(_0x6784('0x5c'));exports[_0x6784('0x5d')]=function(_0x46cb35,_0x12640d,_0x49033a){var _0x36e985={'channel':_0x6784('0x5e')};if(_0x46cb35[_0x6784('0x58')]['id']){delete _0x46cb35[_0x6784('0x58')]['id'];}_0x46cb35['body'][_0x6784('0x5f')]=!![];_0x46cb35[_0x6784('0x58')]['readAt']=moment()[_0x6784('0x60')](_0x6784('0x61'));_0x46cb35[_0x6784('0x58')][_0x6784('0x62')]=_0x46cb35[_0x6784('0x58')][_0x6784('0x62')]||_0x46cb35['user']['id'];return db[_0x6784('0x39')][_0x6784('0x57')]({'where':{'id':_0x46cb35[_0x6784('0x55')]['id'],'UserId':null},'include':[{'model':db[_0x6784('0x63')],'as':_0x6784('0x64')}]})[_0x6784('0x21')](handleEntityNotFound(_0x12640d,null))[_0x6784('0x21')](saveUpdates(_0x46cb35[_0x6784('0x58')],null))[_0x6784('0x21')](function(_0x55637c){if(_0x55637c){_0x36e985[_0x6784('0x29')]=_0x55637c[_0x6784('0x65')]({'plain':!![]});return db['ChatInteraction'][_0x6784('0x57')]({'where':{'id':_0x55637c['ChatInteractionId']}});}return null;})[_0x6784('0x21')](handleEntityNotFound(_0x12640d,null))[_0x6784('0x21')](function(_0x38fd17){if(_0x38fd17){return _0x38fd17[_0x6784('0x59')]({'UserId':_0x46cb35['body'][_0x6784('0x62')],'read1stAt':_[_0x6784('0x66')](_0x38fd17[_0x6784('0x67')])?moment()['format'](_0x6784('0x61')):undefined});}return null;})[_0x6784('0x21')](function(_0x23836c){if(_0x23836c){_0x36e985[_0x6784('0x68')]=_0x23836c['get']({'plain':!![]});interaction_log['info'](_0x6784('0x69'),_0x46cb35[_0x6784('0x6a')]['id'],_0x46cb35['user'][_0x6784('0x35')],_0x46cb35['user'][_0x6784('0x6b')],_0x36e985[_0x6784('0x68')]['id'],_0x46cb35[_0x6784('0x58')]?JSON[_0x6784('0x26')](_0x46cb35['body']):_0x6784('0x6c'));return respondWithRpcPromise('AcceptMessage',_0x6784('0x6d'),_0x36e985);}return null;})['then'](function(_0x5d23a7){if(_0x5d23a7){if(_0x46cb35[_0x6784('0x58')][_0x6784('0x6e')]){_0x36e985[_0x6784('0x29')][_0x6784('0x6f')]=util[_0x6784('0x60')](_0x6784('0x70'),_0x46cb35[_0x6784('0x6a')][_0x6784('0x35')]);_0x36e985[_0x6784('0x29')][_0x6784('0x71')]=_0x36e985['channel'];_0x36e985[_0x6784('0x29')][_0x6784('0x72')]='accept';return respondWithRpcPromise(_0x6784('0x73'),_0x6784('0x73'),{'event':'acceptmessage','message':_[_0x6784('0x4c')](_0x36e985['message'],JSON['parse'](_0x36e985[_0x6784('0x68')]['formData']))},client9002)[_0x6784('0x21')](function(){return _0x36e985;});}return _0x36e985;}return null;})[_0x6784('0x21')](respondWithResult(_0x12640d,null))['catch'](handleError(_0x12640d,null));};var interaction_log=require('../../config/logger')(_0x6784('0x5c'));exports[_0x6784('0x33')]=function(_0x91de63,_0x19f7b6,_0x2416cb){var _0x1ace3c={'agent':{},'channel':_0x6784('0x5e')};if(_0x91de63[_0x6784('0x58')]['id']){delete _0x91de63[_0x6784('0x58')]['id'];}_0x91de63[_0x6784('0x58')][_0x6784('0x62')]=_0x91de63[_0x6784('0x58')]['UserId']||_0x91de63[_0x6784('0x6a')]['id'];_0x1ace3c['agent']['id']=_0x91de63['body']['UserId'];return db[_0x6784('0x39')]['find']({'where':{'id':_0x91de63['params']['id'],'UserId':null}})[_0x6784('0x21')](handleEntityNotFound(_0x19f7b6,null))['then'](function(_0x1ce111){if(_0x1ce111){_0x1ace3c[_0x6784('0x29')]=_0x1ce111[_0x6784('0x65')]({'plain':!![]});return db[_0x6784('0x74')][_0x6784('0x57')]({'where':{'id':_0x1ce111[_0x6784('0x75')]}});}return null;})[_0x6784('0x21')](handleEntityNotFound(_0x19f7b6,null))[_0x6784('0x21')](function(_0xe31bff){if(_0xe31bff){_0x1ace3c[_0x6784('0x68')]=_0xe31bff[_0x6784('0x65')]({'plain':!![]});interaction_log[_0x6784('0x22')](_0x6784('0x76'),_0x91de63[_0x6784('0x6a')]['id'],_0x91de63[_0x6784('0x6a')][_0x6784('0x35')],_0x91de63[_0x6784('0x6a')][_0x6784('0x6b')],_0x1ace3c['interaction']['id'],_0x91de63['body']?JSON[_0x6784('0x26')](_0x91de63[_0x6784('0x58')]):_0x6784('0x6c'));return respondWithRpcPromise(_0x6784('0x77'),'rejectMessage',_0x1ace3c);}return null;})[_0x6784('0x21')](function(_0x38301f){if(_0x38301f){_0x38301f['message'][_0x6784('0x6f')]=util[_0x6784('0x60')]('SIP/%s',_0x91de63[_0x6784('0x6a')]['name']);_0x38301f['message'][_0x6784('0x71')]=_0x1ace3c[_0x6784('0x71')];_0x38301f['message'][_0x6784('0x72')]='reject';respondWithRpcPromise(_0x6784('0x73'),_0x6784('0x73'),{'event':_0x6784('0x78'),'message':_0x38301f[_0x6784('0x29')]},client9002);return _0x1ace3c;}return null;})[_0x6784('0x21')](respondWithResult(_0x19f7b6,null))[_0x6784('0x2b')](handleError(_0x19f7b6,null));};