d97f970e4c883c8a31905bea391878e965f5524e
[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 _0x7d8a=['rawAttributes','fieldName','type','key','getOptions','findAll','fax','query','user','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','create','body','describe','addMessage','ids','omit','findOne','hasOwnProperty','nolimit','sort','where','pick','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','rows','addTags','setTags','spread','color','emit','faxInteractionTags:save','removeTags','download','unix','join','root','files','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','existsSync','createReadStream','pipe','resolve','log','err','unlinkSync','rimraf','moment','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','stack','name','index','map','FaxInteraction'];(function(_0x2cd1fb,_0x291f55){var _0x48fd2b=function(_0x18e23e){while(--_0x18e23e){_0x2cd1fb['push'](_0x2cd1fb['shift']());}};_0x48fd2b(++_0x291f55);}(_0x7d8a,0x118));var _0xa7d8=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0x7d8a[_0x5f09c5];return _0x426ad9;};'use strict';var rimraf=require(_0xa7d8('0x0'));var zipdir=require('zip-dir');var moment=require(_0xa7d8('0x1'));var BPromise=require(_0xa7d8('0x2'));var util=require(_0xa7d8('0x3'));var path=require(_0xa7d8('0x4'));var fs=require('fs');var _=require(_0xa7d8('0x5'));var Redis=require(_0xa7d8('0x6'));var interaction=require(_0xa7d8('0x7'));var qs=require(_0xa7d8('0x8'));var logger=require('../../config/logger')(_0xa7d8('0x9'));var config=require(_0xa7d8('0xa'));var db=require(_0xa7d8('0xb'))['db'];config[_0xa7d8('0xc')]=_[_0xa7d8('0xd')](config['redis'],{'host':_0xa7d8('0xe'),'port':0x18eb});var socket=require(_0xa7d8('0xf'))(new Redis(config['redis']));require('./faxInteraction.socket')[_0xa7d8('0x10')](socket);function respondWithStatusCode(_0x317e40,_0x41eba8){_0x41eba8=_0x41eba8||0xcc;return function(_0xb05049){if(_0xb05049){return _0x317e40[_0xa7d8('0x11')](_0x41eba8);}return _0x317e40[_0xa7d8('0x12')](_0x41eba8)[_0xa7d8('0x13')]();};}function respondWithResult(_0x4b698b,_0x1229db){_0x1229db=_0x1229db||0xc8;return function(_0x42231b){if(_0x42231b){return _0x4b698b[_0xa7d8('0x12')](_0x1229db)[_0xa7d8('0x14')](_0x42231b);}};}function respondWithFilteredResult(_0x6293fa,_0x25f607){return function(_0x3bbed3){if(_0x3bbed3){var _0x39aff3=typeof _0x25f607[_0xa7d8('0x15')]===_0xa7d8('0x16')&&typeof _0x25f607[_0xa7d8('0x17')]===_0xa7d8('0x16');var _0x2fcd04=_0x3bbed3[_0xa7d8('0x18')];var _0x13a2b9=_0x39aff3?0x0:_0x25f607[_0xa7d8('0x15')];var _0x4d2ef2=_0x39aff3?_0x3bbed3[_0xa7d8('0x18')]:_0x25f607[_0xa7d8('0x15')]+_0x25f607[_0xa7d8('0x17')];var _0x4c5d82;if(_0x4d2ef2>=_0x2fcd04){_0x4d2ef2=_0x2fcd04;_0x4c5d82=0xc8;}else{_0x4c5d82=0xce;}_0x6293fa[_0xa7d8('0x12')](_0x4c5d82);return _0x6293fa[_0xa7d8('0x19')](_0xa7d8('0x1a'),_0x13a2b9+'-'+_0x4d2ef2+'/'+_0x2fcd04)['json'](_0x3bbed3);}return null;};}function saveUpdates(_0x4580fb){return function(_0x49e7d2){if(_0x49e7d2){return _0x49e7d2[_0xa7d8('0x1b')](_0x4580fb)[_0xa7d8('0x1c')](function(_0x519179){return _0x519179;});}return null;};}function removeEntity(_0x50e28f){return function(_0x16345d){if(_0x16345d){return _0x16345d[_0xa7d8('0x1d')]()[_0xa7d8('0x1c')](function(){_0x50e28f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x510710){return function(_0x2a5d82){if(!_0x2a5d82){_0x510710['sendStatus'](0x194);}return _0x2a5d82;};}function handleError(_0x8163c3,_0x5c9ea2){_0x5c9ea2=_0x5c9ea2||0x1f4;return function(_0x5d1226){logger['error'](_0x5d1226[_0xa7d8('0x1e')]);if(_0x5d1226[_0xa7d8('0x1f')]){delete _0x5d1226[_0xa7d8('0x1f')];}_0x8163c3['status'](_0x5c9ea2)['send'](_0x5d1226);};}exports[_0xa7d8('0x20')]=function(_0x889035,_0x596e84){var _0x3d2031={};var _0x3b5c80=_[_0xa7d8('0x21')](db[_0xa7d8('0x22')][_0xa7d8('0x23')],function(_0x1d27d4){return{'name':_0x1d27d4[_0xa7d8('0x24')],'type':_0x1d27d4[_0xa7d8('0x25')][_0xa7d8('0x26')]};});_0x3d2031=qs[_0xa7d8('0x27')](_0x3b5c80,_0x889035);return interaction[_0xa7d8('0x28')](_0xa7d8('0x29'),_0x889035[_0xa7d8('0x2a')],_0x889035[_0xa7d8('0x2b')],_0x3d2031,_0x3b5c80)[_0xa7d8('0x1c')](respondWithFilteredResult(_0x596e84,_0x3d2031))['catch'](handleError(_0x596e84,null));};exports[_0xa7d8('0x2c')]=function(_0x17c431,_0xd730d5){var _0x2386c8={'raw':![],'where':{'id':_0x17c431[_0xa7d8('0x2d')]['id']}},_0x42926f={};_0x42926f[_0xa7d8('0x2e')]=_[_0xa7d8('0x2f')](db[_0xa7d8('0x22')][_0xa7d8('0x23')]);_0x42926f['query']=_[_0xa7d8('0x2f')](_0x17c431[_0xa7d8('0x2a')]);_0x42926f[_0xa7d8('0x30')]=_[_0xa7d8('0x31')](_0x42926f[_0xa7d8('0x2e')],_0x42926f['query']);_0x2386c8[_0xa7d8('0x32')]=_['intersection'](_0x42926f[_0xa7d8('0x2e')],qs[_0xa7d8('0x33')](_0x17c431['query'][_0xa7d8('0x33')]));_0x2386c8[_0xa7d8('0x32')]=_0x2386c8[_0xa7d8('0x32')][_0xa7d8('0x34')]?_0x2386c8['attributes']:_0x42926f['model'];if(_0x17c431['query'][_0xa7d8('0x35')]){_0x2386c8[_0xa7d8('0x36')]=[{'all':!![]}];}_0x2386c8=_[_0xa7d8('0x37')]({},_0x2386c8,_0x17c431[_0xa7d8('0x38')]);return db['FaxInteraction'][_0xa7d8('0x39')](_0x2386c8)[_0xa7d8('0x1c')](handleEntityNotFound(_0xd730d5,null))[_0xa7d8('0x1c')](respondWithResult(_0xd730d5,null))[_0xa7d8('0x3a')](handleError(_0xd730d5,null));};exports[_0xa7d8('0x3b')]=function(_0x467b84,_0x5c7544){return db[_0xa7d8('0x22')][_0xa7d8('0x3b')](_0x467b84[_0xa7d8('0x3c')],{})['then'](respondWithResult(_0x5c7544,0xc9))[_0xa7d8('0x3a')](handleError(_0x5c7544,null));};exports[_0xa7d8('0x1b')]=function(_0x4b9b8c,_0x572884){if(_0x4b9b8c[_0xa7d8('0x3c')]['id']){delete _0x4b9b8c[_0xa7d8('0x3c')]['id'];}return db[_0xa7d8('0x22')][_0xa7d8('0x39')]({'where':{'id':_0x4b9b8c[_0xa7d8('0x2d')]['id']}})[_0xa7d8('0x1c')](handleEntityNotFound(_0x572884,null))[_0xa7d8('0x1c')](saveUpdates(_0x4b9b8c[_0xa7d8('0x3c')],null))[_0xa7d8('0x1c')](respondWithResult(_0x572884,null))[_0xa7d8('0x3a')](handleError(_0x572884,null));};exports[_0xa7d8('0x1d')]=function(_0x27b2a9,_0x3d5056){return db[_0xa7d8('0x22')][_0xa7d8('0x39')]({'where':{'id':_0x27b2a9[_0xa7d8('0x2d')]['id']}})[_0xa7d8('0x1c')](handleEntityNotFound(_0x3d5056,null))['then'](removeEntity(_0x3d5056,null))['catch'](handleError(_0x3d5056,null));};exports['describe']=function(_0x1f9b01,_0x4ffaf9){return db[_0xa7d8('0x22')][_0xa7d8('0x3d')]()[_0xa7d8('0x1c')](respondWithResult(_0x4ffaf9,null))[_0xa7d8('0x3a')](handleError(_0x4ffaf9,null));};exports[_0xa7d8('0x3e')]=function(_0x4a8943,_0x21bc56){return db['FaxMessage'][_0xa7d8('0x39')]({'where':{'id':_0x4a8943[_0xa7d8('0x2d')]['id']}})[_0xa7d8('0x1c')](handleEntityNotFound(_0x21bc56,null))[_0xa7d8('0x1c')](function(_0xf9e0ae){if(_0xf9e0ae){return _0xf9e0ae[_0xa7d8('0x3e')](_0x4a8943[_0xa7d8('0x3c')][_0xa7d8('0x3f')],_[_0xa7d8('0x40')](_0x4a8943[_0xa7d8('0x3c')],[_0xa7d8('0x3f'),'id'])||{});}})['then'](respondWithResult(_0x21bc56,null))[_0xa7d8('0x3a')](handleError(_0x21bc56,null));};exports['getMessages']=function(_0x5cbe07,_0x1456fd){var _0x4fad63={'raw':![],'where':{}};var _0x499805={};var _0x4babb2={'count':0x0,'rows':[]};return db[_0xa7d8('0x22')][_0xa7d8('0x41')]({'where':{'id':_0x5cbe07[_0xa7d8('0x2d')]['id']}})[_0xa7d8('0x1c')](handleEntityNotFound(_0x1456fd,null))[_0xa7d8('0x1c')](function(_0xeec39){if(_0xeec39){_0x499805[_0xa7d8('0x2e')]=_[_0xa7d8('0x2f')](db['FaxMessage'][_0xa7d8('0x23')]);_0x499805[_0xa7d8('0x2a')]=_[_0xa7d8('0x2f')](_0x5cbe07[_0xa7d8('0x2a')]);_0x499805[_0xa7d8('0x30')]=_['intersection'](_0x499805[_0xa7d8('0x2e')],_0x499805[_0xa7d8('0x2a')]);_0x4fad63[_0xa7d8('0x32')]=_[_0xa7d8('0x31')](_0x499805['model'],qs[_0xa7d8('0x33')](_0x5cbe07['query']['fields']));_0x4fad63[_0xa7d8('0x32')]=_0x4fad63[_0xa7d8('0x32')][_0xa7d8('0x34')]?_0x4fad63['attributes']:_0x499805[_0xa7d8('0x2e')];if(!_0x5cbe07[_0xa7d8('0x2a')][_0xa7d8('0x42')](_0xa7d8('0x43'))){_0x4fad63[_0xa7d8('0x17')]=qs[_0xa7d8('0x17')](_0x5cbe07[_0xa7d8('0x2a')][_0xa7d8('0x17')]);_0x4fad63[_0xa7d8('0x15')]=qs[_0xa7d8('0x15')](_0x5cbe07[_0xa7d8('0x2a')][_0xa7d8('0x15')]);}_0x4fad63['order']=qs['sort'](_0x5cbe07['query'][_0xa7d8('0x44')]);_0x4fad63[_0xa7d8('0x45')]=qs[_0xa7d8('0x30')](_[_0xa7d8('0x46')](_0x5cbe07[_0xa7d8('0x2a')],_0x499805[_0xa7d8('0x30')]));_0x4fad63[_0xa7d8('0x45')][_0xa7d8('0x47')]=_0xeec39['id'];if(_0x5cbe07['query'][_0xa7d8('0x48')]){_0x4fad63['where']=_[_0xa7d8('0x37')](_0x4fad63[_0xa7d8('0x45')],{'$or':_[_0xa7d8('0x21')](_0x4fad63[_0xa7d8('0x32')],function(_0x206620){var _0x1d8ea5={};_0x1d8ea5[_0x206620]={'$like':'%'+_0x5cbe07['query'][_0xa7d8('0x48')]+'%'};return _0x1d8ea5;})});}if(_0x5cbe07['query'][_0xa7d8('0x49')]){var _0x3b9e5b=_0x5cbe07[_0xa7d8('0x2a')][_0xa7d8('0x49')][_0xa7d8('0x4a')](',');var _0x7cb4c0={};_0x7cb4c0[_0x3b9e5b[0x0]]={'$gte':moment(_0x3b9e5b[0x1])[_0xa7d8('0x4b')](_0xa7d8('0x4c'))};_0x4fad63[_0xa7d8('0x45')]=_['merge'](_0x4fad63[_0xa7d8('0x45')],_0x7cb4c0);}_0x4fad63=_['merge']({},_0x4fad63,_0x5cbe07['options']);return db['FaxMessage'][_0xa7d8('0x18')]({'where':_0x4fad63[_0xa7d8('0x45')]})[_0xa7d8('0x1c')](function(_0x5d5905){_0x4babb2[_0xa7d8('0x18')]=_0x5d5905;if(_0x5cbe07[_0xa7d8('0x2a')][_0xa7d8('0x35')]){_0x4fad63[_0xa7d8('0x36')]=[{'all':!![]}];}return db[_0xa7d8('0x4d')]['findAll'](_0x4fad63);})[_0xa7d8('0x1c')](function(_0x4e9c8e){_0x4babb2[_0xa7d8('0x4e')]=_0x4e9c8e;return _0x4babb2;});}})[_0xa7d8('0x1c')](respondWithFilteredResult(_0x1456fd,_0x4fad63))[_0xa7d8('0x3a')](handleError(_0x1456fd,null));};exports[_0xa7d8('0x4f')]=function(_0x4b19df,_0x426df7){return db[_0xa7d8('0x22')][_0xa7d8('0x39')]({'where':{'id':_0x4b19df[_0xa7d8('0x2d')]['id']}})[_0xa7d8('0x1c')](handleEntityNotFound(_0x426df7,null))[_0xa7d8('0x1c')](function(_0x26afc9){if(_0x26afc9){return _0x26afc9[_0xa7d8('0x50')](_0x4b19df['body'][_0xa7d8('0x3f')],_[_0xa7d8('0x40')](_0x4b19df[_0xa7d8('0x3c')],[_0xa7d8('0x3f'),'id'])||{})[_0xa7d8('0x51')](function(){return db['Tag'][_0xa7d8('0x28')]({'attributes':['id',_0xa7d8('0x1f'),_0xa7d8('0x52')],'where':{'id':_0x4b19df[_0xa7d8('0x3c')][_0xa7d8('0x3f')]}});})[_0xa7d8('0x1c')](function(_0x3bae94){socket[_0xa7d8('0x53')](_0xa7d8('0x54'),{'id':Number(_0x4b19df[_0xa7d8('0x2d')]['id']),'tags':_0x3bae94||[]});return{'id':Number(_0x4b19df[_0xa7d8('0x2d')]['id']),'tags':_0x3bae94||[]};});}})[_0xa7d8('0x1c')](respondWithResult(_0x426df7,null))[_0xa7d8('0x3a')](handleError(_0x426df7,null));};exports[_0xa7d8('0x55')]=function(_0x484f67,_0x360e1f){return db['FaxInteraction'][_0xa7d8('0x39')]({'where':{'id':_0x484f67[_0xa7d8('0x2d')]['id']}})['then'](handleEntityNotFound(_0x360e1f,null))[_0xa7d8('0x1c')](function(_0x256e10){if(_0x256e10){return _0x256e10[_0xa7d8('0x55')](_0x484f67[_0xa7d8('0x2a')][_0xa7d8('0x3f')]);}})[_0xa7d8('0x1c')](respondWithStatusCode(_0x360e1f,null))[_0xa7d8('0x3a')](handleError(_0x360e1f,null));};exports[_0xa7d8('0x56')]=function(_0xbf0eb6,_0x57bb46){var _0x3ba621=moment()[_0xa7d8('0x57')]()['toString']();var _0x17a813=path[_0xa7d8('0x58')](config[_0xa7d8('0x59')],'server',_0xa7d8('0x5a'),'tmp');var _0x4d3226=path[_0xa7d8('0x58')](config['root'],'server',_0xa7d8('0x5a'),_0xa7d8('0x5b'));var _0x61ccbc=path['join'](_0x17a813,_0x3ba621);var _0x5334ef=util['format'](_0xa7d8('0x5c'),_0xbf0eb6[_0xa7d8('0x2d')]['id'],_0x3ba621);var _0x449070=path['join'](_0x17a813,_0x5334ef);var _0x1d418e=[];_0x1d418e['push']({'model':db[_0xa7d8('0x5d')],'as':_0xa7d8('0x5d'),'raw':!![]});var _0x234acf=[{'model':db[_0xa7d8('0x4d')],'as':_0xa7d8('0x5e'),'attributes':['id',_0xa7d8('0x3c'),'createdAt'],'include':_0x1d418e}];return db[_0xa7d8('0x22')][_0xa7d8('0x39')]({'where':{'id':_0xbf0eb6[_0xa7d8('0x2d')]['id']},'include':_0x234acf})[_0xa7d8('0x1c')](handleEntityNotFound(_0x57bb46,null))[_0xa7d8('0x1c')](function(_0x10c86c){if(_0x10c86c&&_0x10c86c[_0xa7d8('0x5e')]){var _0x35cf8d=_0x10c86c[_0xa7d8('0x5f')]({'plain':!![]});fs[_0xa7d8('0x60')](_0x61ccbc);for(var _0x265161=0x0;_0x265161<_0x35cf8d[_0xa7d8('0x5e')]['length'];_0x265161++){var _0xf8d387=_0x35cf8d['Messages'][_0x265161]['Attachment'];if(_0xf8d387){var _0x580d23=path['join'](_0x4d3226,_0xf8d387[_0xa7d8('0x61')]);if(fs[_0xa7d8('0x62')](_0x580d23)){fs[_0xa7d8('0x63')](_0x580d23)[_0xa7d8('0x64')](fs['createWriteStream'](path[_0xa7d8('0x58')](_0x61ccbc,_0xf8d387[_0xa7d8('0x61')])));}}}return BPromise[_0xa7d8('0x65')]()['then'](function(){return new BPromise(function(_0x38c70d,_0x4cd180){zipdir(_0x61ccbc,{'saveTo':_0x449070},function(_0x15bff3,_0x539b05){if(_0x15bff3)return _0x4cd180(_0x15bff3);return _0x38c70d(_0x539b05);});})['then'](function(){return new BPromise(function(_0xa3511,_0x1f3780){rimraf(_0x61ccbc,function(_0x4d6cce){if(_0x4d6cce)_0x1f3780(_0x4d6cce);return _0xa3511();});});})[_0xa7d8('0x1c')](function(){return _0x57bb46[_0xa7d8('0x56')](_0x449070,_0x5334ef,function(_0x23f968){if(_0x23f968){console[_0xa7d8('0x66')](_0xa7d8('0x67'),_0x23f968);}else{fs[_0xa7d8('0x68')](_0x449070);}});});});}else{return _0x57bb46[_0xa7d8('0x11')](0xc8);}})[_0xa7d8('0x3a')](handleError(_0x57bb46,null));};