59edc1ca5481755d5f5d84722650a02d47bafe62
[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 _0x5101=['omit','length','hasOwnProperty','nolimit','order','sort','where','pick','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','include','rows','setTags','spread','Tag','color','faxInteractionTags:save','removeTags','download','toString','root','server','files','tmp','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','mkdirSync','join','basename','existsSync','pipe','createWriteStream','resolve','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','offset','undefined','limit','count','set','json','update','then','destroy','error','stack','name','send','index','map','fieldName','type','key','getOptions','findAll','fax','user','catch','show','params','model','keys','FaxInteraction','rawAttributes','query','filters','intersection','attributes','fields','includeAll','merge','options','find','create','body','describe','FaxMessage','addMessage','ids'];(function(_0x9f9816,_0x579b0e){var _0x40a913=function(_0x5340c4){while(--_0x5340c4){_0x9f9816['push'](_0x9f9816['shift']());}};_0x40a913(++_0x579b0e);}(_0x5101,0x95));var _0x1510=function(_0x3a7e2f,_0xa39c7f){_0x3a7e2f=_0x3a7e2f-0x0;var _0x5efe01=_0x5101[_0x3a7e2f];return _0x5efe01;};'use strict';var rimraf=require(_0x1510('0x0'));var zipdir=require(_0x1510('0x1'));var moment=require(_0x1510('0x2'));var BPromise=require(_0x1510('0x3'));var util=require(_0x1510('0x4'));var path=require(_0x1510('0x5'));var fs=require('fs');var _=require(_0x1510('0x6'));var Redis=require('ioredis');var interaction=require('../../components/interaction/service');var qs=require(_0x1510('0x7'));var logger=require(_0x1510('0x8'))(_0x1510('0x9'));var config=require(_0x1510('0xa'));var db=require('../../mysqldb')['db'];config[_0x1510('0xb')]=_[_0x1510('0xc')](config[_0x1510('0xb')],{'host':_0x1510('0xd'),'port':0x18eb});var socket=require(_0x1510('0xe'))(new Redis(config[_0x1510('0xb')]));require(_0x1510('0xf'))[_0x1510('0x10')](socket);function respondWithStatusCode(_0x2aff74,_0x2aaa69){_0x2aaa69=_0x2aaa69||0xcc;return function(_0x2fcb52){if(_0x2fcb52){return _0x2aff74[_0x1510('0x11')](_0x2aaa69);}return _0x2aff74[_0x1510('0x12')](_0x2aaa69)['end']();};}function respondWithResult(_0x47f354,_0x462748){_0x462748=_0x462748||0xc8;return function(_0x2c5dbb){if(_0x2c5dbb){return _0x47f354[_0x1510('0x12')](_0x462748)['json'](_0x2c5dbb);}};}function respondWithFilteredResult(_0x384ba4,_0x395bfa){return function(_0x28e64a){if(_0x28e64a){var _0x30f270=typeof _0x395bfa[_0x1510('0x13')]===_0x1510('0x14')&&typeof _0x395bfa[_0x1510('0x15')]===_0x1510('0x14');var _0x3d78e0=_0x28e64a[_0x1510('0x16')];var _0xedf0e7=_0x30f270?0x0:_0x395bfa[_0x1510('0x13')];var _0x4b1500=_0x30f270?_0x28e64a[_0x1510('0x16')]:_0x395bfa[_0x1510('0x13')]+_0x395bfa[_0x1510('0x15')];var _0x367bcf;if(_0x4b1500>=_0x3d78e0){_0x4b1500=_0x3d78e0;_0x367bcf=0xc8;}else{_0x367bcf=0xce;}_0x384ba4[_0x1510('0x12')](_0x367bcf);return _0x384ba4[_0x1510('0x17')]('Content-Range',_0xedf0e7+'-'+_0x4b1500+'/'+_0x3d78e0)[_0x1510('0x18')](_0x28e64a);}return null;};}function saveUpdates(_0x1cf85a){return function(_0x5dd16c){if(_0x5dd16c){return _0x5dd16c[_0x1510('0x19')](_0x1cf85a)[_0x1510('0x1a')](function(_0xa47ce5){return _0xa47ce5;});}return null;};}function removeEntity(_0x530322){return function(_0x103c47){if(_0x103c47){return _0x103c47[_0x1510('0x1b')]()[_0x1510('0x1a')](function(){_0x530322[_0x1510('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3dd88d){return function(_0x5b619f){if(!_0x5b619f){_0x3dd88d['sendStatus'](0x194);}return _0x5b619f;};}function handleError(_0x5d129f,_0x29c2a8){_0x29c2a8=_0x29c2a8||0x1f4;return function(_0x5826e2){logger[_0x1510('0x1c')](_0x5826e2[_0x1510('0x1d')]);if(_0x5826e2[_0x1510('0x1e')]){delete _0x5826e2['name'];}_0x5d129f[_0x1510('0x12')](_0x29c2a8)[_0x1510('0x1f')](_0x5826e2);};}exports[_0x1510('0x20')]=function(_0x2747c1,_0x258185){var _0x3d0fc9={};var _0x2ae3b4=_[_0x1510('0x21')](db['FaxInteraction']['rawAttributes'],function(_0x1b63cb){return{'name':_0x1b63cb[_0x1510('0x22')],'type':_0x1b63cb[_0x1510('0x23')][_0x1510('0x24')]};});_0x3d0fc9=qs[_0x1510('0x25')](_0x2ae3b4,_0x2747c1);return interaction[_0x1510('0x26')](_0x1510('0x27'),_0x2747c1['query'],_0x2747c1[_0x1510('0x28')],_0x3d0fc9,_0x2ae3b4)['then'](respondWithFilteredResult(_0x258185,_0x3d0fc9))[_0x1510('0x29')](handleError(_0x258185,null));};exports[_0x1510('0x2a')]=function(_0x3b196b,_0x195a80){var _0x487181={'raw':![],'where':{'id':_0x3b196b[_0x1510('0x2b')]['id']}},_0x6b3f9b={};_0x6b3f9b[_0x1510('0x2c')]=_[_0x1510('0x2d')](db[_0x1510('0x2e')][_0x1510('0x2f')]);_0x6b3f9b[_0x1510('0x30')]=_[_0x1510('0x2d')](_0x3b196b[_0x1510('0x30')]);_0x6b3f9b[_0x1510('0x31')]=_[_0x1510('0x32')](_0x6b3f9b[_0x1510('0x2c')],_0x6b3f9b['query']);_0x487181[_0x1510('0x33')]=_[_0x1510('0x32')](_0x6b3f9b[_0x1510('0x2c')],qs['fields'](_0x3b196b['query'][_0x1510('0x34')]));_0x487181['attributes']=_0x487181['attributes']['length']?_0x487181[_0x1510('0x33')]:_0x6b3f9b[_0x1510('0x2c')];if(_0x3b196b[_0x1510('0x30')][_0x1510('0x35')]){_0x487181['include']=[{'all':!![]}];}_0x487181=_[_0x1510('0x36')]({},_0x487181,_0x3b196b[_0x1510('0x37')]);return db[_0x1510('0x2e')][_0x1510('0x38')](_0x487181)['then'](handleEntityNotFound(_0x195a80,null))['then'](respondWithResult(_0x195a80,null))['catch'](handleError(_0x195a80,null));};exports[_0x1510('0x39')]=function(_0x3f13c5,_0x42d807){return db[_0x1510('0x2e')][_0x1510('0x39')](_0x3f13c5[_0x1510('0x3a')],{})[_0x1510('0x1a')](respondWithResult(_0x42d807,0xc9))[_0x1510('0x29')](handleError(_0x42d807,null));};exports[_0x1510('0x19')]=function(_0x108fb6,_0x5eba10){if(_0x108fb6['body']['id']){delete _0x108fb6[_0x1510('0x3a')]['id'];}return db[_0x1510('0x2e')]['find']({'where':{'id':_0x108fb6[_0x1510('0x2b')]['id']}})[_0x1510('0x1a')](handleEntityNotFound(_0x5eba10,null))[_0x1510('0x1a')](saveUpdates(_0x108fb6[_0x1510('0x3a')],null))[_0x1510('0x1a')](respondWithResult(_0x5eba10,null))[_0x1510('0x29')](handleError(_0x5eba10,null));};exports[_0x1510('0x1b')]=function(_0x260404,_0x10ab3c){return db['FaxInteraction'][_0x1510('0x38')]({'where':{'id':_0x260404[_0x1510('0x2b')]['id']}})[_0x1510('0x1a')](handleEntityNotFound(_0x10ab3c,null))['then'](removeEntity(_0x10ab3c,null))[_0x1510('0x29')](handleError(_0x10ab3c,null));};exports[_0x1510('0x3b')]=function(_0x2c87e9,_0x4b0dc4){return db[_0x1510('0x2e')][_0x1510('0x3b')]()[_0x1510('0x1a')](respondWithResult(_0x4b0dc4,null))[_0x1510('0x29')](handleError(_0x4b0dc4,null));};exports['addMessage']=function(_0x292c05,_0x5d36fc){return db[_0x1510('0x3c')]['find']({'where':{'id':_0x292c05[_0x1510('0x2b')]['id']}})['then'](handleEntityNotFound(_0x5d36fc,null))[_0x1510('0x1a')](function(_0x5ce212){if(_0x5ce212){return _0x5ce212[_0x1510('0x3d')](_0x292c05['body'][_0x1510('0x3e')],_[_0x1510('0x3f')](_0x292c05[_0x1510('0x3a')],[_0x1510('0x3e'),'id'])||{});}})[_0x1510('0x1a')](respondWithResult(_0x5d36fc,null))[_0x1510('0x29')](handleError(_0x5d36fc,null));};exports['getMessages']=function(_0x1a3e6c,_0x1c8d9f){var _0x1f8805={'raw':![],'where':{}};var _0x3b59b3={};var _0x2b54fc={'count':0x0,'rows':[]};return db[_0x1510('0x2e')]['findOne']({'where':{'id':_0x1a3e6c['params']['id']}})[_0x1510('0x1a')](handleEntityNotFound(_0x1c8d9f,null))[_0x1510('0x1a')](function(_0x510ccc){if(_0x510ccc){_0x3b59b3[_0x1510('0x2c')]=_['keys'](db[_0x1510('0x3c')][_0x1510('0x2f')]);_0x3b59b3['query']=_[_0x1510('0x2d')](_0x1a3e6c[_0x1510('0x30')]);_0x3b59b3[_0x1510('0x31')]=_[_0x1510('0x32')](_0x3b59b3['model'],_0x3b59b3[_0x1510('0x30')]);_0x1f8805[_0x1510('0x33')]=_['intersection'](_0x3b59b3[_0x1510('0x2c')],qs[_0x1510('0x34')](_0x1a3e6c[_0x1510('0x30')][_0x1510('0x34')]));_0x1f8805[_0x1510('0x33')]=_0x1f8805['attributes'][_0x1510('0x40')]?_0x1f8805['attributes']:_0x3b59b3[_0x1510('0x2c')];if(!_0x1a3e6c['query'][_0x1510('0x41')](_0x1510('0x42'))){_0x1f8805[_0x1510('0x15')]=qs[_0x1510('0x15')](_0x1a3e6c[_0x1510('0x30')][_0x1510('0x15')]);_0x1f8805[_0x1510('0x13')]=qs['offset'](_0x1a3e6c[_0x1510('0x30')][_0x1510('0x13')]);}_0x1f8805[_0x1510('0x43')]=qs[_0x1510('0x44')](_0x1a3e6c[_0x1510('0x30')][_0x1510('0x44')]);_0x1f8805[_0x1510('0x45')]=qs[_0x1510('0x31')](_[_0x1510('0x46')](_0x1a3e6c[_0x1510('0x30')],_0x3b59b3['filters']));_0x1f8805[_0x1510('0x45')][_0x1510('0x47')]=_0x510ccc['id'];if(_0x1a3e6c[_0x1510('0x30')][_0x1510('0x48')]){_0x1f8805['where']=_[_0x1510('0x36')](_0x1f8805[_0x1510('0x45')],{'$or':_['map'](_0x1f8805['attributes'],function(_0xbb08f3){var _0x3be1ed={};_0x3be1ed[_0xbb08f3]={'$like':'%'+_0x1a3e6c[_0x1510('0x30')][_0x1510('0x48')]+'%'};return _0x3be1ed;})});}if(_0x1a3e6c['query'][_0x1510('0x49')]){var _0x273325=_0x1a3e6c['query']['$gte'][_0x1510('0x4a')](',');var _0x21ad3b={};_0x21ad3b[_0x273325[0x0]]={'$gte':moment(_0x273325[0x1])[_0x1510('0x4b')](_0x1510('0x4c'))};_0x1f8805['where']=_['merge'](_0x1f8805[_0x1510('0x45')],_0x21ad3b);}_0x1f8805=_['merge']({},_0x1f8805,_0x1a3e6c['options']);return db[_0x1510('0x3c')]['count']({'where':_0x1f8805[_0x1510('0x45')]})[_0x1510('0x1a')](function(_0x3fadc1){_0x2b54fc[_0x1510('0x16')]=_0x3fadc1;if(_0x1a3e6c[_0x1510('0x30')][_0x1510('0x35')]){_0x1f8805[_0x1510('0x4d')]=[{'all':!![]}];}return db[_0x1510('0x3c')][_0x1510('0x26')](_0x1f8805);})[_0x1510('0x1a')](function(_0x277e00){_0x2b54fc[_0x1510('0x4e')]=_0x277e00;return _0x2b54fc;});}})[_0x1510('0x1a')](respondWithFilteredResult(_0x1c8d9f,_0x1f8805))['catch'](handleError(_0x1c8d9f,null));};exports['addTags']=function(_0x1065d6,_0x58bf77){return db[_0x1510('0x2e')][_0x1510('0x38')]({'where':{'id':_0x1065d6[_0x1510('0x2b')]['id']}})[_0x1510('0x1a')](handleEntityNotFound(_0x58bf77,null))[_0x1510('0x1a')](function(_0x16fd01){if(_0x16fd01){return _0x16fd01[_0x1510('0x4f')](_0x1065d6[_0x1510('0x3a')][_0x1510('0x3e')],_[_0x1510('0x3f')](_0x1065d6[_0x1510('0x3a')],['ids','id'])||{})[_0x1510('0x50')](function(){return db[_0x1510('0x51')][_0x1510('0x26')]({'attributes':['id',_0x1510('0x1e'),_0x1510('0x52')],'where':{'id':_0x1065d6[_0x1510('0x3a')][_0x1510('0x3e')]}});})['then'](function(_0x25bbf9){socket['emit'](_0x1510('0x53'),{'id':Number(_0x1065d6['params']['id']),'tags':_0x25bbf9||[]});return{'id':Number(_0x1065d6[_0x1510('0x2b')]['id']),'tags':_0x25bbf9||[]};});}})[_0x1510('0x1a')](respondWithResult(_0x58bf77,null))[_0x1510('0x29')](handleError(_0x58bf77,null));};exports[_0x1510('0x54')]=function(_0x546ffd,_0x32ac0d){return db[_0x1510('0x2e')][_0x1510('0x38')]({'where':{'id':_0x546ffd['params']['id']}})['then'](handleEntityNotFound(_0x32ac0d,null))['then'](function(_0xa68ed4){if(_0xa68ed4){return _0xa68ed4['removeTags'](_0x546ffd[_0x1510('0x30')][_0x1510('0x3e')]);}})[_0x1510('0x1a')](respondWithStatusCode(_0x32ac0d,null))[_0x1510('0x29')](handleError(_0x32ac0d,null));};exports[_0x1510('0x55')]=function(_0xd79ac,_0x2c830f){var _0x105f4f=moment()['unix']()[_0x1510('0x56')]();var _0x1d992e=path['join'](config[_0x1510('0x57')],_0x1510('0x58'),_0x1510('0x59'),_0x1510('0x5a'));var _0x388ec8=path['join'](config[_0x1510('0x57')],_0x1510('0x58'),_0x1510('0x59'),'attachments');var _0x1e2833=path['join'](_0x1d992e,_0x105f4f);var _0x3fba97=util[_0x1510('0x4b')](_0x1510('0x5b'),_0xd79ac['params']['id'],_0x105f4f);var _0x1f2f10=path['join'](_0x1d992e,_0x3fba97);var _0x2b2b35=[];_0x2b2b35[_0x1510('0x5c')]({'model':db[_0x1510('0x5d')],'as':_0x1510('0x5d'),'raw':!![]});var _0xb56daa=[{'model':db['FaxMessage'],'as':_0x1510('0x5e'),'attributes':['id',_0x1510('0x3a'),_0x1510('0x5f')],'include':_0x2b2b35}];return db['FaxInteraction'][_0x1510('0x38')]({'where':{'id':_0xd79ac[_0x1510('0x2b')]['id']},'include':_0xb56daa})[_0x1510('0x1a')](handleEntityNotFound(_0x2c830f,null))[_0x1510('0x1a')](function(_0x184e8e){if(_0x184e8e&&_0x184e8e[_0x1510('0x5e')]){var _0x19e9f4=_0x184e8e[_0x1510('0x60')]({'plain':!![]});fs[_0x1510('0x61')](_0x1e2833);for(var _0x6febab=0x0;_0x6febab<_0x19e9f4[_0x1510('0x5e')][_0x1510('0x40')];_0x6febab++){var _0x578dac=_0x19e9f4[_0x1510('0x5e')][_0x6febab]['Attachment'];if(_0x578dac){var _0x2d7b7d=path[_0x1510('0x62')](_0x388ec8,_0x578dac[_0x1510('0x63')]);if(fs[_0x1510('0x64')](_0x2d7b7d)){fs['createReadStream'](_0x2d7b7d)[_0x1510('0x65')](fs[_0x1510('0x66')](path[_0x1510('0x62')](_0x1e2833,_0x578dac[_0x1510('0x63')])));}}}return BPromise[_0x1510('0x67')]()[_0x1510('0x1a')](function(){return new BPromise(function(_0x19a604,_0x1eac4d){zipdir(_0x1e2833,{'saveTo':_0x1f2f10},function(_0x13b206,_0x31fcb3){if(_0x13b206)return _0x1eac4d(_0x13b206);return _0x19a604(_0x31fcb3);});})[_0x1510('0x1a')](function(){return new BPromise(function(_0x3b4852,_0x84c605){rimraf(_0x1e2833,function(_0x36b8b2){if(_0x36b8b2)_0x84c605(_0x36b8b2);return _0x3b4852();});});})['then'](function(){return _0x2c830f[_0x1510('0x55')](_0x1f2f10,_0x3fba97,function(_0x1677f3){if(_0x1677f3){console['log'](_0x1510('0x68'),_0x1677f3);}else{fs[_0x1510('0x69')](_0x1f2f10);}});});});}else{return _0x2c830f[_0x1510('0x11')](0xc8);}})[_0x1510('0x29')](handleError(_0x2c830f,null));};