e338e7bd2b3030a95f9b3d2c7249e5608d2461a7
[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 _0x4ea3=['ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','client','http','request','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','end','offset','limit','status','Content-Range','json','save','update','destroy','stack','name','send','index','map','ChatMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','findAll','show','fields','include','find','create','body','params','describe','accept','read','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','CmContact','get','ChatInteraction','ChatInteractionId','isNil','format','role','null','acceptMessage','interface','event','EventManager','parse','interaction','formData','chat-interactions','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SIP/%s','channel','reject','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv'];(function(_0x5b73e7,_0x40789d){var _0x594436=function(_0x4b7494){while(--_0x4b7494){_0x5b73e7['push'](_0x5b73e7['shift']());}};_0x594436(++_0x40789d);}(_0x4ea3,0x70));var _0x34ea=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x4ea3[_0x6131cd];return _0x47e916;};'use strict';var emlformat=require(_0x34ea('0x0'));var rimraf=require(_0x34ea('0x1'));var zipdir=require(_0x34ea('0x2'));var jsonpatch=require(_0x34ea('0x3'));var rp=require('request-promise');var moment=require(_0x34ea('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x34ea('0x5'));var util=require('util');var path=require('path');var sox=require(_0x34ea('0x6'));var csv=require(_0x34ea('0x7'));var ejs=require(_0x34ea('0x8'));var fs=require('fs');var fs_extra=require(_0x34ea('0x9'));var _=require(_0x34ea('0xa'));var squel=require(_0x34ea('0xb'));var crypto=require(_0x34ea('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x34ea('0xd'));var toCsv=require(_0x34ea('0x7'));var querystring=require(_0x34ea('0xe'));var Papa=require('papaparse');var Redis=require(_0x34ea('0xf'));var authService=require(_0x34ea('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x34ea('0x11'));var logger=require(_0x34ea('0x12'))(_0x34ea('0x13'));var utils=require('../../config/utils');var config=require(_0x34ea('0x14'));var licenseUtil=require(_0x34ea('0x15'));var db=require(_0x34ea('0x16'))['db'];config[_0x34ea('0x17')]=_[_0x34ea('0x18')](config[_0x34ea('0x17')],{'host':_0x34ea('0x19'),'port':0x18eb});var socket=require(_0x34ea('0x1a'))(new Redis(config[_0x34ea('0x17')]));require(_0x34ea('0x1b'))[_0x34ea('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0x34ea('0x1d')][_0x34ea('0x1e')]({'port':0x232c});var client9002=jayson[_0x34ea('0x1d')][_0x34ea('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x44e44e,_0x56b2d7,_0x6a84a7,_0x18c013){return new BPromise(function(_0x3fa3b0,_0x305576){var _0x5f420f=_0x18c013||client;return _0x5f420f[_0x34ea('0x1f')](_0x44e44e,_0x6a84a7)[_0x34ea('0x20')](function(_0x5aeea3){logger['info'](_0x34ea('0x21'),_0x56b2d7,_0x34ea('0x22'));logger[_0x34ea('0x23')](_0x34ea('0x24'),_0x56b2d7,'request\x20sent',JSON[_0x34ea('0x25')](_0x5aeea3));if(_0x5aeea3[_0x34ea('0x26')]){if(_0x5aeea3[_0x34ea('0x26')][_0x34ea('0x27')]===0x1f4){logger['error']('ChatMessage,\x20%s,\x20%s',_0x56b2d7,_0x5aeea3[_0x34ea('0x26')][_0x34ea('0x28')]);return _0x305576(_0x5aeea3[_0x34ea('0x26')]['message']);}logger['error'](_0x34ea('0x21'),_0x56b2d7,_0x5aeea3[_0x34ea('0x26')][_0x34ea('0x28')]);return _0x3fa3b0(_0x5aeea3[_0x34ea('0x26')][_0x34ea('0x28')]);}else{logger[_0x34ea('0x29')]('ChatMessage,\x20%s,\x20%s',_0x56b2d7,_0x34ea('0x22'));_0x3fa3b0(_0x5aeea3[_0x34ea('0x2a')][_0x34ea('0x28')]);}})[_0x34ea('0x2b')](function(_0x5b5885){logger['error']('ChatMessage,\x20%s,\x20%s',_0x56b2d7,_0x5b5885);_0x305576(_0x5b5885);});});}function respondWithStatusCode(_0x142709,_0x187306){_0x187306=_0x187306||0xcc;return function(_0x37c214){if(_0x37c214){return _0x142709[_0x34ea('0x2c')](_0x187306);}return _0x142709['status'](_0x187306)[_0x34ea('0x2d')]();};}function respondWithResult(_0x267083,_0x27c6f7){_0x27c6f7=_0x27c6f7||0xc8;return function(_0x4fd4fd){if(_0x4fd4fd){return _0x267083['status'](_0x27c6f7)['json'](_0x4fd4fd);}};}function respondWithFilteredResult(_0x4d4360,_0x2942ce){return function(_0x6227db){if(_0x6227db){var _0x859b7e=typeof _0x2942ce[_0x34ea('0x2e')]==='undefined'&&typeof _0x2942ce[_0x34ea('0x2f')]==='undefined';var _0x2c6de8=_0x6227db['count'];var _0x3272f9=_0x859b7e?0x0:_0x2942ce[_0x34ea('0x2e')];var _0x3cb968=_0x859b7e?_0x6227db['count']:_0x2942ce[_0x34ea('0x2e')]+_0x2942ce[_0x34ea('0x2f')];var _0x55c8ba;if(_0x3cb968>=_0x2c6de8){_0x3cb968=_0x2c6de8;_0x55c8ba=0xc8;}else{_0x55c8ba=0xce;}_0x4d4360[_0x34ea('0x30')](_0x55c8ba);return _0x4d4360['set'](_0x34ea('0x31'),_0x3272f9+'-'+_0x3cb968+'/'+_0x2c6de8)[_0x34ea('0x32')](_0x6227db);}return null;};}function patchUpdates(_0x2d358e){return function(_0x5ead76){try{jsonpatch['apply'](_0x5ead76,_0x2d358e,!![]);}catch(_0x1676f5){return BPromise['reject'](_0x1676f5);}return _0x5ead76[_0x34ea('0x33')]();};}function saveUpdates(_0x359a31,_0x58d31c){return function(_0x38575f){if(_0x38575f){return _0x38575f[_0x34ea('0x34')](_0x359a31)[_0x34ea('0x20')](function(_0x3298ab){return _0x3298ab;});}return null;};}function removeEntity(_0x4d43ca,_0x5df23e){return function(_0x58c4cc){if(_0x58c4cc){return _0x58c4cc[_0x34ea('0x35')]()[_0x34ea('0x20')](function(){_0x4d43ca[_0x34ea('0x30')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e26e0,_0x47ba14){return function(_0x156ce6){if(!_0x156ce6){_0x4e26e0[_0x34ea('0x2c')](0x194);}return _0x156ce6;};}function handleError(_0x583e2d,_0x4e6310){_0x4e6310=_0x4e6310||0x1f4;return function(_0x240c77){logger[_0x34ea('0x26')](_0x240c77[_0x34ea('0x36')]);if(_0x240c77[_0x34ea('0x37')]){delete _0x240c77[_0x34ea('0x37')];}_0x583e2d['status'](_0x4e6310)[_0x34ea('0x38')](_0x240c77);};}exports[_0x34ea('0x39')]=function(_0x60f384,_0x3a73a1){var _0x4f05fc={},_0x5c44ab={},_0x6f024c={'count':0x0,'rows':[]};var _0x2327bc=_[_0x34ea('0x3a')](db[_0x34ea('0x3b')][_0x34ea('0x3c')],function(_0x4c696f){return{'name':_0x4c696f[_0x34ea('0x3d')],'type':_0x4c696f[_0x34ea('0x3e')][_0x34ea('0x3f')]};});_0x5c44ab[_0x34ea('0x40')]=_[_0x34ea('0x3a')](_0x2327bc,_0x34ea('0x37'));_0x5c44ab[_0x34ea('0x41')]=_[_0x34ea('0x42')](_0x60f384[_0x34ea('0x41')]);_0x5c44ab[_0x34ea('0x43')]=_[_0x34ea('0x44')](_0x5c44ab[_0x34ea('0x40')],_0x5c44ab[_0x34ea('0x41')]);_0x4f05fc[_0x34ea('0x45')]=_[_0x34ea('0x44')](_0x5c44ab[_0x34ea('0x40')],qs['fields'](_0x60f384[_0x34ea('0x41')]['fields']));_0x4f05fc[_0x34ea('0x45')]=_0x4f05fc[_0x34ea('0x45')][_0x34ea('0x46')]?_0x4f05fc[_0x34ea('0x45')]:_0x5c44ab[_0x34ea('0x40')];if(!_0x60f384[_0x34ea('0x41')][_0x34ea('0x47')](_0x34ea('0x48'))){_0x4f05fc[_0x34ea('0x2f')]=qs['limit'](_0x60f384[_0x34ea('0x41')]['limit']);_0x4f05fc[_0x34ea('0x2e')]=qs[_0x34ea('0x2e')](_0x60f384[_0x34ea('0x41')][_0x34ea('0x2e')]);}_0x4f05fc[_0x34ea('0x49')]=qs[_0x34ea('0x4a')](_0x60f384['query'][_0x34ea('0x4a')]);_0x4f05fc[_0x34ea('0x4b')]=qs['filters'](_[_0x34ea('0x4c')](_0x60f384[_0x34ea('0x41')],_0x5c44ab[_0x34ea('0x43')]),_0x2327bc);if(_0x60f384[_0x34ea('0x41')][_0x34ea('0x4d')]){_0x4f05fc['where']=_[_0x34ea('0x4e')](_0x4f05fc[_0x34ea('0x4b')],{'$or':_[_0x34ea('0x3a')](_0x2327bc,function(_0x2487bd){if(_0x2487bd[_0x34ea('0x3e')]!==_0x34ea('0x4f')){var _0x4887c5={};_0x4887c5[_0x2487bd['name']]={'$like':'%'+_0x60f384[_0x34ea('0x41')][_0x34ea('0x4d')]+'%'};return _0x4887c5;}})});}_0x4f05fc=_[_0x34ea('0x4e')]({},_0x4f05fc,_0x60f384['options']);var _0x25d81e={'where':_0x4f05fc['where']};return db[_0x34ea('0x3b')]['count'](_0x25d81e)[_0x34ea('0x20')](function(_0x2f6223){_0x6f024c[_0x34ea('0x50')]=_0x2f6223;if(_0x60f384['query'][_0x34ea('0x51')]){_0x4f05fc['include']=[{'all':!![]}];}return db[_0x34ea('0x3b')][_0x34ea('0x52')](_0x4f05fc);})[_0x34ea('0x20')](function(_0xb8246e){_0x6f024c['rows']=_0xb8246e;return _0x6f024c;})[_0x34ea('0x20')](respondWithFilteredResult(_0x3a73a1,_0x4f05fc))[_0x34ea('0x2b')](handleError(_0x3a73a1,null));};exports[_0x34ea('0x53')]=function(_0x3069df,_0x3df3c8){var _0x2938a2={'raw':!![],'where':{'id':_0x3069df['params']['id']}},_0x1d6740={};_0x1d6740[_0x34ea('0x40')]=_[_0x34ea('0x42')](db[_0x34ea('0x3b')][_0x34ea('0x3c')]);_0x1d6740[_0x34ea('0x41')]=_[_0x34ea('0x42')](_0x3069df[_0x34ea('0x41')]);_0x1d6740[_0x34ea('0x43')]=_[_0x34ea('0x44')](_0x1d6740[_0x34ea('0x40')],_0x1d6740[_0x34ea('0x41')]);_0x2938a2[_0x34ea('0x45')]=_[_0x34ea('0x44')](_0x1d6740['model'],qs[_0x34ea('0x54')](_0x3069df[_0x34ea('0x41')][_0x34ea('0x54')]));_0x2938a2['attributes']=_0x2938a2[_0x34ea('0x45')]['length']?_0x2938a2[_0x34ea('0x45')]:_0x1d6740[_0x34ea('0x40')];if(_0x3069df['query'][_0x34ea('0x51')]){_0x2938a2[_0x34ea('0x55')]=[{'all':!![]}];}_0x2938a2=_[_0x34ea('0x4e')]({},_0x2938a2,_0x3069df['options']);return db['ChatMessage'][_0x34ea('0x56')](_0x2938a2)['then'](handleEntityNotFound(_0x3df3c8,null))['then'](respondWithResult(_0x3df3c8,null))[_0x34ea('0x2b')](handleError(_0x3df3c8,null));};exports['create']=function(_0x3808ee,_0x2e77c7){return db[_0x34ea('0x3b')][_0x34ea('0x57')](_0x3808ee[_0x34ea('0x58')],{})[_0x34ea('0x20')](respondWithResult(_0x2e77c7,0xc9))[_0x34ea('0x2b')](handleError(_0x2e77c7,null));};exports[_0x34ea('0x34')]=function(_0x36625a,_0x30d4a5){if(_0x36625a[_0x34ea('0x58')]['id']){delete _0x36625a[_0x34ea('0x58')]['id'];}return db[_0x34ea('0x3b')][_0x34ea('0x56')]({'where':{'id':_0x36625a[_0x34ea('0x59')]['id']}})[_0x34ea('0x20')](handleEntityNotFound(_0x30d4a5,null))['then'](saveUpdates(_0x36625a[_0x34ea('0x58')],null))['then'](respondWithResult(_0x30d4a5,null))[_0x34ea('0x2b')](handleError(_0x30d4a5,null));};exports[_0x34ea('0x35')]=function(_0x17fa94,_0x3af45a){return db[_0x34ea('0x3b')][_0x34ea('0x56')]({'where':{'id':_0x17fa94['params']['id']}})[_0x34ea('0x20')](handleEntityNotFound(_0x3af45a,null))[_0x34ea('0x20')](removeEntity(_0x3af45a,null))[_0x34ea('0x2b')](handleError(_0x3af45a,null));};exports[_0x34ea('0x5a')]=function(_0x37c963,_0x55549e){return db[_0x34ea('0x3b')]['describe']()['then'](respondWithResult(_0x55549e,null))['catch'](handleError(_0x55549e,null));};var interaction_log=require(_0x34ea('0x12'))('chat-interactions');exports[_0x34ea('0x5b')]=function(_0x53aafe,_0x28b398,_0x5e4df3){var _0x3d649f={'agent':{},'channel':'chat'};if(_0x53aafe[_0x34ea('0x58')]['id']){delete _0x53aafe[_0x34ea('0x58')]['id'];}_0x53aafe[_0x34ea('0x58')][_0x34ea('0x5c')]=!![];_0x53aafe[_0x34ea('0x58')]['readAt']=moment()['format'](_0x34ea('0x5d'));_0x53aafe[_0x34ea('0x58')][_0x34ea('0x5e')]=_0x53aafe[_0x34ea('0x58')][_0x34ea('0x5e')]||_0x53aafe[_0x34ea('0x5f')]['id'];_0x3d649f[_0x34ea('0x60')]['id']=_0x53aafe[_0x34ea('0x58')][_0x34ea('0x5e')];return db['ChatMessage'][_0x34ea('0x56')]({'where':{'id':_0x53aafe[_0x34ea('0x59')]['id'],'UserId':null},'include':[{'model':db[_0x34ea('0x61')],'as':'Contact'}]})['then'](handleEntityNotFound(_0x28b398,null))[_0x34ea('0x20')](saveUpdates(_0x53aafe[_0x34ea('0x58')],null))[_0x34ea('0x20')](function(_0x5a2750){if(_0x5a2750){_0x3d649f[_0x34ea('0x28')]=_0x5a2750[_0x34ea('0x62')]({'plain':!![]});return db[_0x34ea('0x63')]['find']({'where':{'id':_0x5a2750[_0x34ea('0x64')]}});}return null;})[_0x34ea('0x20')](handleEntityNotFound(_0x28b398,null))['then'](function(_0x1f3978){if(_0x1f3978){return _0x1f3978[_0x34ea('0x34')]({'UserId':_0x53aafe[_0x34ea('0x58')]['UserId'],'read1stAt':_[_0x34ea('0x65')](_0x1f3978['read1stAt'])?moment()[_0x34ea('0x66')](_0x34ea('0x5d')):undefined});}return null;})[_0x34ea('0x20')](function(_0x34966f){if(_0x34966f){_0x3d649f['interaction']=_0x34966f[_0x34ea('0x62')]({'plain':!![]});interaction_log[_0x34ea('0x29')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x53aafe[_0x34ea('0x5f')]['id'],_0x53aafe['user'][_0x34ea('0x37')],_0x53aafe[_0x34ea('0x5f')][_0x34ea('0x67')],_0x3d649f['interaction']['id'],_0x53aafe[_0x34ea('0x58')]?JSON[_0x34ea('0x25')](_0x53aafe[_0x34ea('0x58')]):_0x34ea('0x68'));return respondWithRpcPromise('AcceptMessage',_0x34ea('0x69'),_0x3d649f);}return null;})[_0x34ea('0x20')](function(_0x10babe){if(_0x10babe){if(_0x53aafe[_0x34ea('0x58')]['manual']){_0x3d649f['message'][_0x34ea('0x6a')]=util[_0x34ea('0x66')]('SIP/%s',_0x53aafe[_0x34ea('0x5f')][_0x34ea('0x37')]);_0x3d649f[_0x34ea('0x28')]['channel']=_0x3d649f['channel'];_0x3d649f['message'][_0x34ea('0x6b')]='accept';return respondWithRpcPromise(_0x34ea('0x6c'),'EventManager',{'event':'acceptmessage','message':_['merge'](_0x3d649f[_0x34ea('0x28')],JSON[_0x34ea('0x6d')](_0x3d649f[_0x34ea('0x6e')][_0x34ea('0x6f')]))},client9002)[_0x34ea('0x20')](function(){return _0x3d649f;});}return _0x3d649f;}return null;})[_0x34ea('0x20')](respondWithResult(_0x28b398,null))[_0x34ea('0x2b')](handleError(_0x28b398,null));};var interaction_log=require(_0x34ea('0x12'))(_0x34ea('0x70'));exports['reject']=function(_0x13d47c,_0x5284c1,_0x4b677f){var _0x176d30={'agent':{},'channel':'chat'};if(_0x13d47c[_0x34ea('0x58')]['id']){delete _0x13d47c[_0x34ea('0x58')]['id'];}_0x13d47c[_0x34ea('0x58')]['UserId']=_0x13d47c[_0x34ea('0x58')]['UserId']||_0x13d47c[_0x34ea('0x5f')]['id'];_0x176d30[_0x34ea('0x60')]['id']=_0x13d47c[_0x34ea('0x58')][_0x34ea('0x5e')];return db[_0x34ea('0x3b')][_0x34ea('0x56')]({'where':{'id':_0x13d47c[_0x34ea('0x59')]['id'],'UserId':null}})[_0x34ea('0x20')](handleEntityNotFound(_0x5284c1,null))['then'](function(_0x2193bf){if(_0x2193bf){_0x176d30[_0x34ea('0x28')]=_0x2193bf[_0x34ea('0x62')]({'plain':!![]});return db[_0x34ea('0x63')][_0x34ea('0x56')]({'where':{'id':_0x2193bf['ChatInteractionId']}});}return null;})[_0x34ea('0x20')](handleEntityNotFound(_0x5284c1,null))['then'](function(_0x17c910){if(_0x17c910){_0x176d30['interaction']=_0x17c910['get']({'plain':!![]});interaction_log['info'](_0x34ea('0x71'),_0x13d47c[_0x34ea('0x5f')]['id'],_0x13d47c[_0x34ea('0x5f')]['name'],_0x13d47c[_0x34ea('0x5f')]['role'],_0x176d30[_0x34ea('0x6e')]['id'],_0x13d47c['body']?JSON['stringify'](_0x13d47c[_0x34ea('0x58')]):_0x34ea('0x68'));return respondWithRpcPromise(_0x34ea('0x72'),_0x34ea('0x73'),_0x176d30);}return null;})[_0x34ea('0x20')](function(_0x555393){if(_0x555393){_0x555393[_0x34ea('0x28')]['interface']=util['format'](_0x34ea('0x74'),_0x13d47c[_0x34ea('0x5f')][_0x34ea('0x37')]);_0x555393[_0x34ea('0x28')]['channel']=_0x176d30[_0x34ea('0x75')];_0x555393[_0x34ea('0x28')][_0x34ea('0x6b')]=_0x34ea('0x76');respondWithRpcPromise(_0x34ea('0x6c'),_0x34ea('0x6c'),{'event':_0x34ea('0x77'),'message':_0x555393[_0x34ea('0x28')]},client9002);return _0x176d30;}return null;})[_0x34ea('0x20')](respondWithResult(_0x5284c1,null))[_0x34ea('0x2b')](handleError(_0x5284c1,null));};