c13e97f8bef1b0e95c08b4407ad121d3d4cbfc47
[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 _0x6dff=['body','find','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','sort','where','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','include','rows','addTags','spread','Tag','color','faxInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','push','Attachment','Messages','get','mkdirSync','createReadStream','pipe','basename','resolve','log','unlinkSync','moment','bluebird','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','localhost','./faxInteraction.socket','register','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','getOptions','findAll','fax','query','user','catch','show','params','model','keys','FaxInteraction','filters','intersection','fields','attributes','length','includeAll','merge','options','create'];(function(_0x1867e3,_0x589b2d){var _0x4b22aa=function(_0x36a685){while(--_0x36a685){_0x1867e3['push'](_0x1867e3['shift']());}};_0x4b22aa(++_0x589b2d);}(_0x6dff,0xf7));var _0xf6df=function(_0x23bcd6,_0x3ee6eb){_0x23bcd6=_0x23bcd6-0x0;var _0x805d85=_0x6dff[_0x23bcd6];return _0x805d85;};'use strict';var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require(_0xf6df('0x0'));var BPromise=require(_0xf6df('0x1'));var util=require('util');var path=require(_0xf6df('0x2'));var fs=require('fs');var _=require(_0xf6df('0x3'));var Redis=require(_0xf6df('0x4'));var interaction=require(_0xf6df('0x5'));var qs=require(_0xf6df('0x6'));var logger=require('../../config/logger')(_0xf6df('0x7'));var config=require(_0xf6df('0x8'));var db=require(_0xf6df('0x9'))['db'];config[_0xf6df('0xa')]=_['defaults'](config['redis'],{'host':_0xf6df('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf6df('0xa')]));require(_0xf6df('0xc'))[_0xf6df('0xd')](socket);function respondWithStatusCode(_0x50e027,_0x33f686){_0x33f686=_0x33f686||0xcc;return function(_0x5ea244){if(_0x5ea244){return _0x50e027[_0xf6df('0xe')](_0x33f686);}return _0x50e027[_0xf6df('0xf')](_0x33f686)[_0xf6df('0x10')]();};}function respondWithResult(_0x35316b,_0x406edb){_0x406edb=_0x406edb||0xc8;return function(_0x9ef351){if(_0x9ef351){return _0x35316b[_0xf6df('0xf')](_0x406edb)['json'](_0x9ef351);}};}function respondWithFilteredResult(_0x4a7930,_0x2ae29b){return function(_0xd0a45d){if(_0xd0a45d){var _0xf65b=typeof _0x2ae29b[_0xf6df('0x11')]===_0xf6df('0x12')&&typeof _0x2ae29b['limit']===_0xf6df('0x12');var _0x13efb4=_0xd0a45d[_0xf6df('0x13')];var _0x17c039=_0xf65b?0x0:_0x2ae29b[_0xf6df('0x11')];var _0x4a9d43=_0xf65b?_0xd0a45d['count']:_0x2ae29b['offset']+_0x2ae29b[_0xf6df('0x14')];var _0x893b2c;if(_0x4a9d43>=_0x13efb4){_0x4a9d43=_0x13efb4;_0x893b2c=0xc8;}else{_0x893b2c=0xce;}_0x4a7930[_0xf6df('0xf')](_0x893b2c);return _0x4a7930[_0xf6df('0x15')](_0xf6df('0x16'),_0x17c039+'-'+_0x4a9d43+'/'+_0x13efb4)['json'](_0xd0a45d);}return null;};}function saveUpdates(_0xd02cf2){return function(_0x24e728){if(_0x24e728){return _0x24e728[_0xf6df('0x17')](_0xd02cf2)[_0xf6df('0x18')](function(_0x5b9566){return _0x5b9566;});}return null;};}function removeEntity(_0x808e5f){return function(_0x1fa0f2){if(_0x1fa0f2){return _0x1fa0f2[_0xf6df('0x19')]()[_0xf6df('0x18')](function(){_0x808e5f[_0xf6df('0xf')](0xcc)[_0xf6df('0x10')]();});}};}function handleEntityNotFound(_0x1f540b){return function(_0x1dc656){if(!_0x1dc656){_0x1f540b[_0xf6df('0xe')](0x194);}return _0x1dc656;};}function handleError(_0x5bc210,_0x418831){_0x418831=_0x418831||0x1f4;return function(_0x17ea06){logger[_0xf6df('0x1a')](_0x17ea06[_0xf6df('0x1b')]);if(_0x17ea06[_0xf6df('0x1c')]){delete _0x17ea06['name'];}_0x5bc210['status'](_0x418831)[_0xf6df('0x1d')](_0x17ea06);};}exports[_0xf6df('0x1e')]=function(_0x154276,_0x2d30b5){var _0x18c654={};var _0x458243=_[_0xf6df('0x1f')](db['FaxInteraction'][_0xf6df('0x20')],function(_0x4be9a0){return{'name':_0x4be9a0[_0xf6df('0x21')],'type':_0x4be9a0[_0xf6df('0x22')][_0xf6df('0x23')]};});_0x18c654=qs[_0xf6df('0x24')](_0x458243,_0x154276);return interaction[_0xf6df('0x25')](_0xf6df('0x26'),_0x154276[_0xf6df('0x27')],_0x154276[_0xf6df('0x28')],_0x18c654,_0x458243)[_0xf6df('0x18')](respondWithFilteredResult(_0x2d30b5,_0x18c654))[_0xf6df('0x29')](handleError(_0x2d30b5,null));};exports[_0xf6df('0x2a')]=function(_0x455e27,_0x404d01){var _0x12d7a1={'raw':![],'where':{'id':_0x455e27[_0xf6df('0x2b')]['id']}},_0x28bfaf={};_0x28bfaf[_0xf6df('0x2c')]=_[_0xf6df('0x2d')](db[_0xf6df('0x2e')][_0xf6df('0x20')]);_0x28bfaf['query']=_['keys'](_0x455e27[_0xf6df('0x27')]);_0x28bfaf[_0xf6df('0x2f')]=_['intersection'](_0x28bfaf[_0xf6df('0x2c')],_0x28bfaf[_0xf6df('0x27')]);_0x12d7a1['attributes']=_[_0xf6df('0x30')](_0x28bfaf[_0xf6df('0x2c')],qs[_0xf6df('0x31')](_0x455e27[_0xf6df('0x27')][_0xf6df('0x31')]));_0x12d7a1[_0xf6df('0x32')]=_0x12d7a1[_0xf6df('0x32')][_0xf6df('0x33')]?_0x12d7a1[_0xf6df('0x32')]:_0x28bfaf[_0xf6df('0x2c')];if(_0x455e27['query'][_0xf6df('0x34')]){_0x12d7a1['include']=[{'all':!![]}];}_0x12d7a1=_[_0xf6df('0x35')]({},_0x12d7a1,_0x455e27[_0xf6df('0x36')]);return db['FaxInteraction']['find'](_0x12d7a1)['then'](handleEntityNotFound(_0x404d01,null))[_0xf6df('0x18')](respondWithResult(_0x404d01,null))[_0xf6df('0x29')](handleError(_0x404d01,null));};exports[_0xf6df('0x37')]=function(_0x4730eb,_0x52a083){return db[_0xf6df('0x2e')]['create'](_0x4730eb[_0xf6df('0x38')],{})[_0xf6df('0x18')](respondWithResult(_0x52a083,0xc9))[_0xf6df('0x29')](handleError(_0x52a083,null));};exports[_0xf6df('0x17')]=function(_0x2b5182,_0x29d5f6){if(_0x2b5182[_0xf6df('0x38')]['id']){delete _0x2b5182[_0xf6df('0x38')]['id'];}return db[_0xf6df('0x2e')][_0xf6df('0x39')]({'where':{'id':_0x2b5182[_0xf6df('0x2b')]['id']}})[_0xf6df('0x18')](handleEntityNotFound(_0x29d5f6,null))[_0xf6df('0x18')](saveUpdates(_0x2b5182[_0xf6df('0x38')],null))[_0xf6df('0x18')](respondWithResult(_0x29d5f6,null))[_0xf6df('0x29')](handleError(_0x29d5f6,null));};exports['destroy']=function(_0x48d8ab,_0x464c14){return db[_0xf6df('0x2e')]['find']({'where':{'id':_0x48d8ab['params']['id']}})[_0xf6df('0x18')](handleEntityNotFound(_0x464c14,null))[_0xf6df('0x18')](removeEntity(_0x464c14,null))[_0xf6df('0x29')](handleError(_0x464c14,null));};exports[_0xf6df('0x3a')]=function(_0xb43d8b,_0x1e102d){return db[_0xf6df('0x2e')][_0xf6df('0x3a')]()[_0xf6df('0x18')](respondWithResult(_0x1e102d,null))[_0xf6df('0x29')](handleError(_0x1e102d,null));};exports[_0xf6df('0x3b')]=function(_0x1d2e4f,_0xb2387a){return db[_0xf6df('0x3c')][_0xf6df('0x39')]({'where':{'id':_0x1d2e4f[_0xf6df('0x2b')]['id']}})[_0xf6df('0x18')](handleEntityNotFound(_0xb2387a,null))[_0xf6df('0x18')](function(_0x571e6e){if(_0x571e6e){return _0x571e6e['addMessage'](_0x1d2e4f[_0xf6df('0x38')][_0xf6df('0x3d')],_[_0xf6df('0x3e')](_0x1d2e4f['body'],[_0xf6df('0x3d'),'id'])||{});}})[_0xf6df('0x18')](respondWithResult(_0xb2387a,null))['catch'](handleError(_0xb2387a,null));};exports[_0xf6df('0x3f')]=function(_0x1e72c1,_0x3c951a){var _0x375bf1={'raw':![],'where':{}};var _0x64dee1={};var _0x590327={'count':0x0,'rows':[]};return db[_0xf6df('0x2e')][_0xf6df('0x40')]({'where':{'id':_0x1e72c1[_0xf6df('0x2b')]['id']}})[_0xf6df('0x18')](handleEntityNotFound(_0x3c951a,null))[_0xf6df('0x18')](function(_0x5f20cf){if(_0x5f20cf){_0x64dee1[_0xf6df('0x2c')]=_[_0xf6df('0x2d')](db[_0xf6df('0x3c')][_0xf6df('0x20')]);_0x64dee1['query']=_[_0xf6df('0x2d')](_0x1e72c1[_0xf6df('0x27')]);_0x64dee1['filters']=_[_0xf6df('0x30')](_0x64dee1['model'],_0x64dee1['query']);_0x375bf1[_0xf6df('0x32')]=_[_0xf6df('0x30')](_0x64dee1[_0xf6df('0x2c')],qs['fields'](_0x1e72c1[_0xf6df('0x27')][_0xf6df('0x31')]));_0x375bf1[_0xf6df('0x32')]=_0x375bf1[_0xf6df('0x32')]['length']?_0x375bf1[_0xf6df('0x32')]:_0x64dee1['model'];if(!_0x1e72c1[_0xf6df('0x27')][_0xf6df('0x41')](_0xf6df('0x42'))){_0x375bf1[_0xf6df('0x14')]=qs['limit'](_0x1e72c1[_0xf6df('0x27')]['limit']);_0x375bf1[_0xf6df('0x11')]=qs[_0xf6df('0x11')](_0x1e72c1[_0xf6df('0x27')][_0xf6df('0x11')]);}_0x375bf1['order']=qs[_0xf6df('0x43')](_0x1e72c1[_0xf6df('0x27')]['sort']);_0x375bf1[_0xf6df('0x44')]=qs['filters'](_['pick'](_0x1e72c1[_0xf6df('0x27')],_0x64dee1[_0xf6df('0x2f')]));_0x375bf1['where']['FaxInteractionId']=_0x5f20cf['id'];if(_0x1e72c1['query'][_0xf6df('0x45')]){_0x375bf1['where']=_[_0xf6df('0x35')](_0x375bf1['where'],{'$or':_[_0xf6df('0x1f')](_0x375bf1[_0xf6df('0x32')],function(_0x1df84d){var _0x594f65={};_0x594f65[_0x1df84d]={'$like':'%'+_0x1e72c1[_0xf6df('0x27')][_0xf6df('0x45')]+'%'};return _0x594f65;})});}if(_0x1e72c1[_0xf6df('0x27')]['$gte']){var _0x532587=_0x1e72c1['query'][_0xf6df('0x46')]['split'](',');var _0x1f3352={};_0x1f3352[_0x532587[0x0]]={'$gte':moment(_0x532587[0x1])[_0xf6df('0x47')](_0xf6df('0x48'))};_0x375bf1['where']=_[_0xf6df('0x35')](_0x375bf1[_0xf6df('0x44')],_0x1f3352);}_0x375bf1=_['merge']({},_0x375bf1,_0x1e72c1['options']);return db[_0xf6df('0x3c')][_0xf6df('0x13')]({'where':_0x375bf1[_0xf6df('0x44')]})[_0xf6df('0x18')](function(_0x21d5c2){_0x590327['count']=_0x21d5c2;if(_0x1e72c1[_0xf6df('0x27')]['includeAll']){_0x375bf1[_0xf6df('0x49')]=[{'all':!![]}];}return db[_0xf6df('0x3c')][_0xf6df('0x25')](_0x375bf1);})[_0xf6df('0x18')](function(_0x1f996e){_0x590327[_0xf6df('0x4a')]=_0x1f996e;return _0x590327;});}})[_0xf6df('0x18')](respondWithFilteredResult(_0x3c951a,_0x375bf1))[_0xf6df('0x29')](handleError(_0x3c951a,null));};exports[_0xf6df('0x4b')]=function(_0x18145a,_0x20d785){return db[_0xf6df('0x2e')][_0xf6df('0x39')]({'where':{'id':_0x18145a[_0xf6df('0x2b')]['id']}})[_0xf6df('0x18')](handleEntityNotFound(_0x20d785,null))[_0xf6df('0x18')](function(_0xe56ffb){if(_0xe56ffb){return _0xe56ffb['setTags'](_0x18145a[_0xf6df('0x38')][_0xf6df('0x3d')],_['omit'](_0x18145a[_0xf6df('0x38')],['ids','id'])||{})[_0xf6df('0x4c')](function(){return db[_0xf6df('0x4d')][_0xf6df('0x25')]({'attributes':['id',_0xf6df('0x1c'),_0xf6df('0x4e')],'where':{'id':_0x18145a[_0xf6df('0x38')][_0xf6df('0x3d')]}});})[_0xf6df('0x18')](function(_0xf6a8f4){socket['emit'](_0xf6df('0x4f'),{'id':Number(_0x18145a[_0xf6df('0x2b')]['id']),'tags':_0xf6a8f4||[]});return{'id':Number(_0x18145a[_0xf6df('0x2b')]['id']),'tags':_0xf6a8f4||[]};});}})[_0xf6df('0x18')](respondWithResult(_0x20d785,null))[_0xf6df('0x29')](handleError(_0x20d785,null));};exports[_0xf6df('0x50')]=function(_0x7c2777,_0x1bb2cb){return db[_0xf6df('0x2e')][_0xf6df('0x39')]({'where':{'id':_0x7c2777[_0xf6df('0x2b')]['id']}})[_0xf6df('0x18')](handleEntityNotFound(_0x1bb2cb,null))[_0xf6df('0x18')](function(_0x3dbcac){if(_0x3dbcac){return _0x3dbcac[_0xf6df('0x50')](_0x7c2777[_0xf6df('0x27')][_0xf6df('0x3d')]);}})[_0xf6df('0x18')](respondWithStatusCode(_0x1bb2cb,null))['catch'](handleError(_0x1bb2cb,null));};exports[_0xf6df('0x51')]=function(_0x4351f4,_0x2844df){var _0x1f374d=moment()[_0xf6df('0x52')]()[_0xf6df('0x53')]();var _0x1e23f4=path[_0xf6df('0x54')](config[_0xf6df('0x55')],_0xf6df('0x56'),_0xf6df('0x57'),_0xf6df('0x58'));var _0xa893b4=path[_0xf6df('0x54')](config[_0xf6df('0x55')],_0xf6df('0x56'),_0xf6df('0x57'),_0xf6df('0x59'));var _0xe30bc3=path[_0xf6df('0x54')](_0x1e23f4,_0x1f374d);var _0x4c77db=util[_0xf6df('0x47')]('transcript-%d-%s.zip',_0x4351f4['params']['id'],_0x1f374d);var _0x36c233=path['join'](_0x1e23f4,_0x4c77db);var _0x1882c=[];_0x1882c[_0xf6df('0x5a')]({'model':db[_0xf6df('0x5b')],'as':'Attachment','raw':!![]});var _0xf1325f=[{'model':db[_0xf6df('0x3c')],'as':_0xf6df('0x5c'),'attributes':['id',_0xf6df('0x38'),'createdAt'],'include':_0x1882c}];return db[_0xf6df('0x2e')]['find']({'where':{'id':_0x4351f4['params']['id']},'include':_0xf1325f})[_0xf6df('0x18')](handleEntityNotFound(_0x2844df,null))[_0xf6df('0x18')](function(_0x2d10e2){if(_0x2d10e2&&_0x2d10e2[_0xf6df('0x5c')]){var _0x504e23=_0x2d10e2[_0xf6df('0x5d')]({'plain':!![]});fs[_0xf6df('0x5e')](_0xe30bc3);for(var _0x15d142=0x0;_0x15d142<_0x504e23[_0xf6df('0x5c')][_0xf6df('0x33')];_0x15d142++){var _0x2efc70=_0x504e23[_0xf6df('0x5c')][_0x15d142][_0xf6df('0x5b')];if(_0x2efc70){var _0x205845=path['join'](_0xa893b4,_0x2efc70['basename']);if(fs['existsSync'](_0x205845)){fs[_0xf6df('0x5f')](_0x205845)[_0xf6df('0x60')](fs['createWriteStream'](path[_0xf6df('0x54')](_0xe30bc3,_0x2efc70[_0xf6df('0x61')])));}}}return BPromise[_0xf6df('0x62')]()['then'](function(){return new BPromise(function(_0x3e1234,_0x578bf4){zipdir(_0xe30bc3,{'saveTo':_0x36c233},function(_0x344672,_0x74223b){if(_0x344672)return _0x578bf4(_0x344672);return _0x3e1234(_0x74223b);});})[_0xf6df('0x18')](function(){return new BPromise(function(_0xa58851,_0x4e0526){rimraf(_0xe30bc3,function(_0x4429ad){if(_0x4429ad)_0x4e0526(_0x4429ad);return _0xa58851();});});})[_0xf6df('0x18')](function(){return _0x2844df[_0xf6df('0x51')](_0x36c233,_0x4c77db,function(_0x9b5e27){if(_0x9b5e27){console[_0xf6df('0x63')]('err',_0x9b5e27);}else{fs[_0xf6df('0x64')](_0x36c233);}});});});}else{return _0x2844df[_0xf6df('0xe')](0xc8);}})[_0xf6df('0x29')](handleError(_0x2844df,null));};