fef70f697e340002a99ea4610277950163debe97
[motion2.git] / server / api / interval / interval.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 _0xc965=['sort','pick','where','merge','VIRTUAL','options','Interval','count','includeAll','include','findAll','catch','show','params','find','create','body','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','findOne','order','filter','sequelize','IntervalId','bulkCreate','html-pdf','fast-json-patch','bluebird','mustache','path','sox','to-csv','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','offset','set','save','update','get','Intervals','UserProfileResource','destroy','then','status','error','stack','name','send','index','map','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit'];(function(_0x4d6bfd,_0x8d79ff){var _0x243a46=function(_0x3883b1){while(--_0x3883b1){_0x4d6bfd['push'](_0x4d6bfd['shift']());}};_0x243a46(++_0x8d79ff);}(_0xc965,0x6f));var _0x5c96=function(_0x4a5f95,_0x1553d3){_0x4a5f95=_0x4a5f95-0x0;var _0x4dcfa5=_0xc965[_0x4a5f95];return _0x4dcfa5;};'use strict';var pdf=require(_0x5c96('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5c96('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5c96('0x2'));var Mustache=require(_0x5c96('0x3'));var util=require('util');var path=require(_0x5c96('0x4'));var sox=require(_0x5c96('0x5'));var csv=require(_0x5c96('0x6'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x5c96('0x7'));var squel=require(_0x5c96('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5c96('0x9'));var toCsv=require(_0x5c96('0x6'));var querystring=require(_0x5c96('0xa'));var Papa=require(_0x5c96('0xb'));var Redis=require('ioredis');var authService=require(_0x5c96('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x5c96('0xd'));var hardwareService=require(_0x5c96('0xe'));var logger=require(_0x5c96('0xf'))('api');var utils=require(_0x5c96('0x10'));var config=require(_0x5c96('0x11'));var db=require(_0x5c96('0x12'))['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x2da932,_0x51ef70){_0x51ef70=_0x51ef70||0xcc;return function(_0x4e922a){if(_0x4e922a){return _0x2da932[_0x5c96('0x13')](_0x51ef70);}return _0x2da932['status'](_0x51ef70)[_0x5c96('0x14')]();};}function respondWithResult(_0x4f795d,_0x4713fe){_0x4713fe=_0x4713fe||0xc8;return function(_0x1dc296){if(_0x1dc296){return _0x4f795d['status'](_0x4713fe)[_0x5c96('0x15')](_0x1dc296);}};}function respondWithFilteredResult(_0x2ad486,_0x480dba){return function(_0x1e366c){if(_0x1e366c){var _0x506326=_0x1e366c['count'],_0x149639=_0x480dba['offset'],_0x315031=_0x480dba[_0x5c96('0x16')]+_0x480dba['limit'],_0x404e50;if(_0x315031>=_0x506326){_0x315031=_0x506326;_0x404e50=0xc8;}else{_0x404e50=0xce;}_0x2ad486['status'](_0x404e50);return _0x2ad486[_0x5c96('0x17')]('Content-Range',_0x149639+'-'+_0x315031+'/'+_0x506326)[_0x5c96('0x15')](_0x1e366c);}return null;};}function patchUpdates(_0xc4b1c2){return function(_0x1a765a){try{jsonpatch['apply'](_0x1a765a,_0xc4b1c2,!![]);}catch(_0x320fbb){return BPromise['reject'](_0x320fbb);}return _0x1a765a[_0x5c96('0x18')]();};}function saveUpdates(_0x16e8a5,_0x35a1df){return function(_0x59353e){if(_0x59353e){return _0x59353e[_0x5c96('0x19')](_0x16e8a5)['then'](function(_0x31ab){return _0x31ab;});}return null;};}function removeEntity(_0x14fac7,_0x367b2e){return function(_0x147732){if(_0x147732){return _0x147732['destroy']()['then'](function(){var _0x383e14=_0x147732[_0x5c96('0x1a')]({'plain':!![]});var _0x31fabf=_0x5c96('0x1b');return db[_0x5c96('0x1c')][_0x5c96('0x1d')]({'where':{'type':_0x31fabf,'resourceId':_0x383e14['id']}})[_0x5c96('0x1e')](function(){return _0x147732;});})[_0x5c96('0x1e')](function(){_0x14fac7[_0x5c96('0x1f')](0xcc)[_0x5c96('0x14')]();});}};}function handleEntityNotFound(_0x2fb54c,_0x46a126){return function(_0x4214ba){if(!_0x4214ba){_0x2fb54c[_0x5c96('0x13')](0x194);}return _0x4214ba;};}function handleError(_0x223d57,_0x48e686){_0x48e686=_0x48e686||0x1f4;return function(_0xd919fe){logger[_0x5c96('0x20')](_0xd919fe[_0x5c96('0x21')]);if(_0xd919fe['name']){delete _0xd919fe[_0x5c96('0x22')];}_0x223d57[_0x5c96('0x1f')](_0x48e686)[_0x5c96('0x23')](_0xd919fe);};}exports[_0x5c96('0x24')]=function(_0x2f1eaa,_0x1fd808){var _0x46b42d={},_0x18ae13={},_0x446b0f={'count':0x0,'rows':[]};var _0x4e0979=_[_0x5c96('0x25')](db['Interval'][_0x5c96('0x26')],function(_0x21ab30){return{'name':_0x21ab30['fieldName'],'type':_0x21ab30[_0x5c96('0x27')]['key']};});_0x18ae13[_0x5c96('0x28')]=_[_0x5c96('0x25')](_0x4e0979,_0x5c96('0x22'));_0x18ae13[_0x5c96('0x29')]=_[_0x5c96('0x2a')](_0x2f1eaa['query']);_0x18ae13[_0x5c96('0x2b')]=_[_0x5c96('0x2c')](_0x18ae13[_0x5c96('0x28')],_0x18ae13[_0x5c96('0x29')]);_0x46b42d[_0x5c96('0x2d')]=_['intersection'](_0x18ae13['model'],qs[_0x5c96('0x2e')](_0x2f1eaa[_0x5c96('0x29')]['fields']));_0x46b42d[_0x5c96('0x2d')]=_0x46b42d[_0x5c96('0x2d')][_0x5c96('0x2f')]?_0x46b42d[_0x5c96('0x2d')]:_0x18ae13['model'];if(!_0x2f1eaa[_0x5c96('0x29')][_0x5c96('0x30')](_0x5c96('0x31'))){_0x46b42d[_0x5c96('0x32')]=qs[_0x5c96('0x32')](_0x2f1eaa['query']['limit']);_0x46b42d['offset']=qs[_0x5c96('0x16')](_0x2f1eaa[_0x5c96('0x29')][_0x5c96('0x16')]);}_0x46b42d['order']=qs[_0x5c96('0x33')](_0x2f1eaa[_0x5c96('0x29')][_0x5c96('0x33')]);_0x46b42d['where']=qs[_0x5c96('0x2b')](_[_0x5c96('0x34')](_0x2f1eaa['query'],_0x18ae13[_0x5c96('0x2b')]),_0x4e0979);if(_0x2f1eaa[_0x5c96('0x29')]['filter']){_0x46b42d[_0x5c96('0x35')]=_[_0x5c96('0x36')](_0x46b42d[_0x5c96('0x35')],{'$or':_[_0x5c96('0x25')](_0x4e0979,function(_0x8f3dea){if(_0x8f3dea[_0x5c96('0x27')]!==_0x5c96('0x37')){var _0x5cb221={};_0x5cb221[_0x8f3dea['name']]={'$like':'%'+_0x2f1eaa[_0x5c96('0x29')]['filter']+'%'};return _0x5cb221;}})});}_0x46b42d=_['merge']({},_0x46b42d,_0x2f1eaa[_0x5c96('0x38')]);var _0x2f58b1={'where':_0x46b42d['where']};return db[_0x5c96('0x39')]['count'](_0x2f58b1)[_0x5c96('0x1e')](function(_0x2cead7){_0x446b0f[_0x5c96('0x3a')]=_0x2cead7;if(_0x2f1eaa[_0x5c96('0x29')][_0x5c96('0x3b')]){_0x46b42d[_0x5c96('0x3c')]=[{'all':!![]}];}return db[_0x5c96('0x39')][_0x5c96('0x3d')](_0x46b42d);})[_0x5c96('0x1e')](function(_0x396b0a){_0x446b0f['rows']=_0x396b0a;return _0x446b0f;})[_0x5c96('0x1e')](respondWithFilteredResult(_0x1fd808,_0x46b42d))[_0x5c96('0x3e')](handleError(_0x1fd808,null));};exports[_0x5c96('0x3f')]=function(_0x342f7e,_0x3e7005){var _0x4141cd={'raw':!![],'where':{'id':_0x342f7e[_0x5c96('0x40')]['id']}},_0x31ee3c={};_0x31ee3c[_0x5c96('0x28')]=_[_0x5c96('0x2a')](db['Interval'][_0x5c96('0x26')]);_0x31ee3c[_0x5c96('0x29')]=_[_0x5c96('0x2a')](_0x342f7e[_0x5c96('0x29')]);_0x31ee3c[_0x5c96('0x2b')]=_['intersection'](_0x31ee3c[_0x5c96('0x28')],_0x31ee3c[_0x5c96('0x29')]);_0x4141cd[_0x5c96('0x2d')]=_['intersection'](_0x31ee3c[_0x5c96('0x28')],qs[_0x5c96('0x2e')](_0x342f7e[_0x5c96('0x29')]['fields']));_0x4141cd['attributes']=_0x4141cd[_0x5c96('0x2d')][_0x5c96('0x2f')]?_0x4141cd['attributes']:_0x31ee3c['model'];if(_0x342f7e['query'][_0x5c96('0x3b')]){_0x4141cd['include']=[{'all':!![]}];}_0x4141cd=_[_0x5c96('0x36')]({},_0x4141cd,_0x342f7e[_0x5c96('0x38')]);return db[_0x5c96('0x39')][_0x5c96('0x41')](_0x4141cd)[_0x5c96('0x1e')](handleEntityNotFound(_0x3e7005,null))[_0x5c96('0x1e')](respondWithResult(_0x3e7005,null))[_0x5c96('0x3e')](handleError(_0x3e7005,null));};exports[_0x5c96('0x42')]=function(_0x5f4004,_0x173523){return db['Interval']['create'](_0x5f4004[_0x5c96('0x43')],{})[_0x5c96('0x1e')](function(_0x411258){var _0x21eac7=_0x5f4004['user']['get']({'plain':!![]});if(!_0x21eac7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x21eac7[_0x5c96('0x44')]===_0x5c96('0x45')){var _0x3af9b2=_0x411258[_0x5c96('0x1a')]({'plain':!![]});var _0x27f085='Intervals';return db[_0x5c96('0x46')]['find']({'where':{'name':_0x27f085,'userProfileId':_0x21eac7[_0x5c96('0x47')]},'raw':!![]})[_0x5c96('0x1e')](function(_0x2f48dd){if(_0x2f48dd&&_0x2f48dd[_0x5c96('0x48')]===0x0){return db[_0x5c96('0x1c')][_0x5c96('0x42')]({'name':_0x3af9b2['name'],'resourceId':_0x3af9b2['id'],'type':_0x2f48dd['name'],'sectionId':_0x2f48dd['id']},{})[_0x5c96('0x1e')](function(){return _0x411258;});}else{return _0x411258;}})[_0x5c96('0x3e')](function(_0x50cbbb){logger[_0x5c96('0x20')](_0x5c96('0x49'),_0x50cbbb);throw _0x50cbbb;});}return _0x411258;})[_0x5c96('0x1e')](respondWithResult(_0x173523,0xc9))[_0x5c96('0x3e')](handleError(_0x173523,null));};exports[_0x5c96('0x19')]=function(_0x26cd8a,_0x39f67b){if(_0x26cd8a[_0x5c96('0x43')]['id']){delete _0x26cd8a['body']['id'];}return db[_0x5c96('0x39')][_0x5c96('0x41')]({'where':{'id':_0x26cd8a[_0x5c96('0x40')]['id']}})[_0x5c96('0x1e')](handleEntityNotFound(_0x39f67b,null))['then'](saveUpdates(_0x26cd8a[_0x5c96('0x43')],null))[_0x5c96('0x1e')](respondWithResult(_0x39f67b,null))[_0x5c96('0x3e')](handleError(_0x39f67b,null));};exports[_0x5c96('0x1d')]=function(_0xeb5539,_0x369f8b){return db['Interval'][_0x5c96('0x41')]({'where':{'id':_0xeb5539[_0x5c96('0x40')]['id']}})[_0x5c96('0x1e')](handleEntityNotFound(_0x369f8b,null))[_0x5c96('0x1e')](removeEntity(_0x369f8b,null))['catch'](handleError(_0x369f8b,null));};exports[_0x5c96('0x4a')]=function(_0x3e0756,_0x784b04,_0x5f3603){if(_0x3e0756[_0x5c96('0x43')]['id']){delete _0x3e0756[_0x5c96('0x43')]['id'];}return db[_0x5c96('0x39')][_0x5c96('0x41')]({'where':{'id':_0x3e0756[_0x5c96('0x40')]['id']}})[_0x5c96('0x1e')](handleEntityNotFound(_0x784b04,null))['then'](function(_0x233a40){if(_0x233a40){_0x3e0756[_0x5c96('0x43')]['IntervalId']=_0x233a40['id'];return db[_0x5c96('0x39')][_0x5c96('0x42')](_0x3e0756['body']);}})[_0x5c96('0x1e')](respondWithResult(_0x784b04,null))['catch'](handleError(_0x784b04,null));};exports['getIntervals']=function(_0x3ecac5,_0x29624e,_0x38ce2f){var _0x4c463d={};var _0x5b0834={};var _0x44616e;var _0x21f0fb;return db[_0x5c96('0x39')][_0x5c96('0x4b')]({'where':{'id':_0x3ecac5[_0x5c96('0x40')]['id']}})[_0x5c96('0x1e')](handleEntityNotFound(_0x29624e,null))['then'](function(_0x3244a8){if(_0x3244a8){_0x44616e=_0x3244a8;_0x5b0834[_0x5c96('0x28')]=_['keys'](db[_0x5c96('0x39')][_0x5c96('0x26')]);_0x5b0834[_0x5c96('0x29')]=_[_0x5c96('0x2a')](_0x3ecac5[_0x5c96('0x29')]);_0x5b0834[_0x5c96('0x2b')]=_[_0x5c96('0x2c')](_0x5b0834[_0x5c96('0x28')],_0x5b0834[_0x5c96('0x29')]);_0x4c463d[_0x5c96('0x2d')]=_['intersection'](_0x5b0834['model'],qs[_0x5c96('0x2e')](_0x3ecac5['query'][_0x5c96('0x2e')]));_0x4c463d[_0x5c96('0x2d')]=_0x4c463d[_0x5c96('0x2d')]['length']?_0x4c463d[_0x5c96('0x2d')]:_0x5b0834[_0x5c96('0x28')];_0x4c463d[_0x5c96('0x4c')]=qs[_0x5c96('0x33')](_0x3ecac5['query'][_0x5c96('0x33')]);_0x4c463d[_0x5c96('0x35')]=qs[_0x5c96('0x2b')](_[_0x5c96('0x34')](_0x3ecac5[_0x5c96('0x29')],_0x5b0834[_0x5c96('0x2b')]));if(_0x3ecac5[_0x5c96('0x29')][_0x5c96('0x4d')]){_0x4c463d['where']=_[_0x5c96('0x36')](_0x4c463d[_0x5c96('0x35')],{'$or':_[_0x5c96('0x25')](_0x4c463d[_0x5c96('0x2d')],function(_0x480c92){var _0x9efe72={};_0x9efe72[_0x480c92]={'$like':'%'+_0x3ecac5['query'][_0x5c96('0x4d')]+'%'};return _0x9efe72;})});}_0x4c463d=_[_0x5c96('0x36')]({},_0x4c463d,_0x3ecac5[_0x5c96('0x38')]);return _0x44616e['getIntervals'](_0x4c463d);}})[_0x5c96('0x1e')](function(_0x514982){if(_0x514982){_0x21f0fb=_0x514982[_0x5c96('0x2f')];if(!_0x3ecac5['query'][_0x5c96('0x30')](_0x5c96('0x31'))){_0x4c463d[_0x5c96('0x32')]=qs[_0x5c96('0x32')](_0x3ecac5['query']['limit']);_0x4c463d[_0x5c96('0x16')]=qs[_0x5c96('0x16')](_0x3ecac5['query'][_0x5c96('0x16')]);}return _0x44616e['getIntervals'](_0x4c463d);}})[_0x5c96('0x1e')](function(_0x6af10b){if(_0x6af10b){return _0x6af10b?{'count':_0x21f0fb,'rows':_0x6af10b}:null;}})[_0x5c96('0x1e')](respondWithResult(_0x29624e,null))['catch'](handleError(_0x29624e,null));};exports['addIntervals']=function(_0x3f6a18,_0x4b3ee1,_0xf74842){return db[_0x5c96('0x39')][_0x5c96('0x4b')]({'where':{'id':_0x3f6a18[_0x5c96('0x40')]['id']}})['then'](handleEntityNotFound(_0x4b3ee1,null))[_0x5c96('0x1e')](function(_0x7c8747){if(_0x7c8747){return db[_0x5c96('0x4e')]['transaction'](function(_0x3185b2){return db[_0x5c96('0x39')][_0x5c96('0x1d')]({'where':{'IntervalId':_0x3f6a18[_0x5c96('0x40')]['id']},'transaction':_0x3185b2})[_0x5c96('0x1e')](function(_0x4b5afd){var _0x2d3a9e=_[_0x5c96('0x25')](_0x3f6a18[_0x5c96('0x43')],function(_0x2d4e7f){delete _0x2d4e7f['id'];_0x2d4e7f[_0x5c96('0x4f')]=_0x3f6a18[_0x5c96('0x40')]['id'];return _0x2d4e7f;});return db[_0x5c96('0x39')][_0x5c96('0x50')](_0x2d3a9e,{'transaction':_0x3185b2});});})[_0x5c96('0x1e')](function(){return db[_0x5c96('0x39')][_0x5c96('0x3d')]({'where':{'IntervalId':_0x3f6a18[_0x5c96('0x40')]['id']}});});}})[_0x5c96('0x1e')](respondWithResult(_0x4b3ee1,null))['catch'](handleError(_0x4b3ee1,null));};