Built motion from commit (unavailable).|2.4.19
[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 _0x9b0b=['../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./chatMessage.socket','jayson/promise','client','http','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','set','Content-Range','apply','save','update','destroy','stack','name','index','rawAttributes','fieldName','type','key','model','filters','intersection','query','attributes','fields','length','nolimit','limit','order','sort','pick','where','map','VIRTUAL','filter','options','ChatMessage','includeAll','include','findAll','show','params','merge','find','create','body','describe','chat-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','CmContact','Contact','get','ChatInteraction','ChatInteractionId','isNil','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','manual','SIP/%s','channel','EventManager','acceptmessage','parse','reject','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','interface','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x2480c8,_0x49597a){var _0x520c5f=function(_0x37c0d9){while(--_0x37c0d9){_0x2480c8['push'](_0x2480c8['shift']());}};_0x520c5f(++_0x49597a);}(_0x9b0b,0xe4));var _0xb9b0=function(_0x5550b3,_0x2d0ee0){_0x5550b3=_0x5550b3-0x0;var _0x4b8fc4=_0x9b0b[_0x5550b3];return _0x4b8fc4;};'use strict';var pdf=require(_0xb9b0('0x0'));var emlformat=require(_0xb9b0('0x1'));var rimraf=require(_0xb9b0('0x2'));var zipdir=require(_0xb9b0('0x3'));var jsonpatch=require(_0xb9b0('0x4'));var rp=require(_0xb9b0('0x5'));var moment=require(_0xb9b0('0x6'));var BPromise=require(_0xb9b0('0x7'));var Mustache=require(_0xb9b0('0x8'));var util=require(_0xb9b0('0x9'));var path=require(_0xb9b0('0xa'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb9b0('0xb'));var fs=require('fs');var _=require(_0xb9b0('0xc'));var squel=require(_0xb9b0('0xd'));var crypto=require('crypto');var jsforce=require(_0xb9b0('0xe'));var deskjs=require(_0xb9b0('0xf'));var toCsv=require(_0xb9b0('0x10'));var querystring=require(_0xb9b0('0x11'));var Papa=require(_0xb9b0('0x12'));var Redis=require(_0xb9b0('0x13'));var authService=require(_0xb9b0('0x14'));var qs=require(_0xb9b0('0x15'));var as=require(_0xb9b0('0x16'));var hardwareService=require(_0xb9b0('0x17'));var logger=require(_0xb9b0('0x18'))(_0xb9b0('0x19'));var utils=require('../../config/utils');var config=require(_0xb9b0('0x1a'));var db=require(_0xb9b0('0x1b'))['db'];config[_0xb9b0('0x1c')]=_[_0xb9b0('0x1d')](config['redis'],{'host':_0xb9b0('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb9b0('0x1c')]));require(_0xb9b0('0x1f'))['register'](socket);var jayson=require(_0xb9b0('0x20'));var client=jayson[_0xb9b0('0x21')][_0xb9b0('0x22')]({'port':0x232c});var client9002=jayson[_0xb9b0('0x21')][_0xb9b0('0x22')]({'port':0x232a});function checkPasswordPattern(_0x33c889,_0x339ba3,_0x3b492a){if(_0x3b492a){var _0x5ee6ad=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x5ee6ad['test'](_0x339ba3)){return _0x33c889;}else{throw new db[(_0xb9b0('0x23'))][(_0xb9b0('0x24'))](_0xb9b0('0x25'));}}else{return _0x33c889;}}function respondWithRpcPromise(_0x501bd0,_0x5bd9b7,_0x4f1c9c,_0x3bb02d){return new BPromise(function(_0x2c1401,_0x497430){var _0x27507d=_0x3bb02d||client;return _0x27507d[_0xb9b0('0x26')](_0x501bd0,_0x4f1c9c)[_0xb9b0('0x27')](function(_0x2500b7){logger[_0xb9b0('0x28')](_0xb9b0('0x29'),_0x5bd9b7,_0xb9b0('0x2a'));logger[_0xb9b0('0x2b')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x5bd9b7,_0xb9b0('0x2a'),JSON[_0xb9b0('0x2c')](_0x2500b7));if(_0x2500b7[_0xb9b0('0x2d')]){if(_0x2500b7[_0xb9b0('0x2d')][_0xb9b0('0x2e')]===0x1f4){logger['error'](_0xb9b0('0x29'),_0x5bd9b7,_0x2500b7[_0xb9b0('0x2d')][_0xb9b0('0x2f')]);return _0x497430(_0x2500b7[_0xb9b0('0x2d')][_0xb9b0('0x2f')]);}logger[_0xb9b0('0x2d')](_0xb9b0('0x29'),_0x5bd9b7,_0x2500b7[_0xb9b0('0x2d')][_0xb9b0('0x2f')]);return _0x2c1401(_0x2500b7['error']['message']);}else{logger[_0xb9b0('0x28')](_0xb9b0('0x29'),_0x5bd9b7,_0xb9b0('0x2a'));_0x2c1401(_0x2500b7[_0xb9b0('0x30')][_0xb9b0('0x2f')]);}})[_0xb9b0('0x31')](function(_0xebce23){logger['error'](_0xb9b0('0x29'),_0x5bd9b7,_0xebce23);_0x497430(_0xebce23);});});}function respondWithStatusCode(_0x625fe4,_0x5a41b6){_0x5a41b6=_0x5a41b6||0xcc;return function(_0x151790){if(_0x151790){return _0x625fe4[_0xb9b0('0x32')](_0x5a41b6);}return _0x625fe4[_0xb9b0('0x33')](_0x5a41b6)[_0xb9b0('0x34')]();};}function respondWithResult(_0x502bdc,_0xd98927){_0xd98927=_0xd98927||0xc8;return function(_0x229c73){if(_0x229c73){return _0x502bdc[_0xb9b0('0x33')](_0xd98927)[_0xb9b0('0x35')](_0x229c73);}};}function respondWithFilteredResult(_0x3d9aae,_0x4185fd){return function(_0x2f6845){if(_0x2f6845){var _0x1445d6=_0x2f6845['count'],_0x5e40ff=_0x4185fd[_0xb9b0('0x36')],_0x3ed96c=_0x4185fd[_0xb9b0('0x36')]+_0x4185fd['limit'],_0x57ecf8;if(_0x3ed96c>=_0x1445d6){_0x3ed96c=_0x1445d6;_0x57ecf8=0xc8;}else{_0x57ecf8=0xce;}_0x3d9aae[_0xb9b0('0x33')](_0x57ecf8);return _0x3d9aae[_0xb9b0('0x37')](_0xb9b0('0x38'),_0x5e40ff+'-'+_0x3ed96c+'/'+_0x1445d6)[_0xb9b0('0x35')](_0x2f6845);}return null;};}function patchUpdates(_0x4ecf5){return function(_0x3c48d5){try{jsonpatch[_0xb9b0('0x39')](_0x3c48d5,_0x4ecf5,!![]);}catch(_0x13d7e7){return BPromise['reject'](_0x13d7e7);}return _0x3c48d5[_0xb9b0('0x3a')]();};}function saveUpdates(_0x40e2a5,_0x2cffc4){return function(_0x50d472){if(_0x50d472){return _0x50d472[_0xb9b0('0x3b')](_0x40e2a5)[_0xb9b0('0x27')](function(_0x42fea9){return _0x42fea9;});}return null;};}function removeEntity(_0x1a2760,_0x5bb405){return function(_0x73cd70){if(_0x73cd70){return _0x73cd70[_0xb9b0('0x3c')]()[_0xb9b0('0x27')](function(){_0x1a2760[_0xb9b0('0x33')](0xcc)[_0xb9b0('0x34')]();});}};}function handleEntityNotFound(_0x39da2e,_0x5d8eaa){return function(_0x284ee9){if(!_0x284ee9){_0x39da2e[_0xb9b0('0x32')](0x194);}return _0x284ee9;};}function handleError(_0x37da0b,_0x2e377d){_0x2e377d=_0x2e377d||0x1f4;return function(_0x496555){logger[_0xb9b0('0x2d')](_0x496555[_0xb9b0('0x3d')]);if(_0x496555[_0xb9b0('0x3e')]){delete _0x496555['name'];}_0x37da0b[_0xb9b0('0x33')](_0x2e377d)['send'](_0x496555);};}exports[_0xb9b0('0x3f')]=function(_0x22c129,_0x3ce01a){var _0x198700={},_0x48a6ca={},_0x48b35a={'count':0x0,'rows':[]};var _0x2a0c3d=_['map'](db['ChatMessage'][_0xb9b0('0x40')],function(_0xf99a12){return{'name':_0xf99a12[_0xb9b0('0x41')],'type':_0xf99a12[_0xb9b0('0x42')][_0xb9b0('0x43')]};});_0x48a6ca[_0xb9b0('0x44')]=_['map'](_0x2a0c3d,_0xb9b0('0x3e'));_0x48a6ca['query']=_['keys'](_0x22c129['query']);_0x48a6ca[_0xb9b0('0x45')]=_[_0xb9b0('0x46')](_0x48a6ca[_0xb9b0('0x44')],_0x48a6ca[_0xb9b0('0x47')]);_0x198700[_0xb9b0('0x48')]=_[_0xb9b0('0x46')](_0x48a6ca[_0xb9b0('0x44')],qs[_0xb9b0('0x49')](_0x22c129['query']['fields']));_0x198700[_0xb9b0('0x48')]=_0x198700[_0xb9b0('0x48')][_0xb9b0('0x4a')]?_0x198700[_0xb9b0('0x48')]:_0x48a6ca[_0xb9b0('0x44')];if(!_0x22c129['query']['hasOwnProperty'](_0xb9b0('0x4b'))){_0x198700[_0xb9b0('0x4c')]=qs[_0xb9b0('0x4c')](_0x22c129[_0xb9b0('0x47')][_0xb9b0('0x4c')]);_0x198700[_0xb9b0('0x36')]=qs['offset'](_0x22c129[_0xb9b0('0x47')][_0xb9b0('0x36')]);}_0x198700[_0xb9b0('0x4d')]=qs[_0xb9b0('0x4e')](_0x22c129[_0xb9b0('0x47')][_0xb9b0('0x4e')]);_0x198700['where']=qs[_0xb9b0('0x45')](_[_0xb9b0('0x4f')](_0x22c129['query'],_0x48a6ca[_0xb9b0('0x45')]));if(_0x22c129[_0xb9b0('0x47')]['filter']){_0x198700[_0xb9b0('0x50')]=_['merge'](_0x198700[_0xb9b0('0x50')],{'$or':_[_0xb9b0('0x51')](_0x2a0c3d,function(_0x363538){if(_0x363538[_0xb9b0('0x42')]!==_0xb9b0('0x52')){var _0x149931={};_0x149931[_0x363538[_0xb9b0('0x3e')]]={'$like':'%'+_0x22c129['query'][_0xb9b0('0x53')]+'%'};return _0x149931;}})});}_0x198700=_['merge']({},_0x198700,_0x22c129[_0xb9b0('0x54')]);var _0x39c594={'where':_0x198700[_0xb9b0('0x50')]};return db[_0xb9b0('0x55')]['count'](_0x39c594)[_0xb9b0('0x27')](function(_0x388ef8){_0x48b35a['count']=_0x388ef8;if(_0x22c129['query'][_0xb9b0('0x56')]){_0x198700[_0xb9b0('0x57')]=[{'all':!![]}];}return db[_0xb9b0('0x55')][_0xb9b0('0x58')](_0x198700);})[_0xb9b0('0x27')](function(_0x6c4504){_0x48b35a['rows']=_0x6c4504;return _0x48b35a;})['then'](respondWithFilteredResult(_0x3ce01a,_0x198700))['catch'](handleError(_0x3ce01a,null));};exports[_0xb9b0('0x59')]=function(_0x3c9e4a,_0x3b55f3){var _0x2a22c2={'raw':!![],'where':{'id':_0x3c9e4a[_0xb9b0('0x5a')]['id']}},_0x367d0f={};_0x367d0f[_0xb9b0('0x44')]=_['keys'](db[_0xb9b0('0x55')][_0xb9b0('0x40')]);_0x367d0f['query']=_['keys'](_0x3c9e4a[_0xb9b0('0x47')]);_0x367d0f[_0xb9b0('0x45')]=_[_0xb9b0('0x46')](_0x367d0f[_0xb9b0('0x44')],_0x367d0f[_0xb9b0('0x47')]);_0x2a22c2[_0xb9b0('0x48')]=_[_0xb9b0('0x46')](_0x367d0f[_0xb9b0('0x44')],qs[_0xb9b0('0x49')](_0x3c9e4a[_0xb9b0('0x47')]['fields']));_0x2a22c2[_0xb9b0('0x48')]=_0x2a22c2['attributes'][_0xb9b0('0x4a')]?_0x2a22c2[_0xb9b0('0x48')]:_0x367d0f['model'];if(_0x3c9e4a[_0xb9b0('0x47')][_0xb9b0('0x56')]){_0x2a22c2[_0xb9b0('0x57')]=[{'all':!![]}];}_0x2a22c2=_[_0xb9b0('0x5b')]({},_0x2a22c2,_0x3c9e4a[_0xb9b0('0x54')]);return db['ChatMessage'][_0xb9b0('0x5c')](_0x2a22c2)[_0xb9b0('0x27')](handleEntityNotFound(_0x3b55f3,null))[_0xb9b0('0x27')](respondWithResult(_0x3b55f3,null))[_0xb9b0('0x31')](handleError(_0x3b55f3,null));};exports[_0xb9b0('0x5d')]=function(_0x2b8319,_0x343f64){return db[_0xb9b0('0x55')][_0xb9b0('0x5d')](_0x2b8319['body'],{})[_0xb9b0('0x27')](respondWithResult(_0x343f64,0xc9))[_0xb9b0('0x31')](handleError(_0x343f64,null));};exports['update']=function(_0x476fb2,_0x551907){if(_0x476fb2[_0xb9b0('0x5e')]['id']){delete _0x476fb2[_0xb9b0('0x5e')]['id'];}return db[_0xb9b0('0x55')]['find']({'where':{'id':_0x476fb2[_0xb9b0('0x5a')]['id']}})[_0xb9b0('0x27')](handleEntityNotFound(_0x551907,null))[_0xb9b0('0x27')](saveUpdates(_0x476fb2[_0xb9b0('0x5e')],null))['then'](respondWithResult(_0x551907,null))[_0xb9b0('0x31')](handleError(_0x551907,null));};exports[_0xb9b0('0x3c')]=function(_0x3cf1ef,_0x33982d){return db[_0xb9b0('0x55')][_0xb9b0('0x5c')]({'where':{'id':_0x3cf1ef[_0xb9b0('0x5a')]['id']}})['then'](handleEntityNotFound(_0x33982d,null))[_0xb9b0('0x27')](removeEntity(_0x33982d,null))['catch'](handleError(_0x33982d,null));};exports[_0xb9b0('0x5f')]=function(_0x15f366,_0x14aeac){return db[_0xb9b0('0x55')][_0xb9b0('0x5f')]()[_0xb9b0('0x27')](respondWithResult(_0x14aeac,null))[_0xb9b0('0x31')](handleError(_0x14aeac,null));};var interaction_log=require(_0xb9b0('0x18'))(_0xb9b0('0x60'));exports[_0xb9b0('0x61')]=function(_0x47ecb2,_0xdb9c02,_0x5bc832){var _0x3f49fd={'channel':'chat'};if(_0x47ecb2[_0xb9b0('0x5e')]['id']){delete _0x47ecb2[_0xb9b0('0x5e')]['id'];}_0x47ecb2[_0xb9b0('0x5e')][_0xb9b0('0x62')]=!![];_0x47ecb2[_0xb9b0('0x5e')][_0xb9b0('0x63')]=moment()[_0xb9b0('0x64')](_0xb9b0('0x65'));_0x47ecb2[_0xb9b0('0x5e')][_0xb9b0('0x66')]=_0x47ecb2[_0xb9b0('0x5e')]['UserId']||_0x47ecb2[_0xb9b0('0x67')]['id'];return db[_0xb9b0('0x55')]['find']({'where':{'id':_0x47ecb2['params']['id'],'UserId':null},'include':[{'model':db[_0xb9b0('0x68')],'as':_0xb9b0('0x69')}]})['then'](handleEntityNotFound(_0xdb9c02,null))[_0xb9b0('0x27')](saveUpdates(_0x47ecb2[_0xb9b0('0x5e')],null))[_0xb9b0('0x27')](function(_0x4f6959){if(_0x4f6959){_0x3f49fd[_0xb9b0('0x2f')]=_0x4f6959[_0xb9b0('0x6a')]({'plain':!![]});return db[_0xb9b0('0x6b')][_0xb9b0('0x5c')]({'where':{'id':_0x4f6959[_0xb9b0('0x6c')]}});}return null;})[_0xb9b0('0x27')](handleEntityNotFound(_0xdb9c02,null))['then'](function(_0x5378eb){if(_0x5378eb){return _0x5378eb[_0xb9b0('0x3b')]({'UserId':_0x47ecb2[_0xb9b0('0x5e')]['UserId'],'read1stAt':_[_0xb9b0('0x6d')](_0x5378eb['read1stAt'])?moment()[_0xb9b0('0x64')](_0xb9b0('0x65')):undefined});}return null;})[_0xb9b0('0x27')](function(_0x22003a){if(_0x22003a){_0x3f49fd[_0xb9b0('0x6e')]=_0x22003a[_0xb9b0('0x6a')]({'plain':!![]});interaction_log[_0xb9b0('0x28')](_0xb9b0('0x6f'),_0x47ecb2['user']['id'],_0x47ecb2['user'][_0xb9b0('0x3e')],_0x47ecb2[_0xb9b0('0x67')][_0xb9b0('0x70')],_0x3f49fd[_0xb9b0('0x6e')]['id'],_0x47ecb2[_0xb9b0('0x5e')]?JSON[_0xb9b0('0x2c')](_0x47ecb2[_0xb9b0('0x5e')]):_0xb9b0('0x71'));return respondWithRpcPromise(_0xb9b0('0x72'),'acceptMessage',_0x3f49fd);}return null;})[_0xb9b0('0x27')](function(_0x142652){if(_0x142652){if(_0x47ecb2['body'][_0xb9b0('0x73')]){_0x3f49fd[_0xb9b0('0x2f')]['interface']=util[_0xb9b0('0x64')](_0xb9b0('0x74'),_0x47ecb2['user'][_0xb9b0('0x3e')]);_0x3f49fd[_0xb9b0('0x2f')][_0xb9b0('0x75')]=_0x3f49fd[_0xb9b0('0x75')];_0x3f49fd['message']['event']=_0xb9b0('0x61');return respondWithRpcPromise(_0xb9b0('0x76'),_0xb9b0('0x76'),{'event':_0xb9b0('0x77'),'message':_['merge'](_0x3f49fd[_0xb9b0('0x2f')],JSON[_0xb9b0('0x78')](_0x3f49fd[_0xb9b0('0x6e')]['formData']))},client9002)['then'](function(){return _0x3f49fd;});}return _0x3f49fd;}return null;})['then'](respondWithResult(_0xdb9c02,null))[_0xb9b0('0x31')](handleError(_0xdb9c02,null));};var interaction_log=require(_0xb9b0('0x18'))(_0xb9b0('0x60'));exports[_0xb9b0('0x79')]=function(_0x7726ff,_0x8548fb,_0x379d67){var _0x4a4104={'agent':{},'channel':'chat'};if(_0x7726ff[_0xb9b0('0x5e')]['id']){delete _0x7726ff[_0xb9b0('0x5e')]['id'];}_0x7726ff['body'][_0xb9b0('0x66')]=_0x7726ff[_0xb9b0('0x5e')][_0xb9b0('0x66')]||_0x7726ff[_0xb9b0('0x67')]['id'];_0x4a4104['agent']['id']=_0x7726ff['body'][_0xb9b0('0x66')];return db[_0xb9b0('0x55')][_0xb9b0('0x5c')]({'where':{'id':_0x7726ff[_0xb9b0('0x5a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x8548fb,null))[_0xb9b0('0x27')](function(_0x5c85cd){if(_0x5c85cd){_0x4a4104[_0xb9b0('0x2f')]=_0x5c85cd[_0xb9b0('0x6a')]({'plain':!![]});return db['ChatInteraction'][_0xb9b0('0x5c')]({'where':{'id':_0x5c85cd['ChatInteractionId']}});}return null;})[_0xb9b0('0x27')](handleEntityNotFound(_0x8548fb,null))[_0xb9b0('0x27')](function(_0xf9c3f6){if(_0xf9c3f6){_0x4a4104[_0xb9b0('0x6e')]=_0xf9c3f6[_0xb9b0('0x6a')]({'plain':!![]});interaction_log[_0xb9b0('0x28')](_0xb9b0('0x7a'),_0x7726ff[_0xb9b0('0x67')]['id'],_0x7726ff[_0xb9b0('0x67')][_0xb9b0('0x3e')],_0x7726ff[_0xb9b0('0x67')][_0xb9b0('0x70')],_0x4a4104[_0xb9b0('0x6e')]['id'],_0x7726ff[_0xb9b0('0x5e')]?JSON[_0xb9b0('0x2c')](_0x7726ff['body']):_0xb9b0('0x71'));return respondWithRpcPromise(_0xb9b0('0x7b'),_0xb9b0('0x7c'),_0x4a4104);}return null;})[_0xb9b0('0x27')](function(_0x1d589a){if(_0x1d589a){_0x1d589a[_0xb9b0('0x2f')][_0xb9b0('0x7d')]=util[_0xb9b0('0x64')](_0xb9b0('0x74'),_0x7726ff[_0xb9b0('0x67')][_0xb9b0('0x3e')]);_0x1d589a[_0xb9b0('0x2f')][_0xb9b0('0x75')]=_0x4a4104[_0xb9b0('0x75')];_0x1d589a[_0xb9b0('0x2f')]['event']=_0xb9b0('0x79');respondWithRpcPromise('EventManager',_0xb9b0('0x76'),{'event':'rejectmessage','message':_0x1d589a['message']},client9002);return _0x4a4104;}return null;})[_0xb9b0('0x27')](respondWithResult(_0x8548fb,null))[_0xb9b0('0x31')](handleError(_0x8548fb,null));};