Built motion from commit 3c2ce842.|2.6.31
[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 _0x92bd=['addTags','setTags','spread','Tag','color','emit','faxInteractionTags:save','removeTags','download','toString','join','root','files','tmp','server','attachments','Attachment','Messages','createdAt','get','mkdirSync','existsSync','createReadStream','pipe','basename','resolve','log','err','unlinkSync','zip-dir','moment','bluebird','path','lodash','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','socket.io-emitter','register','end','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','sendStatus','error','stack','name','index','map','FaxInteraction','rawAttributes','fieldName','type','key','getOptions','fax','user','then','catch','show','params','keys','query','filters','intersection','model','attributes','fields','includeAll','merge','find','create','body','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','length','hasOwnProperty','nolimit','sort','pick','where','FaxInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','options','include','findAll'];(function(_0x503357,_0x1920f3){var _0x48ba12=function(_0x17b04b){while(--_0x17b04b){_0x503357['push'](_0x503357['shift']());}};_0x48ba12(++_0x1920f3);}(_0x92bd,0x86));var _0xd92b=function(_0x5dcc1b,_0x25729b){_0x5dcc1b=_0x5dcc1b-0x0;var _0x46560d=_0x92bd[_0x5dcc1b];return _0x46560d;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xd92b('0x0'));var moment=require(_0xd92b('0x1'));var BPromise=require(_0xd92b('0x2'));var util=require('util');var path=require(_0xd92b('0x3'));var fs=require('fs');var _=require(_0xd92b('0x4'));var Redis=require('ioredis');var interaction=require(_0xd92b('0x5'));var qs=require(_0xd92b('0x6'));var logger=require(_0xd92b('0x7'))(_0xd92b('0x8'));var config=require(_0xd92b('0x9'));var db=require('../../mysqldb')['db'];config[_0xd92b('0xa')]=_[_0xd92b('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xd92b('0xc'))(new Redis(config[_0xd92b('0xa')]));require('./faxInteraction.socket')[_0xd92b('0xd')](socket);function respondWithStatusCode(_0x8e5636,_0x529260){_0x529260=_0x529260||0xcc;return function(_0x33e54d){if(_0x33e54d){return _0x8e5636['sendStatus'](_0x529260);}return _0x8e5636['status'](_0x529260)[_0xd92b('0xe')]();};}function respondWithResult(_0x30af72,_0x318b86){_0x318b86=_0x318b86||0xc8;return function(_0x3da4a2){if(_0x3da4a2){return _0x30af72[_0xd92b('0xf')](_0x318b86)[_0xd92b('0x10')](_0x3da4a2);}};}function respondWithFilteredResult(_0x53e408,_0x259b88){return function(_0x1940c2){if(_0x1940c2){var _0x3d61c9=typeof _0x259b88[_0xd92b('0x11')]===_0xd92b('0x12')&&typeof _0x259b88[_0xd92b('0x13')]===_0xd92b('0x12');var _0x37b9a9=_0x1940c2[_0xd92b('0x14')];var _0x26e832=_0x3d61c9?0x0:_0x259b88[_0xd92b('0x11')];var _0x509cd0=_0x3d61c9?_0x1940c2[_0xd92b('0x14')]:_0x259b88['offset']+_0x259b88[_0xd92b('0x13')];var _0x216f03;if(_0x509cd0>=_0x37b9a9){_0x509cd0=_0x37b9a9;_0x216f03=0xc8;}else{_0x216f03=0xce;}_0x53e408[_0xd92b('0xf')](_0x216f03);return _0x53e408[_0xd92b('0x15')](_0xd92b('0x16'),_0x26e832+'-'+_0x509cd0+'/'+_0x37b9a9)[_0xd92b('0x10')](_0x1940c2);}return null;};}function saveUpdates(_0x304ed1){return function(_0x5589b4){if(_0x5589b4){return _0x5589b4[_0xd92b('0x17')](_0x304ed1)['then'](function(_0x413fd0){return _0x413fd0;});}return null;};}function removeEntity(_0x407284){return function(_0x85c86c){if(_0x85c86c){return _0x85c86c[_0xd92b('0x18')]()['then'](function(){_0x407284['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e9606){return function(_0x3f34bd){if(!_0x3f34bd){_0x2e9606[_0xd92b('0x19')](0x194);}return _0x3f34bd;};}function handleError(_0x2fbed2,_0x5b243f){_0x5b243f=_0x5b243f||0x1f4;return function(_0x4eeaf4){logger[_0xd92b('0x1a')](_0x4eeaf4[_0xd92b('0x1b')]);if(_0x4eeaf4[_0xd92b('0x1c')]){delete _0x4eeaf4[_0xd92b('0x1c')];}_0x2fbed2['status'](_0x5b243f)['send'](_0x4eeaf4);};}exports[_0xd92b('0x1d')]=function(_0x148b60,_0x582493){var _0x1d202b={};var _0x1fefa9=_[_0xd92b('0x1e')](db[_0xd92b('0x1f')][_0xd92b('0x20')],function(_0x311cac){return{'name':_0x311cac[_0xd92b('0x21')],'type':_0x311cac[_0xd92b('0x22')][_0xd92b('0x23')]};});_0x1d202b=qs[_0xd92b('0x24')](_0x1fefa9,_0x148b60);return interaction['findAll'](_0xd92b('0x25'),_0x148b60['query'],_0x148b60[_0xd92b('0x26')],_0x1d202b,_0x1fefa9)[_0xd92b('0x27')](respondWithFilteredResult(_0x582493,_0x1d202b))[_0xd92b('0x28')](handleError(_0x582493,null));};exports[_0xd92b('0x29')]=function(_0x239e78,_0x50bd89){var _0x28d5e3={'raw':![],'where':{'id':_0x239e78[_0xd92b('0x2a')]['id']}},_0x12e857={};_0x12e857['model']=_[_0xd92b('0x2b')](db['FaxInteraction']['rawAttributes']);_0x12e857['query']=_[_0xd92b('0x2b')](_0x239e78[_0xd92b('0x2c')]);_0x12e857[_0xd92b('0x2d')]=_[_0xd92b('0x2e')](_0x12e857[_0xd92b('0x2f')],_0x12e857[_0xd92b('0x2c')]);_0x28d5e3[_0xd92b('0x30')]=_[_0xd92b('0x2e')](_0x12e857[_0xd92b('0x2f')],qs[_0xd92b('0x31')](_0x239e78[_0xd92b('0x2c')][_0xd92b('0x31')]));_0x28d5e3[_0xd92b('0x30')]=_0x28d5e3[_0xd92b('0x30')]['length']?_0x28d5e3[_0xd92b('0x30')]:_0x12e857[_0xd92b('0x2f')];if(_0x239e78['query'][_0xd92b('0x32')]){_0x28d5e3['include']=[{'all':!![]}];}_0x28d5e3=_[_0xd92b('0x33')]({},_0x28d5e3,_0x239e78['options']);return db['FaxInteraction'][_0xd92b('0x34')](_0x28d5e3)['then'](handleEntityNotFound(_0x50bd89,null))[_0xd92b('0x27')](respondWithResult(_0x50bd89,null))[_0xd92b('0x28')](handleError(_0x50bd89,null));};exports[_0xd92b('0x35')]=function(_0x3b8fa1,_0x24bb12){return db[_0xd92b('0x1f')][_0xd92b('0x35')](_0x3b8fa1[_0xd92b('0x36')],{})[_0xd92b('0x27')](respondWithResult(_0x24bb12,0xc9))['catch'](handleError(_0x24bb12,null));};exports['update']=function(_0x165429,_0x3713c9){if(_0x165429[_0xd92b('0x36')]['id']){delete _0x165429[_0xd92b('0x36')]['id'];}return db[_0xd92b('0x1f')]['find']({'where':{'id':_0x165429['params']['id']}})['then'](handleEntityNotFound(_0x3713c9,null))[_0xd92b('0x27')](saveUpdates(_0x165429[_0xd92b('0x36')],null))['then'](respondWithResult(_0x3713c9,null))['catch'](handleError(_0x3713c9,null));};exports['destroy']=function(_0x26e4fb,_0x398064){return db[_0xd92b('0x1f')]['find']({'where':{'id':_0x26e4fb['params']['id']}})[_0xd92b('0x27')](handleEntityNotFound(_0x398064,null))[_0xd92b('0x27')](removeEntity(_0x398064,null))['catch'](handleError(_0x398064,null));};exports[_0xd92b('0x37')]=function(_0x34025d,_0x5574c4){return db[_0xd92b('0x1f')]['describe']()[_0xd92b('0x27')](respondWithResult(_0x5574c4,null))[_0xd92b('0x28')](handleError(_0x5574c4,null));};exports[_0xd92b('0x38')]=function(_0x1de0b0,_0x522863){return db[_0xd92b('0x39')]['find']({'where':{'id':_0x1de0b0[_0xd92b('0x2a')]['id']}})[_0xd92b('0x27')](handleEntityNotFound(_0x522863,null))[_0xd92b('0x27')](function(_0xf998c0){if(_0xf998c0){return _0xf998c0[_0xd92b('0x38')](_0x1de0b0[_0xd92b('0x36')][_0xd92b('0x3a')],_[_0xd92b('0x3b')](_0x1de0b0[_0xd92b('0x36')],[_0xd92b('0x3a'),'id'])||{});}})[_0xd92b('0x27')](respondWithResult(_0x522863,null))[_0xd92b('0x28')](handleError(_0x522863,null));};exports[_0xd92b('0x3c')]=function(_0x56f10b,_0x3764fa){var _0x46d9e7={'raw':![],'where':{}};var _0x32efcf={};var _0x30cd6e={'count':0x0,'rows':[]};return db['FaxInteraction'][_0xd92b('0x3d')]({'where':{'id':_0x56f10b[_0xd92b('0x2a')]['id']}})[_0xd92b('0x27')](handleEntityNotFound(_0x3764fa,null))[_0xd92b('0x27')](function(_0x6bfe49){if(_0x6bfe49){_0x32efcf[_0xd92b('0x2f')]=_[_0xd92b('0x2b')](db[_0xd92b('0x39')]['rawAttributes']);_0x32efcf[_0xd92b('0x2c')]=_[_0xd92b('0x2b')](_0x56f10b[_0xd92b('0x2c')]);_0x32efcf[_0xd92b('0x2d')]=_[_0xd92b('0x2e')](_0x32efcf[_0xd92b('0x2f')],_0x32efcf[_0xd92b('0x2c')]);_0x46d9e7['attributes']=_['intersection'](_0x32efcf['model'],qs[_0xd92b('0x31')](_0x56f10b[_0xd92b('0x2c')][_0xd92b('0x31')]));_0x46d9e7[_0xd92b('0x30')]=_0x46d9e7['attributes'][_0xd92b('0x3e')]?_0x46d9e7[_0xd92b('0x30')]:_0x32efcf[_0xd92b('0x2f')];if(!_0x56f10b[_0xd92b('0x2c')][_0xd92b('0x3f')](_0xd92b('0x40'))){_0x46d9e7[_0xd92b('0x13')]=qs[_0xd92b('0x13')](_0x56f10b[_0xd92b('0x2c')][_0xd92b('0x13')]);_0x46d9e7['offset']=qs[_0xd92b('0x11')](_0x56f10b['query'][_0xd92b('0x11')]);}_0x46d9e7['order']=qs[_0xd92b('0x41')](_0x56f10b['query'][_0xd92b('0x41')]);_0x46d9e7['where']=qs[_0xd92b('0x2d')](_[_0xd92b('0x42')](_0x56f10b[_0xd92b('0x2c')],_0x32efcf[_0xd92b('0x2d')]));_0x46d9e7[_0xd92b('0x43')][_0xd92b('0x44')]=_0x6bfe49['id'];if(_0x56f10b[_0xd92b('0x2c')][_0xd92b('0x45')]){_0x46d9e7[_0xd92b('0x43')]=_[_0xd92b('0x33')](_0x46d9e7[_0xd92b('0x43')],{'$or':_[_0xd92b('0x1e')](_0x46d9e7['attributes'],function(_0x4b0a9c){var _0x252f62={};_0x252f62[_0x4b0a9c]={'$like':'%'+_0x56f10b['query'][_0xd92b('0x45')]+'%'};return _0x252f62;})});}if(_0x56f10b['query'][_0xd92b('0x46')]){var _0x30a501=_0x56f10b[_0xd92b('0x2c')]['$gte']['split'](',');var _0x4f9302={};_0x4f9302[_0x30a501[0x0]]={'$gte':moment(_0x30a501[0x1])[_0xd92b('0x47')](_0xd92b('0x48'))};_0x46d9e7[_0xd92b('0x43')]=_['merge'](_0x46d9e7['where'],_0x4f9302);}_0x46d9e7=_['merge']({},_0x46d9e7,_0x56f10b[_0xd92b('0x49')]);return db[_0xd92b('0x39')][_0xd92b('0x14')]({'where':_0x46d9e7[_0xd92b('0x43')]})[_0xd92b('0x27')](function(_0x45746c){_0x30cd6e[_0xd92b('0x14')]=_0x45746c;if(_0x56f10b[_0xd92b('0x2c')][_0xd92b('0x32')]){_0x46d9e7[_0xd92b('0x4a')]=[{'all':!![]}];}return db[_0xd92b('0x39')][_0xd92b('0x4b')](_0x46d9e7);})['then'](function(_0x4ca8d9){_0x30cd6e['rows']=_0x4ca8d9;return _0x30cd6e;});}})['then'](respondWithFilteredResult(_0x3764fa,_0x46d9e7))[_0xd92b('0x28')](handleError(_0x3764fa,null));};exports[_0xd92b('0x4c')]=function(_0x2dc54a,_0x213fb8){return db['FaxInteraction'][_0xd92b('0x34')]({'where':{'id':_0x2dc54a['params']['id']}})[_0xd92b('0x27')](handleEntityNotFound(_0x213fb8,null))[_0xd92b('0x27')](function(_0x1a4df0){if(_0x1a4df0){return _0x1a4df0[_0xd92b('0x4d')](_0x2dc54a[_0xd92b('0x36')][_0xd92b('0x3a')],_[_0xd92b('0x3b')](_0x2dc54a[_0xd92b('0x36')],[_0xd92b('0x3a'),'id'])||{})[_0xd92b('0x4e')](function(){return db[_0xd92b('0x4f')][_0xd92b('0x4b')]({'attributes':['id',_0xd92b('0x1c'),_0xd92b('0x50')],'where':{'id':_0x2dc54a[_0xd92b('0x36')][_0xd92b('0x3a')]}});})['then'](function(_0x406997){socket[_0xd92b('0x51')](_0xd92b('0x52'),{'id':Number(_0x2dc54a['params']['id']),'tags':_0x406997||[]});return{'id':Number(_0x2dc54a[_0xd92b('0x2a')]['id']),'tags':_0x406997||[]};});}})[_0xd92b('0x27')](respondWithResult(_0x213fb8,null))[_0xd92b('0x28')](handleError(_0x213fb8,null));};exports[_0xd92b('0x53')]=function(_0x10338b,_0x1c2fe1){return db['FaxInteraction'][_0xd92b('0x34')]({'where':{'id':_0x10338b['params']['id']}})[_0xd92b('0x27')](handleEntityNotFound(_0x1c2fe1,null))['then'](function(_0x950ba1){if(_0x950ba1){return _0x950ba1[_0xd92b('0x53')](_0x10338b['query']['ids']);}})[_0xd92b('0x27')](respondWithStatusCode(_0x1c2fe1,null))[_0xd92b('0x28')](handleError(_0x1c2fe1,null));};exports[_0xd92b('0x54')]=function(_0x2d4172,_0x4979cb){var _0x47ff94=moment()['unix']()[_0xd92b('0x55')]();var _0x3ee985=path[_0xd92b('0x56')](config[_0xd92b('0x57')],'server',_0xd92b('0x58'),_0xd92b('0x59'));var _0x27b67f=path[_0xd92b('0x56')](config[_0xd92b('0x57')],_0xd92b('0x5a'),_0xd92b('0x58'),_0xd92b('0x5b'));var _0x2d8bec=path[_0xd92b('0x56')](_0x3ee985,_0x47ff94);var _0x33b3c0=util[_0xd92b('0x47')]('transcript-%d-%s.zip',_0x2d4172['params']['id'],_0x47ff94);var _0x30f1b6=path['join'](_0x3ee985,_0x33b3c0);var _0x354350=[];_0x354350['push']({'model':db[_0xd92b('0x5c')],'as':_0xd92b('0x5c'),'raw':!![]});var _0x3b2cf2=[{'model':db[_0xd92b('0x39')],'as':_0xd92b('0x5d'),'attributes':['id',_0xd92b('0x36'),_0xd92b('0x5e')],'include':_0x354350}];return db[_0xd92b('0x1f')][_0xd92b('0x34')]({'where':{'id':_0x2d4172[_0xd92b('0x2a')]['id']},'include':_0x3b2cf2})[_0xd92b('0x27')](handleEntityNotFound(_0x4979cb,null))['then'](function(_0xbb76df){if(_0xbb76df&&_0xbb76df['Messages']){var _0x14ef61=_0xbb76df[_0xd92b('0x5f')]({'plain':!![]});fs[_0xd92b('0x60')](_0x2d8bec);for(var _0x444625=0x0;_0x444625<_0x14ef61[_0xd92b('0x5d')][_0xd92b('0x3e')];_0x444625++){var _0x280b49=_0x14ef61[_0xd92b('0x5d')][_0x444625][_0xd92b('0x5c')];if(_0x280b49){var _0x580ff8=path[_0xd92b('0x56')](_0x27b67f,_0x280b49['basename']);if(fs[_0xd92b('0x61')](_0x580ff8)){fs[_0xd92b('0x62')](_0x580ff8)[_0xd92b('0x63')](fs['createWriteStream'](path[_0xd92b('0x56')](_0x2d8bec,_0x280b49[_0xd92b('0x64')])));}}}return BPromise[_0xd92b('0x65')]()[_0xd92b('0x27')](function(){return new BPromise(function(_0x60d0d,_0x11150d){zipdir(_0x2d8bec,{'saveTo':_0x30f1b6},function(_0x4221bc,_0x234193){if(_0x4221bc)return _0x11150d(_0x4221bc);return _0x60d0d(_0x234193);});})[_0xd92b('0x27')](function(){return new BPromise(function(_0x20b0ab,_0x289357){rimraf(_0x2d8bec,function(_0x256820){if(_0x256820)_0x289357(_0x256820);return _0x20b0ab();});});})['then'](function(){return _0x4979cb['download'](_0x30f1b6,_0x33b3c0,function(_0x5c4709){if(_0x5c4709){console[_0xd92b('0x66')](_0xd92b('0x67'),_0x5c4709);}else{fs[_0xd92b('0x68')](_0x30f1b6);}});});});}else{return _0x4979cb[_0xd92b('0x19')](0xc8);}})[_0xd92b('0x28')](handleError(_0x4979cb,null));};