5db2415a880a294d568ea538d0664d5462a0acab
[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 _0x9aa9=['where','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','omit','spread','Tag','color','emit','removeTags','download','unix','toString','join','root','server','tmp','push','User','fullname','CmContact','firstName','lastName','Messages','direction','secret','read','Account','Owner','get','mkdirSync','Sms','N.A.','createdAt','closedAt','filter','out','System','Contact','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','unlinkSync','rimraf','moment','bluebird','util','ejs','lodash','../../components/interaction/service','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','sendStatus','end','json','undefined','limit','count','offset','status','set','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','getOptions','findAll','sms','query','user','show','model','SmsInteraction','filters','intersection','fields','attributes','includeAll','include','merge','options','find','create','body','catch','params','describe','addMessage','SmsMessage','ids','findOne','keys','length','hasOwnProperty','nolimit','sort','pick'];(function(_0xb518e5,_0x5b627c){var _0x59c78e=function(_0x8edb1c){while(--_0x8edb1c){_0xb518e5['push'](_0xb518e5['shift']());}};_0x59c78e(++_0x5b627c);}(_0x9aa9,0x193));var _0x99aa=function(_0x4bd8a3,_0x452c5c){_0x4bd8a3=_0x4bd8a3-0x0;var _0x4eaf3c=_0x9aa9[_0x4bd8a3];return _0x4eaf3c;};'use strict';var rimraf=require(_0x99aa('0x0'));var zipdir=require('zip-dir');var moment=require(_0x99aa('0x1'));var BPromise=require(_0x99aa('0x2'));var util=require(_0x99aa('0x3'));var path=require('path');var ejs=require(_0x99aa('0x4'));var fs=require('fs');var _=require(_0x99aa('0x5'));var Redis=require('ioredis');var interaction=require(_0x99aa('0x6'));var qs=require('../../components/parsers/qs');var pdf=require('../../components/export/pdf');var logger=require(_0x99aa('0x7'))(_0x99aa('0x8'));var config=require(_0x99aa('0x9'));var db=require('../../mysqldb')['db'];config[_0x99aa('0xa')]=_[_0x99aa('0xb')](config['redis'],{'host':_0x99aa('0xc'),'port':0x18eb});var socket=require(_0x99aa('0xd'))(new Redis(config[_0x99aa('0xa')]));require('./smsInteraction.socket')[_0x99aa('0xe')](socket);function respondWithStatusCode(_0x495a4a,_0x23e600){_0x23e600=_0x23e600||0xcc;return function(_0x7b001b){if(_0x7b001b){return _0x495a4a[_0x99aa('0xf')](_0x23e600);}return _0x495a4a['status'](_0x23e600)[_0x99aa('0x10')]();};}function respondWithResult(_0x415ff0,_0xffdb1d){_0xffdb1d=_0xffdb1d||0xc8;return function(_0x1affce){if(_0x1affce){return _0x415ff0['status'](_0xffdb1d)[_0x99aa('0x11')](_0x1affce);}};}function respondWithFilteredResult(_0x136612,_0x4e0348){return function(_0x7e131d){if(_0x7e131d){var _0x79e4e3=typeof _0x4e0348['offset']===_0x99aa('0x12')&&typeof _0x4e0348[_0x99aa('0x13')]===_0x99aa('0x12');var _0x35f00c=_0x7e131d[_0x99aa('0x14')];var _0x39c67c=_0x79e4e3?0x0:_0x4e0348[_0x99aa('0x15')];var _0x7c2c38=_0x79e4e3?_0x7e131d['count']:_0x4e0348[_0x99aa('0x15')]+_0x4e0348[_0x99aa('0x13')];var _0x18a55f;if(_0x7c2c38>=_0x35f00c){_0x7c2c38=_0x35f00c;_0x18a55f=0xc8;}else{_0x18a55f=0xce;}_0x136612[_0x99aa('0x16')](_0x18a55f);return _0x136612[_0x99aa('0x17')]('Content-Range',_0x39c67c+'-'+_0x7c2c38+'/'+_0x35f00c)[_0x99aa('0x11')](_0x7e131d);}return null;};}function saveUpdates(_0xd2675){return function(_0x3db4e7){if(_0x3db4e7){return _0x3db4e7[_0x99aa('0x18')](_0xd2675)[_0x99aa('0x19')](function(_0x5ce3a1){return _0x5ce3a1;});}return null;};}function removeEntity(_0x3c20be){return function(_0x1b3db9){if(_0x1b3db9){return _0x1b3db9[_0x99aa('0x1a')]()[_0x99aa('0x19')](function(){_0x3c20be[_0x99aa('0x16')](0xcc)[_0x99aa('0x10')]();});}};}function handleEntityNotFound(_0x18a310){return function(_0xc3b245){if(!_0xc3b245){_0x18a310[_0x99aa('0xf')](0x194);}return _0xc3b245;};}function handleError(_0x1ac1db,_0x44a02f){_0x44a02f=_0x44a02f||0x1f4;return function(_0x441ff1){logger[_0x99aa('0x1b')](_0x441ff1[_0x99aa('0x1c')]);if(_0x441ff1[_0x99aa('0x1d')]){delete _0x441ff1[_0x99aa('0x1d')];}_0x1ac1db['status'](_0x44a02f)[_0x99aa('0x1e')](_0x441ff1);};}exports[_0x99aa('0x1f')]=function(_0x339ba6,_0x182c05){var _0x2086a5={};var _0x15375c=_[_0x99aa('0x20')](db['SmsInteraction'][_0x99aa('0x21')],function(_0x525c95){return{'name':_0x525c95[_0x99aa('0x22')],'type':_0x525c95[_0x99aa('0x23')][_0x99aa('0x24')]};});_0x2086a5=qs[_0x99aa('0x25')](_0x15375c,_0x339ba6);return interaction[_0x99aa('0x26')](_0x99aa('0x27'),_0x339ba6[_0x99aa('0x28')],_0x339ba6[_0x99aa('0x29')],_0x2086a5,_0x15375c)['then'](respondWithFilteredResult(_0x182c05,_0x2086a5))['catch'](handleError(_0x182c05,null));};exports[_0x99aa('0x2a')]=function(_0x1f8eec,_0x2c4c5d){var _0x82941e={'raw':![],'where':{'id':_0x1f8eec['params']['id']}},_0x3aaf8b={};_0x3aaf8b[_0x99aa('0x2b')]=_['keys'](db[_0x99aa('0x2c')][_0x99aa('0x21')]);_0x3aaf8b[_0x99aa('0x28')]=_['keys'](_0x1f8eec[_0x99aa('0x28')]);_0x3aaf8b[_0x99aa('0x2d')]=_[_0x99aa('0x2e')](_0x3aaf8b[_0x99aa('0x2b')],_0x3aaf8b['query']);_0x82941e['attributes']=_[_0x99aa('0x2e')](_0x3aaf8b[_0x99aa('0x2b')],qs[_0x99aa('0x2f')](_0x1f8eec[_0x99aa('0x28')][_0x99aa('0x2f')]));_0x82941e[_0x99aa('0x30')]=_0x82941e[_0x99aa('0x30')]['length']?_0x82941e['attributes']:_0x3aaf8b[_0x99aa('0x2b')];if(_0x1f8eec[_0x99aa('0x28')][_0x99aa('0x31')]){_0x82941e[_0x99aa('0x32')]=[{'all':!![]}];}_0x82941e=_[_0x99aa('0x33')]({},_0x82941e,_0x1f8eec[_0x99aa('0x34')]);return db[_0x99aa('0x2c')][_0x99aa('0x35')](_0x82941e)['then'](handleEntityNotFound(_0x2c4c5d,null))[_0x99aa('0x19')](respondWithResult(_0x2c4c5d,null))['catch'](handleError(_0x2c4c5d,null));};exports[_0x99aa('0x36')]=function(_0x40f21d,_0x524883){return db[_0x99aa('0x2c')]['create'](_0x40f21d[_0x99aa('0x37')],{})['then'](respondWithResult(_0x524883,0xc9))[_0x99aa('0x38')](handleError(_0x524883,null));};exports[_0x99aa('0x18')]=function(_0x5b3fbf,_0x40cdda){if(_0x5b3fbf[_0x99aa('0x37')]['id']){delete _0x5b3fbf['body']['id'];}return db['SmsInteraction'][_0x99aa('0x35')]({'where':{'id':_0x5b3fbf['params']['id']}})[_0x99aa('0x19')](handleEntityNotFound(_0x40cdda,null))[_0x99aa('0x19')](saveUpdates(_0x5b3fbf[_0x99aa('0x37')],null))[_0x99aa('0x19')](respondWithResult(_0x40cdda,null))['catch'](handleError(_0x40cdda,null));};exports[_0x99aa('0x1a')]=function(_0x52ca43,_0x4bf332){return db[_0x99aa('0x2c')][_0x99aa('0x35')]({'where':{'id':_0x52ca43[_0x99aa('0x39')]['id']}})['then'](handleEntityNotFound(_0x4bf332,null))['then'](removeEntity(_0x4bf332,null))['catch'](handleError(_0x4bf332,null));};exports[_0x99aa('0x3a')]=function(_0x298e3e,_0x5ecefa){return db[_0x99aa('0x2c')][_0x99aa('0x3a')]()[_0x99aa('0x19')](respondWithResult(_0x5ecefa,null))[_0x99aa('0x38')](handleError(_0x5ecefa,null));};exports[_0x99aa('0x3b')]=function(_0x1a2243,_0x2633ca){return db[_0x99aa('0x3c')][_0x99aa('0x35')]({'where':{'id':_0x1a2243[_0x99aa('0x39')]['id']}})[_0x99aa('0x19')](handleEntityNotFound(_0x2633ca,null))[_0x99aa('0x19')](function(_0x2c8c92){if(_0x2c8c92){return _0x2c8c92['addMessage'](_0x1a2243['body'][_0x99aa('0x3d')],_['omit'](_0x1a2243[_0x99aa('0x37')],[_0x99aa('0x3d'),'id'])||{});}})['then'](respondWithResult(_0x2633ca,null))['catch'](handleError(_0x2633ca,null));};exports['getMessages']=function(_0x915570,_0x11d720){var _0x36ae0c={'raw':![],'where':{}};var _0x1b3ea4={};var _0x16dda3={'count':0x0,'rows':[]};return db[_0x99aa('0x2c')][_0x99aa('0x3e')]({'where':{'id':_0x915570[_0x99aa('0x39')]['id']}})[_0x99aa('0x19')](handleEntityNotFound(_0x11d720,null))['then'](function(_0x397341){if(_0x397341){_0x1b3ea4['model']=_[_0x99aa('0x3f')](db[_0x99aa('0x3c')][_0x99aa('0x21')]);_0x1b3ea4[_0x99aa('0x28')]=_['keys'](_0x915570[_0x99aa('0x28')]);_0x1b3ea4[_0x99aa('0x2d')]=_[_0x99aa('0x2e')](_0x1b3ea4[_0x99aa('0x2b')],_0x1b3ea4[_0x99aa('0x28')]);_0x36ae0c[_0x99aa('0x30')]=_[_0x99aa('0x2e')](_0x1b3ea4[_0x99aa('0x2b')],qs['fields'](_0x915570[_0x99aa('0x28')][_0x99aa('0x2f')]));_0x36ae0c[_0x99aa('0x30')]=_0x36ae0c[_0x99aa('0x30')][_0x99aa('0x40')]?_0x36ae0c[_0x99aa('0x30')]:_0x1b3ea4['model'];if(!_0x915570[_0x99aa('0x28')][_0x99aa('0x41')](_0x99aa('0x42'))){_0x36ae0c['limit']=qs[_0x99aa('0x13')](_0x915570['query'][_0x99aa('0x13')]);_0x36ae0c[_0x99aa('0x15')]=qs['offset'](_0x915570['query']['offset']);}_0x36ae0c['order']=qs[_0x99aa('0x43')](_0x915570[_0x99aa('0x28')][_0x99aa('0x43')]);_0x36ae0c['where']=qs[_0x99aa('0x2d')](_[_0x99aa('0x44')](_0x915570[_0x99aa('0x28')],_0x1b3ea4[_0x99aa('0x2d')]));_0x36ae0c[_0x99aa('0x45')]['SmsInteractionId']=_0x397341['id'];if(_0x915570['query']['filter']){_0x36ae0c['where']=_[_0x99aa('0x33')](_0x36ae0c[_0x99aa('0x45')],{'$or':_[_0x99aa('0x20')](_0x36ae0c[_0x99aa('0x30')],function(_0x2a43ae){var _0x4d04c0={};_0x4d04c0[_0x2a43ae]={'$like':'%'+_0x915570[_0x99aa('0x28')]['filter']+'%'};return _0x4d04c0;})});}if(_0x915570[_0x99aa('0x28')]['$gte']){var _0x51b1b2=_0x915570[_0x99aa('0x28')][_0x99aa('0x46')][_0x99aa('0x47')](',');var _0x1feb26={};_0x1feb26[_0x51b1b2[0x0]]={'$gte':moment(_0x51b1b2[0x1])[_0x99aa('0x48')](_0x99aa('0x49'))};_0x36ae0c['where']=_[_0x99aa('0x33')](_0x36ae0c['where'],_0x1feb26);}_0x36ae0c=_[_0x99aa('0x33')]({},_0x36ae0c,_0x915570[_0x99aa('0x34')]);return db[_0x99aa('0x3c')][_0x99aa('0x14')]({'where':_0x36ae0c[_0x99aa('0x45')]})['then'](function(_0x590048){_0x16dda3['count']=_0x590048;if(_0x915570['query']['includeAll']){_0x36ae0c[_0x99aa('0x32')]=[{'all':!![]}];}return db[_0x99aa('0x3c')][_0x99aa('0x26')](_0x36ae0c);})[_0x99aa('0x19')](function(_0x505ba1){_0x16dda3[_0x99aa('0x4a')]=_0x505ba1;return _0x16dda3;});}})[_0x99aa('0x19')](respondWithFilteredResult(_0x11d720,_0x36ae0c))[_0x99aa('0x38')](handleError(_0x11d720,null));};exports[_0x99aa('0x4b')]=function(_0x4f8c1b,_0x47ce09){return db[_0x99aa('0x2c')][_0x99aa('0x35')]({'where':{'id':_0x4f8c1b[_0x99aa('0x39')]['id']}})[_0x99aa('0x19')](handleEntityNotFound(_0x47ce09,null))['then'](function(_0x4c5aee){if(_0x4c5aee){return _0x4c5aee[_0x99aa('0x4c')](_0x4f8c1b[_0x99aa('0x37')][_0x99aa('0x3d')],_[_0x99aa('0x4d')](_0x4f8c1b[_0x99aa('0x37')],[_0x99aa('0x3d'),'id'])||{})[_0x99aa('0x4e')](function(){return db[_0x99aa('0x4f')][_0x99aa('0x26')]({'attributes':['id',_0x99aa('0x1d'),_0x99aa('0x50')],'where':{'id':_0x4f8c1b[_0x99aa('0x37')][_0x99aa('0x3d')]}});})['then'](function(_0x5df2a6){socket[_0x99aa('0x51')]('smsInteractionTags:save',{'id':Number(_0x4f8c1b['params']['id']),'tags':_0x5df2a6||[]});return{'id':Number(_0x4f8c1b[_0x99aa('0x39')]['id']),'tags':_0x5df2a6||[]};});}})[_0x99aa('0x19')](respondWithResult(_0x47ce09,null))[_0x99aa('0x38')](handleError(_0x47ce09,null));};exports[_0x99aa('0x52')]=function(_0x358229,_0x1aaec7){return db[_0x99aa('0x2c')][_0x99aa('0x35')]({'where':{'id':_0x358229['params']['id']}})['then'](handleEntityNotFound(_0x1aaec7,null))['then'](function(_0x2add97){if(_0x2add97){return _0x2add97['removeTags'](_0x358229[_0x99aa('0x28')]['ids']);}})[_0x99aa('0x19')](respondWithStatusCode(_0x1aaec7,null))['catch'](handleError(_0x1aaec7,null));};exports[_0x99aa('0x53')]=function(_0x1ba3df,_0x2867c0){var _0x4ebfaa=moment()[_0x99aa('0x54')]()[_0x99aa('0x55')]();var _0x5855c0=path[_0x99aa('0x56')](config[_0x99aa('0x57')],_0x99aa('0x58'),'files',_0x99aa('0x59'));var _0x4ecd05=path[_0x99aa('0x56')](_0x5855c0,_0x4ebfaa);var _0xe20013=util['format']('transcript-%d-%s.zip',_0x1ba3df[_0x99aa('0x39')]['id'],_0x4ebfaa);var _0x103342=path[_0x99aa('0x56')](_0x5855c0,_0xe20013);var _0x26810d=[];_0x26810d[_0x99aa('0x5a')]({'model':db[_0x99aa('0x5b')],'as':_0x99aa('0x5b'),'attributes':['id',_0x99aa('0x5c')],'raw':!![]});_0x26810d['push']({'model':db[_0x99aa('0x5d')],'as':'Contact','attributes':['id',_0x99aa('0x5e'),_0x99aa('0x5f')],'raw':!![]});var _0x89c72=[{'model':db[_0x99aa('0x3c')],'as':_0x99aa('0x60'),'attributes':['id',_0x99aa('0x37'),'createdAt',_0x99aa('0x61'),_0x99aa('0x62'),_0x99aa('0x63')],'include':_0x26810d}];_0x89c72[_0x99aa('0x5a')]({'model':db['SmsAccount'],'as':_0x99aa('0x64'),'attributes':['id','name']});_0x89c72['push']({'model':db[_0x99aa('0x5b')],'as':_0x99aa('0x65'),'attributes':['id',_0x99aa('0x5c')]});return db[_0x99aa('0x2c')][_0x99aa('0x35')]({'where':{'id':_0x1ba3df[_0x99aa('0x39')]['id']},'include':_0x89c72})[_0x99aa('0x19')](handleEntityNotFound(_0x2867c0,null))['then'](function(_0x41267e){if(_0x41267e){var _0x417832=_0x41267e[_0x99aa('0x66')]({'plain':!![]});fs[_0x99aa('0x67')](_0x4ecd05);var _0xee53ae={'channel':_0x99aa('0x68'),'account':_0x417832[_0x99aa('0x64')][_0x99aa('0x1d')],'agent':_0x417832[_0x99aa('0x65')]?_0x417832[_0x99aa('0x65')][_0x99aa('0x5c')]:_0x99aa('0x69'),'createdAt':moment(_0x417832[_0x99aa('0x6a')])['format'](_0x99aa('0x49'))['toString'](),'closedAt':_0x417832['closed']?moment(_0x417832[_0x99aa('0x6b')])[_0x99aa('0x48')](_0x99aa('0x49'))[_0x99aa('0x55')]():'','disposition':_0x417832['disposition'],'messages':_(_0x417832[_0x99aa('0x60')])[_0x99aa('0x6c')]({'secret':![]})[_0x99aa('0x20')](function(_0x559f11){return{'date':moment(_0x559f11[_0x99aa('0x6a')])[_0x99aa('0x48')](_0x99aa('0x49'))['toString'](),'sender':_0x559f11[_0x99aa('0x61')]===_0x99aa('0x6d')?_0x559f11[_0x99aa('0x5b')]?_0x559f11[_0x99aa('0x5b')][_0x99aa('0x5c')]:_0x99aa('0x6e'):_0x559f11[_0x99aa('0x6f')][_0x99aa('0x5e')]+(_0x559f11[_0x99aa('0x6f')]['lastName']?'\x20'+_0x559f11[_0x99aa('0x6f')]['lastName']:''),'body':_0x559f11['body'],'direction':_0x559f11[_0x99aa('0x61')]===_0x99aa('0x6d')?'A':'C','secret':_0x559f11['secret'],'read':_0x559f11[_0x99aa('0x63')]};})['value']()};return ejs[_0x99aa('0x70')](path[_0x99aa('0x56')](config[_0x99aa('0x57')],_0x99aa('0x58'),_0x99aa('0x71'),_0x99aa('0x72')),{'interaction':_0xee53ae})[_0x99aa('0x19')](function(_0x375099){var _0x49ec77=path[_0x99aa('0x56')](_0x4ecd05,_0x99aa('0x73')+_0x417832['id']+'-'+_0x4ebfaa+'.pdf');var _0x1414ab={'path':_0x49ec77,'channel':_0x99aa('0x68'),'interactionId':_0x417832['id']};return pdf[_0x99aa('0x74')](_0x375099,_0x1414ab);})[_0x99aa('0x19')](function(){return new BPromise(function(_0x5b1003,_0x2adf15){zipdir(_0x4ecd05,{'saveTo':_0x103342},function(_0x12d355,_0x4d680d){if(_0x12d355)return _0x2adf15(_0x12d355);return _0x5b1003(_0x4d680d);});})[_0x99aa('0x19')](function(){return new BPromise(function(_0x49305a,_0x3890c3){rimraf(_0x4ecd05,function(_0x73b166){if(_0x73b166)_0x3890c3(_0x73b166);return _0x49305a();});});})[_0x99aa('0x19')](function(){return _0x2867c0[_0x99aa('0x53')](_0x103342,_0xe20013,function(_0x39e75b){if(_0x39e75b){console['log']('err',_0x39e75b);}else{fs[_0x99aa('0x75')](_0x103342);}});});});}else{return _0x2867c0[_0x99aa('0xf')](0xc8);}})['catch'](handleError(_0x2867c0,null));};