25bcde8a79a5dcd1ed76b8b775bd042b998e5798
[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 _0xc342=['update','params','describe','SmsMessage','addMessage','omit','ids','findOne','fields','nolimit','order','sort','pick','where','SmsInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','addTags','setTags','spread','Tag','color','emit','smsInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','transcript-%d-%s.zip','push','User','CmContact','Contact','firstName','lastName','Messages','createdAt','direction','secret','read','SmsAccount','Owner','fullname','get','Sms','closed','disposition','value','renderFile','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','status','end','offset','undefined','limit','count','set','then','destroy','sendStatus','error','name','send','index','map','SmsInteraction','rawAttributes','fieldName','type','findAll','sms','query','catch','show','model','keys','filters','intersection','attributes','length','includeAll','include','merge','find','create','body'];(function(_0x334e99,_0x34b383){var _0x46d6a2=function(_0x1faeb1){while(--_0x1faeb1){_0x334e99['push'](_0x334e99['shift']());}};_0x46d6a2(++_0x34b383);}(_0xc342,0x12d));var _0x2c34=function(_0x32e649,_0x228649){_0x32e649=_0x32e649-0x0;var _0x14d386=_0xc342[_0x32e649];return _0x14d386;};'use strict';var rimraf=require(_0x2c34('0x0'));var zipdir=require(_0x2c34('0x1'));var moment=require(_0x2c34('0x2'));var BPromise=require(_0x2c34('0x3'));var util=require(_0x2c34('0x4'));var path=require(_0x2c34('0x5'));var ejs=require(_0x2c34('0x6'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x2c34('0x7'));var interaction=require(_0x2c34('0x8'));var qs=require(_0x2c34('0x9'));var pdf=require(_0x2c34('0xa'));var logger=require(_0x2c34('0xb'))(_0x2c34('0xc'));var config=require(_0x2c34('0xd'));var db=require(_0x2c34('0xe'))['db'];config[_0x2c34('0xf')]=_[_0x2c34('0x10')](config[_0x2c34('0xf')],{'host':_0x2c34('0x11'),'port':0x18eb});var socket=require(_0x2c34('0x12'))(new Redis(config[_0x2c34('0xf')]));require(_0x2c34('0x13'))['register'](socket);function respondWithStatusCode(_0x3f38d1,_0x400d71){_0x400d71=_0x400d71||0xcc;return function(_0x5dc379){if(_0x5dc379){return _0x3f38d1['sendStatus'](_0x400d71);}return _0x3f38d1[_0x2c34('0x14')](_0x400d71)[_0x2c34('0x15')]();};}function respondWithResult(_0x3d6033,_0x32ba59){_0x32ba59=_0x32ba59||0xc8;return function(_0x23b3d6){if(_0x23b3d6){return _0x3d6033['status'](_0x32ba59)['json'](_0x23b3d6);}};}function respondWithFilteredResult(_0x1a25a9,_0x12eb5c){return function(_0x34f850){if(_0x34f850){var _0x7602e0=typeof _0x12eb5c[_0x2c34('0x16')]===_0x2c34('0x17')&&typeof _0x12eb5c[_0x2c34('0x18')]==='undefined';var _0x29b23e=_0x34f850['count'];var _0x3bf7e1=_0x7602e0?0x0:_0x12eb5c[_0x2c34('0x16')];var _0x1adce1=_0x7602e0?_0x34f850[_0x2c34('0x19')]:_0x12eb5c[_0x2c34('0x16')]+_0x12eb5c['limit'];var _0x246b66;if(_0x1adce1>=_0x29b23e){_0x1adce1=_0x29b23e;_0x246b66=0xc8;}else{_0x246b66=0xce;}_0x1a25a9[_0x2c34('0x14')](_0x246b66);return _0x1a25a9[_0x2c34('0x1a')]('Content-Range',_0x3bf7e1+'-'+_0x1adce1+'/'+_0x29b23e)['json'](_0x34f850);}return null;};}function saveUpdates(_0x80d0d0){return function(_0x590a04){if(_0x590a04){return _0x590a04['update'](_0x80d0d0)[_0x2c34('0x1b')](function(_0xb59296){return _0xb59296;});}return null;};}function removeEntity(_0x5ae242){return function(_0x25cf0d){if(_0x25cf0d){return _0x25cf0d[_0x2c34('0x1c')]()[_0x2c34('0x1b')](function(){_0x5ae242[_0x2c34('0x14')](0xcc)[_0x2c34('0x15')]();});}};}function handleEntityNotFound(_0x449cfa){return function(_0x3e33c6){if(!_0x3e33c6){_0x449cfa[_0x2c34('0x1d')](0x194);}return _0x3e33c6;};}function handleError(_0x5af2a3,_0x3f1abd){_0x3f1abd=_0x3f1abd||0x1f4;return function(_0x5c2b6c){logger[_0x2c34('0x1e')](_0x5c2b6c['stack']);if(_0x5c2b6c[_0x2c34('0x1f')]){delete _0x5c2b6c[_0x2c34('0x1f')];}_0x5af2a3[_0x2c34('0x14')](_0x3f1abd)[_0x2c34('0x20')](_0x5c2b6c);};}exports[_0x2c34('0x21')]=function(_0x1db59a,_0x20b8a6){var _0x557f21={};var _0x588612=_[_0x2c34('0x22')](db[_0x2c34('0x23')][_0x2c34('0x24')],function(_0xc5aa21){return{'name':_0xc5aa21[_0x2c34('0x25')],'type':_0xc5aa21[_0x2c34('0x26')]['key']};});_0x557f21=qs['getOptions'](_0x588612,_0x1db59a);return interaction[_0x2c34('0x27')](_0x2c34('0x28'),_0x1db59a[_0x2c34('0x29')],_0x1db59a['user'],_0x557f21,_0x588612)[_0x2c34('0x1b')](respondWithFilteredResult(_0x20b8a6,_0x557f21))[_0x2c34('0x2a')](handleError(_0x20b8a6,null));};exports[_0x2c34('0x2b')]=function(_0x1fc19e,_0x4c1c4a){var _0x4d3161={'raw':![],'where':{'id':_0x1fc19e['params']['id']}},_0x1fe415={};_0x1fe415[_0x2c34('0x2c')]=_['keys'](db[_0x2c34('0x23')][_0x2c34('0x24')]);_0x1fe415[_0x2c34('0x29')]=_[_0x2c34('0x2d')](_0x1fc19e['query']);_0x1fe415[_0x2c34('0x2e')]=_[_0x2c34('0x2f')](_0x1fe415[_0x2c34('0x2c')],_0x1fe415['query']);_0x4d3161[_0x2c34('0x30')]=_['intersection'](_0x1fe415['model'],qs['fields'](_0x1fc19e['query']['fields']));_0x4d3161[_0x2c34('0x30')]=_0x4d3161[_0x2c34('0x30')][_0x2c34('0x31')]?_0x4d3161[_0x2c34('0x30')]:_0x1fe415[_0x2c34('0x2c')];if(_0x1fc19e[_0x2c34('0x29')][_0x2c34('0x32')]){_0x4d3161[_0x2c34('0x33')]=[{'all':!![]}];}_0x4d3161=_[_0x2c34('0x34')]({},_0x4d3161,_0x1fc19e['options']);return db['SmsInteraction'][_0x2c34('0x35')](_0x4d3161)[_0x2c34('0x1b')](handleEntityNotFound(_0x4c1c4a,null))[_0x2c34('0x1b')](respondWithResult(_0x4c1c4a,null))[_0x2c34('0x2a')](handleError(_0x4c1c4a,null));};exports[_0x2c34('0x36')]=function(_0x50333c,_0x1a9106){return db[_0x2c34('0x23')]['create'](_0x50333c[_0x2c34('0x37')],{})[_0x2c34('0x1b')](respondWithResult(_0x1a9106,0xc9))[_0x2c34('0x2a')](handleError(_0x1a9106,null));};exports[_0x2c34('0x38')]=function(_0x502c42,_0x569af3){if(_0x502c42['body']['id']){delete _0x502c42[_0x2c34('0x37')]['id'];}return db[_0x2c34('0x23')][_0x2c34('0x35')]({'where':{'id':_0x502c42[_0x2c34('0x39')]['id']}})['then'](handleEntityNotFound(_0x569af3,null))['then'](saveUpdates(_0x502c42[_0x2c34('0x37')],null))[_0x2c34('0x1b')](respondWithResult(_0x569af3,null))['catch'](handleError(_0x569af3,null));};exports['destroy']=function(_0x26038b,_0x51c9c1){return db[_0x2c34('0x23')]['find']({'where':{'id':_0x26038b[_0x2c34('0x39')]['id']}})['then'](handleEntityNotFound(_0x51c9c1,null))[_0x2c34('0x1b')](removeEntity(_0x51c9c1,null))[_0x2c34('0x2a')](handleError(_0x51c9c1,null));};exports[_0x2c34('0x3a')]=function(_0x378d49,_0x583975){return db[_0x2c34('0x23')][_0x2c34('0x3a')]()[_0x2c34('0x1b')](respondWithResult(_0x583975,null))[_0x2c34('0x2a')](handleError(_0x583975,null));};exports['addMessage']=function(_0x1724d4,_0x408e2e){return db[_0x2c34('0x3b')][_0x2c34('0x35')]({'where':{'id':_0x1724d4[_0x2c34('0x39')]['id']}})[_0x2c34('0x1b')](handleEntityNotFound(_0x408e2e,null))[_0x2c34('0x1b')](function(_0x2ea96a){if(_0x2ea96a){return _0x2ea96a[_0x2c34('0x3c')](_0x1724d4['body']['ids'],_[_0x2c34('0x3d')](_0x1724d4['body'],[_0x2c34('0x3e'),'id'])||{});}})[_0x2c34('0x1b')](respondWithResult(_0x408e2e,null))[_0x2c34('0x2a')](handleError(_0x408e2e,null));};exports['getMessages']=function(_0x4b5ed8,_0x2e3e11){var _0x133129={'raw':![],'where':{}};var _0x4c801f={};var _0x356334={'count':0x0,'rows':[]};return db[_0x2c34('0x23')][_0x2c34('0x3f')]({'where':{'id':_0x4b5ed8['params']['id']}})['then'](handleEntityNotFound(_0x2e3e11,null))[_0x2c34('0x1b')](function(_0x4d9f0a){if(_0x4d9f0a){_0x4c801f[_0x2c34('0x2c')]=_[_0x2c34('0x2d')](db[_0x2c34('0x3b')][_0x2c34('0x24')]);_0x4c801f[_0x2c34('0x29')]=_['keys'](_0x4b5ed8[_0x2c34('0x29')]);_0x4c801f[_0x2c34('0x2e')]=_[_0x2c34('0x2f')](_0x4c801f['model'],_0x4c801f['query']);_0x133129['attributes']=_['intersection'](_0x4c801f['model'],qs[_0x2c34('0x40')](_0x4b5ed8[_0x2c34('0x29')][_0x2c34('0x40')]));_0x133129['attributes']=_0x133129[_0x2c34('0x30')][_0x2c34('0x31')]?_0x133129['attributes']:_0x4c801f['model'];if(!_0x4b5ed8[_0x2c34('0x29')]['hasOwnProperty'](_0x2c34('0x41'))){_0x133129[_0x2c34('0x18')]=qs[_0x2c34('0x18')](_0x4b5ed8[_0x2c34('0x29')][_0x2c34('0x18')]);_0x133129[_0x2c34('0x16')]=qs['offset'](_0x4b5ed8[_0x2c34('0x29')][_0x2c34('0x16')]);}_0x133129[_0x2c34('0x42')]=qs[_0x2c34('0x43')](_0x4b5ed8[_0x2c34('0x29')][_0x2c34('0x43')]);_0x133129['where']=qs['filters'](_[_0x2c34('0x44')](_0x4b5ed8[_0x2c34('0x29')],_0x4c801f[_0x2c34('0x2e')]));_0x133129[_0x2c34('0x45')][_0x2c34('0x46')]=_0x4d9f0a['id'];if(_0x4b5ed8[_0x2c34('0x29')][_0x2c34('0x47')]){_0x133129[_0x2c34('0x45')]=_[_0x2c34('0x34')](_0x133129[_0x2c34('0x45')],{'$or':_[_0x2c34('0x22')](_0x133129['attributes'],function(_0x5a315e){var _0x3d1ab0={};_0x3d1ab0[_0x5a315e]={'$like':'%'+_0x4b5ed8[_0x2c34('0x29')][_0x2c34('0x47')]+'%'};return _0x3d1ab0;})});}if(_0x4b5ed8[_0x2c34('0x29')][_0x2c34('0x48')]){var _0x453753=_0x4b5ed8[_0x2c34('0x29')][_0x2c34('0x48')][_0x2c34('0x49')](',');var _0x38b094={};_0x38b094[_0x453753[0x0]]={'$gte':moment(_0x453753[0x1])[_0x2c34('0x4a')](_0x2c34('0x4b'))};_0x133129[_0x2c34('0x45')]=_[_0x2c34('0x34')](_0x133129[_0x2c34('0x45')],_0x38b094);}_0x133129=_[_0x2c34('0x34')]({},_0x133129,_0x4b5ed8[_0x2c34('0x4c')]);return db['SmsMessage'][_0x2c34('0x19')]({'where':_0x133129[_0x2c34('0x45')]})[_0x2c34('0x1b')](function(_0xc91cd7){_0x356334[_0x2c34('0x19')]=_0xc91cd7;if(_0x4b5ed8[_0x2c34('0x29')]['includeAll']){_0x133129[_0x2c34('0x33')]=[{'all':!![]}];}return db['SmsMessage'][_0x2c34('0x27')](_0x133129);})[_0x2c34('0x1b')](function(_0x13b0b2){_0x356334['rows']=_0x13b0b2;return _0x356334;});}})[_0x2c34('0x1b')](respondWithFilteredResult(_0x2e3e11,_0x133129))[_0x2c34('0x2a')](handleError(_0x2e3e11,null));};exports[_0x2c34('0x4d')]=function(_0x42d314,_0x371092){return db[_0x2c34('0x23')][_0x2c34('0x35')]({'where':{'id':_0x42d314[_0x2c34('0x39')]['id']}})[_0x2c34('0x1b')](handleEntityNotFound(_0x371092,null))[_0x2c34('0x1b')](function(_0x12ee60){if(_0x12ee60){return _0x12ee60[_0x2c34('0x4e')](_0x42d314[_0x2c34('0x37')]['ids'],_[_0x2c34('0x3d')](_0x42d314[_0x2c34('0x37')],[_0x2c34('0x3e'),'id'])||{})[_0x2c34('0x4f')](function(){return db[_0x2c34('0x50')][_0x2c34('0x27')]({'attributes':['id',_0x2c34('0x1f'),_0x2c34('0x51')],'where':{'id':_0x42d314['body'][_0x2c34('0x3e')]}});})['then'](function(_0x5f47bd){socket[_0x2c34('0x52')](_0x2c34('0x53'),{'id':Number(_0x42d314['params']['id']),'tags':_0x5f47bd||[]});return{'id':Number(_0x42d314[_0x2c34('0x39')]['id']),'tags':_0x5f47bd||[]};});}})[_0x2c34('0x1b')](respondWithResult(_0x371092,null))[_0x2c34('0x2a')](handleError(_0x371092,null));};exports[_0x2c34('0x54')]=function(_0x38d880,_0x3fdb4d){return db[_0x2c34('0x23')][_0x2c34('0x35')]({'where':{'id':_0x38d880['params']['id']}})[_0x2c34('0x1b')](handleEntityNotFound(_0x3fdb4d,null))[_0x2c34('0x1b')](function(_0x586691){if(_0x586691){return _0x586691[_0x2c34('0x54')](_0x38d880[_0x2c34('0x29')][_0x2c34('0x3e')]);}})[_0x2c34('0x1b')](respondWithStatusCode(_0x3fdb4d,null))['catch'](handleError(_0x3fdb4d,null));};exports[_0x2c34('0x55')]=function(_0x18c163,_0x37324b){var _0x506612=moment()[_0x2c34('0x56')]()[_0x2c34('0x57')]();var _0x28a860=path[_0x2c34('0x58')](config[_0x2c34('0x59')],_0x2c34('0x5a'),_0x2c34('0x5b'),'tmp');var _0xdf4d48=path['join'](_0x28a860,_0x506612);var _0x516925=util[_0x2c34('0x4a')](_0x2c34('0x5c'),_0x18c163[_0x2c34('0x39')]['id'],_0x506612);var _0x5f2c34=path[_0x2c34('0x58')](_0x28a860,_0x516925);var _0x44a2fa=[];_0x44a2fa[_0x2c34('0x5d')]({'model':db[_0x2c34('0x5e')],'as':_0x2c34('0x5e'),'attributes':['id','fullname'],'raw':!![]});_0x44a2fa[_0x2c34('0x5d')]({'model':db[_0x2c34('0x5f')],'as':_0x2c34('0x60'),'attributes':['id',_0x2c34('0x61'),_0x2c34('0x62')],'raw':!![]});var _0x5b184e=[{'model':db[_0x2c34('0x3b')],'as':_0x2c34('0x63'),'attributes':['id',_0x2c34('0x37'),_0x2c34('0x64'),_0x2c34('0x65'),_0x2c34('0x66'),_0x2c34('0x67')],'include':_0x44a2fa}];_0x5b184e[_0x2c34('0x5d')]({'model':db[_0x2c34('0x68')],'as':'Account','attributes':['id',_0x2c34('0x1f')]});_0x5b184e[_0x2c34('0x5d')]({'model':db[_0x2c34('0x5e')],'as':_0x2c34('0x69'),'attributes':['id',_0x2c34('0x6a')]});return db['SmsInteraction'][_0x2c34('0x35')]({'where':{'id':_0x18c163[_0x2c34('0x39')]['id']},'include':_0x5b184e})[_0x2c34('0x1b')](handleEntityNotFound(_0x37324b,null))[_0x2c34('0x1b')](function(_0x178183){if(_0x178183){var _0x22b65a=_0x178183[_0x2c34('0x6b')]({'plain':!![]});fs['mkdirSync'](_0xdf4d48);var _0x54c427={'channel':_0x2c34('0x6c'),'account':_0x22b65a['Account'][_0x2c34('0x1f')],'agent':_0x22b65a[_0x2c34('0x69')]?_0x22b65a['Owner'][_0x2c34('0x6a')]:'N.A.','createdAt':moment(_0x22b65a['createdAt'])[_0x2c34('0x4a')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2c34('0x57')](),'closedAt':_0x22b65a[_0x2c34('0x6d')]?moment(_0x22b65a['closedAt'])[_0x2c34('0x4a')](_0x2c34('0x4b'))[_0x2c34('0x57')]():'','disposition':_0x22b65a[_0x2c34('0x6e')],'messages':_(_0x22b65a['Messages'])[_0x2c34('0x47')]({'secret':![]})[_0x2c34('0x22')](function(_0x163a67){return{'date':moment(_0x163a67['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x2c34('0x57')](),'sender':_0x163a67['direction']==='out'?_0x163a67[_0x2c34('0x5e')]?_0x163a67[_0x2c34('0x5e')][_0x2c34('0x6a')]:'System':_0x163a67['Contact'][_0x2c34('0x61')]+(_0x163a67[_0x2c34('0x60')][_0x2c34('0x62')]?'\x20'+_0x163a67[_0x2c34('0x60')][_0x2c34('0x62')]:''),'body':_0x163a67[_0x2c34('0x37')],'direction':_0x163a67[_0x2c34('0x65')]==='out'?'A':'C','secret':_0x163a67['secret'],'read':_0x163a67[_0x2c34('0x67')]};})[_0x2c34('0x6f')]()};return ejs[_0x2c34('0x70')](path[_0x2c34('0x58')](config[_0x2c34('0x59')],_0x2c34('0x5a'),'views',_0x2c34('0x71')),{'interaction':_0x54c427})[_0x2c34('0x1b')](function(_0x14b12d){var _0x287c26=path[_0x2c34('0x58')](_0xdf4d48,_0x2c34('0x72')+_0x22b65a['id']+'-'+_0x506612+'.pdf');var _0x1fddb6={'path':_0x287c26,'channel':_0x2c34('0x6c'),'interactionId':_0x22b65a['id']};return pdf[_0x2c34('0x73')](_0x14b12d,_0x1fddb6);})[_0x2c34('0x1b')](function(){return new BPromise(function(_0x5d5ed4,_0x92d67d){zipdir(_0xdf4d48,{'saveTo':_0x5f2c34},function(_0x5db293,_0x2e90cc){if(_0x5db293)return _0x92d67d(_0x5db293);return _0x5d5ed4(_0x2e90cc);});})[_0x2c34('0x1b')](function(){return new BPromise(function(_0x39f6b4,_0x484e0d){rimraf(_0xdf4d48,function(_0x139e48){if(_0x139e48)_0x484e0d(_0x139e48);return _0x39f6b4();});});})[_0x2c34('0x1b')](function(){return _0x37324b['download'](_0x5f2c34,_0x516925,function(_0x1ee652){if(_0x1ee652){console[_0x2c34('0x74')](_0x2c34('0x75'),_0x1ee652);}else{fs[_0x2c34('0x76')](_0x5f2c34);}});});});}else{return _0x37324b['sendStatus'](0xc8);}})[_0x2c34('0x2a')](handleError(_0x37324b,null));};