7d42fdee954fcaaead72c715118515d5fe8de356
[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 _0x2b16=['undefined','limit','set','Content-Range','then','error','stack','name','index','map','FaxInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','query','user','catch','show','params','model','keys','filters','intersection','attributes','fields','length','include','merge','options','create','body','update','find','describe','addMessage','ids','omit','findOne','FaxMessage','hasOwnProperty','order','sort','where','FaxInteractionId','filter','$gte','split','count','includeAll','rows','addTags','setTags','Tag','color','emit','faxInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','attachments','format','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','basename','createReadStream','pipe','createWriteStream','resolve','log','err','unlinkSync','rimraf','zip-dir','util','path','lodash','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','redis','localhost','./faxInteraction.socket','register','sendStatus','end','status','json','offset'];(function(_0x5f032d,_0x3420de){var _0x49098a=function(_0x26ed17){while(--_0x26ed17){_0x5f032d['push'](_0x5f032d['shift']());}};_0x49098a(++_0x3420de);}(_0x2b16,0xb8));var _0x62b1=function(_0x51b33d,_0x5190f3){_0x51b33d=_0x51b33d-0x0;var _0x2e2a87=_0x2b16[_0x51b33d];return _0x2e2a87;};'use strict';var rimraf=require(_0x62b1('0x0'));var zipdir=require(_0x62b1('0x1'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x62b1('0x2'));var path=require(_0x62b1('0x3'));var fs=require('fs');var _=require(_0x62b1('0x4'));var Redis=require('ioredis');var interaction=require(_0x62b1('0x5'));var qs=require(_0x62b1('0x6'));var logger=require('../../config/logger')(_0x62b1('0x7'));var config=require(_0x62b1('0x8'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x62b1('0x9')],{'host':_0x62b1('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x62b1('0x9')]));require(_0x62b1('0xb'))[_0x62b1('0xc')](socket);function respondWithStatusCode(_0xe418f4,_0x23995e){_0x23995e=_0x23995e||0xcc;return function(_0x5b28b3){if(_0x5b28b3){return _0xe418f4[_0x62b1('0xd')](_0x23995e);}return _0xe418f4['status'](_0x23995e)[_0x62b1('0xe')]();};}function respondWithResult(_0x3f4828,_0x2edc7a){_0x2edc7a=_0x2edc7a||0xc8;return function(_0x44b6e5){if(_0x44b6e5){return _0x3f4828[_0x62b1('0xf')](_0x2edc7a)[_0x62b1('0x10')](_0x44b6e5);}};}function respondWithFilteredResult(_0x3501d6,_0x2d0cbb){return function(_0x58cb16){if(_0x58cb16){var _0x5ed591=typeof _0x2d0cbb[_0x62b1('0x11')]===_0x62b1('0x12')&&typeof _0x2d0cbb['limit']===_0x62b1('0x12');var _0x3a6e8a=_0x58cb16['count'];var _0x1edc47=_0x5ed591?0x0:_0x2d0cbb[_0x62b1('0x11')];var _0x33e12e=_0x5ed591?_0x58cb16['count']:_0x2d0cbb[_0x62b1('0x11')]+_0x2d0cbb[_0x62b1('0x13')];var _0x3f8a39;if(_0x33e12e>=_0x3a6e8a){_0x33e12e=_0x3a6e8a;_0x3f8a39=0xc8;}else{_0x3f8a39=0xce;}_0x3501d6[_0x62b1('0xf')](_0x3f8a39);return _0x3501d6[_0x62b1('0x14')](_0x62b1('0x15'),_0x1edc47+'-'+_0x33e12e+'/'+_0x3a6e8a)[_0x62b1('0x10')](_0x58cb16);}return null;};}function saveUpdates(_0x252e2c){return function(_0x3f6f8f){if(_0x3f6f8f){return _0x3f6f8f['update'](_0x252e2c)[_0x62b1('0x16')](function(_0x223490){return _0x223490;});}return null;};}function removeEntity(_0x461591){return function(_0x407c4c){if(_0x407c4c){return _0x407c4c['destroy']()[_0x62b1('0x16')](function(){_0x461591[_0x62b1('0xf')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2bb70d){return function(_0x3b4528){if(!_0x3b4528){_0x2bb70d['sendStatus'](0x194);}return _0x3b4528;};}function handleError(_0x3035cf,_0x448dfd){_0x448dfd=_0x448dfd||0x1f4;return function(_0x4896af){logger[_0x62b1('0x17')](_0x4896af[_0x62b1('0x18')]);if(_0x4896af[_0x62b1('0x19')]){delete _0x4896af[_0x62b1('0x19')];}_0x3035cf[_0x62b1('0xf')](_0x448dfd)['send'](_0x4896af);};}exports[_0x62b1('0x1a')]=function(_0x1b85f8,_0x5b1a5a){var _0x1c1f72={};var _0x6bb8b=_[_0x62b1('0x1b')](db[_0x62b1('0x1c')][_0x62b1('0x1d')],function(_0x21bd65){return{'name':_0x21bd65[_0x62b1('0x1e')],'type':_0x21bd65[_0x62b1('0x1f')][_0x62b1('0x20')]};});_0x1c1f72=qs[_0x62b1('0x21')](_0x6bb8b,_0x1b85f8);return interaction[_0x62b1('0x22')]('fax',_0x1b85f8[_0x62b1('0x23')],_0x1b85f8[_0x62b1('0x24')],_0x1c1f72,_0x6bb8b)['then'](respondWithFilteredResult(_0x5b1a5a,_0x1c1f72))[_0x62b1('0x25')](handleError(_0x5b1a5a,null));};exports[_0x62b1('0x26')]=function(_0x21a354,_0x12add9){var _0x1bfcbc={'raw':![],'where':{'id':_0x21a354[_0x62b1('0x27')]['id']}},_0xca5451={};_0xca5451[_0x62b1('0x28')]=_[_0x62b1('0x29')](db[_0x62b1('0x1c')]['rawAttributes']);_0xca5451[_0x62b1('0x23')]=_[_0x62b1('0x29')](_0x21a354[_0x62b1('0x23')]);_0xca5451[_0x62b1('0x2a')]=_[_0x62b1('0x2b')](_0xca5451['model'],_0xca5451['query']);_0x1bfcbc[_0x62b1('0x2c')]=_[_0x62b1('0x2b')](_0xca5451['model'],qs[_0x62b1('0x2d')](_0x21a354[_0x62b1('0x23')][_0x62b1('0x2d')]));_0x1bfcbc[_0x62b1('0x2c')]=_0x1bfcbc[_0x62b1('0x2c')][_0x62b1('0x2e')]?_0x1bfcbc[_0x62b1('0x2c')]:_0xca5451['model'];if(_0x21a354['query']['includeAll']){_0x1bfcbc[_0x62b1('0x2f')]=[{'all':!![]}];}_0x1bfcbc=_[_0x62b1('0x30')]({},_0x1bfcbc,_0x21a354[_0x62b1('0x31')]);return db[_0x62b1('0x1c')]['find'](_0x1bfcbc)[_0x62b1('0x16')](handleEntityNotFound(_0x12add9,null))[_0x62b1('0x16')](respondWithResult(_0x12add9,null))[_0x62b1('0x25')](handleError(_0x12add9,null));};exports[_0x62b1('0x32')]=function(_0x983736,_0x530b57){return db['FaxInteraction'][_0x62b1('0x32')](_0x983736[_0x62b1('0x33')],{})[_0x62b1('0x16')](respondWithResult(_0x530b57,0xc9))[_0x62b1('0x25')](handleError(_0x530b57,null));};exports[_0x62b1('0x34')]=function(_0x57750,_0x5d512c){if(_0x57750['body']['id']){delete _0x57750[_0x62b1('0x33')]['id'];}return db[_0x62b1('0x1c')]['find']({'where':{'id':_0x57750[_0x62b1('0x27')]['id']}})['then'](handleEntityNotFound(_0x5d512c,null))['then'](saveUpdates(_0x57750[_0x62b1('0x33')],null))[_0x62b1('0x16')](respondWithResult(_0x5d512c,null))[_0x62b1('0x25')](handleError(_0x5d512c,null));};exports['destroy']=function(_0x2f7b8c,_0x47209f){return db['FaxInteraction'][_0x62b1('0x35')]({'where':{'id':_0x2f7b8c[_0x62b1('0x27')]['id']}})['then'](handleEntityNotFound(_0x47209f,null))[_0x62b1('0x16')](removeEntity(_0x47209f,null))[_0x62b1('0x25')](handleError(_0x47209f,null));};exports[_0x62b1('0x36')]=function(_0x283a5a,_0x21aade){return db['FaxInteraction']['describe']()[_0x62b1('0x16')](respondWithResult(_0x21aade,null))[_0x62b1('0x25')](handleError(_0x21aade,null));};exports[_0x62b1('0x37')]=function(_0x5cbca1,_0x36bf94){return db['FaxMessage'][_0x62b1('0x35')]({'where':{'id':_0x5cbca1[_0x62b1('0x27')]['id']}})[_0x62b1('0x16')](handleEntityNotFound(_0x36bf94,null))[_0x62b1('0x16')](function(_0x254404){if(_0x254404){return _0x254404[_0x62b1('0x37')](_0x5cbca1[_0x62b1('0x33')][_0x62b1('0x38')],_[_0x62b1('0x39')](_0x5cbca1[_0x62b1('0x33')],['ids','id'])||{});}})[_0x62b1('0x16')](respondWithResult(_0x36bf94,null))['catch'](handleError(_0x36bf94,null));};exports['getMessages']=function(_0x570c3a,_0x21c6a6){var _0x4cfacc={'raw':![],'where':{}};var _0x476410={};var _0xbd3526={'count':0x0,'rows':[]};return db[_0x62b1('0x1c')][_0x62b1('0x3a')]({'where':{'id':_0x570c3a['params']['id']}})[_0x62b1('0x16')](handleEntityNotFound(_0x21c6a6,null))[_0x62b1('0x16')](function(_0x504bb3){if(_0x504bb3){_0x476410[_0x62b1('0x28')]=_[_0x62b1('0x29')](db[_0x62b1('0x3b')][_0x62b1('0x1d')]);_0x476410[_0x62b1('0x23')]=_[_0x62b1('0x29')](_0x570c3a[_0x62b1('0x23')]);_0x476410[_0x62b1('0x2a')]=_['intersection'](_0x476410[_0x62b1('0x28')],_0x476410['query']);_0x4cfacc['attributes']=_['intersection'](_0x476410['model'],qs['fields'](_0x570c3a[_0x62b1('0x23')][_0x62b1('0x2d')]));_0x4cfacc['attributes']=_0x4cfacc['attributes']['length']?_0x4cfacc['attributes']:_0x476410['model'];if(!_0x570c3a[_0x62b1('0x23')][_0x62b1('0x3c')]('nolimit')){_0x4cfacc[_0x62b1('0x13')]=qs[_0x62b1('0x13')](_0x570c3a[_0x62b1('0x23')][_0x62b1('0x13')]);_0x4cfacc[_0x62b1('0x11')]=qs[_0x62b1('0x11')](_0x570c3a[_0x62b1('0x23')][_0x62b1('0x11')]);}_0x4cfacc[_0x62b1('0x3d')]=qs[_0x62b1('0x3e')](_0x570c3a[_0x62b1('0x23')][_0x62b1('0x3e')]);_0x4cfacc['where']=qs[_0x62b1('0x2a')](_['pick'](_0x570c3a[_0x62b1('0x23')],_0x476410[_0x62b1('0x2a')]));_0x4cfacc[_0x62b1('0x3f')][_0x62b1('0x40')]=_0x504bb3['id'];if(_0x570c3a['query'][_0x62b1('0x41')]){_0x4cfacc[_0x62b1('0x3f')]=_[_0x62b1('0x30')](_0x4cfacc[_0x62b1('0x3f')],{'$or':_[_0x62b1('0x1b')](_0x4cfacc[_0x62b1('0x2c')],function(_0x11cb14){var _0x5185ef={};_0x5185ef[_0x11cb14]={'$like':'%'+_0x570c3a[_0x62b1('0x23')][_0x62b1('0x41')]+'%'};return _0x5185ef;})});}if(_0x570c3a[_0x62b1('0x23')][_0x62b1('0x42')]){var _0x9987c=_0x570c3a[_0x62b1('0x23')]['$gte'][_0x62b1('0x43')](',');var _0x5b67d3={};_0x5b67d3[_0x9987c[0x0]]={'$gte':moment(_0x9987c[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x4cfacc['where']=_[_0x62b1('0x30')](_0x4cfacc[_0x62b1('0x3f')],_0x5b67d3);}_0x4cfacc=_[_0x62b1('0x30')]({},_0x4cfacc,_0x570c3a[_0x62b1('0x31')]);return db[_0x62b1('0x3b')][_0x62b1('0x44')]({'where':_0x4cfacc[_0x62b1('0x3f')]})[_0x62b1('0x16')](function(_0x1d55e9){_0xbd3526[_0x62b1('0x44')]=_0x1d55e9;if(_0x570c3a[_0x62b1('0x23')][_0x62b1('0x45')]){_0x4cfacc['include']=[{'all':!![]}];}return db[_0x62b1('0x3b')][_0x62b1('0x22')](_0x4cfacc);})[_0x62b1('0x16')](function(_0x37b036){_0xbd3526[_0x62b1('0x46')]=_0x37b036;return _0xbd3526;});}})[_0x62b1('0x16')](respondWithFilteredResult(_0x21c6a6,_0x4cfacc))[_0x62b1('0x25')](handleError(_0x21c6a6,null));};exports[_0x62b1('0x47')]=function(_0x478885,_0x5d441f){return db[_0x62b1('0x1c')][_0x62b1('0x35')]({'where':{'id':_0x478885[_0x62b1('0x27')]['id']}})[_0x62b1('0x16')](handleEntityNotFound(_0x5d441f,null))[_0x62b1('0x16')](function(_0x40ab1b){if(_0x40ab1b){return _0x40ab1b[_0x62b1('0x48')](_0x478885[_0x62b1('0x33')][_0x62b1('0x38')],_[_0x62b1('0x39')](_0x478885['body'],['ids','id'])||{})['spread'](function(){return db[_0x62b1('0x49')][_0x62b1('0x22')]({'attributes':['id',_0x62b1('0x19'),_0x62b1('0x4a')],'where':{'id':_0x478885[_0x62b1('0x33')][_0x62b1('0x38')]}});})[_0x62b1('0x16')](function(_0x5b3e9c){socket[_0x62b1('0x4b')](_0x62b1('0x4c'),{'id':Number(_0x478885[_0x62b1('0x27')]['id']),'tags':_0x5b3e9c||[]});return{'id':Number(_0x478885['params']['id']),'tags':_0x5b3e9c||[]};});}})[_0x62b1('0x16')](respondWithResult(_0x5d441f,null))['catch'](handleError(_0x5d441f,null));};exports[_0x62b1('0x4d')]=function(_0x647a7c,_0x17e91d){return db[_0x62b1('0x1c')][_0x62b1('0x35')]({'where':{'id':_0x647a7c[_0x62b1('0x27')]['id']}})[_0x62b1('0x16')](handleEntityNotFound(_0x17e91d,null))['then'](function(_0x54bf93){if(_0x54bf93){return _0x54bf93[_0x62b1('0x4d')](_0x647a7c['query']['ids']);}})['then'](respondWithStatusCode(_0x17e91d,null))[_0x62b1('0x25')](handleError(_0x17e91d,null));};exports[_0x62b1('0x4e')]=function(_0x68dcc8,_0x30645f){var _0x133dda=moment()[_0x62b1('0x4f')]()[_0x62b1('0x50')]();var _0x5623bb=path[_0x62b1('0x51')](config[_0x62b1('0x52')],_0x62b1('0x53'),_0x62b1('0x54'),'tmp');var _0x3ea239=path[_0x62b1('0x51')](config[_0x62b1('0x52')],_0x62b1('0x53'),_0x62b1('0x54'),_0x62b1('0x55'));var _0x2841cd=path[_0x62b1('0x51')](_0x5623bb,_0x133dda);var _0x261ed5=util[_0x62b1('0x56')](_0x62b1('0x57'),_0x68dcc8['params']['id'],_0x133dda);var _0x12e3b1=path['join'](_0x5623bb,_0x261ed5);var _0x9d21db=[];_0x9d21db[_0x62b1('0x58')]({'model':db['Attachment'],'as':_0x62b1('0x59'),'raw':!![]});var _0x50fa85=[{'model':db[_0x62b1('0x3b')],'as':_0x62b1('0x5a'),'attributes':['id','body',_0x62b1('0x5b')],'include':_0x9d21db}];return db[_0x62b1('0x1c')]['find']({'where':{'id':_0x68dcc8[_0x62b1('0x27')]['id']},'include':_0x50fa85})[_0x62b1('0x16')](handleEntityNotFound(_0x30645f,null))[_0x62b1('0x16')](function(_0x2034a2){if(_0x2034a2&&_0x2034a2[_0x62b1('0x5a')]){var _0x36da08=_0x2034a2[_0x62b1('0x5c')]({'plain':!![]});fs['mkdirSync'](_0x2841cd);for(var _0x4785ed=0x0;_0x4785ed<_0x36da08[_0x62b1('0x5a')][_0x62b1('0x2e')];_0x4785ed++){var _0x1e7a46=_0x36da08[_0x62b1('0x5a')][_0x4785ed][_0x62b1('0x59')];if(_0x1e7a46){var _0x4ed9ed=path['join'](_0x3ea239,_0x1e7a46[_0x62b1('0x5d')]);if(fs['existsSync'](_0x4ed9ed)){fs[_0x62b1('0x5e')](_0x4ed9ed)[_0x62b1('0x5f')](fs[_0x62b1('0x60')](path[_0x62b1('0x51')](_0x2841cd,_0x1e7a46[_0x62b1('0x5d')])));}}}return BPromise[_0x62b1('0x61')]()[_0x62b1('0x16')](function(){return new BPromise(function(_0x139050,_0x4c9e77){zipdir(_0x2841cd,{'saveTo':_0x12e3b1},function(_0x2f5895,_0x31cae8){if(_0x2f5895)return _0x4c9e77(_0x2f5895);return _0x139050(_0x31cae8);});})['then'](function(){return new BPromise(function(_0x5add03,_0x87a469){rimraf(_0x2841cd,function(_0x27e383){if(_0x27e383)_0x87a469(_0x27e383);return _0x5add03();});});})[_0x62b1('0x16')](function(){return _0x30645f[_0x62b1('0x4e')](_0x12e3b1,_0x261ed5,function(_0xe257fb){if(_0xe257fb){console[_0x62b1('0x62')](_0x62b1('0x63'),_0xe257fb);}else{fs[_0x62b1('0x64')](_0x12e3b1);}});});});}else{return _0x30645f[_0x62b1('0xd')](0xc8);}})[_0x62b1('0x25')](handleError(_0x30645f,null));};