Built motion from commit 0900f080.|2.5.45
[motion2.git] / server / api / analyticExtractedReport / analyticExtractedReport.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 _0x40b3=['fieldName','type','key','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','VIRTUAL','includeAll','include','findAll','rows','show','params','model','merge','options','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','error','body','basename','savename','output','join','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','root','format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','stack','name','index','map','AnalyticExtractedReport','rawAttributes'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x40b3,0x1d7));var _0x340b=function(_0x5c4e16,_0x113035){_0x5c4e16=_0x5c4e16-0x0;var _0x36044a=_0x40b3[_0x5c4e16];return _0x36044a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x340b('0x0'));var jsonpatch=require(_0x340b('0x1'));var rp=require('request-promise');var moment=require(_0x340b('0x2'));var BPromise=require(_0x340b('0x3'));var Mustache=require(_0x340b('0x4'));var util=require(_0x340b('0x5'));var path=require('path');var sox=require(_0x340b('0x6'));var csv=require(_0x340b('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x340b('0x8'));var _=require(_0x340b('0x9'));var squel=require(_0x340b('0xa'));var crypto=require(_0x340b('0xb'));var jsforce=require(_0x340b('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x340b('0x7'));var querystring=require('querystring');var Papa=require(_0x340b('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x340b('0xe'));var utils=require(_0x340b('0xf'));var config=require(_0x340b('0x10'));var licenseUtil=require(_0x340b('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3234ec,_0x21030b){_0x21030b=_0x21030b||0xcc;return function(_0x3eac70){if(_0x3eac70){return _0x3234ec[_0x340b('0x12')](_0x21030b);}return _0x3234ec[_0x340b('0x13')](_0x21030b)['end']();};}function respondWithResult(_0x4f7bdc,_0x12096c){_0x12096c=_0x12096c||0xc8;return function(_0x5b6da2){if(_0x5b6da2){return _0x4f7bdc[_0x340b('0x13')](_0x12096c)[_0x340b('0x14')](_0x5b6da2);}};}function respondWithFilteredResult(_0x1788e9,_0x2f199a){return function(_0x1baaf0){if(_0x1baaf0){var _0x4b5646=typeof _0x2f199a[_0x340b('0x15')]==='undefined'&&typeof _0x2f199a['limit']===_0x340b('0x16');var _0x1670b8=_0x1baaf0[_0x340b('0x17')];var _0xc2884c=_0x4b5646?0x0:_0x2f199a[_0x340b('0x15')];var _0xdfcbc2=_0x4b5646?_0x1baaf0[_0x340b('0x17')]:_0x2f199a[_0x340b('0x15')]+_0x2f199a['limit'];var _0x4d7731;if(_0xdfcbc2>=_0x1670b8){_0xdfcbc2=_0x1670b8;_0x4d7731=0xc8;}else{_0x4d7731=0xce;}_0x1788e9[_0x340b('0x13')](_0x4d7731);return _0x1788e9[_0x340b('0x18')]('Content-Range',_0xc2884c+'-'+_0xdfcbc2+'/'+_0x1670b8)['json'](_0x1baaf0);}return null;};}function patchUpdates(_0x219f5b){return function(_0x56fb7e){try{jsonpatch['apply'](_0x56fb7e,_0x219f5b,!![]);}catch(_0x3e64d7){return BPromise[_0x340b('0x19')](_0x3e64d7);}return _0x56fb7e[_0x340b('0x1a')]();};}function saveUpdates(_0x36e58d,_0x54d3a2){return function(_0x4813c9){if(_0x4813c9){return _0x4813c9[_0x340b('0x1b')](_0x36e58d)[_0x340b('0x1c')](function(_0x29aca4){return _0x29aca4;});}return null;};}function removeEntity(_0x2d363e,_0x5cecb4){return function(_0x4763e4){if(_0x4763e4){return _0x4763e4[_0x340b('0x1d')]()[_0x340b('0x1c')](function(){var _0x293173=_0x4763e4[_0x340b('0x1e')]({'plain':!![]});var _0xcf8dd=_0x340b('0x1f');return db[_0x340b('0x20')]['destroy']({'where':{'type':_0xcf8dd,'resourceId':_0x293173['id']}})['then'](function(){return _0x4763e4;});})['then'](function(){_0x2d363e[_0x340b('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4cfa6e,_0x1394c7){return function(_0x1cf1f9){if(!_0x1cf1f9){_0x4cfa6e['sendStatus'](0x194);}return _0x1cf1f9;};}function handleError(_0x4968c6,_0x183ae2){_0x183ae2=_0x183ae2||0x1f4;return function(_0x3ccc7c){logger['error'](_0x3ccc7c[_0x340b('0x21')]);if(_0x3ccc7c[_0x340b('0x22')]){delete _0x3ccc7c[_0x340b('0x22')];}_0x4968c6[_0x340b('0x13')](_0x183ae2)['send'](_0x3ccc7c);};}exports[_0x340b('0x23')]=function(_0x219bab,_0x485f80){var _0x392265={},_0x22404e={},_0x1fbccd={'count':0x0,'rows':[]};var _0x5b7618=_[_0x340b('0x24')](db[_0x340b('0x25')][_0x340b('0x26')],function(_0x33758f){return{'name':_0x33758f[_0x340b('0x27')],'type':_0x33758f[_0x340b('0x28')][_0x340b('0x29')]};});_0x22404e['model']=_[_0x340b('0x24')](_0x5b7618,_0x340b('0x22'));_0x22404e[_0x340b('0x2a')]=_['keys'](_0x219bab['query']);_0x22404e[_0x340b('0x2b')]=_[_0x340b('0x2c')](_0x22404e['model'],_0x22404e[_0x340b('0x2a')]);_0x392265[_0x340b('0x2d')]=_['intersection'](_0x22404e['model'],qs[_0x340b('0x2e')](_0x219bab[_0x340b('0x2a')][_0x340b('0x2e')]));_0x392265['attributes']=_0x392265[_0x340b('0x2d')][_0x340b('0x2f')]?_0x392265[_0x340b('0x2d')]:_0x22404e['model'];if(!_0x219bab[_0x340b('0x2a')][_0x340b('0x30')](_0x340b('0x31'))){_0x392265['limit']=qs[_0x340b('0x32')](_0x219bab[_0x340b('0x2a')][_0x340b('0x32')]);_0x392265[_0x340b('0x15')]=qs[_0x340b('0x15')](_0x219bab[_0x340b('0x2a')][_0x340b('0x15')]);}_0x392265[_0x340b('0x33')]=qs[_0x340b('0x34')](_0x219bab[_0x340b('0x2a')][_0x340b('0x34')]);_0x392265['where']=qs['filters'](_[_0x340b('0x35')](_0x219bab[_0x340b('0x2a')],_0x22404e['filters']),_0x5b7618);if(_0x219bab[_0x340b('0x2a')][_0x340b('0x36')]){_0x392265[_0x340b('0x37')]=_['merge'](_0x392265['where'],{'$or':_[_0x340b('0x24')](_0x5b7618,function(_0x891898){if(_0x891898[_0x340b('0x28')]!==_0x340b('0x38')){var _0x4c56fe={};_0x4c56fe[_0x891898[_0x340b('0x22')]]={'$like':'%'+_0x219bab['query'][_0x340b('0x36')]+'%'};return _0x4c56fe;}})});}_0x392265=_['merge']({},_0x392265,_0x219bab['options']);var _0x1dddb7={'where':_0x392265[_0x340b('0x37')]};return db[_0x340b('0x25')]['count'](_0x1dddb7)['then'](function(_0x525e7b){_0x1fbccd[_0x340b('0x17')]=_0x525e7b;if(_0x219bab[_0x340b('0x2a')][_0x340b('0x39')]){_0x392265[_0x340b('0x3a')]=[{'all':!![]}];}return db[_0x340b('0x25')][_0x340b('0x3b')](_0x392265);})[_0x340b('0x1c')](function(_0x51aa76){_0x1fbccd[_0x340b('0x3c')]=_0x51aa76;return _0x1fbccd;})['then'](respondWithFilteredResult(_0x485f80,_0x392265))['catch'](handleError(_0x485f80,null));};exports[_0x340b('0x3d')]=function(_0x1bbc24,_0x2fadd4){var _0x8d1672={'raw':!![],'where':{'id':_0x1bbc24[_0x340b('0x3e')]['id']}},_0x19c698={};_0x19c698[_0x340b('0x3f')]=_['keys'](db[_0x340b('0x25')][_0x340b('0x26')]);_0x19c698[_0x340b('0x2a')]=_['keys'](_0x1bbc24[_0x340b('0x2a')]);_0x19c698[_0x340b('0x2b')]=_[_0x340b('0x2c')](_0x19c698[_0x340b('0x3f')],_0x19c698[_0x340b('0x2a')]);_0x8d1672[_0x340b('0x2d')]=_[_0x340b('0x2c')](_0x19c698[_0x340b('0x3f')],qs[_0x340b('0x2e')](_0x1bbc24[_0x340b('0x2a')][_0x340b('0x2e')]));_0x8d1672[_0x340b('0x2d')]=_0x8d1672['attributes'][_0x340b('0x2f')]?_0x8d1672[_0x340b('0x2d')]:_0x19c698[_0x340b('0x3f')];if(_0x1bbc24[_0x340b('0x2a')][_0x340b('0x39')]){_0x8d1672['include']=[{'all':!![]}];}_0x8d1672=_[_0x340b('0x40')]({},_0x8d1672,_0x1bbc24[_0x340b('0x41')]);return db[_0x340b('0x25')][_0x340b('0x42')](_0x8d1672)['then'](handleEntityNotFound(_0x2fadd4,null))[_0x340b('0x1c')](respondWithResult(_0x2fadd4,null))[_0x340b('0x43')](handleError(_0x2fadd4,null));};exports[_0x340b('0x44')]=function(_0x292abd,_0x474c2b){return db[_0x340b('0x25')][_0x340b('0x44')](_0x292abd['body'],{})['then'](function(_0x2dc21c){var _0x5353fd=_0x292abd['user'][_0x340b('0x1e')]({'plain':!![]});if(!_0x5353fd)throw new Error(_0x340b('0x45'));if(_0x5353fd[_0x340b('0x46')]==='user'){var _0x10b4ca=_0x2dc21c['get']({'plain':!![]});var _0x34bbca=_0x340b('0x1f');return db['UserProfileSection'][_0x340b('0x42')]({'where':{'name':_0x34bbca,'userProfileId':_0x5353fd[_0x340b('0x47')]},'raw':!![]})[_0x340b('0x1c')](function(_0x4fac91){if(_0x4fac91&&_0x4fac91[_0x340b('0x48')]===0x0){return db['UserProfileResource'][_0x340b('0x44')]({'name':_0x10b4ca[_0x340b('0x22')],'resourceId':_0x10b4ca['id'],'type':_0x4fac91[_0x340b('0x22')],'sectionId':_0x4fac91['id']},{})['then'](function(){return _0x2dc21c;});}else{return _0x2dc21c;}})[_0x340b('0x43')](function(_0x325de4){logger[_0x340b('0x49')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x325de4);throw _0x325de4;});}return _0x2dc21c;})[_0x340b('0x1c')](respondWithResult(_0x474c2b,0xc9))[_0x340b('0x43')](handleError(_0x474c2b,null));};exports[_0x340b('0x1b')]=function(_0x36544a,_0x50fccf){if(_0x36544a[_0x340b('0x4a')]['id']){delete _0x36544a[_0x340b('0x4a')]['id'];}return db['AnalyticExtractedReport'][_0x340b('0x42')]({'where':{'id':_0x36544a[_0x340b('0x3e')]['id']}})['then'](handleEntityNotFound(_0x50fccf,null))[_0x340b('0x1c')](saveUpdates(_0x36544a[_0x340b('0x4a')],null))[_0x340b('0x1c')](respondWithResult(_0x50fccf,null))[_0x340b('0x43')](handleError(_0x50fccf,null));};exports[_0x340b('0x1d')]=function(_0x572939,_0x2fb393){return db[_0x340b('0x25')]['find']({'where':{'id':_0x572939[_0x340b('0x3e')]['id']}})[_0x340b('0x1c')](handleEntityNotFound(_0x2fb393,null))[_0x340b('0x1c')](removeEntity(_0x2fb393,null))[_0x340b('0x43')](handleError(_0x2fb393,null));};exports['download']=function(_0xc936a0,_0x1c98e9,_0x2c56ea){return db[_0x340b('0x25')][_0x340b('0x42')]({'where':{'id':_0xc936a0[_0x340b('0x3e')]['id']},'attributes':[_0x340b('0x22'),_0x340b('0x4b'),_0x340b('0x4c'),_0x340b('0x4d')],'raw':!![]})['then'](handleEntityNotFound(_0x1c98e9,null))[_0x340b('0x1c')](function(_0x591ba6){if(_0x591ba6){if(!fs['existsSync'](path[_0x340b('0x4e')](config['root'],_0x340b('0x4f'),_0x591ba6[_0x340b('0x4c')]))){throw new db[(_0x340b('0x50'))][(_0x340b('0x51'))](_0x340b('0x52'));}if(_0xc936a0[_0x340b('0x2a')]['exists']){return _0x1c98e9['sendStatus'](0xc8);}return _0x1c98e9['download'](path[_0x340b('0x4e')](config[_0x340b('0x53')],_0x340b('0x4f'),_0x591ba6['savename']),util[_0x340b('0x54')]('%s.%s',_0x591ba6['basename']||_0x591ba6[_0x340b('0x22')],_0x591ba6[_0x340b('0x4d')]['toLowerCase']()));}})[_0x340b('0x43')](handleError(_0x1c98e9,null));};