cc758d54a4e4a335649cf61600cfbdcba22dcc6b
[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 _0xbe91=['Attachment','Messages','createdAt','get','mkdirSync','basename','existsSync','createReadStream','createWriteStream','resolve','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','lodash','ioredis','../../components/parsers/qs','../../config/environment','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','update','then','end','error','name','index','map','FaxInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','fax','query','user','catch','show','params','keys','filters','intersection','model','fields','attributes','length','include','options','find','create','body','destroy','describe','addMessage','omit','getMessages','findOne','FaxMessage','hasOwnProperty','nolimit','sort','pick','where','filter','merge','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','setTags','ids','spread','emit','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','transcript-%d-%s.zip','push'];(function(_0x303c30,_0x16edcb){var _0x43161b=function(_0x3330ff){while(--_0x3330ff){_0x303c30['push'](_0x303c30['shift']());}};_0x43161b(++_0x16edcb);}(_0xbe91,0x1a4));var _0x1be9=function(_0x3f761d,_0x5d907d){_0x3f761d=_0x3f761d-0x0;var _0x49d6e3=_0xbe91[_0x3f761d];return _0x49d6e3;};'use strict';var rimraf=require(_0x1be9('0x0'));var zipdir=require(_0x1be9('0x1'));var moment=require(_0x1be9('0x2'));var BPromise=require(_0x1be9('0x3'));var util=require(_0x1be9('0x4'));var path=require(_0x1be9('0x5'));var fs=require('fs');var _=require(_0x1be9('0x6'));var Redis=require(_0x1be9('0x7'));var interaction=require('../../components/interaction/service');var qs=require(_0x1be9('0x8'));var logger=require('../../config/logger')('api');var config=require(_0x1be9('0x9'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x1be9('0xa')],{'host':_0x1be9('0xb'),'port':0x18eb});var socket=require(_0x1be9('0xc'))(new Redis(config[_0x1be9('0xa')]));require(_0x1be9('0xd'))[_0x1be9('0xe')](socket);function respondWithStatusCode(_0x300146,_0x5679e0){_0x5679e0=_0x5679e0||0xcc;return function(_0x51ea57){if(_0x51ea57){return _0x300146[_0x1be9('0xf')](_0x5679e0);}return _0x300146[_0x1be9('0x10')](_0x5679e0)['end']();};}function respondWithResult(_0x4d64a9,_0x27cc3c){_0x27cc3c=_0x27cc3c||0xc8;return function(_0x5a0528){if(_0x5a0528){return _0x4d64a9['status'](_0x27cc3c)[_0x1be9('0x11')](_0x5a0528);}};}function respondWithFilteredResult(_0x34339b,_0x40cbb5){return function(_0x415e03){if(_0x415e03){var _0x1021d9=typeof _0x40cbb5['offset']==='undefined'&&typeof _0x40cbb5[_0x1be9('0x12')]===_0x1be9('0x13');var _0x7223b0=_0x415e03[_0x1be9('0x14')];var _0xbc1902=_0x1021d9?0x0:_0x40cbb5[_0x1be9('0x15')];var _0x5a4dd4=_0x1021d9?_0x415e03['count']:_0x40cbb5[_0x1be9('0x15')]+_0x40cbb5[_0x1be9('0x12')];var _0x563ff2;if(_0x5a4dd4>=_0x7223b0){_0x5a4dd4=_0x7223b0;_0x563ff2=0xc8;}else{_0x563ff2=0xce;}_0x34339b[_0x1be9('0x10')](_0x563ff2);return _0x34339b[_0x1be9('0x16')](_0x1be9('0x17'),_0xbc1902+'-'+_0x5a4dd4+'/'+_0x7223b0)[_0x1be9('0x11')](_0x415e03);}return null;};}function saveUpdates(_0x5af92c){return function(_0xfe1b03){if(_0xfe1b03){return _0xfe1b03[_0x1be9('0x18')](_0x5af92c)[_0x1be9('0x19')](function(_0x1fde2b){return _0x1fde2b;});}return null;};}function removeEntity(_0x1af8b8){return function(_0xa56a1){if(_0xa56a1){return _0xa56a1['destroy']()[_0x1be9('0x19')](function(){_0x1af8b8['status'](0xcc)[_0x1be9('0x1a')]();});}};}function handleEntityNotFound(_0xbd2190){return function(_0x35c17b){if(!_0x35c17b){_0xbd2190[_0x1be9('0xf')](0x194);}return _0x35c17b;};}function handleError(_0x69d670,_0x36d404){_0x36d404=_0x36d404||0x1f4;return function(_0x4c0c6b){logger[_0x1be9('0x1b')](_0x4c0c6b['stack']);if(_0x4c0c6b[_0x1be9('0x1c')]){delete _0x4c0c6b[_0x1be9('0x1c')];}_0x69d670['status'](_0x36d404)['send'](_0x4c0c6b);};}exports[_0x1be9('0x1d')]=function(_0x13a5b0,_0x4a852e){var _0x289a94={};var _0x3fa30d=_[_0x1be9('0x1e')](db[_0x1be9('0x1f')][_0x1be9('0x20')],function(_0x1a0e86){return{'name':_0x1a0e86[_0x1be9('0x21')],'type':_0x1a0e86[_0x1be9('0x22')][_0x1be9('0x23')]};});_0x289a94=qs[_0x1be9('0x24')](_0x3fa30d,_0x13a5b0);return interaction[_0x1be9('0x25')](_0x1be9('0x26'),_0x13a5b0[_0x1be9('0x27')],_0x13a5b0[_0x1be9('0x28')],_0x289a94,_0x3fa30d)[_0x1be9('0x19')](respondWithFilteredResult(_0x4a852e,_0x289a94))[_0x1be9('0x29')](handleError(_0x4a852e,null));};exports[_0x1be9('0x2a')]=function(_0x27279e,_0x30740b){var _0x59564a={'raw':![],'where':{'id':_0x27279e[_0x1be9('0x2b')]['id']}},_0x14589d={};_0x14589d['model']=_[_0x1be9('0x2c')](db['FaxInteraction']['rawAttributes']);_0x14589d[_0x1be9('0x27')]=_[_0x1be9('0x2c')](_0x27279e[_0x1be9('0x27')]);_0x14589d[_0x1be9('0x2d')]=_[_0x1be9('0x2e')](_0x14589d[_0x1be9('0x2f')],_0x14589d[_0x1be9('0x27')]);_0x59564a['attributes']=_['intersection'](_0x14589d['model'],qs[_0x1be9('0x30')](_0x27279e[_0x1be9('0x27')][_0x1be9('0x30')]));_0x59564a[_0x1be9('0x31')]=_0x59564a[_0x1be9('0x31')][_0x1be9('0x32')]?_0x59564a[_0x1be9('0x31')]:_0x14589d['model'];if(_0x27279e[_0x1be9('0x27')]['includeAll']){_0x59564a[_0x1be9('0x33')]=[{'all':!![]}];}_0x59564a=_['merge']({},_0x59564a,_0x27279e[_0x1be9('0x34')]);return db[_0x1be9('0x1f')][_0x1be9('0x35')](_0x59564a)[_0x1be9('0x19')](handleEntityNotFound(_0x30740b,null))['then'](respondWithResult(_0x30740b,null))[_0x1be9('0x29')](handleError(_0x30740b,null));};exports[_0x1be9('0x36')]=function(_0xc7a459,_0x220fe5){return db[_0x1be9('0x1f')][_0x1be9('0x36')](_0xc7a459[_0x1be9('0x37')],{})[_0x1be9('0x19')](respondWithResult(_0x220fe5,0xc9))['catch'](handleError(_0x220fe5,null));};exports['update']=function(_0x123827,_0x3d735a){if(_0x123827[_0x1be9('0x37')]['id']){delete _0x123827[_0x1be9('0x37')]['id'];}return db[_0x1be9('0x1f')][_0x1be9('0x35')]({'where':{'id':_0x123827[_0x1be9('0x2b')]['id']}})[_0x1be9('0x19')](handleEntityNotFound(_0x3d735a,null))[_0x1be9('0x19')](saveUpdates(_0x123827[_0x1be9('0x37')],null))[_0x1be9('0x19')](respondWithResult(_0x3d735a,null))[_0x1be9('0x29')](handleError(_0x3d735a,null));};exports[_0x1be9('0x38')]=function(_0x417d5a,_0x46e65f){return db[_0x1be9('0x1f')][_0x1be9('0x35')]({'where':{'id':_0x417d5a[_0x1be9('0x2b')]['id']}})[_0x1be9('0x19')](handleEntityNotFound(_0x46e65f,null))[_0x1be9('0x19')](removeEntity(_0x46e65f,null))[_0x1be9('0x29')](handleError(_0x46e65f,null));};exports[_0x1be9('0x39')]=function(_0x6d5775,_0x164087){return db[_0x1be9('0x1f')][_0x1be9('0x39')]()[_0x1be9('0x19')](respondWithResult(_0x164087,null))[_0x1be9('0x29')](handleError(_0x164087,null));};exports[_0x1be9('0x3a')]=function(_0x3ada6f,_0x5787aa){return db['FaxMessage'][_0x1be9('0x35')]({'where':{'id':_0x3ada6f[_0x1be9('0x2b')]['id']}})['then'](handleEntityNotFound(_0x5787aa,null))[_0x1be9('0x19')](function(_0x134026){if(_0x134026){return _0x134026[_0x1be9('0x3a')](_0x3ada6f[_0x1be9('0x37')]['ids'],_[_0x1be9('0x3b')](_0x3ada6f[_0x1be9('0x37')],['ids','id'])||{});}})['then'](respondWithResult(_0x5787aa,null))[_0x1be9('0x29')](handleError(_0x5787aa,null));};exports[_0x1be9('0x3c')]=function(_0x282170,_0x15c145){var _0x46dbed={'raw':![],'where':{}};var _0x45471f={};var _0x10001e={'count':0x0,'rows':[]};return db[_0x1be9('0x1f')][_0x1be9('0x3d')]({'where':{'id':_0x282170[_0x1be9('0x2b')]['id']}})[_0x1be9('0x19')](handleEntityNotFound(_0x15c145,null))['then'](function(_0x27ede5){if(_0x27ede5){_0x45471f[_0x1be9('0x2f')]=_[_0x1be9('0x2c')](db[_0x1be9('0x3e')][_0x1be9('0x20')]);_0x45471f[_0x1be9('0x27')]=_[_0x1be9('0x2c')](_0x282170[_0x1be9('0x27')]);_0x45471f['filters']=_[_0x1be9('0x2e')](_0x45471f['model'],_0x45471f[_0x1be9('0x27')]);_0x46dbed[_0x1be9('0x31')]=_[_0x1be9('0x2e')](_0x45471f['model'],qs[_0x1be9('0x30')](_0x282170['query']['fields']));_0x46dbed[_0x1be9('0x31')]=_0x46dbed['attributes'][_0x1be9('0x32')]?_0x46dbed['attributes']:_0x45471f['model'];if(!_0x282170[_0x1be9('0x27')][_0x1be9('0x3f')](_0x1be9('0x40'))){_0x46dbed[_0x1be9('0x12')]=qs['limit'](_0x282170[_0x1be9('0x27')][_0x1be9('0x12')]);_0x46dbed['offset']=qs[_0x1be9('0x15')](_0x282170['query'][_0x1be9('0x15')]);}_0x46dbed['order']=qs['sort'](_0x282170[_0x1be9('0x27')][_0x1be9('0x41')]);_0x46dbed['where']=qs[_0x1be9('0x2d')](_[_0x1be9('0x42')](_0x282170['query'],_0x45471f[_0x1be9('0x2d')]));_0x46dbed[_0x1be9('0x43')]['FaxInteractionId']=_0x27ede5['id'];if(_0x282170[_0x1be9('0x27')][_0x1be9('0x44')]){_0x46dbed[_0x1be9('0x43')]=_[_0x1be9('0x45')](_0x46dbed[_0x1be9('0x43')],{'$or':_['map'](_0x46dbed[_0x1be9('0x31')],function(_0xb0cf4f){var _0x121907={};_0x121907[_0xb0cf4f]={'$like':'%'+_0x282170['query'][_0x1be9('0x44')]+'%'};return _0x121907;})});}if(_0x282170[_0x1be9('0x27')][_0x1be9('0x46')]){var _0x348742=_0x282170[_0x1be9('0x27')][_0x1be9('0x46')][_0x1be9('0x47')](',');var _0x4b0bf1={};_0x4b0bf1[_0x348742[0x0]]={'$gte':moment(_0x348742[0x1])[_0x1be9('0x48')](_0x1be9('0x49'))};_0x46dbed['where']=_[_0x1be9('0x45')](_0x46dbed['where'],_0x4b0bf1);}_0x46dbed=_['merge']({},_0x46dbed,_0x282170[_0x1be9('0x34')]);return db[_0x1be9('0x3e')][_0x1be9('0x14')]({'where':_0x46dbed[_0x1be9('0x43')]})['then'](function(_0x9d2c3d){_0x10001e[_0x1be9('0x14')]=_0x9d2c3d;if(_0x282170[_0x1be9('0x27')]['includeAll']){_0x46dbed[_0x1be9('0x33')]=[{'all':!![]}];}return db[_0x1be9('0x3e')]['findAll'](_0x46dbed);})[_0x1be9('0x19')](function(_0x30fe68){_0x10001e[_0x1be9('0x4a')]=_0x30fe68;return _0x10001e;});}})[_0x1be9('0x19')](respondWithFilteredResult(_0x15c145,_0x46dbed))[_0x1be9('0x29')](handleError(_0x15c145,null));};exports['addTags']=function(_0x1b3037,_0x54f060){return db[_0x1be9('0x1f')][_0x1be9('0x35')]({'where':{'id':_0x1b3037[_0x1be9('0x2b')]['id']}})[_0x1be9('0x19')](handleEntityNotFound(_0x54f060,null))[_0x1be9('0x19')](function(_0x5b457a){if(_0x5b457a){return _0x5b457a[_0x1be9('0x4b')](_0x1b3037[_0x1be9('0x37')][_0x1be9('0x4c')],_[_0x1be9('0x3b')](_0x1b3037[_0x1be9('0x37')],[_0x1be9('0x4c'),'id'])||{})[_0x1be9('0x4d')](function(){return db['Tag']['findAll']({'attributes':['id',_0x1be9('0x1c'),'color'],'where':{'id':_0x1b3037[_0x1be9('0x37')]['ids']}});})[_0x1be9('0x19')](function(_0x2ceafe){socket[_0x1be9('0x4e')](_0x1be9('0x4f'),{'id':Number(_0x1b3037['params']['id']),'tags':_0x2ceafe||[]});return{'id':Number(_0x1b3037[_0x1be9('0x2b')]['id']),'tags':_0x2ceafe||[]};});}})[_0x1be9('0x19')](respondWithResult(_0x54f060,null))['catch'](handleError(_0x54f060,null));};exports[_0x1be9('0x50')]=function(_0x56fd83,_0x4e61c5){return db[_0x1be9('0x1f')][_0x1be9('0x35')]({'where':{'id':_0x56fd83['params']['id']}})[_0x1be9('0x19')](handleEntityNotFound(_0x4e61c5,null))[_0x1be9('0x19')](function(_0x27d0b9){if(_0x27d0b9){return _0x27d0b9[_0x1be9('0x50')](_0x56fd83[_0x1be9('0x27')][_0x1be9('0x4c')]);}})['then'](respondWithStatusCode(_0x4e61c5,null))[_0x1be9('0x29')](handleError(_0x4e61c5,null));};exports[_0x1be9('0x51')]=function(_0x356158,_0xe31a11){var _0x391be1=moment()[_0x1be9('0x52')]()['toString']();var _0x524e61=path[_0x1be9('0x53')](config[_0x1be9('0x54')],_0x1be9('0x55'),_0x1be9('0x56'),_0x1be9('0x57'));var _0x2b814a=path[_0x1be9('0x53')](config[_0x1be9('0x54')],_0x1be9('0x55'),'files','attachments');var _0x5a5b4c=path[_0x1be9('0x53')](_0x524e61,_0x391be1);var _0x2391de=util['format'](_0x1be9('0x58'),_0x356158[_0x1be9('0x2b')]['id'],_0x391be1);var _0x4a570d=path['join'](_0x524e61,_0x2391de);var _0x19dbc1=[];_0x19dbc1[_0x1be9('0x59')]({'model':db['Attachment'],'as':_0x1be9('0x5a'),'raw':!![]});var _0x5641b1=[{'model':db['FaxMessage'],'as':_0x1be9('0x5b'),'attributes':['id',_0x1be9('0x37'),_0x1be9('0x5c')],'include':_0x19dbc1}];return db[_0x1be9('0x1f')][_0x1be9('0x35')]({'where':{'id':_0x356158[_0x1be9('0x2b')]['id']},'include':_0x5641b1})[_0x1be9('0x19')](handleEntityNotFound(_0xe31a11,null))[_0x1be9('0x19')](function(_0x2098d6){if(_0x2098d6&&_0x2098d6[_0x1be9('0x5b')]){var _0x37c42d=_0x2098d6[_0x1be9('0x5d')]({'plain':!![]});fs[_0x1be9('0x5e')](_0x5a5b4c);for(var _0x5d711e=0x0;_0x5d711e<_0x37c42d['Messages'][_0x1be9('0x32')];_0x5d711e++){var _0x39a91a=_0x37c42d[_0x1be9('0x5b')][_0x5d711e][_0x1be9('0x5a')];if(_0x39a91a){var _0x5aa20d=path['join'](_0x2b814a,_0x39a91a[_0x1be9('0x5f')]);if(fs[_0x1be9('0x60')](_0x5aa20d)){fs[_0x1be9('0x61')](_0x5aa20d)['pipe'](fs[_0x1be9('0x62')](path[_0x1be9('0x53')](_0x5a5b4c,_0x39a91a[_0x1be9('0x5f')])));}}}return BPromise[_0x1be9('0x63')]()[_0x1be9('0x19')](function(){return new BPromise(function(_0x53fa60,_0x4bf329){zipdir(_0x5a5b4c,{'saveTo':_0x4a570d},function(_0x4265b7,_0x134014){if(_0x4265b7)return _0x4bf329(_0x4265b7);return _0x53fa60(_0x134014);});})['then'](function(){return new BPromise(function(_0x3cb8dc,_0x3603dc){rimraf(_0x5a5b4c,function(_0x2bcd3a){if(_0x2bcd3a)_0x3603dc(_0x2bcd3a);return _0x3cb8dc();});});})['then'](function(){return _0xe31a11[_0x1be9('0x51')](_0x4a570d,_0x2391de,function(_0xbd3d2c){if(_0xbd3d2c){console['log'](_0x1be9('0x64'),_0xbd3d2c);}else{fs[_0x1be9('0x65')](_0x4a570d);}});});});}else{return _0xe31a11[_0x1be9('0xf')](0xc8);}})['catch'](handleError(_0xe31a11,null));};