4ea46ce12ea3c2279d1e0968a6d6b894ac464782
[motion2.git] / server / api / template / template.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 _0xbbe6=['key','query','filters','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','intersection','find','catch','create','body','user','role','Templates','UserProfileSection','autoAssociation','update','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','save','then','get','UserProfileResource','destroy','end','error','name','send','map','Template','rawAttributes'];(function(_0x312cab,_0x47d9f3){var _0x2f616b=function(_0x24b3a1){while(--_0x24b3a1){_0x312cab['push'](_0x312cab['shift']());}};_0x2f616b(++_0x47d9f3);}(_0xbbe6,0xbb));var _0x6bbe=function(_0x1a4d68,_0x14187c){_0x1a4d68=_0x1a4d68-0x0;var _0x5e5dea=_0xbbe6[_0x1a4d68];return _0x5e5dea;};'use strict';var emlformat=require(_0x6bbe('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x6bbe('0x1'));var rp=require(_0x6bbe('0x2'));var moment=require(_0x6bbe('0x3'));var BPromise=require(_0x6bbe('0x4'));var Mustache=require(_0x6bbe('0x5'));var util=require('util');var path=require(_0x6bbe('0x6'));var sox=require(_0x6bbe('0x7'));var csv=require(_0x6bbe('0x8'));var ejs=require(_0x6bbe('0x9'));var fs=require('fs');var fs_extra=require(_0x6bbe('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6bbe('0xb'));var jsforce=require(_0x6bbe('0xc'));var deskjs=require(_0x6bbe('0xd'));var toCsv=require(_0x6bbe('0x8'));var querystring=require(_0x6bbe('0xe'));var Papa=require(_0x6bbe('0xf'));var Redis=require(_0x6bbe('0x10'));var authService=require(_0x6bbe('0x11'));var qs=require(_0x6bbe('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6bbe('0x13'))(_0x6bbe('0x14'));var utils=require(_0x6bbe('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6bbe('0x16'));var db=require(_0x6bbe('0x17'))['db'];function respondWithStatusCode(_0x174aa2,_0x4615a3){_0x4615a3=_0x4615a3||0xcc;return function(_0x1d8f76){if(_0x1d8f76){return _0x174aa2[_0x6bbe('0x18')](_0x4615a3);}return _0x174aa2[_0x6bbe('0x19')](_0x4615a3)['end']();};}function respondWithResult(_0x121696,_0x434dfa){_0x434dfa=_0x434dfa||0xc8;return function(_0x1fa5ac){if(_0x1fa5ac){return _0x121696[_0x6bbe('0x19')](_0x434dfa)[_0x6bbe('0x1a')](_0x1fa5ac);}};}function respondWithFilteredResult(_0x429121,_0x37fef7){return function(_0x3ee5e5){if(_0x3ee5e5){var _0x34b6df=typeof _0x37fef7[_0x6bbe('0x1b')]===_0x6bbe('0x1c')&&typeof _0x37fef7['limit']===_0x6bbe('0x1c');var _0x52f491=_0x3ee5e5[_0x6bbe('0x1d')];var _0x345c49=_0x34b6df?0x0:_0x37fef7[_0x6bbe('0x1b')];var _0x20cc57=_0x34b6df?_0x3ee5e5[_0x6bbe('0x1d')]:_0x37fef7[_0x6bbe('0x1b')]+_0x37fef7[_0x6bbe('0x1e')];var _0x253d63;if(_0x20cc57>=_0x52f491){_0x20cc57=_0x52f491;_0x253d63=0xc8;}else{_0x253d63=0xce;}_0x429121[_0x6bbe('0x19')](_0x253d63);return _0x429121[_0x6bbe('0x1f')]('Content-Range',_0x345c49+'-'+_0x20cc57+'/'+_0x52f491)['json'](_0x3ee5e5);}return null;};}function patchUpdates(_0x5dd845){return function(_0x1ee773){try{jsonpatch['apply'](_0x1ee773,_0x5dd845,!![]);}catch(_0x35ab95){return BPromise['reject'](_0x35ab95);}return _0x1ee773[_0x6bbe('0x20')]();};}function saveUpdates(_0x3b88bf,_0x4961be){return function(_0x2dfa79){if(_0x2dfa79){return _0x2dfa79['update'](_0x3b88bf)['then'](function(_0x2bea02){return _0x2bea02;});}return null;};}function removeEntity(_0x3f90f4,_0xe3e3f2){return function(_0x14357d){if(_0x14357d){return _0x14357d['destroy']()[_0x6bbe('0x21')](function(){var _0x276c11=_0x14357d[_0x6bbe('0x22')]({'plain':!![]});var _0x12bff0='Templates';return db[_0x6bbe('0x23')][_0x6bbe('0x24')]({'where':{'type':_0x12bff0,'resourceId':_0x276c11['id']}})[_0x6bbe('0x21')](function(){return _0x14357d;});})[_0x6bbe('0x21')](function(){_0x3f90f4[_0x6bbe('0x19')](0xcc)[_0x6bbe('0x25')]();});}};}function handleEntityNotFound(_0x4abbbd,_0x4e0c36){return function(_0x1d2bc3){if(!_0x1d2bc3){_0x4abbbd['sendStatus'](0x194);}return _0x1d2bc3;};}function handleError(_0x5a841c,_0x128e6d){_0x128e6d=_0x128e6d||0x1f4;return function(_0xb45761){logger[_0x6bbe('0x26')](_0xb45761['stack']);if(_0xb45761['name']){delete _0xb45761[_0x6bbe('0x27')];}_0x5a841c[_0x6bbe('0x19')](_0x128e6d)[_0x6bbe('0x28')](_0xb45761);};}exports['index']=function(_0x3bf9a3,_0x13b3df){var _0x2c1919={},_0x4a98c0={},_0x3081ad={'count':0x0,'rows':[]};var _0x3e3186=_[_0x6bbe('0x29')](db[_0x6bbe('0x2a')][_0x6bbe('0x2b')],function(_0x4814c8){return{'name':_0x4814c8['fieldName'],'type':_0x4814c8['type'][_0x6bbe('0x2c')]};});_0x4a98c0['model']=_[_0x6bbe('0x29')](_0x3e3186,'name');_0x4a98c0[_0x6bbe('0x2d')]=_['keys'](_0x3bf9a3[_0x6bbe('0x2d')]);_0x4a98c0[_0x6bbe('0x2e')]=_['intersection'](_0x4a98c0['model'],_0x4a98c0[_0x6bbe('0x2d')]);_0x2c1919[_0x6bbe('0x2f')]=_['intersection'](_0x4a98c0[_0x6bbe('0x30')],qs[_0x6bbe('0x31')](_0x3bf9a3[_0x6bbe('0x2d')][_0x6bbe('0x31')]));_0x2c1919[_0x6bbe('0x2f')]=_0x2c1919[_0x6bbe('0x2f')][_0x6bbe('0x32')]?_0x2c1919[_0x6bbe('0x2f')]:_0x4a98c0[_0x6bbe('0x30')];if(!_0x3bf9a3['query'][_0x6bbe('0x33')](_0x6bbe('0x34'))){_0x2c1919['limit']=qs[_0x6bbe('0x1e')](_0x3bf9a3['query']['limit']);_0x2c1919['offset']=qs['offset'](_0x3bf9a3[_0x6bbe('0x2d')][_0x6bbe('0x1b')]);}_0x2c1919['order']=qs[_0x6bbe('0x35')](_0x3bf9a3[_0x6bbe('0x2d')]['sort']);_0x2c1919[_0x6bbe('0x36')]=qs[_0x6bbe('0x2e')](_['pick'](_0x3bf9a3[_0x6bbe('0x2d')],_0x4a98c0['filters']),_0x3e3186);if(_0x3bf9a3[_0x6bbe('0x2d')][_0x6bbe('0x37')]){_0x2c1919['where']=_[_0x6bbe('0x38')](_0x2c1919['where'],{'$or':_[_0x6bbe('0x29')](_0x3e3186,function(_0x35a5ec){if(_0x35a5ec['type']!==_0x6bbe('0x39')){var _0x4d6654={};_0x4d6654[_0x35a5ec[_0x6bbe('0x27')]]={'$like':'%'+_0x3bf9a3[_0x6bbe('0x2d')]['filter']+'%'};return _0x4d6654;}})});}_0x2c1919=_[_0x6bbe('0x38')]({},_0x2c1919,_0x3bf9a3[_0x6bbe('0x3a')]);var _0x17ffae={'where':_0x2c1919[_0x6bbe('0x36')]};return db['Template']['count'](_0x17ffae)[_0x6bbe('0x21')](function(_0x1fd546){_0x3081ad[_0x6bbe('0x1d')]=_0x1fd546;if(_0x3bf9a3[_0x6bbe('0x2d')][_0x6bbe('0x3b')]){_0x2c1919[_0x6bbe('0x3c')]=[{'all':!![]}];}return db[_0x6bbe('0x2a')][_0x6bbe('0x3d')](_0x2c1919);})[_0x6bbe('0x21')](function(_0x46ad78){_0x3081ad[_0x6bbe('0x3e')]=_0x46ad78;return _0x3081ad;})['then'](respondWithFilteredResult(_0x13b3df,_0x2c1919))['catch'](handleError(_0x13b3df,null));};exports[_0x6bbe('0x3f')]=function(_0x609d55,_0x46dc88){var _0x49363e={'raw':!![],'where':{'id':_0x609d55[_0x6bbe('0x40')]['id']}},_0x2623bc={};_0x2623bc[_0x6bbe('0x30')]=_['keys'](db[_0x6bbe('0x2a')][_0x6bbe('0x2b')]);_0x2623bc['query']=_[_0x6bbe('0x41')](_0x609d55[_0x6bbe('0x2d')]);_0x2623bc[_0x6bbe('0x2e')]=_[_0x6bbe('0x42')](_0x2623bc[_0x6bbe('0x30')],_0x2623bc['query']);_0x49363e[_0x6bbe('0x2f')]=_[_0x6bbe('0x42')](_0x2623bc[_0x6bbe('0x30')],qs[_0x6bbe('0x31')](_0x609d55[_0x6bbe('0x2d')][_0x6bbe('0x31')]));_0x49363e[_0x6bbe('0x2f')]=_0x49363e[_0x6bbe('0x2f')]['length']?_0x49363e[_0x6bbe('0x2f')]:_0x2623bc[_0x6bbe('0x30')];if(_0x609d55['query'][_0x6bbe('0x3b')]){_0x49363e[_0x6bbe('0x3c')]=[{'all':!![]}];}_0x49363e=_[_0x6bbe('0x38')]({},_0x49363e,_0x609d55[_0x6bbe('0x3a')]);return db['Template'][_0x6bbe('0x43')](_0x49363e)['then'](handleEntityNotFound(_0x46dc88,null))[_0x6bbe('0x21')](respondWithResult(_0x46dc88,null))[_0x6bbe('0x44')](handleError(_0x46dc88,null));};exports['create']=function(_0x252995,_0x119de9){return db[_0x6bbe('0x2a')][_0x6bbe('0x45')](_0x252995[_0x6bbe('0x46')],{})[_0x6bbe('0x21')](function(_0x36bf9d){var _0x343a7d=_0x252995[_0x6bbe('0x47')][_0x6bbe('0x22')]({'plain':!![]});if(!_0x343a7d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x343a7d[_0x6bbe('0x48')]===_0x6bbe('0x47')){var _0x1befca=_0x36bf9d[_0x6bbe('0x22')]({'plain':!![]});var _0x4b8e33=_0x6bbe('0x49');return db[_0x6bbe('0x4a')][_0x6bbe('0x43')]({'where':{'name':_0x4b8e33,'userProfileId':_0x343a7d['userProfileId']},'raw':!![]})[_0x6bbe('0x21')](function(_0x487dd5){if(_0x487dd5&&_0x487dd5[_0x6bbe('0x4b')]===0x0){return db[_0x6bbe('0x23')][_0x6bbe('0x45')]({'name':_0x1befca[_0x6bbe('0x27')],'resourceId':_0x1befca['id'],'type':_0x487dd5['name'],'sectionId':_0x487dd5['id']},{})[_0x6bbe('0x21')](function(){return _0x36bf9d;});}else{return _0x36bf9d;}})['catch'](function(_0x258ba3){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x258ba3);throw _0x258ba3;});}return _0x36bf9d;})['then'](respondWithResult(_0x119de9,0xc9))[_0x6bbe('0x44')](handleError(_0x119de9,null));};exports[_0x6bbe('0x4c')]=function(_0x2cb6bd,_0x4a4fc4){if(_0x2cb6bd['body']['id']){delete _0x2cb6bd[_0x6bbe('0x46')]['id'];}return db[_0x6bbe('0x2a')]['find']({'where':{'id':_0x2cb6bd[_0x6bbe('0x40')]['id']}})[_0x6bbe('0x21')](handleEntityNotFound(_0x4a4fc4,null))['then'](saveUpdates(_0x2cb6bd[_0x6bbe('0x46')],null))[_0x6bbe('0x21')](respondWithResult(_0x4a4fc4,null))[_0x6bbe('0x44')](handleError(_0x4a4fc4,null));};exports[_0x6bbe('0x24')]=function(_0x4d4cdb,_0x19a4e1){return db[_0x6bbe('0x2a')][_0x6bbe('0x43')]({'where':{'id':_0x4d4cdb['params']['id']}})[_0x6bbe('0x21')](handleEntityNotFound(_0x19a4e1,null))[_0x6bbe('0x21')](removeEntity(_0x19a4e1,null))[_0x6bbe('0x44')](handleError(_0x19a4e1,null));};