b6edd9d701f97c4d03df3dfc07bf0c1d01881842
[motion2.git] / server / api / squareProject / squareProject.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 _0x752b=['User','order','lodash','ioredis','../../config/logger','../../config/environment','redis','defaults','localhost','./squareProject.socket','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','destroy','then','SquareProjects','UserProfileResource','stringify','error','stack','name','send','connect','agi','port','127.0.0.1','index','map','SquareProject','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','create','body','user','role','get','UserProfileSection','autoAssociation','update','params','production','addUsers','ids','omit','isArray','emit','userSquareProject:remove','getUsers','findOne'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x752b,0xf2));var _0xb752=function(_0x4fdc36,_0x1246f2){_0x4fdc36=_0x4fdc36-0x0;var _0x287f61=_0x752b[_0x4fdc36];return _0x287f61;};'use strict';var _=require(_0xb752('0x0'));var Redis=require(_0xb752('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0xb752('0x2'))('api');var config=require(_0xb752('0x3'));var db=require('../../mysqldb')['db'];config[_0xb752('0x4')]=_[_0xb752('0x5')](config[_0xb752('0x4')],{'host':_0xb752('0x6'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb752('0x4')]));require(_0xb752('0x7'))['register'](socket);function respondWithStatusCode(_0x4b3168,_0x4c87f){_0x4c87f=_0x4c87f||0xcc;return function(_0x3d50c0){if(_0x3d50c0){return _0x4b3168[_0xb752('0x8')](_0x4c87f);}return _0x4b3168[_0xb752('0x9')](_0x4c87f)[_0xb752('0xa')]();};}function respondWithResult(_0x115395,_0x130914){_0x130914=_0x130914||0xc8;return function(_0x5ed86e){if(_0x5ed86e){return _0x115395[_0xb752('0x9')](_0x130914)[_0xb752('0xb')](_0x5ed86e);}};}function respondWithFilteredResult(_0x353572,_0x170287){return function(_0x39909e){if(_0x39909e){var _0xf045f4=typeof _0x170287[_0xb752('0xc')]===_0xb752('0xd')&&typeof _0x170287[_0xb752('0xe')]==='undefined';var _0x46891c=_0x39909e[_0xb752('0xf')];var _0x56f187=_0xf045f4?0x0:_0x170287[_0xb752('0xc')];var _0x2bcac2=_0xf045f4?_0x39909e[_0xb752('0xf')]:_0x170287['offset']+_0x170287[_0xb752('0xe')];var _0x4d811d;if(_0x2bcac2>=_0x46891c){_0x2bcac2=_0x46891c;_0x4d811d=0xc8;}else{_0x4d811d=0xce;}_0x353572[_0xb752('0x9')](_0x4d811d);return _0x353572['set'](_0xb752('0x10'),_0x56f187+'-'+_0x2bcac2+'/'+_0x46891c)[_0xb752('0xb')](_0x39909e);}return null;};}function saveUpdates(_0x256385){return function(_0x4f7aa2){if(_0x4f7aa2){return _0x4f7aa2['update'](_0x256385)['then'](function(_0x3d4622){return _0x3d4622;});}return null;};}function removeEntity(_0x54f60a){return function(_0x200420){if(_0x200420){return _0x200420[_0xb752('0x11')]()[_0xb752('0x12')](function(){var _0x12b7ec=_0x200420['get']({'plain':!![]});var _0x2613c9=_0xb752('0x13');return db[_0xb752('0x14')]['destroy']({'where':{'type':_0x2613c9,'resourceId':_0x12b7ec['id']}})[_0xb752('0x12')](function(){return _0x200420;});})[_0xb752('0x12')](function(){return createAgiSocket();})[_0xb752('0x12')](function(_0x29f029){_0x29f029['end'](JSON[_0xb752('0x15')]({'id':_0x200420['id'],'deleted':!![]}));})[_0xb752('0x12')](function(){_0x54f60a[_0xb752('0x9')](0xcc)[_0xb752('0xa')]();});}};}function handleEntityNotFound(_0x55623b){return function(_0x12d03f){if(!_0x12d03f){_0x55623b['sendStatus'](0x194);}return _0x12d03f;};}function handleError(_0x1439d0,_0x27417a){_0x27417a=_0x27417a||0x1f4;return function(_0x103ed7){logger[_0xb752('0x16')](_0x103ed7[_0xb752('0x17')]);if(_0x103ed7['name']){delete _0x103ed7[_0xb752('0x18')];}_0x1439d0[_0xb752('0x9')](_0x27417a)[_0xb752('0x19')](_0x103ed7);};}function createAgiSocket(){try{var _0x3e46c2=require('net');var _0x2e0153=new _0x3e46c2['Socket']();return _0x2e0153[_0xb752('0x1a')](config[_0xb752('0x1b')][_0xb752('0x1c')]||0x11dd,_0xb752('0x1d'));}catch(_0x5d21b2){throw _0x5d21b2;}}exports[_0xb752('0x1e')]=function(_0x31d147,_0x40aad2){var _0x3c40c0={},_0x43e8f1={},_0x2cba9b={'count':0x0,'rows':[]};var _0x4bf7c7=_[_0xb752('0x1f')](db[_0xb752('0x20')][_0xb752('0x21')],function(_0x5f4041){return{'name':_0x5f4041[_0xb752('0x22')],'type':_0x5f4041['type'][_0xb752('0x23')]};});_0x43e8f1['model']=_[_0xb752('0x1f')](_0x4bf7c7,_0xb752('0x18'));_0x43e8f1[_0xb752('0x24')]=_[_0xb752('0x25')](_0x31d147[_0xb752('0x24')]);_0x43e8f1[_0xb752('0x26')]=_[_0xb752('0x27')](_0x43e8f1[_0xb752('0x28')],_0x43e8f1['query']);_0x3c40c0[_0xb752('0x29')]=_[_0xb752('0x27')](_0x43e8f1[_0xb752('0x28')],qs[_0xb752('0x2a')](_0x31d147[_0xb752('0x24')]['fields']));_0x3c40c0[_0xb752('0x29')]=_0x3c40c0['attributes'][_0xb752('0x2b')]?_0x3c40c0[_0xb752('0x29')]:_0x43e8f1[_0xb752('0x28')];if(!_0x31d147['query']['hasOwnProperty'](_0xb752('0x2c'))){_0x3c40c0[_0xb752('0xe')]=qs[_0xb752('0xe')](_0x31d147[_0xb752('0x24')][_0xb752('0xe')]);_0x3c40c0[_0xb752('0xc')]=qs['offset'](_0x31d147['query']['offset']);}_0x3c40c0['order']=qs[_0xb752('0x2d')](_0x31d147['query'][_0xb752('0x2d')]);_0x3c40c0[_0xb752('0x2e')]=qs[_0xb752('0x26')](_[_0xb752('0x2f')](_0x31d147['query'],_0x43e8f1['filters']),_0x4bf7c7);if(_0x31d147[_0xb752('0x24')]['filter']){_0x3c40c0[_0xb752('0x2e')]=_[_0xb752('0x30')](_0x3c40c0[_0xb752('0x2e')],{'$or':_[_0xb752('0x1f')](_0x4bf7c7,function(_0x18351e){if(_0x18351e[_0xb752('0x31')]!==_0xb752('0x32')){var _0x458063={};_0x458063[_0x18351e[_0xb752('0x18')]]={'$like':'%'+_0x31d147[_0xb752('0x24')][_0xb752('0x33')]+'%'};return _0x458063;}})});}_0x3c40c0=_[_0xb752('0x30')]({},_0x3c40c0,_0x31d147[_0xb752('0x34')]);var _0x1f2a2c={'where':_0x3c40c0[_0xb752('0x2e')]};return db['SquareProject']['count'](_0x1f2a2c)[_0xb752('0x12')](function(_0x2852cf){_0x2cba9b[_0xb752('0xf')]=_0x2852cf;if(_0x31d147['query'][_0xb752('0x35')]){_0x3c40c0[_0xb752('0x36')]=[{'all':!![]}];}return db[_0xb752('0x20')][_0xb752('0x37')](_0x3c40c0);})[_0xb752('0x12')](function(_0x31ff29){_0x2cba9b[_0xb752('0x38')]=_0x31ff29;return _0x2cba9b;})['then'](respondWithFilteredResult(_0x40aad2,_0x3c40c0))[_0xb752('0x39')](handleError(_0x40aad2,null));};exports[_0xb752('0x3a')]=function(_0x4f56c1,_0x30e86e){var _0x574a26={'raw':![],'where':{'id':_0x4f56c1['params']['id']}},_0x1191d6={};_0x1191d6[_0xb752('0x28')]=_[_0xb752('0x25')](db['SquareProject'][_0xb752('0x21')]);_0x1191d6[_0xb752('0x24')]=_[_0xb752('0x25')](_0x4f56c1['query']);_0x1191d6[_0xb752('0x26')]=_[_0xb752('0x27')](_0x1191d6[_0xb752('0x28')],_0x1191d6[_0xb752('0x24')]);_0x574a26[_0xb752('0x29')]=_[_0xb752('0x27')](_0x1191d6['model'],qs[_0xb752('0x2a')](_0x4f56c1['query']['fields']));_0x574a26[_0xb752('0x29')]=_0x574a26[_0xb752('0x29')][_0xb752('0x2b')]?_0x574a26[_0xb752('0x29')]:_0x1191d6[_0xb752('0x28')];if(_0x4f56c1['query'][_0xb752('0x35')]){_0x574a26[_0xb752('0x36')]=[{'all':!![]}];}_0x574a26=_[_0xb752('0x30')]({},_0x574a26,_0x4f56c1['options']);return db[_0xb752('0x20')][_0xb752('0x3b')](_0x574a26)['then'](handleEntityNotFound(_0x30e86e,null))[_0xb752('0x12')](respondWithResult(_0x30e86e,null))['catch'](handleError(_0x30e86e,null));};exports['create']=function(_0x338c67,_0x477db4){return db[_0xb752('0x20')][_0xb752('0x3c')](_0x338c67[_0xb752('0x3d')],{})[_0xb752('0x12')](function(_0x292ff4){var _0x340c32=_0x338c67[_0xb752('0x3e')]['get']({'plain':!![]});if(!_0x340c32)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x340c32[_0xb752('0x3f')]===_0xb752('0x3e')){var _0x5a5e52=_0x292ff4[_0xb752('0x40')]({'plain':!![]});var _0x1cbec7=_0xb752('0x13');return db[_0xb752('0x41')]['find']({'where':{'name':_0x1cbec7,'userProfileId':_0x340c32['userProfileId']},'raw':!![]})['then'](function(_0x34df8c){if(_0x34df8c&&_0x34df8c[_0xb752('0x42')]===0x0){return db['UserProfileResource']['create']({'name':_0x5a5e52[_0xb752('0x18')],'resourceId':_0x5a5e52['id'],'type':_0x34df8c[_0xb752('0x18')],'sectionId':_0x34df8c['id']},{})['then'](function(){return _0x292ff4;});}else{return _0x292ff4;}})[_0xb752('0x39')](function(_0x5b93e3){logger[_0xb752('0x16')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5b93e3);throw _0x5b93e3;});}return _0x292ff4;})[_0xb752('0x12')](respondWithResult(_0x477db4,0xc9))['catch'](handleError(_0x477db4,null));};exports[_0xb752('0x43')]=function(_0x57b60c,_0x840b90){if(_0x57b60c[_0xb752('0x3d')]['id']){delete _0x57b60c['body']['id'];}return db[_0xb752('0x20')][_0xb752('0x3b')]({'where':{'id':_0x57b60c[_0xb752('0x44')]['id']}})['then'](handleEntityNotFound(_0x840b90,null))[_0xb752('0x12')](saveUpdates(_0x57b60c[_0xb752('0x3d')],null))[_0xb752('0x12')](function(_0x3da7a7){if(!_0x3da7a7)return;var _0x5532cc=_0x3da7a7[_0xb752('0x40')]({'plain':!![]});return _0x5532cc;})[_0xb752('0x12')](function(_0x3b45c2){var _0x253b7a=new Redis(config['redis']);_0x253b7a['publish'](_0xb752('0x1b'),JSON[_0xb752('0x15')](_[_0xb752('0x2f')](_0x3b45c2,['id',_0xb752('0x18'),_0xb752('0x45')])));return _0x3b45c2;})[_0xb752('0x12')](respondWithResult(_0x840b90,null))[_0xb752('0x39')](handleError(_0x840b90,null));};exports[_0xb752('0x11')]=function(_0x5c1bf6,_0x8b14d1){return db[_0xb752('0x20')][_0xb752('0x3b')]({'where':{'id':_0x5c1bf6['params']['id']}})[_0xb752('0x12')](handleEntityNotFound(_0x8b14d1,null))['then'](removeEntity(_0x8b14d1,null))[_0xb752('0x39')](handleError(_0x8b14d1,null));};exports[_0xb752('0x46')]=function(_0x28c88e,_0x37f817){return db['SquareProject'][_0xb752('0x3b')]({'where':{'id':_0x28c88e[_0xb752('0x44')]['id']}})[_0xb752('0x12')](handleEntityNotFound(_0x37f817,null))['then'](function(_0x41dd91){if(_0x41dd91){return _0x41dd91[_0xb752('0x46')](_0x28c88e['body'][_0xb752('0x47')],_[_0xb752('0x48')](_0x28c88e[_0xb752('0x3d')],[_0xb752('0x47'),'id'])||{});}})[_0xb752('0x12')](respondWithResult(_0x37f817,null))[_0xb752('0x39')](handleError(_0x37f817,null));};exports['removeUsers']=function(_0x2521e2,_0x48bc4f){return db[_0xb752('0x20')][_0xb752('0x3b')]({'where':{'id':_0x2521e2[_0xb752('0x44')]['id']}})['then'](handleEntityNotFound(_0x48bc4f,null))[_0xb752('0x12')](function(_0x2d066b){if(_0x2d066b){return _0x2d066b['removeUsers'](_0x2521e2[_0xb752('0x24')][_0xb752('0x47')])[_0xb752('0x12')](function(){if(_[_0xb752('0x49')](_0x2521e2[_0xb752('0x24')][_0xb752('0x47')])){for(var _0x5da9df=0x0;_0x5da9df<_0x2521e2[_0xb752('0x24')]['ids']['length'];_0x5da9df+=0x1){socket[_0xb752('0x4a')]('userSquareProject:remove',{'UserId':Number(_0x2521e2[_0xb752('0x24')]['ids'][_0x5da9df]),'SquareProjectId':Number(_0x2521e2[_0xb752('0x44')]['id'])});}}else{socket[_0xb752('0x4a')](_0xb752('0x4b'),{'UserId':Number(_0x2521e2[_0xb752('0x24')][_0xb752('0x47')]),'SquareProjectId':Number(_0x2521e2[_0xb752('0x44')]['id'])});}});}})[_0xb752('0x12')](respondWithStatusCode(_0x48bc4f,null))[_0xb752('0x39')](handleError(_0x48bc4f,null));};exports[_0xb752('0x4c')]=function(_0x5c3bbc,_0x208141){var _0x5edf84={};var _0x59c977={};var _0x1fa3b0;var _0x53c348;return db[_0xb752('0x20')][_0xb752('0x4d')]({'where':{'id':_0x5c3bbc[_0xb752('0x44')]['id']}})[_0xb752('0x12')](handleEntityNotFound(_0x208141,null))[_0xb752('0x12')](function(_0x2b0da8){if(_0x2b0da8){_0x1fa3b0=_0x2b0da8;_0x59c977['model']=_[_0xb752('0x25')](db[_0xb752('0x4e')][_0xb752('0x21')]);_0x59c977[_0xb752('0x24')]=_['keys'](_0x5c3bbc[_0xb752('0x24')]);_0x59c977[_0xb752('0x26')]=_[_0xb752('0x27')](_0x59c977[_0xb752('0x28')],_0x59c977[_0xb752('0x24')]);_0x5edf84[_0xb752('0x29')]=_[_0xb752('0x27')](_0x59c977[_0xb752('0x28')],qs[_0xb752('0x2a')](_0x5c3bbc[_0xb752('0x24')][_0xb752('0x2a')]));_0x5edf84[_0xb752('0x29')]=_0x5edf84[_0xb752('0x29')][_0xb752('0x2b')]?_0x5edf84[_0xb752('0x29')]:_0x59c977[_0xb752('0x28')];_0x5edf84[_0xb752('0x4f')]=qs[_0xb752('0x2d')](_0x5c3bbc[_0xb752('0x24')]['sort']);_0x5edf84[_0xb752('0x2e')]=qs[_0xb752('0x26')](_[_0xb752('0x2f')](_0x5c3bbc[_0xb752('0x24')],_0x59c977[_0xb752('0x26')]));if(_0x5c3bbc[_0xb752('0x24')][_0xb752('0x33')]){_0x5edf84[_0xb752('0x2e')]=_[_0xb752('0x30')](_0x5edf84[_0xb752('0x2e')],{'$or':_[_0xb752('0x1f')](_0x5edf84[_0xb752('0x29')],function(_0x1a76af){var _0x418bbc={};_0x418bbc[_0x1a76af]={'$like':'%'+_0x5c3bbc['query'][_0xb752('0x33')]+'%'};return _0x418bbc;})});}_0x5edf84=_[_0xb752('0x30')]({},_0x5edf84,_0x5c3bbc[_0xb752('0x34')]);return _0x1fa3b0[_0xb752('0x4c')](_0x5edf84);}})[_0xb752('0x12')](function(_0x58a823){if(_0x58a823){_0x53c348=_0x58a823[_0xb752('0x2b')];if(!_0x5c3bbc[_0xb752('0x24')]['hasOwnProperty'](_0xb752('0x2c'))){_0x5edf84[_0xb752('0xe')]=qs[_0xb752('0xe')](_0x5c3bbc[_0xb752('0x24')][_0xb752('0xe')]);_0x5edf84['offset']=qs[_0xb752('0xc')](_0x5c3bbc[_0xb752('0x24')][_0xb752('0xc')]);}return _0x1fa3b0[_0xb752('0x4c')](_0x5edf84);}})[_0xb752('0x12')](function(_0x2bdfa2){if(_0x2bdfa2){return _0x2bdfa2?{'count':_0x53c348,'rows':_0x2bdfa2}:null;}})[_0xb752('0x12')](respondWithResult(_0x208141,null))[_0xb752('0x39')](handleError(_0x208141,null));};