64cf22bcf803b611b4a15327fff4309fd519e9e9
[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 _0x30e6=['sort','where','pick','filter','$gte','split','format','rows','addTags','ids','spread','Tag','emit','smsInteractionTags:save','removeTags','download','unix','root','server','tmp','transcript-%d-%s.zip','join','User','firstName','Messages','createdAt','read','push','SmsAccount','Account','Owner','fullname','get','mkdirSync','Sms','YYYY-MM-DD\x20HH:mm:ss','toString','closed','closedAt','disposition','out','System','Contact','lastName','direction','secret','value','views','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','moment','util','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','then','destroy','error','stack','name','index','map','SmsInteraction','rawAttributes','fieldName','type','key','findAll','sms','query','show','params','model','keys','intersection','attributes','length','includeAll','include','merge','options','find','catch','create','body','describe','addMessage','SmsMessage','omit','getMessages','filters','fields','hasOwnProperty','order'];(function(_0x874cf1,_0x2a4954){var _0x233579=function(_0xa6e939){while(--_0xa6e939){_0x874cf1['push'](_0x874cf1['shift']());}};_0x233579(++_0x2a4954);}(_0x30e6,0xab));var _0x630e=function(_0x252421,_0x50d741){_0x252421=_0x252421-0x0;var _0x3dd984=_0x30e6[_0x252421];return _0x3dd984;};'use strict';var rimraf=require(_0x630e('0x0'));var zipdir=require(_0x630e('0x1'));var moment=require(_0x630e('0x2'));var BPromise=require('bluebird');var util=require(_0x630e('0x3'));var path=require('path');var ejs=require(_0x630e('0x4'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x630e('0x5'));var interaction=require(_0x630e('0x6'));var qs=require(_0x630e('0x7'));var pdf=require('../../components/export/pdf');var logger=require(_0x630e('0x8'))(_0x630e('0x9'));var config=require(_0x630e('0xa'));var db=require(_0x630e('0xb'))['db'];config[_0x630e('0xc')]=_[_0x630e('0xd')](config[_0x630e('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x630e('0xe'))(new Redis(config[_0x630e('0xc')]));require(_0x630e('0xf'))[_0x630e('0x10')](socket);function respondWithStatusCode(_0x3e308f,_0xec7281){_0xec7281=_0xec7281||0xcc;return function(_0x1154b3){if(_0x1154b3){return _0x3e308f[_0x630e('0x11')](_0xec7281);}return _0x3e308f[_0x630e('0x12')](_0xec7281)[_0x630e('0x13')]();};}function respondWithResult(_0xfcd923,_0xbbf1fa){_0xbbf1fa=_0xbbf1fa||0xc8;return function(_0x397169){if(_0x397169){return _0xfcd923[_0x630e('0x12')](_0xbbf1fa)[_0x630e('0x14')](_0x397169);}};}function respondWithFilteredResult(_0x317041,_0x465b68){return function(_0x520a66){if(_0x520a66){var _0x3e6bfd=typeof _0x465b68['offset']===_0x630e('0x15')&&typeof _0x465b68[_0x630e('0x16')]===_0x630e('0x15');var _0x13368c=_0x520a66[_0x630e('0x17')];var _0x1222d1=_0x3e6bfd?0x0:_0x465b68[_0x630e('0x18')];var _0x121d32=_0x3e6bfd?_0x520a66[_0x630e('0x17')]:_0x465b68[_0x630e('0x18')]+_0x465b68[_0x630e('0x16')];var _0x252b23;if(_0x121d32>=_0x13368c){_0x121d32=_0x13368c;_0x252b23=0xc8;}else{_0x252b23=0xce;}_0x317041['status'](_0x252b23);return _0x317041[_0x630e('0x19')]('Content-Range',_0x1222d1+'-'+_0x121d32+'/'+_0x13368c)[_0x630e('0x14')](_0x520a66);}return null;};}function saveUpdates(_0x48b1dc){return function(_0x3d9e13){if(_0x3d9e13){return _0x3d9e13['update'](_0x48b1dc)[_0x630e('0x1a')](function(_0x21875d){return _0x21875d;});}return null;};}function removeEntity(_0x2b0a97){return function(_0x441f82){if(_0x441f82){return _0x441f82[_0x630e('0x1b')]()[_0x630e('0x1a')](function(){_0x2b0a97[_0x630e('0x12')](0xcc)[_0x630e('0x13')]();});}};}function handleEntityNotFound(_0x369385){return function(_0x52835a){if(!_0x52835a){_0x369385[_0x630e('0x11')](0x194);}return _0x52835a;};}function handleError(_0x394c08,_0x576989){_0x576989=_0x576989||0x1f4;return function(_0x2b41eb){logger[_0x630e('0x1c')](_0x2b41eb[_0x630e('0x1d')]);if(_0x2b41eb[_0x630e('0x1e')]){delete _0x2b41eb[_0x630e('0x1e')];}_0x394c08[_0x630e('0x12')](_0x576989)['send'](_0x2b41eb);};}exports[_0x630e('0x1f')]=function(_0xad9c47,_0x66f9eb){var _0x17c7af={};var _0xe210d=_[_0x630e('0x20')](db[_0x630e('0x21')][_0x630e('0x22')],function(_0x230fc0){return{'name':_0x230fc0[_0x630e('0x23')],'type':_0x230fc0[_0x630e('0x24')][_0x630e('0x25')]};});_0x17c7af=qs['getOptions'](_0xe210d,_0xad9c47);return interaction[_0x630e('0x26')](_0x630e('0x27'),_0xad9c47[_0x630e('0x28')],_0xad9c47['user'],_0x17c7af,_0xe210d)[_0x630e('0x1a')](respondWithFilteredResult(_0x66f9eb,_0x17c7af))['catch'](handleError(_0x66f9eb,null));};exports[_0x630e('0x29')]=function(_0x549993,_0x44a7d8){var _0x30d18f={'raw':![],'where':{'id':_0x549993[_0x630e('0x2a')]['id']}},_0x46a2d4={};_0x46a2d4[_0x630e('0x2b')]=_['keys'](db[_0x630e('0x21')][_0x630e('0x22')]);_0x46a2d4[_0x630e('0x28')]=_[_0x630e('0x2c')](_0x549993[_0x630e('0x28')]);_0x46a2d4['filters']=_[_0x630e('0x2d')](_0x46a2d4[_0x630e('0x2b')],_0x46a2d4[_0x630e('0x28')]);_0x30d18f['attributes']=_[_0x630e('0x2d')](_0x46a2d4[_0x630e('0x2b')],qs['fields'](_0x549993[_0x630e('0x28')]['fields']));_0x30d18f['attributes']=_0x30d18f[_0x630e('0x2e')][_0x630e('0x2f')]?_0x30d18f[_0x630e('0x2e')]:_0x46a2d4[_0x630e('0x2b')];if(_0x549993[_0x630e('0x28')][_0x630e('0x30')]){_0x30d18f[_0x630e('0x31')]=[{'all':!![]}];}_0x30d18f=_[_0x630e('0x32')]({},_0x30d18f,_0x549993[_0x630e('0x33')]);return db[_0x630e('0x21')][_0x630e('0x34')](_0x30d18f)['then'](handleEntityNotFound(_0x44a7d8,null))['then'](respondWithResult(_0x44a7d8,null))[_0x630e('0x35')](handleError(_0x44a7d8,null));};exports[_0x630e('0x36')]=function(_0x22ae0c,_0x29784a){return db[_0x630e('0x21')][_0x630e('0x36')](_0x22ae0c['body'],{})[_0x630e('0x1a')](respondWithResult(_0x29784a,0xc9))[_0x630e('0x35')](handleError(_0x29784a,null));};exports['update']=function(_0x1f469b,_0x42b092){if(_0x1f469b[_0x630e('0x37')]['id']){delete _0x1f469b[_0x630e('0x37')]['id'];}return db[_0x630e('0x21')]['find']({'where':{'id':_0x1f469b[_0x630e('0x2a')]['id']}})[_0x630e('0x1a')](handleEntityNotFound(_0x42b092,null))[_0x630e('0x1a')](saveUpdates(_0x1f469b[_0x630e('0x37')],null))[_0x630e('0x1a')](respondWithResult(_0x42b092,null))['catch'](handleError(_0x42b092,null));};exports[_0x630e('0x1b')]=function(_0xc2b5a3,_0xb33500){return db['SmsInteraction'][_0x630e('0x34')]({'where':{'id':_0xc2b5a3[_0x630e('0x2a')]['id']}})[_0x630e('0x1a')](handleEntityNotFound(_0xb33500,null))[_0x630e('0x1a')](removeEntity(_0xb33500,null))[_0x630e('0x35')](handleError(_0xb33500,null));};exports[_0x630e('0x38')]=function(_0xdee6a,_0x5aa935){return db['SmsInteraction'][_0x630e('0x38')]()['then'](respondWithResult(_0x5aa935,null))[_0x630e('0x35')](handleError(_0x5aa935,null));};exports[_0x630e('0x39')]=function(_0x1c23b8,_0x39b4df){return db[_0x630e('0x3a')][_0x630e('0x34')]({'where':{'id':_0x1c23b8[_0x630e('0x2a')]['id']}})[_0x630e('0x1a')](handleEntityNotFound(_0x39b4df,null))[_0x630e('0x1a')](function(_0x24c3e7){if(_0x24c3e7){return _0x24c3e7[_0x630e('0x39')](_0x1c23b8[_0x630e('0x37')]['ids'],_[_0x630e('0x3b')](_0x1c23b8[_0x630e('0x37')],['ids','id'])||{});}})[_0x630e('0x1a')](respondWithResult(_0x39b4df,null))['catch'](handleError(_0x39b4df,null));};exports[_0x630e('0x3c')]=function(_0x59927c,_0x63a7b0){var _0x2ad589={'raw':![],'where':{}};var _0x36912d={};var _0x3529fe={'count':0x0,'rows':[]};return db['SmsInteraction']['findOne']({'where':{'id':_0x59927c[_0x630e('0x2a')]['id']}})[_0x630e('0x1a')](handleEntityNotFound(_0x63a7b0,null))['then'](function(_0x4e9543){if(_0x4e9543){_0x36912d[_0x630e('0x2b')]=_['keys'](db[_0x630e('0x3a')]['rawAttributes']);_0x36912d['query']=_[_0x630e('0x2c')](_0x59927c[_0x630e('0x28')]);_0x36912d[_0x630e('0x3d')]=_[_0x630e('0x2d')](_0x36912d[_0x630e('0x2b')],_0x36912d[_0x630e('0x28')]);_0x2ad589['attributes']=_[_0x630e('0x2d')](_0x36912d[_0x630e('0x2b')],qs[_0x630e('0x3e')](_0x59927c['query'][_0x630e('0x3e')]));_0x2ad589[_0x630e('0x2e')]=_0x2ad589[_0x630e('0x2e')][_0x630e('0x2f')]?_0x2ad589[_0x630e('0x2e')]:_0x36912d[_0x630e('0x2b')];if(!_0x59927c[_0x630e('0x28')][_0x630e('0x3f')]('nolimit')){_0x2ad589[_0x630e('0x16')]=qs[_0x630e('0x16')](_0x59927c[_0x630e('0x28')][_0x630e('0x16')]);_0x2ad589[_0x630e('0x18')]=qs[_0x630e('0x18')](_0x59927c[_0x630e('0x28')][_0x630e('0x18')]);}_0x2ad589[_0x630e('0x40')]=qs['sort'](_0x59927c[_0x630e('0x28')][_0x630e('0x41')]);_0x2ad589[_0x630e('0x42')]=qs['filters'](_[_0x630e('0x43')](_0x59927c[_0x630e('0x28')],_0x36912d[_0x630e('0x3d')]));_0x2ad589[_0x630e('0x42')]['SmsInteractionId']=_0x4e9543['id'];if(_0x59927c['query'][_0x630e('0x44')]){_0x2ad589[_0x630e('0x42')]=_[_0x630e('0x32')](_0x2ad589[_0x630e('0x42')],{'$or':_[_0x630e('0x20')](_0x2ad589[_0x630e('0x2e')],function(_0x24cd18){var _0x1c7883={};_0x1c7883[_0x24cd18]={'$like':'%'+_0x59927c[_0x630e('0x28')]['filter']+'%'};return _0x1c7883;})});}if(_0x59927c[_0x630e('0x28')][_0x630e('0x45')]){var _0x116483=_0x59927c[_0x630e('0x28')][_0x630e('0x45')][_0x630e('0x46')](',');var _0x120f4f={};_0x120f4f[_0x116483[0x0]]={'$gte':moment(_0x116483[0x1])[_0x630e('0x47')]('YYYY-MM-DD\x20HH:mm:ss')};_0x2ad589[_0x630e('0x42')]=_[_0x630e('0x32')](_0x2ad589[_0x630e('0x42')],_0x120f4f);}_0x2ad589=_['merge']({},_0x2ad589,_0x59927c[_0x630e('0x33')]);return db[_0x630e('0x3a')][_0x630e('0x17')]({'where':_0x2ad589['where']})[_0x630e('0x1a')](function(_0x4d97ed){_0x3529fe[_0x630e('0x17')]=_0x4d97ed;if(_0x59927c['query'][_0x630e('0x30')]){_0x2ad589[_0x630e('0x31')]=[{'all':!![]}];}return db[_0x630e('0x3a')]['findAll'](_0x2ad589);})[_0x630e('0x1a')](function(_0x1634b1){_0x3529fe[_0x630e('0x48')]=_0x1634b1;return _0x3529fe;});}})['then'](respondWithFilteredResult(_0x63a7b0,_0x2ad589))['catch'](handleError(_0x63a7b0,null));};exports[_0x630e('0x49')]=function(_0x1ea918,_0x408b77){return db[_0x630e('0x21')][_0x630e('0x34')]({'where':{'id':_0x1ea918[_0x630e('0x2a')]['id']}})[_0x630e('0x1a')](handleEntityNotFound(_0x408b77,null))[_0x630e('0x1a')](function(_0x55902f){if(_0x55902f){return _0x55902f['setTags'](_0x1ea918[_0x630e('0x37')][_0x630e('0x4a')],_['omit'](_0x1ea918[_0x630e('0x37')],[_0x630e('0x4a'),'id'])||{})[_0x630e('0x4b')](function(){return db[_0x630e('0x4c')]['findAll']({'attributes':['id',_0x630e('0x1e'),'color'],'where':{'id':_0x1ea918[_0x630e('0x37')][_0x630e('0x4a')]}});})['then'](function(_0x4ff760){socket[_0x630e('0x4d')](_0x630e('0x4e'),{'id':Number(_0x1ea918[_0x630e('0x2a')]['id']),'tags':_0x4ff760||[]});return{'id':Number(_0x1ea918[_0x630e('0x2a')]['id']),'tags':_0x4ff760||[]};});}})[_0x630e('0x1a')](respondWithResult(_0x408b77,null))[_0x630e('0x35')](handleError(_0x408b77,null));};exports[_0x630e('0x4f')]=function(_0xb65e3,_0x2464c0){return db['SmsInteraction'][_0x630e('0x34')]({'where':{'id':_0xb65e3['params']['id']}})[_0x630e('0x1a')](handleEntityNotFound(_0x2464c0,null))['then'](function(_0x51a223){if(_0x51a223){return _0x51a223[_0x630e('0x4f')](_0xb65e3[_0x630e('0x28')][_0x630e('0x4a')]);}})[_0x630e('0x1a')](respondWithStatusCode(_0x2464c0,null))[_0x630e('0x35')](handleError(_0x2464c0,null));};exports[_0x630e('0x50')]=function(_0x3f8fc5,_0x5d958a){var _0x23177a=moment()[_0x630e('0x51')]()['toString']();var _0x25362c=path['join'](config[_0x630e('0x52')],_0x630e('0x53'),'files',_0x630e('0x54'));var _0x2e5f57=path['join'](_0x25362c,_0x23177a);var _0x3cd13d=util['format'](_0x630e('0x55'),_0x3f8fc5['params']['id'],_0x23177a);var _0x322fc3=path[_0x630e('0x56')](_0x25362c,_0x3cd13d);var _0x572a9a=[];_0x572a9a['push']({'model':db['User'],'as':_0x630e('0x57'),'attributes':['id','fullname'],'raw':!![]});_0x572a9a['push']({'model':db['CmContact'],'as':'Contact','attributes':['id',_0x630e('0x58'),'lastName'],'raw':!![]});var _0x3675ee=[{'model':db[_0x630e('0x3a')],'as':_0x630e('0x59'),'attributes':['id','body',_0x630e('0x5a'),'direction','secret',_0x630e('0x5b')],'include':_0x572a9a}];_0x3675ee[_0x630e('0x5c')]({'model':db[_0x630e('0x5d')],'as':_0x630e('0x5e'),'attributes':['id',_0x630e('0x1e')]});_0x3675ee[_0x630e('0x5c')]({'model':db[_0x630e('0x57')],'as':_0x630e('0x5f'),'attributes':['id',_0x630e('0x60')]});return db['SmsInteraction'][_0x630e('0x34')]({'where':{'id':_0x3f8fc5[_0x630e('0x2a')]['id']},'include':_0x3675ee})[_0x630e('0x1a')](handleEntityNotFound(_0x5d958a,null))[_0x630e('0x1a')](function(_0x2119da){if(_0x2119da){var _0x1dbcc0=_0x2119da[_0x630e('0x61')]({'plain':!![]});fs[_0x630e('0x62')](_0x2e5f57);var _0x586e4c={'channel':_0x630e('0x63'),'account':_0x1dbcc0[_0x630e('0x5e')][_0x630e('0x1e')],'agent':_0x1dbcc0[_0x630e('0x5f')]?_0x1dbcc0[_0x630e('0x5f')][_0x630e('0x60')]:'N.A.','createdAt':moment(_0x1dbcc0[_0x630e('0x5a')])[_0x630e('0x47')](_0x630e('0x64'))[_0x630e('0x65')](),'closedAt':_0x1dbcc0[_0x630e('0x66')]?moment(_0x1dbcc0[_0x630e('0x67')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x630e('0x65')]():'','disposition':_0x1dbcc0[_0x630e('0x68')],'messages':_(_0x1dbcc0['Messages'])[_0x630e('0x44')]({'secret':![]})[_0x630e('0x20')](function(_0x59a6a3){return{'date':moment(_0x59a6a3[_0x630e('0x5a')])['format'](_0x630e('0x64'))[_0x630e('0x65')](),'sender':_0x59a6a3['direction']===_0x630e('0x69')?_0x59a6a3[_0x630e('0x57')]?_0x59a6a3[_0x630e('0x57')]['fullname']:_0x630e('0x6a'):_0x59a6a3[_0x630e('0x6b')]['firstName']+(_0x59a6a3['Contact'][_0x630e('0x6c')]?'\x20'+_0x59a6a3[_0x630e('0x6b')][_0x630e('0x6c')]:''),'body':_0x59a6a3[_0x630e('0x37')],'direction':_0x59a6a3[_0x630e('0x6d')]===_0x630e('0x69')?'A':'C','secret':_0x59a6a3[_0x630e('0x6e')],'read':_0x59a6a3['read']};})[_0x630e('0x6f')]()};return ejs['renderFile'](path[_0x630e('0x56')](config['root'],_0x630e('0x53'),_0x630e('0x70'),'downloadInteraction.ejs'),{'interaction':_0x586e4c})[_0x630e('0x1a')](function(_0x4304e3){var _0x158356=path[_0x630e('0x56')](_0x2e5f57,_0x630e('0x71')+_0x1dbcc0['id']+'-'+_0x23177a+_0x630e('0x72'));var _0x35a7d4={'path':_0x158356,'channel':_0x630e('0x63'),'interactionId':_0x1dbcc0['id']};return pdf[_0x630e('0x73')](_0x4304e3,_0x35a7d4);})['then'](function(){return new BPromise(function(_0x5e7f89,_0x54c8fc){zipdir(_0x2e5f57,{'saveTo':_0x322fc3},function(_0x43d61c,_0x58744e){if(_0x43d61c)return _0x54c8fc(_0x43d61c);return _0x5e7f89(_0x58744e);});})['then'](function(){return new BPromise(function(_0x3f07ab,_0x355f94){rimraf(_0x2e5f57,function(_0x45689b){if(_0x45689b)_0x355f94(_0x45689b);return _0x3f07ab();});});})['then'](function(){return _0x5d958a[_0x630e('0x50')](_0x322fc3,_0x3cd13d,function(_0x22ab44){if(_0x22ab44){console['log'](_0x630e('0x74'),_0x22ab44);}else{fs[_0x630e('0x75')](_0x322fc3);}});});});}else{return _0x5d958a[_0x630e('0x11')](0xc8);}})['catch'](handleError(_0x5d958a,null));};