Built motion from commit 3d3e98f2.|2.6.29
[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 _0xa906=['format','YYYY-MM-DD\x20HH:mm:ss','disposition','out','System','Contact','value','renderFile','root','views','downloadInteraction.ejs','transcript-','Sms','createPdfFromHTML','log','rimraf','moment','path','ejs','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','then','destroy','end','error','stack','name','send','index','map','fieldName','type','getOptions','findAll','sms','catch','show','params','model','rawAttributes','query','keys','filters','attributes','fields','length','merge','SmsInteraction','create','update','body','find','describe','SmsMessage','addMessage','omit','ids','getMessages','findOne','intersection','hasOwnProperty','nolimit','sort','where','pick','SmsInteractionId','filter','$gte','split','options','includeAll','include','rows','addTags','setTags','spread','Tag','color','emit','smsInteractionTags:save','removeTags','download','unix','toString','server','files','join','push','User','firstName','lastName','Messages','createdAt','direction','secret','read','SmsAccount','Account','Owner','fullname','get','mkdirSync'];(function(_0x248a99,_0x5839ed){var _0x53951a=function(_0xeafb48){while(--_0xeafb48){_0x248a99['push'](_0x248a99['shift']());}};_0x53951a(++_0x5839ed);}(_0xa906,0x1e3));var _0x6a90=function(_0x41490e,_0x5f4544){_0x41490e=_0x41490e-0x0;var _0x15ff7b=_0xa906[_0x41490e];return _0x15ff7b;};'use strict';var rimraf=require(_0x6a90('0x0'));var zipdir=require('zip-dir');var moment=require(_0x6a90('0x1'));var BPromise=require('bluebird');var util=require('util');var path=require(_0x6a90('0x2'));var ejs=require(_0x6a90('0x3'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x6a90('0x4'));var qs=require(_0x6a90('0x5'));var pdf=require('../../components/export/pdf');var logger=require(_0x6a90('0x6'))(_0x6a90('0x7'));var config=require(_0x6a90('0x8'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x6a90('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x6a90('0xa'))(new Redis(config['redis']));require('./smsInteraction.socket')[_0x6a90('0xb')](socket);function respondWithStatusCode(_0xcb4021,_0x64531){_0x64531=_0x64531||0xcc;return function(_0x507e37){if(_0x507e37){return _0xcb4021[_0x6a90('0xc')](_0x64531);}return _0xcb4021[_0x6a90('0xd')](_0x64531)['end']();};}function respondWithResult(_0x42dc57,_0x957e6d){_0x957e6d=_0x957e6d||0xc8;return function(_0x4ddfdb){if(_0x4ddfdb){return _0x42dc57[_0x6a90('0xd')](_0x957e6d)[_0x6a90('0xe')](_0x4ddfdb);}};}function respondWithFilteredResult(_0x30b716,_0x58c7c7){return function(_0x3c0862){if(_0x3c0862){var _0x328b57=typeof _0x58c7c7[_0x6a90('0xf')]===_0x6a90('0x10')&&typeof _0x58c7c7[_0x6a90('0x11')]===_0x6a90('0x10');var _0x1d5d77=_0x3c0862[_0x6a90('0x12')];var _0x94a82c=_0x328b57?0x0:_0x58c7c7['offset'];var _0xf0c0ac=_0x328b57?_0x3c0862[_0x6a90('0x12')]:_0x58c7c7[_0x6a90('0xf')]+_0x58c7c7[_0x6a90('0x11')];var _0x38be60;if(_0xf0c0ac>=_0x1d5d77){_0xf0c0ac=_0x1d5d77;_0x38be60=0xc8;}else{_0x38be60=0xce;}_0x30b716[_0x6a90('0xd')](_0x38be60);return _0x30b716[_0x6a90('0x13')](_0x6a90('0x14'),_0x94a82c+'-'+_0xf0c0ac+'/'+_0x1d5d77)['json'](_0x3c0862);}return null;};}function saveUpdates(_0x4d70e3){return function(_0x64494c){if(_0x64494c){return _0x64494c['update'](_0x4d70e3)[_0x6a90('0x15')](function(_0x320ef8){return _0x320ef8;});}return null;};}function removeEntity(_0x554b16){return function(_0x3869ba){if(_0x3869ba){return _0x3869ba[_0x6a90('0x16')]()['then'](function(){_0x554b16[_0x6a90('0xd')](0xcc)[_0x6a90('0x17')]();});}};}function handleEntityNotFound(_0x1948aa){return function(_0x32697f){if(!_0x32697f){_0x1948aa[_0x6a90('0xc')](0x194);}return _0x32697f;};}function handleError(_0x2c471e,_0x186878){_0x186878=_0x186878||0x1f4;return function(_0x3236fe){logger[_0x6a90('0x18')](_0x3236fe[_0x6a90('0x19')]);if(_0x3236fe[_0x6a90('0x1a')]){delete _0x3236fe[_0x6a90('0x1a')];}_0x2c471e[_0x6a90('0xd')](_0x186878)[_0x6a90('0x1b')](_0x3236fe);};}exports[_0x6a90('0x1c')]=function(_0x175497,_0x2feda0){var _0x1023ae={};var _0x4cf74e=_[_0x6a90('0x1d')](db['SmsInteraction']['rawAttributes'],function(_0x37d6c4){return{'name':_0x37d6c4[_0x6a90('0x1e')],'type':_0x37d6c4[_0x6a90('0x1f')]['key']};});_0x1023ae=qs[_0x6a90('0x20')](_0x4cf74e,_0x175497);return interaction[_0x6a90('0x21')](_0x6a90('0x22'),_0x175497['query'],_0x175497['user'],_0x1023ae,_0x4cf74e)[_0x6a90('0x15')](respondWithFilteredResult(_0x2feda0,_0x1023ae))[_0x6a90('0x23')](handleError(_0x2feda0,null));};exports[_0x6a90('0x24')]=function(_0x57c12e,_0x3e908f){var _0x450716={'raw':![],'where':{'id':_0x57c12e[_0x6a90('0x25')]['id']}},_0xf9ba61={};_0xf9ba61[_0x6a90('0x26')]=_['keys'](db['SmsInteraction'][_0x6a90('0x27')]);_0xf9ba61[_0x6a90('0x28')]=_[_0x6a90('0x29')](_0x57c12e[_0x6a90('0x28')]);_0xf9ba61[_0x6a90('0x2a')]=_['intersection'](_0xf9ba61[_0x6a90('0x26')],_0xf9ba61[_0x6a90('0x28')]);_0x450716[_0x6a90('0x2b')]=_['intersection'](_0xf9ba61[_0x6a90('0x26')],qs[_0x6a90('0x2c')](_0x57c12e[_0x6a90('0x28')][_0x6a90('0x2c')]));_0x450716[_0x6a90('0x2b')]=_0x450716[_0x6a90('0x2b')][_0x6a90('0x2d')]?_0x450716['attributes']:_0xf9ba61[_0x6a90('0x26')];if(_0x57c12e[_0x6a90('0x28')]['includeAll']){_0x450716['include']=[{'all':!![]}];}_0x450716=_[_0x6a90('0x2e')]({},_0x450716,_0x57c12e['options']);return db['SmsInteraction']['find'](_0x450716)[_0x6a90('0x15')](handleEntityNotFound(_0x3e908f,null))[_0x6a90('0x15')](respondWithResult(_0x3e908f,null))['catch'](handleError(_0x3e908f,null));};exports['create']=function(_0x35c4c7,_0x12f2a3){return db[_0x6a90('0x2f')][_0x6a90('0x30')](_0x35c4c7['body'],{})[_0x6a90('0x15')](respondWithResult(_0x12f2a3,0xc9))[_0x6a90('0x23')](handleError(_0x12f2a3,null));};exports[_0x6a90('0x31')]=function(_0x2ec728,_0x942ec7){if(_0x2ec728['body']['id']){delete _0x2ec728[_0x6a90('0x32')]['id'];}return db[_0x6a90('0x2f')][_0x6a90('0x33')]({'where':{'id':_0x2ec728['params']['id']}})[_0x6a90('0x15')](handleEntityNotFound(_0x942ec7,null))[_0x6a90('0x15')](saveUpdates(_0x2ec728['body'],null))[_0x6a90('0x15')](respondWithResult(_0x942ec7,null))[_0x6a90('0x23')](handleError(_0x942ec7,null));};exports[_0x6a90('0x16')]=function(_0x3e305d,_0x251597){return db[_0x6a90('0x2f')][_0x6a90('0x33')]({'where':{'id':_0x3e305d[_0x6a90('0x25')]['id']}})[_0x6a90('0x15')](handleEntityNotFound(_0x251597,null))[_0x6a90('0x15')](removeEntity(_0x251597,null))[_0x6a90('0x23')](handleError(_0x251597,null));};exports[_0x6a90('0x34')]=function(_0x443476,_0x5c2870){return db[_0x6a90('0x2f')]['describe']()[_0x6a90('0x15')](respondWithResult(_0x5c2870,null))[_0x6a90('0x23')](handleError(_0x5c2870,null));};exports['addMessage']=function(_0x4a98b9,_0x482b02){return db[_0x6a90('0x35')][_0x6a90('0x33')]({'where':{'id':_0x4a98b9[_0x6a90('0x25')]['id']}})[_0x6a90('0x15')](handleEntityNotFound(_0x482b02,null))['then'](function(_0x4a5e5e){if(_0x4a5e5e){return _0x4a5e5e[_0x6a90('0x36')](_0x4a98b9['body']['ids'],_[_0x6a90('0x37')](_0x4a98b9[_0x6a90('0x32')],[_0x6a90('0x38'),'id'])||{});}})[_0x6a90('0x15')](respondWithResult(_0x482b02,null))[_0x6a90('0x23')](handleError(_0x482b02,null));};exports[_0x6a90('0x39')]=function(_0x3f19b8,_0xe9c40a){var _0x46e74e={'raw':![],'where':{}};var _0x34edb0={};var _0x429500={'count':0x0,'rows':[]};return db[_0x6a90('0x2f')][_0x6a90('0x3a')]({'where':{'id':_0x3f19b8['params']['id']}})['then'](handleEntityNotFound(_0xe9c40a,null))[_0x6a90('0x15')](function(_0x22825e){if(_0x22825e){_0x34edb0[_0x6a90('0x26')]=_['keys'](db[_0x6a90('0x35')][_0x6a90('0x27')]);_0x34edb0[_0x6a90('0x28')]=_[_0x6a90('0x29')](_0x3f19b8[_0x6a90('0x28')]);_0x34edb0['filters']=_[_0x6a90('0x3b')](_0x34edb0[_0x6a90('0x26')],_0x34edb0[_0x6a90('0x28')]);_0x46e74e[_0x6a90('0x2b')]=_[_0x6a90('0x3b')](_0x34edb0[_0x6a90('0x26')],qs[_0x6a90('0x2c')](_0x3f19b8['query']['fields']));_0x46e74e['attributes']=_0x46e74e[_0x6a90('0x2b')][_0x6a90('0x2d')]?_0x46e74e[_0x6a90('0x2b')]:_0x34edb0[_0x6a90('0x26')];if(!_0x3f19b8[_0x6a90('0x28')][_0x6a90('0x3c')](_0x6a90('0x3d'))){_0x46e74e[_0x6a90('0x11')]=qs['limit'](_0x3f19b8[_0x6a90('0x28')][_0x6a90('0x11')]);_0x46e74e['offset']=qs[_0x6a90('0xf')](_0x3f19b8[_0x6a90('0x28')][_0x6a90('0xf')]);}_0x46e74e['order']=qs[_0x6a90('0x3e')](_0x3f19b8[_0x6a90('0x28')][_0x6a90('0x3e')]);_0x46e74e[_0x6a90('0x3f')]=qs[_0x6a90('0x2a')](_[_0x6a90('0x40')](_0x3f19b8[_0x6a90('0x28')],_0x34edb0[_0x6a90('0x2a')]));_0x46e74e['where'][_0x6a90('0x41')]=_0x22825e['id'];if(_0x3f19b8[_0x6a90('0x28')][_0x6a90('0x42')]){_0x46e74e[_0x6a90('0x3f')]=_[_0x6a90('0x2e')](_0x46e74e['where'],{'$or':_['map'](_0x46e74e['attributes'],function(_0xf75112){var _0x44c9a9={};_0x44c9a9[_0xf75112]={'$like':'%'+_0x3f19b8[_0x6a90('0x28')][_0x6a90('0x42')]+'%'};return _0x44c9a9;})});}if(_0x3f19b8['query'][_0x6a90('0x43')]){var _0x51be2d=_0x3f19b8[_0x6a90('0x28')][_0x6a90('0x43')][_0x6a90('0x44')](',');var _0x4574cb={};_0x4574cb[_0x51be2d[0x0]]={'$gte':moment(_0x51be2d[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x46e74e[_0x6a90('0x3f')]=_[_0x6a90('0x2e')](_0x46e74e[_0x6a90('0x3f')],_0x4574cb);}_0x46e74e=_[_0x6a90('0x2e')]({},_0x46e74e,_0x3f19b8[_0x6a90('0x45')]);return db[_0x6a90('0x35')][_0x6a90('0x12')]({'where':_0x46e74e[_0x6a90('0x3f')]})[_0x6a90('0x15')](function(_0x33aa77){_0x429500[_0x6a90('0x12')]=_0x33aa77;if(_0x3f19b8[_0x6a90('0x28')][_0x6a90('0x46')]){_0x46e74e[_0x6a90('0x47')]=[{'all':!![]}];}return db[_0x6a90('0x35')][_0x6a90('0x21')](_0x46e74e);})[_0x6a90('0x15')](function(_0x44ffee){_0x429500[_0x6a90('0x48')]=_0x44ffee;return _0x429500;});}})[_0x6a90('0x15')](respondWithFilteredResult(_0xe9c40a,_0x46e74e))[_0x6a90('0x23')](handleError(_0xe9c40a,null));};exports[_0x6a90('0x49')]=function(_0x11ce7e,_0x1347ec){return db[_0x6a90('0x2f')]['find']({'where':{'id':_0x11ce7e[_0x6a90('0x25')]['id']}})['then'](handleEntityNotFound(_0x1347ec,null))[_0x6a90('0x15')](function(_0x127ea2){if(_0x127ea2){return _0x127ea2[_0x6a90('0x4a')](_0x11ce7e['body'][_0x6a90('0x38')],_[_0x6a90('0x37')](_0x11ce7e['body'],['ids','id'])||{})[_0x6a90('0x4b')](function(){return db[_0x6a90('0x4c')]['findAll']({'attributes':['id',_0x6a90('0x1a'),_0x6a90('0x4d')],'where':{'id':_0x11ce7e[_0x6a90('0x32')][_0x6a90('0x38')]}});})[_0x6a90('0x15')](function(_0x2f9c5f){socket[_0x6a90('0x4e')](_0x6a90('0x4f'),{'id':Number(_0x11ce7e[_0x6a90('0x25')]['id']),'tags':_0x2f9c5f||[]});return{'id':Number(_0x11ce7e[_0x6a90('0x25')]['id']),'tags':_0x2f9c5f||[]};});}})[_0x6a90('0x15')](respondWithResult(_0x1347ec,null))[_0x6a90('0x23')](handleError(_0x1347ec,null));};exports[_0x6a90('0x50')]=function(_0x43db2b,_0x2a0bd2){return db[_0x6a90('0x2f')]['find']({'where':{'id':_0x43db2b[_0x6a90('0x25')]['id']}})[_0x6a90('0x15')](handleEntityNotFound(_0x2a0bd2,null))[_0x6a90('0x15')](function(_0x529cb4){if(_0x529cb4){return _0x529cb4['removeTags'](_0x43db2b[_0x6a90('0x28')]['ids']);}})[_0x6a90('0x15')](respondWithStatusCode(_0x2a0bd2,null))[_0x6a90('0x23')](handleError(_0x2a0bd2,null));};exports[_0x6a90('0x51')]=function(_0x397b64,_0x1bff54){var _0x1b9ee6=moment()[_0x6a90('0x52')]()[_0x6a90('0x53')]();var _0x27d4bf=path['join'](config['root'],_0x6a90('0x54'),_0x6a90('0x55'),'tmp');var _0x16e82a=path[_0x6a90('0x56')](_0x27d4bf,_0x1b9ee6);var _0x2091e8=util['format']('transcript-%d-%s.zip',_0x397b64['params']['id'],_0x1b9ee6);var _0x5ae734=path[_0x6a90('0x56')](_0x27d4bf,_0x2091e8);var _0x4df14b=[];_0x4df14b[_0x6a90('0x57')]({'model':db[_0x6a90('0x58')],'as':_0x6a90('0x58'),'attributes':['id','fullname'],'raw':!![]});_0x4df14b['push']({'model':db['CmContact'],'as':'Contact','attributes':['id',_0x6a90('0x59'),_0x6a90('0x5a')],'raw':!![]});var _0x397d56=[{'model':db[_0x6a90('0x35')],'as':_0x6a90('0x5b'),'attributes':['id',_0x6a90('0x32'),_0x6a90('0x5c'),_0x6a90('0x5d'),_0x6a90('0x5e'),_0x6a90('0x5f')],'include':_0x4df14b}];_0x397d56['push']({'model':db[_0x6a90('0x60')],'as':_0x6a90('0x61'),'attributes':['id','name']});_0x397d56[_0x6a90('0x57')]({'model':db[_0x6a90('0x58')],'as':_0x6a90('0x62'),'attributes':['id',_0x6a90('0x63')]});return db[_0x6a90('0x2f')][_0x6a90('0x33')]({'where':{'id':_0x397b64[_0x6a90('0x25')]['id']},'include':_0x397d56})[_0x6a90('0x15')](handleEntityNotFound(_0x1bff54,null))['then'](function(_0x134f34){if(_0x134f34){var _0x118c33=_0x134f34[_0x6a90('0x64')]({'plain':!![]});fs[_0x6a90('0x65')](_0x16e82a);var _0x3249b5={'channel':'Sms','account':_0x118c33[_0x6a90('0x61')][_0x6a90('0x1a')],'agent':_0x118c33[_0x6a90('0x62')]?_0x118c33['Owner'][_0x6a90('0x63')]:'N.A.','createdAt':moment(_0x118c33[_0x6a90('0x5c')])[_0x6a90('0x66')](_0x6a90('0x67'))[_0x6a90('0x53')](),'closedAt':_0x118c33['closed']?moment(_0x118c33['closedAt'])['format'](_0x6a90('0x67'))[_0x6a90('0x53')]():'','disposition':_0x118c33[_0x6a90('0x68')],'messages':_(_0x118c33[_0x6a90('0x5b')])['filter']({'secret':![]})[_0x6a90('0x1d')](function(_0x5e9719){return{'date':moment(_0x5e9719[_0x6a90('0x5c')])['format'](_0x6a90('0x67'))['toString'](),'sender':_0x5e9719[_0x6a90('0x5d')]===_0x6a90('0x69')?_0x5e9719['User']?_0x5e9719['User']['fullname']:_0x6a90('0x6a'):_0x5e9719[_0x6a90('0x6b')][_0x6a90('0x59')]+(_0x5e9719[_0x6a90('0x6b')][_0x6a90('0x5a')]?'\x20'+_0x5e9719[_0x6a90('0x6b')][_0x6a90('0x5a')]:''),'body':_0x5e9719[_0x6a90('0x32')],'direction':_0x5e9719[_0x6a90('0x5d')]===_0x6a90('0x69')?'A':'C','secret':_0x5e9719[_0x6a90('0x5e')],'read':_0x5e9719[_0x6a90('0x5f')]};})[_0x6a90('0x6c')]()};return ejs[_0x6a90('0x6d')](path[_0x6a90('0x56')](config[_0x6a90('0x6e')],_0x6a90('0x54'),_0x6a90('0x6f'),_0x6a90('0x70')),{'interaction':_0x3249b5})[_0x6a90('0x15')](function(_0x8436c2){var _0x20c871=path['join'](_0x16e82a,_0x6a90('0x71')+_0x118c33['id']+'-'+_0x1b9ee6+'.pdf');var _0x45b50f={'path':_0x20c871,'channel':_0x6a90('0x72'),'interactionId':_0x118c33['id']};return pdf[_0x6a90('0x73')](_0x8436c2,_0x45b50f);})[_0x6a90('0x15')](function(){return new BPromise(function(_0x67bcd7,_0xe27086){zipdir(_0x16e82a,{'saveTo':_0x5ae734},function(_0x5df6b2,_0x3b7a64){if(_0x5df6b2)return _0xe27086(_0x5df6b2);return _0x67bcd7(_0x3b7a64);});})['then'](function(){return new BPromise(function(_0x274b4c,_0x62b64c){rimraf(_0x16e82a,function(_0x2d07fd){if(_0x2d07fd)_0x62b64c(_0x2d07fd);return _0x274b4c();});});})['then'](function(){return _0x1bff54[_0x6a90('0x51')](_0x5ae734,_0x2091e8,function(_0xd32605){if(_0xd32605){console[_0x6a90('0x74')]('err',_0xd32605);}else{fs['unlinkSync'](_0x5ae734);}});});});}else{return _0x1bff54[_0x6a90('0xc')](0xc8);}})[_0x6a90('0x23')](handleError(_0x1bff54,null));};