Built motion from commit 9d0783e6.|2.6.13
[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 _0x4f1c=['where','filters','pick','SmsInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','setTags','omit','spread','Tag','color','emit','smsInteractionTags:save','removeTags','download','unix','toString','join','root','server','tmp','User','fullname','CmContact','Contact','firstName','lastName','direction','SmsAccount','Account','push','Owner','get','mkdirSync','Sms','createdAt','closed','closedAt','Messages','out','System','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','rimraf','zip-dir','moment','util','path','ejs','lodash','../../components/parsers/qs','../../components/export/pdf','api','../../config/environment','redis','defaults','localhost','./smsInteraction.socket','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','update','then','destroy','error','stack','name','index','map','SmsInteraction','fieldName','type','key','sms','query','user','catch','show','params','model','rawAttributes','keys','intersection','attributes','length','includeAll','merge','find','create','body','describe','ids','getMessages','SmsMessage','fields','hasOwnProperty','order','sort'];(function(_0x372077,_0x26265a){var _0x5cffe8=function(_0x587dc7){while(--_0x587dc7){_0x372077['push'](_0x372077['shift']());}};_0x5cffe8(++_0x26265a);}(_0x4f1c,0x18f));var _0xc4f1=function(_0x1bcda8,_0x3ec454){_0x1bcda8=_0x1bcda8-0x0;var _0x4dfeee=_0x4f1c[_0x1bcda8];return _0x4dfeee;};'use strict';var rimraf=require(_0xc4f1('0x0'));var zipdir=require(_0xc4f1('0x1'));var moment=require(_0xc4f1('0x2'));var BPromise=require('bluebird');var util=require(_0xc4f1('0x3'));var path=require(_0xc4f1('0x4'));var ejs=require(_0xc4f1('0x5'));var fs=require('fs');var _=require(_0xc4f1('0x6'));var Redis=require('ioredis');var interaction=require('../../components/interaction/service');var qs=require(_0xc4f1('0x7'));var pdf=require(_0xc4f1('0x8'));var logger=require('../../config/logger')(_0xc4f1('0x9'));var config=require(_0xc4f1('0xa'));var db=require('../../mysqldb')['db'];config[_0xc4f1('0xb')]=_[_0xc4f1('0xc')](config[_0xc4f1('0xb')],{'host':_0xc4f1('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc4f1('0xb')]));require(_0xc4f1('0xe'))['register'](socket);function respondWithStatusCode(_0xd2a57f,_0x480b3d){_0x480b3d=_0x480b3d||0xcc;return function(_0x904c96){if(_0x904c96){return _0xd2a57f[_0xc4f1('0xf')](_0x480b3d);}return _0xd2a57f[_0xc4f1('0x10')](_0x480b3d)[_0xc4f1('0x11')]();};}function respondWithResult(_0x1108be,_0x14af9c){_0x14af9c=_0x14af9c||0xc8;return function(_0x37b428){if(_0x37b428){return _0x1108be[_0xc4f1('0x10')](_0x14af9c)['json'](_0x37b428);}};}function respondWithFilteredResult(_0x3012e8,_0x123bf0){return function(_0x288ee5){if(_0x288ee5){var _0x110980=typeof _0x123bf0['offset']===_0xc4f1('0x12')&&typeof _0x123bf0[_0xc4f1('0x13')]===_0xc4f1('0x12');var _0x477ba9=_0x288ee5[_0xc4f1('0x14')];var _0x28b63a=_0x110980?0x0:_0x123bf0['offset'];var _0x37338b=_0x110980?_0x288ee5[_0xc4f1('0x14')]:_0x123bf0[_0xc4f1('0x15')]+_0x123bf0[_0xc4f1('0x13')];var _0x2fc8ff;if(_0x37338b>=_0x477ba9){_0x37338b=_0x477ba9;_0x2fc8ff=0xc8;}else{_0x2fc8ff=0xce;}_0x3012e8[_0xc4f1('0x10')](_0x2fc8ff);return _0x3012e8['set'](_0xc4f1('0x16'),_0x28b63a+'-'+_0x37338b+'/'+_0x477ba9)[_0xc4f1('0x17')](_0x288ee5);}return null;};}function saveUpdates(_0x23f64d){return function(_0x499745){if(_0x499745){return _0x499745[_0xc4f1('0x18')](_0x23f64d)[_0xc4f1('0x19')](function(_0x4b0d7d){return _0x4b0d7d;});}return null;};}function removeEntity(_0x10cae7){return function(_0x4bbc67){if(_0x4bbc67){return _0x4bbc67[_0xc4f1('0x1a')]()['then'](function(){_0x10cae7[_0xc4f1('0x10')](0xcc)[_0xc4f1('0x11')]();});}};}function handleEntityNotFound(_0x2046fa){return function(_0x18c99f){if(!_0x18c99f){_0x2046fa['sendStatus'](0x194);}return _0x18c99f;};}function handleError(_0x3c3b20,_0x549ad7){_0x549ad7=_0x549ad7||0x1f4;return function(_0xb67b50){logger[_0xc4f1('0x1b')](_0xb67b50[_0xc4f1('0x1c')]);if(_0xb67b50[_0xc4f1('0x1d')]){delete _0xb67b50[_0xc4f1('0x1d')];}_0x3c3b20[_0xc4f1('0x10')](_0x549ad7)['send'](_0xb67b50);};}exports[_0xc4f1('0x1e')]=function(_0xe4f1b6,_0x106d91){var _0x136402={};var _0x56a4dd=_[_0xc4f1('0x1f')](db[_0xc4f1('0x20')]['rawAttributes'],function(_0x2e2c04){return{'name':_0x2e2c04[_0xc4f1('0x21')],'type':_0x2e2c04[_0xc4f1('0x22')][_0xc4f1('0x23')]};});_0x136402=qs['getOptions'](_0x56a4dd,_0xe4f1b6);return interaction['findAll'](_0xc4f1('0x24'),_0xe4f1b6[_0xc4f1('0x25')],_0xe4f1b6[_0xc4f1('0x26')],_0x136402,_0x56a4dd)[_0xc4f1('0x19')](respondWithFilteredResult(_0x106d91,_0x136402))[_0xc4f1('0x27')](handleError(_0x106d91,null));};exports[_0xc4f1('0x28')]=function(_0x18f0bc,_0x50a10a){var _0x13eefb={'raw':![],'where':{'id':_0x18f0bc[_0xc4f1('0x29')]['id']}},_0x47d5a8={};_0x47d5a8[_0xc4f1('0x2a')]=_['keys'](db[_0xc4f1('0x20')][_0xc4f1('0x2b')]);_0x47d5a8[_0xc4f1('0x25')]=_[_0xc4f1('0x2c')](_0x18f0bc[_0xc4f1('0x25')]);_0x47d5a8['filters']=_[_0xc4f1('0x2d')](_0x47d5a8[_0xc4f1('0x2a')],_0x47d5a8['query']);_0x13eefb[_0xc4f1('0x2e')]=_[_0xc4f1('0x2d')](_0x47d5a8[_0xc4f1('0x2a')],qs['fields'](_0x18f0bc[_0xc4f1('0x25')]['fields']));_0x13eefb[_0xc4f1('0x2e')]=_0x13eefb['attributes'][_0xc4f1('0x2f')]?_0x13eefb['attributes']:_0x47d5a8[_0xc4f1('0x2a')];if(_0x18f0bc[_0xc4f1('0x25')][_0xc4f1('0x30')]){_0x13eefb['include']=[{'all':!![]}];}_0x13eefb=_[_0xc4f1('0x31')]({},_0x13eefb,_0x18f0bc['options']);return db['SmsInteraction'][_0xc4f1('0x32')](_0x13eefb)['then'](handleEntityNotFound(_0x50a10a,null))[_0xc4f1('0x19')](respondWithResult(_0x50a10a,null))[_0xc4f1('0x27')](handleError(_0x50a10a,null));};exports['create']=function(_0x50de9,_0xfefacb){return db[_0xc4f1('0x20')][_0xc4f1('0x33')](_0x50de9[_0xc4f1('0x34')],{})[_0xc4f1('0x19')](respondWithResult(_0xfefacb,0xc9))[_0xc4f1('0x27')](handleError(_0xfefacb,null));};exports[_0xc4f1('0x18')]=function(_0x49767e,_0x185d41){if(_0x49767e[_0xc4f1('0x34')]['id']){delete _0x49767e[_0xc4f1('0x34')]['id'];}return db[_0xc4f1('0x20')][_0xc4f1('0x32')]({'where':{'id':_0x49767e[_0xc4f1('0x29')]['id']}})[_0xc4f1('0x19')](handleEntityNotFound(_0x185d41,null))[_0xc4f1('0x19')](saveUpdates(_0x49767e['body'],null))[_0xc4f1('0x19')](respondWithResult(_0x185d41,null))[_0xc4f1('0x27')](handleError(_0x185d41,null));};exports[_0xc4f1('0x1a')]=function(_0x1d7736,_0x40e6d8){return db[_0xc4f1('0x20')][_0xc4f1('0x32')]({'where':{'id':_0x1d7736[_0xc4f1('0x29')]['id']}})[_0xc4f1('0x19')](handleEntityNotFound(_0x40e6d8,null))[_0xc4f1('0x19')](removeEntity(_0x40e6d8,null))[_0xc4f1('0x27')](handleError(_0x40e6d8,null));};exports[_0xc4f1('0x35')]=function(_0x234f3b,_0x4e0a1e){return db[_0xc4f1('0x20')][_0xc4f1('0x35')]()[_0xc4f1('0x19')](respondWithResult(_0x4e0a1e,null))['catch'](handleError(_0x4e0a1e,null));};exports['addMessage']=function(_0x256213,_0x1fa483){return db['SmsMessage'][_0xc4f1('0x32')]({'where':{'id':_0x256213[_0xc4f1('0x29')]['id']}})[_0xc4f1('0x19')](handleEntityNotFound(_0x1fa483,null))[_0xc4f1('0x19')](function(_0x82aa34){if(_0x82aa34){return _0x82aa34['addMessage'](_0x256213[_0xc4f1('0x34')][_0xc4f1('0x36')],_['omit'](_0x256213[_0xc4f1('0x34')],[_0xc4f1('0x36'),'id'])||{});}})['then'](respondWithResult(_0x1fa483,null))['catch'](handleError(_0x1fa483,null));};exports[_0xc4f1('0x37')]=function(_0x397408,_0x24fc99){var _0x488478={'raw':![],'where':{}};var _0x5a667c={};var _0x18e0b0={'count':0x0,'rows':[]};return db['SmsInteraction']['findOne']({'where':{'id':_0x397408[_0xc4f1('0x29')]['id']}})[_0xc4f1('0x19')](handleEntityNotFound(_0x24fc99,null))[_0xc4f1('0x19')](function(_0x91416){if(_0x91416){_0x5a667c['model']=_[_0xc4f1('0x2c')](db[_0xc4f1('0x38')][_0xc4f1('0x2b')]);_0x5a667c[_0xc4f1('0x25')]=_[_0xc4f1('0x2c')](_0x397408[_0xc4f1('0x25')]);_0x5a667c['filters']=_['intersection'](_0x5a667c[_0xc4f1('0x2a')],_0x5a667c[_0xc4f1('0x25')]);_0x488478[_0xc4f1('0x2e')]=_[_0xc4f1('0x2d')](_0x5a667c['model'],qs[_0xc4f1('0x39')](_0x397408[_0xc4f1('0x25')][_0xc4f1('0x39')]));_0x488478[_0xc4f1('0x2e')]=_0x488478[_0xc4f1('0x2e')][_0xc4f1('0x2f')]?_0x488478[_0xc4f1('0x2e')]:_0x5a667c[_0xc4f1('0x2a')];if(!_0x397408[_0xc4f1('0x25')][_0xc4f1('0x3a')]('nolimit')){_0x488478[_0xc4f1('0x13')]=qs[_0xc4f1('0x13')](_0x397408[_0xc4f1('0x25')][_0xc4f1('0x13')]);_0x488478[_0xc4f1('0x15')]=qs[_0xc4f1('0x15')](_0x397408['query'][_0xc4f1('0x15')]);}_0x488478[_0xc4f1('0x3b')]=qs[_0xc4f1('0x3c')](_0x397408[_0xc4f1('0x25')][_0xc4f1('0x3c')]);_0x488478[_0xc4f1('0x3d')]=qs[_0xc4f1('0x3e')](_[_0xc4f1('0x3f')](_0x397408[_0xc4f1('0x25')],_0x5a667c[_0xc4f1('0x3e')]));_0x488478[_0xc4f1('0x3d')][_0xc4f1('0x40')]=_0x91416['id'];if(_0x397408['query'][_0xc4f1('0x41')]){_0x488478['where']=_['merge'](_0x488478[_0xc4f1('0x3d')],{'$or':_['map'](_0x488478['attributes'],function(_0x2778ff){var _0x2acea4={};_0x2acea4[_0x2778ff]={'$like':'%'+_0x397408[_0xc4f1('0x25')][_0xc4f1('0x41')]+'%'};return _0x2acea4;})});}if(_0x397408['query'][_0xc4f1('0x42')]){var _0x2318b0=_0x397408['query'][_0xc4f1('0x42')]['split'](',');var _0xe735a1={};_0xe735a1[_0x2318b0[0x0]]={'$gte':moment(_0x2318b0[0x1])[_0xc4f1('0x43')](_0xc4f1('0x44'))};_0x488478[_0xc4f1('0x3d')]=_['merge'](_0x488478[_0xc4f1('0x3d')],_0xe735a1);}_0x488478=_[_0xc4f1('0x31')]({},_0x488478,_0x397408['options']);return db['SmsMessage']['count']({'where':_0x488478[_0xc4f1('0x3d')]})[_0xc4f1('0x19')](function(_0x2aa339){_0x18e0b0[_0xc4f1('0x14')]=_0x2aa339;if(_0x397408['query'][_0xc4f1('0x30')]){_0x488478['include']=[{'all':!![]}];}return db[_0xc4f1('0x38')][_0xc4f1('0x45')](_0x488478);})[_0xc4f1('0x19')](function(_0x2a7827){_0x18e0b0[_0xc4f1('0x46')]=_0x2a7827;return _0x18e0b0;});}})['then'](respondWithFilteredResult(_0x24fc99,_0x488478))[_0xc4f1('0x27')](handleError(_0x24fc99,null));};exports[_0xc4f1('0x47')]=function(_0x2640d6,_0x47d02d){return db[_0xc4f1('0x20')][_0xc4f1('0x32')]({'where':{'id':_0x2640d6[_0xc4f1('0x29')]['id']}})[_0xc4f1('0x19')](handleEntityNotFound(_0x47d02d,null))['then'](function(_0x2c8b35){if(_0x2c8b35){return _0x2c8b35[_0xc4f1('0x48')](_0x2640d6[_0xc4f1('0x34')][_0xc4f1('0x36')],_[_0xc4f1('0x49')](_0x2640d6[_0xc4f1('0x34')],[_0xc4f1('0x36'),'id'])||{})[_0xc4f1('0x4a')](function(){return db[_0xc4f1('0x4b')][_0xc4f1('0x45')]({'attributes':['id','name',_0xc4f1('0x4c')],'where':{'id':_0x2640d6[_0xc4f1('0x34')][_0xc4f1('0x36')]}});})[_0xc4f1('0x19')](function(_0x260b68){socket[_0xc4f1('0x4d')](_0xc4f1('0x4e'),{'id':Number(_0x2640d6['params']['id']),'tags':_0x260b68||[]});return{'id':Number(_0x2640d6[_0xc4f1('0x29')]['id']),'tags':_0x260b68||[]};});}})[_0xc4f1('0x19')](respondWithResult(_0x47d02d,null))[_0xc4f1('0x27')](handleError(_0x47d02d,null));};exports['removeTags']=function(_0x37d06e,_0x261d6a){return db[_0xc4f1('0x20')][_0xc4f1('0x32')]({'where':{'id':_0x37d06e[_0xc4f1('0x29')]['id']}})[_0xc4f1('0x19')](handleEntityNotFound(_0x261d6a,null))['then'](function(_0xfbce50){if(_0xfbce50){return _0xfbce50[_0xc4f1('0x4f')](_0x37d06e[_0xc4f1('0x25')][_0xc4f1('0x36')]);}})[_0xc4f1('0x19')](respondWithStatusCode(_0x261d6a,null))[_0xc4f1('0x27')](handleError(_0x261d6a,null));};exports[_0xc4f1('0x50')]=function(_0x5e0ed5,_0x30d699){var _0xb16e0a=moment()[_0xc4f1('0x51')]()[_0xc4f1('0x52')]();var _0x42f032=path[_0xc4f1('0x53')](config[_0xc4f1('0x54')],_0xc4f1('0x55'),'files',_0xc4f1('0x56'));var _0x4e742e=path[_0xc4f1('0x53')](_0x42f032,_0xb16e0a);var _0x4abb7b=util[_0xc4f1('0x43')]('transcript-%d-%s.zip',_0x5e0ed5[_0xc4f1('0x29')]['id'],_0xb16e0a);var _0x2a51d1=path['join'](_0x42f032,_0x4abb7b);var _0x13dbd9=[];_0x13dbd9['push']({'model':db['User'],'as':_0xc4f1('0x57'),'attributes':['id',_0xc4f1('0x58')],'raw':!![]});_0x13dbd9['push']({'model':db[_0xc4f1('0x59')],'as':_0xc4f1('0x5a'),'attributes':['id',_0xc4f1('0x5b'),_0xc4f1('0x5c')],'raw':!![]});var _0x4ac080=[{'model':db['SmsMessage'],'as':'Messages','attributes':['id',_0xc4f1('0x34'),'createdAt',_0xc4f1('0x5d'),'secret','read'],'include':_0x13dbd9}];_0x4ac080['push']({'model':db[_0xc4f1('0x5e')],'as':_0xc4f1('0x5f'),'attributes':['id','name']});_0x4ac080[_0xc4f1('0x60')]({'model':db['User'],'as':_0xc4f1('0x61'),'attributes':['id',_0xc4f1('0x58')]});return db[_0xc4f1('0x20')][_0xc4f1('0x32')]({'where':{'id':_0x5e0ed5[_0xc4f1('0x29')]['id']},'include':_0x4ac080})[_0xc4f1('0x19')](handleEntityNotFound(_0x30d699,null))[_0xc4f1('0x19')](function(_0x20d58c){if(_0x20d58c){var _0x260c22=_0x20d58c[_0xc4f1('0x62')]({'plain':!![]});fs[_0xc4f1('0x63')](_0x4e742e);var _0xee22d8={'channel':_0xc4f1('0x64'),'account':_0x260c22[_0xc4f1('0x5f')][_0xc4f1('0x1d')],'agent':_0x260c22[_0xc4f1('0x61')]?_0x260c22[_0xc4f1('0x61')][_0xc4f1('0x58')]:'N.A.','createdAt':moment(_0x260c22[_0xc4f1('0x65')])[_0xc4f1('0x43')]('YYYY-MM-DD\x20HH:mm:ss')[_0xc4f1('0x52')](),'closedAt':_0x260c22[_0xc4f1('0x66')]?moment(_0x260c22[_0xc4f1('0x67')])[_0xc4f1('0x43')](_0xc4f1('0x44'))['toString']():'','disposition':_0x260c22['disposition'],'messages':_(_0x260c22[_0xc4f1('0x68')])[_0xc4f1('0x41')]({'secret':![]})[_0xc4f1('0x1f')](function(_0x3b9098){return{'date':moment(_0x3b9098[_0xc4f1('0x65')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xc4f1('0x52')](),'sender':_0x3b9098[_0xc4f1('0x5d')]===_0xc4f1('0x69')?_0x3b9098[_0xc4f1('0x57')]?_0x3b9098['User'][_0xc4f1('0x58')]:_0xc4f1('0x6a'):_0x3b9098['Contact'][_0xc4f1('0x5b')]+(_0x3b9098['Contact'][_0xc4f1('0x5c')]?'\x20'+_0x3b9098['Contact'][_0xc4f1('0x5c')]:''),'body':_0x3b9098[_0xc4f1('0x34')],'direction':_0x3b9098[_0xc4f1('0x5d')]==='out'?'A':'C','secret':_0x3b9098['secret'],'read':_0x3b9098['read']};})[_0xc4f1('0x6b')]()};return ejs[_0xc4f1('0x6c')](path[_0xc4f1('0x53')](config[_0xc4f1('0x54')],_0xc4f1('0x55'),_0xc4f1('0x6d'),_0xc4f1('0x6e')),{'interaction':_0xee22d8})[_0xc4f1('0x19')](function(_0x2dca10){var _0x35d510=path[_0xc4f1('0x53')](_0x4e742e,_0xc4f1('0x6f')+_0x260c22['id']+'-'+_0xb16e0a+_0xc4f1('0x70'));var _0x446e1e={'path':_0x35d510,'channel':_0xc4f1('0x64'),'interactionId':_0x260c22['id']};return pdf[_0xc4f1('0x71')](_0x2dca10,_0x446e1e);})[_0xc4f1('0x19')](function(){return new BPromise(function(_0x56cc9b,_0x320be6){zipdir(_0x4e742e,{'saveTo':_0x2a51d1},function(_0x1f9ab9,_0x4d818a){if(_0x1f9ab9)return _0x320be6(_0x1f9ab9);return _0x56cc9b(_0x4d818a);});})['then'](function(){return new BPromise(function(_0x181e41,_0x51c8a0){rimraf(_0x4e742e,function(_0x5f4ed6){if(_0x5f4ed6)_0x51c8a0(_0x5f4ed6);return _0x181e41();});});})['then'](function(){return _0x30d699['download'](_0x2a51d1,_0x4abb7b,function(_0x21443d){if(_0x21443d){console['log'](_0xc4f1('0x72'),_0x21443d);}else{fs['unlinkSync'](_0x2a51d1);}});});});}else{return _0x30d699[_0xc4f1('0xf')](0xc8);}})[_0xc4f1('0x27')](handleError(_0x30d699,null));};