a8fc4a7ddb8c42e50ab8457b8be7211a54cce1ac
[motion2.git] / server / api / smsInteraction / smsInteraction.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 _0x4eb0=['getOptions','findAll','query','catch','show','params','model','keys','SmsInteraction','rawAttributes','filters','intersection','attributes','fields','length','includeAll','find','create','body','describe','SmsMessage','addMessage','omit','findOne','nolimit','sort','where','pick','SmsInteractionId','filter','merge','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','ids','spread','Tag','color','emit','removeTags','download','unix','toString','root','server','tmp','join','transcript-%d-%s.zip','User','fullname','push','CmContact','Contact','firstName','lastName','createdAt','direction','secret','read','SmsAccount','Account','get','mkdirSync','Sms','Owner','N.A.','closed','closedAt','Messages','value','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','bluebird','path','ejs','lodash','../../components/interaction/service','../../components/export/pdf','../../config/logger','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','update','then','destroy','error','stack','name','send','index','type'];(function(_0x200c84,_0x34e0fd){var _0x1248f3=function(_0x261a6a){while(--_0x261a6a){_0x200c84['push'](_0x200c84['shift']());}};_0x1248f3(++_0x34e0fd);}(_0x4eb0,0x13b));var _0x04eb=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4eb0[_0x3bf83f];return _0x22c4a9;};'use strict';var rimraf=require(_0x04eb('0x0'));var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require(_0x04eb('0x1'));var util=require('util');var path=require(_0x04eb('0x2'));var ejs=require(_0x04eb('0x3'));var fs=require('fs');var _=require(_0x04eb('0x4'));var Redis=require('ioredis');var interaction=require(_0x04eb('0x5'));var qs=require('../../components/parsers/qs');var pdf=require(_0x04eb('0x6'));var logger=require(_0x04eb('0x7'))(_0x04eb('0x8'));var config=require(_0x04eb('0x9'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x04eb('0xa')](config[_0x04eb('0xb')],{'host':_0x04eb('0xc'),'port':0x18eb});var socket=require(_0x04eb('0xd'))(new Redis(config['redis']));require('./smsInteraction.socket')[_0x04eb('0xe')](socket);function respondWithStatusCode(_0x24f910,_0x35a2ef){_0x35a2ef=_0x35a2ef||0xcc;return function(_0x5f54f2){if(_0x5f54f2){return _0x24f910[_0x04eb('0xf')](_0x35a2ef);}return _0x24f910[_0x04eb('0x10')](_0x35a2ef)['end']();};}function respondWithResult(_0x1da460,_0x2bf968){_0x2bf968=_0x2bf968||0xc8;return function(_0x22d548){if(_0x22d548){return _0x1da460['status'](_0x2bf968)[_0x04eb('0x11')](_0x22d548);}};}function respondWithFilteredResult(_0x1c8f0a,_0xa3b2f6){return function(_0x386a05){if(_0x386a05){var _0x19b39f=typeof _0xa3b2f6['offset']===_0x04eb('0x12')&&typeof _0xa3b2f6['limit']===_0x04eb('0x12');var _0x54b637=_0x386a05[_0x04eb('0x13')];var _0x458abf=_0x19b39f?0x0:_0xa3b2f6[_0x04eb('0x14')];var _0xeaccd4=_0x19b39f?_0x386a05[_0x04eb('0x13')]:_0xa3b2f6[_0x04eb('0x14')]+_0xa3b2f6[_0x04eb('0x15')];var _0x1a0b19;if(_0xeaccd4>=_0x54b637){_0xeaccd4=_0x54b637;_0x1a0b19=0xc8;}else{_0x1a0b19=0xce;}_0x1c8f0a['status'](_0x1a0b19);return _0x1c8f0a[_0x04eb('0x16')](_0x04eb('0x17'),_0x458abf+'-'+_0xeaccd4+'/'+_0x54b637)[_0x04eb('0x11')](_0x386a05);}return null;};}function saveUpdates(_0x5e94e3){return function(_0x173854){if(_0x173854){return _0x173854[_0x04eb('0x18')](_0x5e94e3)[_0x04eb('0x19')](function(_0x471560){return _0x471560;});}return null;};}function removeEntity(_0x1e721f){return function(_0x433cf6){if(_0x433cf6){return _0x433cf6[_0x04eb('0x1a')]()[_0x04eb('0x19')](function(){_0x1e721f[_0x04eb('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa344f7){return function(_0x10cccf){if(!_0x10cccf){_0xa344f7[_0x04eb('0xf')](0x194);}return _0x10cccf;};}function handleError(_0x1b5648,_0x5b50ba){_0x5b50ba=_0x5b50ba||0x1f4;return function(_0x14f8e6){logger[_0x04eb('0x1b')](_0x14f8e6[_0x04eb('0x1c')]);if(_0x14f8e6[_0x04eb('0x1d')]){delete _0x14f8e6['name'];}_0x1b5648[_0x04eb('0x10')](_0x5b50ba)[_0x04eb('0x1e')](_0x14f8e6);};}exports[_0x04eb('0x1f')]=function(_0x161a8a,_0x194784){var _0x1d22cb={};var _0x530e70=_['map'](db['SmsInteraction']['rawAttributes'],function(_0x234c75){return{'name':_0x234c75['fieldName'],'type':_0x234c75[_0x04eb('0x20')]['key']};});_0x1d22cb=qs[_0x04eb('0x21')](_0x530e70,_0x161a8a);return interaction[_0x04eb('0x22')]('sms',_0x161a8a[_0x04eb('0x23')],_0x161a8a['user'],_0x1d22cb,_0x530e70)[_0x04eb('0x19')](respondWithFilteredResult(_0x194784,_0x1d22cb))[_0x04eb('0x24')](handleError(_0x194784,null));};exports[_0x04eb('0x25')]=function(_0x46cade,_0x1da7e2){var _0x51e64c={'raw':![],'where':{'id':_0x46cade[_0x04eb('0x26')]['id']}},_0x14eaae={};_0x14eaae[_0x04eb('0x27')]=_[_0x04eb('0x28')](db[_0x04eb('0x29')][_0x04eb('0x2a')]);_0x14eaae[_0x04eb('0x23')]=_[_0x04eb('0x28')](_0x46cade[_0x04eb('0x23')]);_0x14eaae[_0x04eb('0x2b')]=_[_0x04eb('0x2c')](_0x14eaae[_0x04eb('0x27')],_0x14eaae[_0x04eb('0x23')]);_0x51e64c[_0x04eb('0x2d')]=_['intersection'](_0x14eaae[_0x04eb('0x27')],qs[_0x04eb('0x2e')](_0x46cade['query'][_0x04eb('0x2e')]));_0x51e64c[_0x04eb('0x2d')]=_0x51e64c[_0x04eb('0x2d')][_0x04eb('0x2f')]?_0x51e64c[_0x04eb('0x2d')]:_0x14eaae[_0x04eb('0x27')];if(_0x46cade[_0x04eb('0x23')][_0x04eb('0x30')]){_0x51e64c['include']=[{'all':!![]}];}_0x51e64c=_['merge']({},_0x51e64c,_0x46cade['options']);return db['SmsInteraction'][_0x04eb('0x31')](_0x51e64c)['then'](handleEntityNotFound(_0x1da7e2,null))[_0x04eb('0x19')](respondWithResult(_0x1da7e2,null))[_0x04eb('0x24')](handleError(_0x1da7e2,null));};exports[_0x04eb('0x32')]=function(_0x8898fd,_0x3ea94e){return db['SmsInteraction'][_0x04eb('0x32')](_0x8898fd[_0x04eb('0x33')],{})[_0x04eb('0x19')](respondWithResult(_0x3ea94e,0xc9))[_0x04eb('0x24')](handleError(_0x3ea94e,null));};exports[_0x04eb('0x18')]=function(_0x30e1c9,_0x4b027f){if(_0x30e1c9[_0x04eb('0x33')]['id']){delete _0x30e1c9['body']['id'];}return db[_0x04eb('0x29')][_0x04eb('0x31')]({'where':{'id':_0x30e1c9['params']['id']}})['then'](handleEntityNotFound(_0x4b027f,null))[_0x04eb('0x19')](saveUpdates(_0x30e1c9[_0x04eb('0x33')],null))['then'](respondWithResult(_0x4b027f,null))[_0x04eb('0x24')](handleError(_0x4b027f,null));};exports[_0x04eb('0x1a')]=function(_0x53da7a,_0x1ccafb){return db[_0x04eb('0x29')][_0x04eb('0x31')]({'where':{'id':_0x53da7a[_0x04eb('0x26')]['id']}})[_0x04eb('0x19')](handleEntityNotFound(_0x1ccafb,null))[_0x04eb('0x19')](removeEntity(_0x1ccafb,null))[_0x04eb('0x24')](handleError(_0x1ccafb,null));};exports[_0x04eb('0x34')]=function(_0x5f788e,_0x183efd){return db[_0x04eb('0x29')][_0x04eb('0x34')]()[_0x04eb('0x19')](respondWithResult(_0x183efd,null))['catch'](handleError(_0x183efd,null));};exports['addMessage']=function(_0x48453c,_0x6c931b){return db[_0x04eb('0x35')]['find']({'where':{'id':_0x48453c['params']['id']}})['then'](handleEntityNotFound(_0x6c931b,null))[_0x04eb('0x19')](function(_0x15aa5e){if(_0x15aa5e){return _0x15aa5e[_0x04eb('0x36')](_0x48453c['body']['ids'],_[_0x04eb('0x37')](_0x48453c[_0x04eb('0x33')],['ids','id'])||{});}})['then'](respondWithResult(_0x6c931b,null))['catch'](handleError(_0x6c931b,null));};exports['getMessages']=function(_0x11c650,_0x37bc9a){var _0x506731={'raw':![],'where':{}};var _0x13bd1c={};var _0x316441={'count':0x0,'rows':[]};return db[_0x04eb('0x29')][_0x04eb('0x38')]({'where':{'id':_0x11c650[_0x04eb('0x26')]['id']}})[_0x04eb('0x19')](handleEntityNotFound(_0x37bc9a,null))[_0x04eb('0x19')](function(_0x104d1b){if(_0x104d1b){_0x13bd1c['model']=_['keys'](db[_0x04eb('0x35')]['rawAttributes']);_0x13bd1c[_0x04eb('0x23')]=_[_0x04eb('0x28')](_0x11c650[_0x04eb('0x23')]);_0x13bd1c[_0x04eb('0x2b')]=_[_0x04eb('0x2c')](_0x13bd1c[_0x04eb('0x27')],_0x13bd1c['query']);_0x506731[_0x04eb('0x2d')]=_[_0x04eb('0x2c')](_0x13bd1c[_0x04eb('0x27')],qs[_0x04eb('0x2e')](_0x11c650[_0x04eb('0x23')][_0x04eb('0x2e')]));_0x506731[_0x04eb('0x2d')]=_0x506731['attributes'][_0x04eb('0x2f')]?_0x506731[_0x04eb('0x2d')]:_0x13bd1c['model'];if(!_0x11c650[_0x04eb('0x23')]['hasOwnProperty'](_0x04eb('0x39'))){_0x506731[_0x04eb('0x15')]=qs['limit'](_0x11c650['query'][_0x04eb('0x15')]);_0x506731['offset']=qs[_0x04eb('0x14')](_0x11c650[_0x04eb('0x23')]['offset']);}_0x506731['order']=qs[_0x04eb('0x3a')](_0x11c650[_0x04eb('0x23')][_0x04eb('0x3a')]);_0x506731[_0x04eb('0x3b')]=qs[_0x04eb('0x2b')](_[_0x04eb('0x3c')](_0x11c650[_0x04eb('0x23')],_0x13bd1c[_0x04eb('0x2b')]));_0x506731[_0x04eb('0x3b')][_0x04eb('0x3d')]=_0x104d1b['id'];if(_0x11c650[_0x04eb('0x23')][_0x04eb('0x3e')]){_0x506731[_0x04eb('0x3b')]=_[_0x04eb('0x3f')](_0x506731['where'],{'$or':_[_0x04eb('0x40')](_0x506731[_0x04eb('0x2d')],function(_0x460be4){var _0x3b846d={};_0x3b846d[_0x460be4]={'$like':'%'+_0x11c650['query']['filter']+'%'};return _0x3b846d;})});}if(_0x11c650['query']['$gte']){var _0x1f02e8=_0x11c650[_0x04eb('0x23')][_0x04eb('0x41')][_0x04eb('0x42')](',');var _0x452da6={};_0x452da6[_0x1f02e8[0x0]]={'$gte':moment(_0x1f02e8[0x1])[_0x04eb('0x43')](_0x04eb('0x44'))};_0x506731[_0x04eb('0x3b')]=_[_0x04eb('0x3f')](_0x506731[_0x04eb('0x3b')],_0x452da6);}_0x506731=_[_0x04eb('0x3f')]({},_0x506731,_0x11c650['options']);return db[_0x04eb('0x35')][_0x04eb('0x13')]({'where':_0x506731['where']})['then'](function(_0x2d15e8){_0x316441[_0x04eb('0x13')]=_0x2d15e8;if(_0x11c650[_0x04eb('0x23')][_0x04eb('0x30')]){_0x506731['include']=[{'all':!![]}];}return db[_0x04eb('0x35')][_0x04eb('0x22')](_0x506731);})['then'](function(_0x2b28f9){_0x316441[_0x04eb('0x45')]=_0x2b28f9;return _0x316441;});}})[_0x04eb('0x19')](respondWithFilteredResult(_0x37bc9a,_0x506731))['catch'](handleError(_0x37bc9a,null));};exports[_0x04eb('0x46')]=function(_0x26b39b,_0x786362){return db[_0x04eb('0x29')]['find']({'where':{'id':_0x26b39b[_0x04eb('0x26')]['id']}})[_0x04eb('0x19')](handleEntityNotFound(_0x786362,null))['then'](function(_0x1ef582){if(_0x1ef582){return _0x1ef582[_0x04eb('0x47')](_0x26b39b[_0x04eb('0x33')][_0x04eb('0x48')],_[_0x04eb('0x37')](_0x26b39b[_0x04eb('0x33')],['ids','id'])||{})[_0x04eb('0x49')](function(){return db[_0x04eb('0x4a')][_0x04eb('0x22')]({'attributes':['id',_0x04eb('0x1d'),_0x04eb('0x4b')],'where':{'id':_0x26b39b[_0x04eb('0x33')][_0x04eb('0x48')]}});})[_0x04eb('0x19')](function(_0xfbf49a){socket[_0x04eb('0x4c')]('smsInteractionTags:save',{'id':Number(_0x26b39b[_0x04eb('0x26')]['id']),'tags':_0xfbf49a||[]});return{'id':Number(_0x26b39b[_0x04eb('0x26')]['id']),'tags':_0xfbf49a||[]};});}})[_0x04eb('0x19')](respondWithResult(_0x786362,null))[_0x04eb('0x24')](handleError(_0x786362,null));};exports['removeTags']=function(_0x24b2c7,_0x4c54ee){return db[_0x04eb('0x29')]['find']({'where':{'id':_0x24b2c7[_0x04eb('0x26')]['id']}})[_0x04eb('0x19')](handleEntityNotFound(_0x4c54ee,null))[_0x04eb('0x19')](function(_0x260c1c){if(_0x260c1c){return _0x260c1c[_0x04eb('0x4d')](_0x24b2c7[_0x04eb('0x23')][_0x04eb('0x48')]);}})['then'](respondWithStatusCode(_0x4c54ee,null))[_0x04eb('0x24')](handleError(_0x4c54ee,null));};exports[_0x04eb('0x4e')]=function(_0x2541b3,_0x2444b0){var _0x1c94a6=moment()[_0x04eb('0x4f')]()[_0x04eb('0x50')]();var _0x2d64ef=path['join'](config[_0x04eb('0x51')],_0x04eb('0x52'),'files',_0x04eb('0x53'));var _0x19722c=path[_0x04eb('0x54')](_0x2d64ef,_0x1c94a6);var _0x2dd0e5=util[_0x04eb('0x43')](_0x04eb('0x55'),_0x2541b3[_0x04eb('0x26')]['id'],_0x1c94a6);var _0x497224=path[_0x04eb('0x54')](_0x2d64ef,_0x2dd0e5);var _0x581a2c=[];_0x581a2c['push']({'model':db[_0x04eb('0x56')],'as':_0x04eb('0x56'),'attributes':['id',_0x04eb('0x57')],'raw':!![]});_0x581a2c[_0x04eb('0x58')]({'model':db[_0x04eb('0x59')],'as':_0x04eb('0x5a'),'attributes':['id',_0x04eb('0x5b'),_0x04eb('0x5c')],'raw':!![]});var _0x4afee5=[{'model':db[_0x04eb('0x35')],'as':'Messages','attributes':['id',_0x04eb('0x33'),_0x04eb('0x5d'),_0x04eb('0x5e'),_0x04eb('0x5f'),_0x04eb('0x60')],'include':_0x581a2c}];_0x4afee5[_0x04eb('0x58')]({'model':db[_0x04eb('0x61')],'as':_0x04eb('0x62'),'attributes':['id',_0x04eb('0x1d')]});_0x4afee5[_0x04eb('0x58')]({'model':db['User'],'as':'Owner','attributes':['id',_0x04eb('0x57')]});return db[_0x04eb('0x29')][_0x04eb('0x31')]({'where':{'id':_0x2541b3['params']['id']},'include':_0x4afee5})[_0x04eb('0x19')](handleEntityNotFound(_0x2444b0,null))[_0x04eb('0x19')](function(_0x5f2dc5){if(_0x5f2dc5){var _0x42ebbc=_0x5f2dc5[_0x04eb('0x63')]({'plain':!![]});fs[_0x04eb('0x64')](_0x19722c);var _0x5337d1={'channel':_0x04eb('0x65'),'account':_0x42ebbc[_0x04eb('0x62')][_0x04eb('0x1d')],'agent':_0x42ebbc[_0x04eb('0x66')]?_0x42ebbc[_0x04eb('0x66')][_0x04eb('0x57')]:_0x04eb('0x67'),'createdAt':moment(_0x42ebbc[_0x04eb('0x5d')])[_0x04eb('0x43')](_0x04eb('0x44'))[_0x04eb('0x50')](),'closedAt':_0x42ebbc[_0x04eb('0x68')]?moment(_0x42ebbc[_0x04eb('0x69')])[_0x04eb('0x43')](_0x04eb('0x44'))[_0x04eb('0x50')]():'','disposition':_0x42ebbc['disposition'],'messages':_(_0x42ebbc[_0x04eb('0x6a')])[_0x04eb('0x3e')]({'secret':![]})[_0x04eb('0x40')](function(_0xc2c8f9){return{'date':moment(_0xc2c8f9[_0x04eb('0x5d')])[_0x04eb('0x43')](_0x04eb('0x44'))[_0x04eb('0x50')](),'sender':_0xc2c8f9[_0x04eb('0x5e')]==='out'?_0xc2c8f9[_0x04eb('0x56')]?_0xc2c8f9[_0x04eb('0x56')]['fullname']:'System':_0xc2c8f9[_0x04eb('0x5a')][_0x04eb('0x5b')]+(_0xc2c8f9[_0x04eb('0x5a')][_0x04eb('0x5c')]?'\x20'+_0xc2c8f9[_0x04eb('0x5a')]['lastName']:''),'body':_0xc2c8f9[_0x04eb('0x33')],'direction':_0xc2c8f9[_0x04eb('0x5e')]==='out'?'A':'C','secret':_0xc2c8f9[_0x04eb('0x5f')],'read':_0xc2c8f9[_0x04eb('0x60')]};})[_0x04eb('0x6b')]()};return ejs[_0x04eb('0x6c')](path[_0x04eb('0x54')](config[_0x04eb('0x51')],_0x04eb('0x52'),'views',_0x04eb('0x6d')),{'interaction':_0x5337d1})[_0x04eb('0x19')](function(_0x2cfa85){var _0x42269d=path['join'](_0x19722c,_0x04eb('0x6e')+_0x42ebbc['id']+'-'+_0x1c94a6+_0x04eb('0x6f'));var _0x449f53={'path':_0x42269d,'channel':'Sms','interactionId':_0x42ebbc['id']};return pdf[_0x04eb('0x70')](_0x2cfa85,_0x449f53);})['then'](function(){return new BPromise(function(_0x5a4edb,_0x18b028){zipdir(_0x19722c,{'saveTo':_0x497224},function(_0x5e422c,_0x32b810){if(_0x5e422c)return _0x18b028(_0x5e422c);return _0x5a4edb(_0x32b810);});})[_0x04eb('0x19')](function(){return new BPromise(function(_0x257c9e,_0x3d0533){rimraf(_0x19722c,function(_0x36525b){if(_0x36525b)_0x3d0533(_0x36525b);return _0x257c9e();});});})[_0x04eb('0x19')](function(){return _0x2444b0['download'](_0x497224,_0x2dd0e5,function(_0x13ae9b){if(_0x13ae9b){console[_0x04eb('0x71')](_0x04eb('0x72'),_0x13ae9b);}else{fs[_0x04eb('0x73')](_0x497224);}});});});}else{return _0x2444b0[_0x04eb('0xf')](0xc8);}})[_0x04eb('0x24')](handleError(_0x2444b0,null));};