Built motion from commit d5e4af8c.|2.6.23
[motion2.git] / server / api / faxInteraction / faxInteraction.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 _0x9d23=['sort','where','FaxInteractionId','filter','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','omit','Tag','color','emit','faxInteractionTags:save','removeTags','download','unix','toString','server','tmp','join','root','files','attachments','Attachment','Messages','createdAt','get','mkdirSync','createReadStream','pipe','basename','resolve','log','err','unlinkSync','rimraf','zip-dir','bluebird','util','path','lodash','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./faxInteraction.socket','register','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','destroy','then','error','name','index','FaxInteraction','rawAttributes','fieldName','type','key','getOptions','fax','query','user','catch','show','keys','filters','model','intersection','fields','attributes','includeAll','include','merge','options','find','create','body','update','params','describe','addMessage','FaxMessage','ids','getMessages','findOne','length','nolimit'];(function(_0x87f37f,_0x295180){var _0x302610=function(_0x1bc70d){while(--_0x1bc70d){_0x87f37f['push'](_0x87f37f['shift']());}};_0x302610(++_0x295180);}(_0x9d23,0x8f));var _0x39d2=function(_0x2db67e,_0x5b30d0){_0x2db67e=_0x2db67e-0x0;var _0x1871b8=_0x9d23[_0x2db67e];return _0x1871b8;};'use strict';var rimraf=require(_0x39d2('0x0'));var zipdir=require(_0x39d2('0x1'));var moment=require('moment');var BPromise=require(_0x39d2('0x2'));var util=require(_0x39d2('0x3'));var path=require(_0x39d2('0x4'));var fs=require('fs');var _=require(_0x39d2('0x5'));var Redis=require('ioredis');var interaction=require(_0x39d2('0x6'));var qs=require(_0x39d2('0x7'));var logger=require(_0x39d2('0x8'))('api');var config=require(_0x39d2('0x9'));var db=require(_0x39d2('0xa'))['db'];config[_0x39d2('0xb')]=_[_0x39d2('0xc')](config[_0x39d2('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x39d2('0xd'))(new Redis(config[_0x39d2('0xb')]));require(_0x39d2('0xe'))[_0x39d2('0xf')](socket);function respondWithStatusCode(_0x15f6d4,_0x2d5515){_0x2d5515=_0x2d5515||0xcc;return function(_0x49ad08){if(_0x49ad08){return _0x15f6d4[_0x39d2('0x10')](_0x2d5515);}return _0x15f6d4['status'](_0x2d5515)[_0x39d2('0x11')]();};}function respondWithResult(_0x147627,_0x18cc32){_0x18cc32=_0x18cc32||0xc8;return function(_0xa0b650){if(_0xa0b650){return _0x147627[_0x39d2('0x12')](_0x18cc32)[_0x39d2('0x13')](_0xa0b650);}};}function respondWithFilteredResult(_0x2c5c8f,_0x96dae3){return function(_0x41a347){if(_0x41a347){var _0x8b6b3e=typeof _0x96dae3[_0x39d2('0x14')]==='undefined'&&typeof _0x96dae3['limit']===_0x39d2('0x15');var _0x495a8c=_0x41a347['count'];var _0x2627fd=_0x8b6b3e?0x0:_0x96dae3[_0x39d2('0x14')];var _0x195f05=_0x8b6b3e?_0x41a347[_0x39d2('0x16')]:_0x96dae3[_0x39d2('0x14')]+_0x96dae3[_0x39d2('0x17')];var _0x284935;if(_0x195f05>=_0x495a8c){_0x195f05=_0x495a8c;_0x284935=0xc8;}else{_0x284935=0xce;}_0x2c5c8f['status'](_0x284935);return _0x2c5c8f[_0x39d2('0x18')](_0x39d2('0x19'),_0x2627fd+'-'+_0x195f05+'/'+_0x495a8c)[_0x39d2('0x13')](_0x41a347);}return null;};}function saveUpdates(_0x1b0d1e){return function(_0xc65311){if(_0xc65311){return _0xc65311['update'](_0x1b0d1e)['then'](function(_0xd12343){return _0xd12343;});}return null;};}function removeEntity(_0x85bcd){return function(_0x415c81){if(_0x415c81){return _0x415c81[_0x39d2('0x1a')]()[_0x39d2('0x1b')](function(){_0x85bcd[_0x39d2('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x375f74){return function(_0x31ef05){if(!_0x31ef05){_0x375f74[_0x39d2('0x10')](0x194);}return _0x31ef05;};}function handleError(_0x2efdc0,_0x2b9c71){_0x2b9c71=_0x2b9c71||0x1f4;return function(_0x16323c){logger[_0x39d2('0x1c')](_0x16323c['stack']);if(_0x16323c[_0x39d2('0x1d')]){delete _0x16323c[_0x39d2('0x1d')];}_0x2efdc0[_0x39d2('0x12')](_0x2b9c71)['send'](_0x16323c);};}exports[_0x39d2('0x1e')]=function(_0xccf30c,_0x93aa7b){var _0x29a07e={};var _0x4c99b9=_['map'](db[_0x39d2('0x1f')][_0x39d2('0x20')],function(_0xd5197d){return{'name':_0xd5197d[_0x39d2('0x21')],'type':_0xd5197d[_0x39d2('0x22')][_0x39d2('0x23')]};});_0x29a07e=qs[_0x39d2('0x24')](_0x4c99b9,_0xccf30c);return interaction['findAll'](_0x39d2('0x25'),_0xccf30c[_0x39d2('0x26')],_0xccf30c[_0x39d2('0x27')],_0x29a07e,_0x4c99b9)[_0x39d2('0x1b')](respondWithFilteredResult(_0x93aa7b,_0x29a07e))[_0x39d2('0x28')](handleError(_0x93aa7b,null));};exports[_0x39d2('0x29')]=function(_0xe46662,_0x2d43a7){var _0x457475={'raw':![],'where':{'id':_0xe46662['params']['id']}},_0x48bdc6={};_0x48bdc6['model']=_[_0x39d2('0x2a')](db['FaxInteraction'][_0x39d2('0x20')]);_0x48bdc6['query']=_[_0x39d2('0x2a')](_0xe46662[_0x39d2('0x26')]);_0x48bdc6[_0x39d2('0x2b')]=_['intersection'](_0x48bdc6[_0x39d2('0x2c')],_0x48bdc6['query']);_0x457475['attributes']=_[_0x39d2('0x2d')](_0x48bdc6[_0x39d2('0x2c')],qs['fields'](_0xe46662[_0x39d2('0x26')][_0x39d2('0x2e')]));_0x457475['attributes']=_0x457475[_0x39d2('0x2f')]['length']?_0x457475[_0x39d2('0x2f')]:_0x48bdc6[_0x39d2('0x2c')];if(_0xe46662[_0x39d2('0x26')][_0x39d2('0x30')]){_0x457475[_0x39d2('0x31')]=[{'all':!![]}];}_0x457475=_[_0x39d2('0x32')]({},_0x457475,_0xe46662[_0x39d2('0x33')]);return db['FaxInteraction'][_0x39d2('0x34')](_0x457475)['then'](handleEntityNotFound(_0x2d43a7,null))[_0x39d2('0x1b')](respondWithResult(_0x2d43a7,null))[_0x39d2('0x28')](handleError(_0x2d43a7,null));};exports[_0x39d2('0x35')]=function(_0x1b3f47,_0x592fdb){return db[_0x39d2('0x1f')][_0x39d2('0x35')](_0x1b3f47[_0x39d2('0x36')],{})[_0x39d2('0x1b')](respondWithResult(_0x592fdb,0xc9))[_0x39d2('0x28')](handleError(_0x592fdb,null));};exports[_0x39d2('0x37')]=function(_0x2fa205,_0x56510c){if(_0x2fa205['body']['id']){delete _0x2fa205[_0x39d2('0x36')]['id'];}return db[_0x39d2('0x1f')][_0x39d2('0x34')]({'where':{'id':_0x2fa205['params']['id']}})[_0x39d2('0x1b')](handleEntityNotFound(_0x56510c,null))['then'](saveUpdates(_0x2fa205[_0x39d2('0x36')],null))[_0x39d2('0x1b')](respondWithResult(_0x56510c,null))[_0x39d2('0x28')](handleError(_0x56510c,null));};exports['destroy']=function(_0x229394,_0x49aac4){return db[_0x39d2('0x1f')][_0x39d2('0x34')]({'where':{'id':_0x229394[_0x39d2('0x38')]['id']}})['then'](handleEntityNotFound(_0x49aac4,null))[_0x39d2('0x1b')](removeEntity(_0x49aac4,null))[_0x39d2('0x28')](handleError(_0x49aac4,null));};exports[_0x39d2('0x39')]=function(_0x59dffb,_0x1e8436){return db[_0x39d2('0x1f')][_0x39d2('0x39')]()['then'](respondWithResult(_0x1e8436,null))[_0x39d2('0x28')](handleError(_0x1e8436,null));};exports[_0x39d2('0x3a')]=function(_0x1709f5,_0x363d4c){return db[_0x39d2('0x3b')]['find']({'where':{'id':_0x1709f5[_0x39d2('0x38')]['id']}})['then'](handleEntityNotFound(_0x363d4c,null))['then'](function(_0x94a429){if(_0x94a429){return _0x94a429[_0x39d2('0x3a')](_0x1709f5[_0x39d2('0x36')][_0x39d2('0x3c')],_['omit'](_0x1709f5['body'],[_0x39d2('0x3c'),'id'])||{});}})[_0x39d2('0x1b')](respondWithResult(_0x363d4c,null))[_0x39d2('0x28')](handleError(_0x363d4c,null));};exports[_0x39d2('0x3d')]=function(_0x2b4f0d,_0x1bc246){var _0x526171={'raw':![],'where':{}};var _0x567082={};var _0x2c455c={'count':0x0,'rows':[]};return db['FaxInteraction'][_0x39d2('0x3e')]({'where':{'id':_0x2b4f0d[_0x39d2('0x38')]['id']}})['then'](handleEntityNotFound(_0x1bc246,null))[_0x39d2('0x1b')](function(_0x168618){if(_0x168618){_0x567082[_0x39d2('0x2c')]=_[_0x39d2('0x2a')](db[_0x39d2('0x3b')]['rawAttributes']);_0x567082[_0x39d2('0x26')]=_[_0x39d2('0x2a')](_0x2b4f0d[_0x39d2('0x26')]);_0x567082[_0x39d2('0x2b')]=_['intersection'](_0x567082['model'],_0x567082[_0x39d2('0x26')]);_0x526171[_0x39d2('0x2f')]=_['intersection'](_0x567082['model'],qs[_0x39d2('0x2e')](_0x2b4f0d['query'][_0x39d2('0x2e')]));_0x526171[_0x39d2('0x2f')]=_0x526171[_0x39d2('0x2f')][_0x39d2('0x3f')]?_0x526171[_0x39d2('0x2f')]:_0x567082[_0x39d2('0x2c')];if(!_0x2b4f0d['query']['hasOwnProperty'](_0x39d2('0x40'))){_0x526171[_0x39d2('0x17')]=qs[_0x39d2('0x17')](_0x2b4f0d[_0x39d2('0x26')][_0x39d2('0x17')]);_0x526171[_0x39d2('0x14')]=qs[_0x39d2('0x14')](_0x2b4f0d[_0x39d2('0x26')][_0x39d2('0x14')]);}_0x526171['order']=qs[_0x39d2('0x41')](_0x2b4f0d[_0x39d2('0x26')]['sort']);_0x526171['where']=qs[_0x39d2('0x2b')](_['pick'](_0x2b4f0d['query'],_0x567082[_0x39d2('0x2b')]));_0x526171[_0x39d2('0x42')][_0x39d2('0x43')]=_0x168618['id'];if(_0x2b4f0d['query'][_0x39d2('0x44')]){_0x526171['where']=_[_0x39d2('0x32')](_0x526171[_0x39d2('0x42')],{'$or':_[_0x39d2('0x45')](_0x526171[_0x39d2('0x2f')],function(_0x1392c2){var _0x4fde8a={};_0x4fde8a[_0x1392c2]={'$like':'%'+_0x2b4f0d['query'][_0x39d2('0x44')]+'%'};return _0x4fde8a;})});}if(_0x2b4f0d[_0x39d2('0x26')][_0x39d2('0x46')]){var _0x4ea633=_0x2b4f0d[_0x39d2('0x26')][_0x39d2('0x46')][_0x39d2('0x47')](',');var _0x1d74bd={};_0x1d74bd[_0x4ea633[0x0]]={'$gte':moment(_0x4ea633[0x1])[_0x39d2('0x48')](_0x39d2('0x49'))};_0x526171[_0x39d2('0x42')]=_[_0x39d2('0x32')](_0x526171[_0x39d2('0x42')],_0x1d74bd);}_0x526171=_[_0x39d2('0x32')]({},_0x526171,_0x2b4f0d['options']);return db[_0x39d2('0x3b')][_0x39d2('0x16')]({'where':_0x526171[_0x39d2('0x42')]})[_0x39d2('0x1b')](function(_0x351615){_0x2c455c[_0x39d2('0x16')]=_0x351615;if(_0x2b4f0d['query'][_0x39d2('0x30')]){_0x526171[_0x39d2('0x31')]=[{'all':!![]}];}return db[_0x39d2('0x3b')][_0x39d2('0x4a')](_0x526171);})[_0x39d2('0x1b')](function(_0x43d569){_0x2c455c[_0x39d2('0x4b')]=_0x43d569;return _0x2c455c;});}})[_0x39d2('0x1b')](respondWithFilteredResult(_0x1bc246,_0x526171))[_0x39d2('0x28')](handleError(_0x1bc246,null));};exports[_0x39d2('0x4c')]=function(_0x83ddcc,_0xfed317){return db[_0x39d2('0x1f')][_0x39d2('0x34')]({'where':{'id':_0x83ddcc[_0x39d2('0x38')]['id']}})[_0x39d2('0x1b')](handleEntityNotFound(_0xfed317,null))[_0x39d2('0x1b')](function(_0x55d1b5){if(_0x55d1b5){return _0x55d1b5['setTags'](_0x83ddcc[_0x39d2('0x36')][_0x39d2('0x3c')],_[_0x39d2('0x4d')](_0x83ddcc['body'],['ids','id'])||{})['spread'](function(){return db[_0x39d2('0x4e')][_0x39d2('0x4a')]({'attributes':['id','name',_0x39d2('0x4f')],'where':{'id':_0x83ddcc[_0x39d2('0x36')][_0x39d2('0x3c')]}});})['then'](function(_0x150b2e){socket[_0x39d2('0x50')](_0x39d2('0x51'),{'id':Number(_0x83ddcc[_0x39d2('0x38')]['id']),'tags':_0x150b2e||[]});return{'id':Number(_0x83ddcc[_0x39d2('0x38')]['id']),'tags':_0x150b2e||[]};});}})[_0x39d2('0x1b')](respondWithResult(_0xfed317,null))[_0x39d2('0x28')](handleError(_0xfed317,null));};exports[_0x39d2('0x52')]=function(_0x133f3e,_0x4c979a){return db[_0x39d2('0x1f')][_0x39d2('0x34')]({'where':{'id':_0x133f3e[_0x39d2('0x38')]['id']}})[_0x39d2('0x1b')](handleEntityNotFound(_0x4c979a,null))[_0x39d2('0x1b')](function(_0x186ea3){if(_0x186ea3){return _0x186ea3[_0x39d2('0x52')](_0x133f3e[_0x39d2('0x26')][_0x39d2('0x3c')]);}})['then'](respondWithStatusCode(_0x4c979a,null))[_0x39d2('0x28')](handleError(_0x4c979a,null));};exports[_0x39d2('0x53')]=function(_0x21a637,_0x6222b8){var _0x1813ae=moment()[_0x39d2('0x54')]()[_0x39d2('0x55')]();var _0x1c8a88=path['join'](config['root'],_0x39d2('0x56'),'files',_0x39d2('0x57'));var _0x50683c=path[_0x39d2('0x58')](config[_0x39d2('0x59')],'server',_0x39d2('0x5a'),_0x39d2('0x5b'));var _0x2d215e=path[_0x39d2('0x58')](_0x1c8a88,_0x1813ae);var _0x5219ed=util['format']('transcript-%d-%s.zip',_0x21a637[_0x39d2('0x38')]['id'],_0x1813ae);var _0x3c69d9=path[_0x39d2('0x58')](_0x1c8a88,_0x5219ed);var _0x24ab14=[];_0x24ab14['push']({'model':db[_0x39d2('0x5c')],'as':_0x39d2('0x5c'),'raw':!![]});var _0x7d13f0=[{'model':db['FaxMessage'],'as':_0x39d2('0x5d'),'attributes':['id',_0x39d2('0x36'),_0x39d2('0x5e')],'include':_0x24ab14}];return db['FaxInteraction']['find']({'where':{'id':_0x21a637['params']['id']},'include':_0x7d13f0})['then'](handleEntityNotFound(_0x6222b8,null))['then'](function(_0x277ec2){if(_0x277ec2&&_0x277ec2['Messages']){var _0xcaf08f=_0x277ec2[_0x39d2('0x5f')]({'plain':!![]});fs[_0x39d2('0x60')](_0x2d215e);for(var _0x5bae66=0x0;_0x5bae66<_0xcaf08f['Messages'][_0x39d2('0x3f')];_0x5bae66++){var _0x57ff7f=_0xcaf08f[_0x39d2('0x5d')][_0x5bae66]['Attachment'];if(_0x57ff7f){var _0x19d445=path[_0x39d2('0x58')](_0x50683c,_0x57ff7f['basename']);if(fs['existsSync'](_0x19d445)){fs[_0x39d2('0x61')](_0x19d445)[_0x39d2('0x62')](fs['createWriteStream'](path[_0x39d2('0x58')](_0x2d215e,_0x57ff7f[_0x39d2('0x63')])));}}}return BPromise[_0x39d2('0x64')]()['then'](function(){return new BPromise(function(_0x157581,_0xfc5803){zipdir(_0x2d215e,{'saveTo':_0x3c69d9},function(_0x3ea948,_0xedcb17){if(_0x3ea948)return _0xfc5803(_0x3ea948);return _0x157581(_0xedcb17);});})[_0x39d2('0x1b')](function(){return new BPromise(function(_0x52589f,_0x366094){rimraf(_0x2d215e,function(_0x55e0d8){if(_0x55e0d8)_0x366094(_0x55e0d8);return _0x52589f();});});})[_0x39d2('0x1b')](function(){return _0x6222b8['download'](_0x3c69d9,_0x5219ed,function(_0x380c57){if(_0x380c57){console[_0x39d2('0x65')](_0x39d2('0x66'),_0x380c57);}else{fs[_0x39d2('0x67')](_0x3c69d9);}});});});}else{return _0x6222b8[_0x39d2('0x10')](0xc8);}})[_0x39d2('0x28')](handleError(_0x6222b8,null));};