0c0ce1bb59ba1cb72179f5a07014a9afd00f8121
[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 _0x52fc=['merge','VIRTUAL','filter','options','include','Interval','findAll','rows','show','params','keys','rawAttributes','includeAll','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','update','addInterval','IntervalId','getIntervals','findOne','sequelize','transaction','destroy','html-pdf','eml-format','rimraf','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','../../components/extensions/rewrite','sendStatus','end','status','count','offset','set','Content-Range','json','apply','then','get','Intervals','UserProfileResource','error','name','send','index','map','fieldName','type','key','model','query','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','filters'];(function(_0x44d59c,_0x1a09e8){var _0x360a10=function(_0x377203){while(--_0x377203){_0x44d59c['push'](_0x44d59c['shift']());}};_0x360a10(++_0x1a09e8);}(_0x52fc,0xc5));var _0xc52f=function(_0x42cd0b,_0x5ddff3){_0x42cd0b=_0x42cd0b-0x0;var _0x1e0de3=_0x52fc[_0x42cd0b];return _0x1e0de3;};'use strict';var pdf=require(_0xc52f('0x0'));var emlformat=require(_0xc52f('0x1'));var rimraf=require(_0xc52f('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc52f('0x3'));var moment=require(_0xc52f('0x4'));var BPromise=require(_0xc52f('0x5'));var Mustache=require(_0xc52f('0x6'));var util=require('util');var path=require('path');var sox=require(_0xc52f('0x7'));var csv=require(_0xc52f('0x8'));var ejs=require(_0xc52f('0x9'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc52f('0xa'));var toCsv=require('to-csv');var querystring=require(_0xc52f('0xb'));var Papa=require('papaparse');var Redis=require(_0xc52f('0xc'));var authService=require(_0xc52f('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xc52f('0xe'));var hardwareService=require(_0xc52f('0xf'));var logger=require(_0xc52f('0x10'))(_0xc52f('0x11'));var utils=require('../../config/utils');var config=require(_0xc52f('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xc52f('0x13'))['db'];var extensions=require(_0xc52f('0x14'));function respondWithStatusCode(_0x8d7bc7,_0x22bd83){_0x22bd83=_0x22bd83||0xcc;return function(_0x1634bd){if(_0x1634bd){return _0x8d7bc7[_0xc52f('0x15')](_0x22bd83);}return _0x8d7bc7['status'](_0x22bd83)[_0xc52f('0x16')]();};}function respondWithResult(_0x21123e,_0x17cb12){_0x17cb12=_0x17cb12||0xc8;return function(_0x1f8e74){if(_0x1f8e74){return _0x21123e[_0xc52f('0x17')](_0x17cb12)['json'](_0x1f8e74);}};}function respondWithFilteredResult(_0xdc98c6,_0x2d698c){return function(_0x3a28e0){if(_0x3a28e0){var _0x17943b=_0x3a28e0[_0xc52f('0x18')],_0x4e17de=_0x2d698c[_0xc52f('0x19')],_0x2a5863=_0x2d698c[_0xc52f('0x19')]+_0x2d698c['limit'],_0x5b3238;if(_0x2a5863>=_0x17943b){_0x2a5863=_0x17943b;_0x5b3238=0xc8;}else{_0x5b3238=0xce;}_0xdc98c6[_0xc52f('0x17')](_0x5b3238);return _0xdc98c6[_0xc52f('0x1a')](_0xc52f('0x1b'),_0x4e17de+'-'+_0x2a5863+'/'+_0x17943b)[_0xc52f('0x1c')](_0x3a28e0);}return null;};}function patchUpdates(_0xbd486e){return function(_0x492fb3){try{jsonpatch[_0xc52f('0x1d')](_0x492fb3,_0xbd486e,!![]);}catch(_0x18e4ad){return BPromise['reject'](_0x18e4ad);}return _0x492fb3['save']();};}function saveUpdates(_0x538290,_0x11a12f){return function(_0x33f6a0){if(_0x33f6a0){return _0x33f6a0['update'](_0x538290)[_0xc52f('0x1e')](function(_0x44d6e1){return _0x44d6e1;});}return null;};}function removeEntity(_0xf4c28f,_0x3899f2){return function(_0x2a3009){if(_0x2a3009){return _0x2a3009['destroy']()[_0xc52f('0x1e')](function(){var _0x55d3ec=_0x2a3009[_0xc52f('0x1f')]({'plain':!![]});var _0x155536=_0xc52f('0x20');return db[_0xc52f('0x21')]['destroy']({'where':{'type':_0x155536,'resourceId':_0x55d3ec['id']}})[_0xc52f('0x1e')](function(){return _0x2a3009;});})[_0xc52f('0x1e')](function(){_0xf4c28f[_0xc52f('0x17')](0xcc)[_0xc52f('0x16')]();});}};}function handleEntityNotFound(_0x1fb25b,_0x215a1c){return function(_0x546cd2){if(!_0x546cd2){_0x1fb25b[_0xc52f('0x15')](0x194);}return _0x546cd2;};}function handleError(_0x3a9350,_0xd17963){_0xd17963=_0xd17963||0x1f4;return function(_0x5c1135){logger[_0xc52f('0x22')](_0x5c1135['stack']);if(_0x5c1135[_0xc52f('0x23')]){delete _0x5c1135[_0xc52f('0x23')];}_0x3a9350[_0xc52f('0x17')](_0xd17963)[_0xc52f('0x24')](_0x5c1135);};}exports[_0xc52f('0x25')]=function(_0x4e4626,_0x32a81a){var _0x2d8553={},_0x15e67e={},_0x496eb7={'count':0x0,'rows':[]};var _0xa6f5ff=_[_0xc52f('0x26')](db['Interval']['rawAttributes'],function(_0x5729d7){return{'name':_0x5729d7[_0xc52f('0x27')],'type':_0x5729d7[_0xc52f('0x28')][_0xc52f('0x29')]};});_0x15e67e[_0xc52f('0x2a')]=_[_0xc52f('0x26')](_0xa6f5ff,_0xc52f('0x23'));_0x15e67e[_0xc52f('0x2b')]=_['keys'](_0x4e4626[_0xc52f('0x2b')]);_0x15e67e['filters']=_[_0xc52f('0x2c')](_0x15e67e[_0xc52f('0x2a')],_0x15e67e[_0xc52f('0x2b')]);_0x2d8553[_0xc52f('0x2d')]=_['intersection'](_0x15e67e[_0xc52f('0x2a')],qs[_0xc52f('0x2e')](_0x4e4626['query']['fields']));_0x2d8553[_0xc52f('0x2d')]=_0x2d8553[_0xc52f('0x2d')][_0xc52f('0x2f')]?_0x2d8553['attributes']:_0x15e67e[_0xc52f('0x2a')];if(!_0x4e4626[_0xc52f('0x2b')]['hasOwnProperty'](_0xc52f('0x30'))){_0x2d8553[_0xc52f('0x31')]=qs[_0xc52f('0x31')](_0x4e4626['query']['limit']);_0x2d8553[_0xc52f('0x19')]=qs[_0xc52f('0x19')](_0x4e4626[_0xc52f('0x2b')]['offset']);}_0x2d8553[_0xc52f('0x32')]=qs[_0xc52f('0x33')](_0x4e4626['query'][_0xc52f('0x33')]);_0x2d8553[_0xc52f('0x34')]=qs['filters'](_[_0xc52f('0x35')](_0x4e4626[_0xc52f('0x2b')],_0x15e67e[_0xc52f('0x36')]),_0xa6f5ff);if(_0x4e4626[_0xc52f('0x2b')]['filter']){_0x2d8553[_0xc52f('0x34')]=_[_0xc52f('0x37')](_0x2d8553[_0xc52f('0x34')],{'$or':_[_0xc52f('0x26')](_0xa6f5ff,function(_0x5d7112){if(_0x5d7112[_0xc52f('0x28')]!==_0xc52f('0x38')){var _0x376cbc={};_0x376cbc[_0x5d7112['name']]={'$like':'%'+_0x4e4626[_0xc52f('0x2b')][_0xc52f('0x39')]+'%'};return _0x376cbc;}})});}_0x2d8553=_[_0xc52f('0x37')]({},_0x2d8553,_0x4e4626[_0xc52f('0x3a')]);var _0x4cfb52={'where':_0x2d8553[_0xc52f('0x34')]};return db['Interval'][_0xc52f('0x18')](_0x4cfb52)[_0xc52f('0x1e')](function(_0x5200f4){_0x496eb7[_0xc52f('0x18')]=_0x5200f4;if(_0x4e4626[_0xc52f('0x2b')]['includeAll']){_0x2d8553[_0xc52f('0x3b')]=[{'all':!![]}];}return db[_0xc52f('0x3c')][_0xc52f('0x3d')](_0x2d8553);})[_0xc52f('0x1e')](function(_0x308fa5){_0x496eb7[_0xc52f('0x3e')]=_0x308fa5;return _0x496eb7;})[_0xc52f('0x1e')](respondWithFilteredResult(_0x32a81a,_0x2d8553))['catch'](handleError(_0x32a81a,null));};exports[_0xc52f('0x3f')]=function(_0x459f19,_0xbf2712){var _0x228168={'raw':!![],'where':{'id':_0x459f19[_0xc52f('0x40')]['id']}},_0x353d7d={};_0x353d7d[_0xc52f('0x2a')]=_[_0xc52f('0x41')](db['Interval'][_0xc52f('0x42')]);_0x353d7d['query']=_[_0xc52f('0x41')](_0x459f19[_0xc52f('0x2b')]);_0x353d7d['filters']=_[_0xc52f('0x2c')](_0x353d7d[_0xc52f('0x2a')],_0x353d7d[_0xc52f('0x2b')]);_0x228168[_0xc52f('0x2d')]=_['intersection'](_0x353d7d[_0xc52f('0x2a')],qs[_0xc52f('0x2e')](_0x459f19[_0xc52f('0x2b')][_0xc52f('0x2e')]));_0x228168['attributes']=_0x228168[_0xc52f('0x2d')][_0xc52f('0x2f')]?_0x228168[_0xc52f('0x2d')]:_0x353d7d[_0xc52f('0x2a')];if(_0x459f19[_0xc52f('0x2b')][_0xc52f('0x43')]){_0x228168[_0xc52f('0x3b')]=[{'all':!![]}];}_0x228168=_['merge']({},_0x228168,_0x459f19[_0xc52f('0x3a')]);return db[_0xc52f('0x3c')][_0xc52f('0x44')](_0x228168)[_0xc52f('0x1e')](handleEntityNotFound(_0xbf2712,null))[_0xc52f('0x1e')](respondWithResult(_0xbf2712,null))[_0xc52f('0x45')](handleError(_0xbf2712,null));};exports[_0xc52f('0x46')]=function(_0x5d2a30,_0x15c0d2){return db[_0xc52f('0x3c')]['create'](_0x5d2a30[_0xc52f('0x47')],{})['then'](function(_0x4d0705){var _0x5cd6e7=_0x5d2a30['user'][_0xc52f('0x1f')]({'plain':!![]});if(!_0x5cd6e7)throw new Error(_0xc52f('0x48'));if(_0x5cd6e7[_0xc52f('0x49')]===_0xc52f('0x4a')){var _0x2db754=_0x4d0705[_0xc52f('0x1f')]({'plain':!![]});var _0x2ccb73=_0xc52f('0x20');return db['UserProfileSection'][_0xc52f('0x44')]({'where':{'name':_0x2ccb73,'userProfileId':_0x5cd6e7[_0xc52f('0x4b')]},'raw':!![]})[_0xc52f('0x1e')](function(_0x4a90b1){if(_0x4a90b1&&_0x4a90b1['autoAssociation']===0x0){return db[_0xc52f('0x21')][_0xc52f('0x46')]({'name':_0x2db754[_0xc52f('0x23')],'resourceId':_0x2db754['id'],'type':_0x4a90b1['name'],'sectionId':_0x4a90b1['id']},{})[_0xc52f('0x1e')](function(){return _0x4d0705;});}else{return _0x4d0705;}})[_0xc52f('0x45')](function(_0x4acd9a){logger[_0xc52f('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4acd9a);throw _0x4acd9a;});}return _0x4d0705;})[_0xc52f('0x1e')](respondWithResult(_0x15c0d2,0xc9))['catch'](handleError(_0x15c0d2,null));};exports[_0xc52f('0x4c')]=function(_0x52b5ab,_0x5dc4b4){if(_0x52b5ab[_0xc52f('0x47')]['id']){delete _0x52b5ab['body']['id'];}return db['Interval'][_0xc52f('0x44')]({'where':{'id':_0x52b5ab[_0xc52f('0x40')]['id']}})[_0xc52f('0x1e')](handleEntityNotFound(_0x5dc4b4,null))[_0xc52f('0x1e')](saveUpdates(_0x52b5ab[_0xc52f('0x47')],null))['then'](respondWithResult(_0x5dc4b4,null))[_0xc52f('0x45')](handleError(_0x5dc4b4,null));};exports['destroy']=function(_0x425926,_0x473476){return db[_0xc52f('0x3c')][_0xc52f('0x44')]({'where':{'id':_0x425926[_0xc52f('0x40')]['id']}})[_0xc52f('0x1e')](handleEntityNotFound(_0x473476,null))[_0xc52f('0x1e')](removeEntity(_0x473476,null))[_0xc52f('0x45')](handleError(_0x473476,null));};exports[_0xc52f('0x4d')]=function(_0x594fa4,_0x57ac2f,_0x4ff1b6){if(_0x594fa4[_0xc52f('0x47')]['id']){delete _0x594fa4[_0xc52f('0x47')]['id'];}return db[_0xc52f('0x3c')][_0xc52f('0x44')]({'where':{'id':_0x594fa4[_0xc52f('0x40')]['id']}})[_0xc52f('0x1e')](handleEntityNotFound(_0x57ac2f,null))[_0xc52f('0x1e')](function(_0x3fd26){if(_0x3fd26){_0x594fa4[_0xc52f('0x47')][_0xc52f('0x4e')]=_0x3fd26['id'];return db[_0xc52f('0x3c')]['create'](_0x594fa4[_0xc52f('0x47')]);}})[_0xc52f('0x1e')](respondWithResult(_0x57ac2f,null))['catch'](handleError(_0x57ac2f,null));};exports[_0xc52f('0x4f')]=function(_0x4bdc99,_0x4ae4c0,_0xa766d7){var _0x248fb8={};var _0x13d979={};var _0x2c0208;var _0x36ecec;return db[_0xc52f('0x3c')][_0xc52f('0x50')]({'where':{'id':_0x4bdc99[_0xc52f('0x40')]['id']}})['then'](handleEntityNotFound(_0x4ae4c0,null))['then'](function(_0x9755c4){if(_0x9755c4){_0x2c0208=_0x9755c4;_0x13d979['model']=_[_0xc52f('0x41')](db[_0xc52f('0x3c')][_0xc52f('0x42')]);_0x13d979['query']=_[_0xc52f('0x41')](_0x4bdc99[_0xc52f('0x2b')]);_0x13d979[_0xc52f('0x36')]=_[_0xc52f('0x2c')](_0x13d979[_0xc52f('0x2a')],_0x13d979[_0xc52f('0x2b')]);_0x248fb8[_0xc52f('0x2d')]=_[_0xc52f('0x2c')](_0x13d979[_0xc52f('0x2a')],qs['fields'](_0x4bdc99[_0xc52f('0x2b')][_0xc52f('0x2e')]));_0x248fb8[_0xc52f('0x2d')]=_0x248fb8[_0xc52f('0x2d')][_0xc52f('0x2f')]?_0x248fb8[_0xc52f('0x2d')]:_0x13d979[_0xc52f('0x2a')];_0x248fb8['order']=qs[_0xc52f('0x33')](_0x4bdc99[_0xc52f('0x2b')]['sort']);_0x248fb8['where']=qs[_0xc52f('0x36')](_[_0xc52f('0x35')](_0x4bdc99['query'],_0x13d979[_0xc52f('0x36')]));if(_0x4bdc99[_0xc52f('0x2b')][_0xc52f('0x39')]){_0x248fb8[_0xc52f('0x34')]=_[_0xc52f('0x37')](_0x248fb8['where'],{'$or':_[_0xc52f('0x26')](_0x248fb8[_0xc52f('0x2d')],function(_0x32634f){var _0x2056c3={};_0x2056c3[_0x32634f]={'$like':'%'+_0x4bdc99[_0xc52f('0x2b')][_0xc52f('0x39')]+'%'};return _0x2056c3;})});}_0x248fb8=_['merge']({},_0x248fb8,_0x4bdc99[_0xc52f('0x3a')]);return _0x2c0208[_0xc52f('0x4f')](_0x248fb8);}})[_0xc52f('0x1e')](function(_0x141467){if(_0x141467){_0x36ecec=_0x141467[_0xc52f('0x2f')];if(!_0x4bdc99[_0xc52f('0x2b')]['hasOwnProperty'](_0xc52f('0x30'))){_0x248fb8['limit']=qs[_0xc52f('0x31')](_0x4bdc99[_0xc52f('0x2b')]['limit']);_0x248fb8[_0xc52f('0x19')]=qs['offset'](_0x4bdc99[_0xc52f('0x2b')]['offset']);}return _0x2c0208[_0xc52f('0x4f')](_0x248fb8);}})[_0xc52f('0x1e')](function(_0x5603f6){if(_0x5603f6){return _0x5603f6?{'count':_0x36ecec,'rows':_0x5603f6}:null;}})[_0xc52f('0x1e')](respondWithResult(_0x4ae4c0,null))[_0xc52f('0x45')](handleError(_0x4ae4c0,null));};exports['addIntervals']=function(_0x335f65,_0x9383b9,_0x4a0635){return db[_0xc52f('0x3c')][_0xc52f('0x50')]({'where':{'id':_0x335f65[_0xc52f('0x40')]['id']}})[_0xc52f('0x1e')](handleEntityNotFound(_0x9383b9,null))['then'](function(_0x272846){if(_0x272846){return db[_0xc52f('0x51')][_0xc52f('0x52')](function(_0x4ce7bb){return db[_0xc52f('0x3c')][_0xc52f('0x53')]({'where':{'IntervalId':_0x335f65[_0xc52f('0x40')]['id']},'transaction':_0x4ce7bb})['then'](function(_0x451a91){var _0x549cf7=_[_0xc52f('0x26')](_0x335f65[_0xc52f('0x47')],function(_0x16e0ae){delete _0x16e0ae['id'];_0x16e0ae[_0xc52f('0x4e')]=_0x335f65['params']['id'];return _0x16e0ae;});return db['Interval']['bulkCreate'](_0x549cf7,{'transaction':_0x4ce7bb});});})['then'](function(){return db[_0xc52f('0x3c')][_0xc52f('0x3d')]({'where':{'IntervalId':_0x335f65[_0xc52f('0x40')]['id']}});});}})['then'](respondWithResult(_0x9383b9,null))['catch'](handleError(_0x9383b9,null));};