156a985ec90a59d3458f8817705161a85884e2d4
[motion2.git] / server / api / intSugarcrmAccount / intSugarcrmAccount.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 _0x6198=['statusCode','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit','undefined','count','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filters','merge','options','SugarcrmAccount','includeAll','rows','catch','show','length','include','create','body','find','params','getConfigurations','findOne','filter','nolimit','addConfiguration','Subjects','getSubjects','channel','SugarcrmConfiguration','SugarcrmField','Descriptions','assigned_user_id','created_by','date_start','duration_hours','duration_minutes','parent_id','parent_name','direction','username','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','password','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','module_fields','remove','includes','label','endsWith','values','value','getFields,\x20%s,\x20%s,\x20%s','getFields','test','Wrong\x20credentials'];(function(_0x542478,_0x2e882a){var _0x23ce8b=function(_0x42e217){while(--_0x42e217){_0x542478['push'](_0x542478['shift']());}};_0x23ce8b(++_0x2e882a);}(_0x6198,0xf3));var _0x8619=function(_0x36a5c8,_0x2bbf14){_0x36a5c8=_0x36a5c8-0x0;var _0x198753=_0x6198[_0x36a5c8];return _0x198753;};'use strict';var emlformat=require(_0x8619('0x0'));var rimraf=require(_0x8619('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8619('0x2'));var rp=require(_0x8619('0x3'));var moment=require(_0x8619('0x4'));var BPromise=require(_0x8619('0x5'));var Mustache=require(_0x8619('0x6'));var util=require(_0x8619('0x7'));var path=require('path');var sox=require(_0x8619('0x8'));var csv=require('to-csv');var ejs=require(_0x8619('0x9'));var fs=require('fs');var fs_extra=require(_0x8619('0xa'));var _=require(_0x8619('0xb'));var squel=require(_0x8619('0xc'));var crypto=require(_0x8619('0xd'));var jsforce=require(_0x8619('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x8619('0xf'));var querystring=require(_0x8619('0x10'));var Papa=require(_0x8619('0x11'));var Redis=require(_0x8619('0x12'));var authService=require(_0x8619('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x8619('0x14'));var hardwareService=require(_0x8619('0x15'));var logger=require(_0x8619('0x16'))(_0x8619('0x17'));var utils=require('../../config/utils');var config=require(_0x8619('0x18'));var licenseUtil=require(_0x8619('0x19'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xbabfde,_0x2d2167){_0x2d2167=_0x2d2167||0xcc;return function(_0x2169f9){if(_0x2169f9){return _0xbabfde[_0x8619('0x1a')](_0x2d2167);}return _0xbabfde[_0x8619('0x1b')](_0x2d2167)[_0x8619('0x1c')]();};}function respondWithResult(_0x65844b,_0x4822c9){_0x4822c9=_0x4822c9||0xc8;return function(_0x3d7e00){if(_0x3d7e00){return _0x65844b['status'](_0x4822c9)['json'](_0x3d7e00);}};}function respondWithFilteredResult(_0x34d641,_0x51d1b3){return function(_0x58ddfb){if(_0x58ddfb){var _0x403d1c=typeof _0x51d1b3[_0x8619('0x1d')]==='undefined'&&typeof _0x51d1b3[_0x8619('0x1e')]===_0x8619('0x1f');var _0x458ee5=_0x58ddfb[_0x8619('0x20')];var _0xc72cf5=_0x403d1c?0x0:_0x51d1b3['offset'];var _0x20fca7=_0x403d1c?_0x58ddfb[_0x8619('0x20')]:_0x51d1b3[_0x8619('0x1d')]+_0x51d1b3['limit'];var _0x1a39be;if(_0x20fca7>=_0x458ee5){_0x20fca7=_0x458ee5;_0x1a39be=0xc8;}else{_0x1a39be=0xce;}_0x34d641[_0x8619('0x1b')](_0x1a39be);return _0x34d641['set']('Content-Range',_0xc72cf5+'-'+_0x20fca7+'/'+_0x458ee5)[_0x8619('0x21')](_0x58ddfb);}return null;};}function patchUpdates(_0x26b797){return function(_0x45a7bb){try{jsonpatch[_0x8619('0x22')](_0x45a7bb,_0x26b797,!![]);}catch(_0x2b53e2){return BPromise[_0x8619('0x23')](_0x2b53e2);}return _0x45a7bb[_0x8619('0x24')]();};}function saveUpdates(_0xe04570,_0x12ac9e){return function(_0x5a50c6){if(_0x5a50c6){return _0x5a50c6[_0x8619('0x25')](_0xe04570)[_0x8619('0x26')](function(_0x347b42){return _0x347b42;});}return null;};}function removeEntity(_0x586c54,_0x1e5ced){return function(_0x2e1ce8){if(_0x2e1ce8){return _0x2e1ce8[_0x8619('0x27')]()[_0x8619('0x26')](function(){_0x586c54[_0x8619('0x1b')](0xcc)[_0x8619('0x1c')]();});}};}function handleEntityNotFound(_0x1b451d,_0x4ebd89){return function(_0x3f1297){if(!_0x3f1297){_0x1b451d[_0x8619('0x1a')](0x194);}return _0x3f1297;};}function handleError(_0x28df54,_0x303bb9){_0x303bb9=_0x303bb9||0x1f4;return function(_0x13a123){logger[_0x8619('0x28')](_0x13a123[_0x8619('0x29')]);if(_0x13a123['name']){delete _0x13a123[_0x8619('0x2a')];}_0x28df54['status'](_0x303bb9)[_0x8619('0x2b')](_0x13a123);};}exports[_0x8619('0x2c')]=function(_0xa85f94,_0x135865){var _0x3f1a77={},_0x4d85f9={},_0x422be9={'count':0x0,'rows':[]};var _0x2d641b=_[_0x8619('0x2d')](db['SugarcrmAccount'][_0x8619('0x2e')],function(_0x23d381){return{'name':_0x23d381[_0x8619('0x2f')],'type':_0x23d381[_0x8619('0x30')][_0x8619('0x31')]};});_0x4d85f9[_0x8619('0x32')]=_[_0x8619('0x2d')](_0x2d641b,'name');_0x4d85f9['query']=_[_0x8619('0x33')](_0xa85f94[_0x8619('0x34')]);_0x4d85f9['filters']=_[_0x8619('0x35')](_0x4d85f9['model'],_0x4d85f9[_0x8619('0x34')]);_0x3f1a77[_0x8619('0x36')]=_[_0x8619('0x35')](_0x4d85f9[_0x8619('0x32')],qs[_0x8619('0x37')](_0xa85f94[_0x8619('0x34')][_0x8619('0x37')]));_0x3f1a77['attributes']=_0x3f1a77['attributes']['length']?_0x3f1a77[_0x8619('0x36')]:_0x4d85f9[_0x8619('0x32')];if(!_0xa85f94['query'][_0x8619('0x38')]('nolimit')){_0x3f1a77['limit']=qs[_0x8619('0x1e')](_0xa85f94[_0x8619('0x34')][_0x8619('0x1e')]);_0x3f1a77[_0x8619('0x1d')]=qs[_0x8619('0x1d')](_0xa85f94[_0x8619('0x34')][_0x8619('0x1d')]);}_0x3f1a77[_0x8619('0x39')]=qs[_0x8619('0x3a')](_0xa85f94['query'][_0x8619('0x3a')]);_0x3f1a77[_0x8619('0x3b')]=qs['filters'](_[_0x8619('0x3c')](_0xa85f94['query'],_0x4d85f9[_0x8619('0x3d')]),_0x2d641b);if(_0xa85f94[_0x8619('0x34')]['filter']){_0x3f1a77[_0x8619('0x3b')]=_[_0x8619('0x3e')](_0x3f1a77[_0x8619('0x3b')],{'$or':_[_0x8619('0x2d')](_0x2d641b,function(_0x2cb935){if(_0x2cb935[_0x8619('0x30')]!=='VIRTUAL'){var _0x48bd07={};_0x48bd07[_0x2cb935['name']]={'$like':'%'+_0xa85f94[_0x8619('0x34')]['filter']+'%'};return _0x48bd07;}})});}_0x3f1a77=_[_0x8619('0x3e')]({},_0x3f1a77,_0xa85f94[_0x8619('0x3f')]);var _0x43e2b7={'where':_0x3f1a77[_0x8619('0x3b')]};return db[_0x8619('0x40')]['count'](_0x43e2b7)['then'](function(_0x583442){_0x422be9[_0x8619('0x20')]=_0x583442;if(_0xa85f94[_0x8619('0x34')][_0x8619('0x41')]){_0x3f1a77['include']=[{'all':!![]}];}return db[_0x8619('0x40')]['findAll'](_0x3f1a77);})['then'](function(_0x328ff9){_0x422be9[_0x8619('0x42')]=_0x328ff9;return _0x422be9;})[_0x8619('0x26')](respondWithFilteredResult(_0x135865,_0x3f1a77))[_0x8619('0x43')](handleError(_0x135865,null));};exports[_0x8619('0x44')]=function(_0xb258fd,_0x2745fa){var _0x311811={'raw':![],'where':{'id':_0xb258fd['params']['id']}},_0x33067a={};_0x33067a['model']=_[_0x8619('0x33')](db[_0x8619('0x40')][_0x8619('0x2e')]);_0x33067a[_0x8619('0x34')]=_['keys'](_0xb258fd['query']);_0x33067a[_0x8619('0x3d')]=_[_0x8619('0x35')](_0x33067a[_0x8619('0x32')],_0x33067a[_0x8619('0x34')]);_0x311811[_0x8619('0x36')]=_[_0x8619('0x35')](_0x33067a['model'],qs['fields'](_0xb258fd['query']['fields']));_0x311811[_0x8619('0x36')]=_0x311811['attributes'][_0x8619('0x45')]?_0x311811[_0x8619('0x36')]:_0x33067a['model'];if(_0xb258fd['query'][_0x8619('0x41')]){_0x311811[_0x8619('0x46')]=[{'all':!![]}];}_0x311811=_[_0x8619('0x3e')]({},_0x311811,_0xb258fd[_0x8619('0x3f')]);return db[_0x8619('0x40')]['find'](_0x311811)[_0x8619('0x26')](handleEntityNotFound(_0x2745fa,null))[_0x8619('0x26')](respondWithResult(_0x2745fa,null))[_0x8619('0x43')](handleError(_0x2745fa,null));};exports[_0x8619('0x47')]=function(_0x41be72,_0x5324f8){return db['SugarcrmAccount'][_0x8619('0x47')](_0x41be72['body'],{})[_0x8619('0x26')](respondWithResult(_0x5324f8,0xc9))[_0x8619('0x43')](handleError(_0x5324f8,null));};exports[_0x8619('0x25')]=function(_0x44112d,_0x3ce7fc){if(_0x44112d[_0x8619('0x48')]['id']){delete _0x44112d[_0x8619('0x48')]['id'];}return db[_0x8619('0x40')][_0x8619('0x49')]({'where':{'id':_0x44112d[_0x8619('0x4a')]['id']}})[_0x8619('0x26')](handleEntityNotFound(_0x3ce7fc,null))['then'](saveUpdates(_0x44112d[_0x8619('0x48')],null))['then'](respondWithResult(_0x3ce7fc,null))[_0x8619('0x43')](handleError(_0x3ce7fc,null));};exports[_0x8619('0x27')]=function(_0x3fb2d3,_0x23a1cb){return db['SugarcrmAccount'][_0x8619('0x49')]({'where':{'id':_0x3fb2d3['params']['id']}})[_0x8619('0x26')](handleEntityNotFound(_0x23a1cb,null))[_0x8619('0x26')](removeEntity(_0x23a1cb,null))[_0x8619('0x43')](handleError(_0x23a1cb,null));};exports[_0x8619('0x4b')]=function(_0x5e7a36,_0x4f1d59,_0x3e9427){var _0x322b37={};var _0x59558b={};var _0x36d56e;var _0x5cfeff;return db[_0x8619('0x40')][_0x8619('0x4c')]({'where':{'id':_0x5e7a36[_0x8619('0x4a')]['id']}})[_0x8619('0x26')](handleEntityNotFound(_0x4f1d59,null))['then'](function(_0x176454){if(_0x176454){_0x36d56e=_0x176454;_0x59558b['model']=_[_0x8619('0x33')](db['SugarcrmConfiguration'][_0x8619('0x2e')]);_0x59558b[_0x8619('0x34')]=_[_0x8619('0x33')](_0x5e7a36['query']);_0x59558b[_0x8619('0x3d')]=_['intersection'](_0x59558b['model'],_0x59558b[_0x8619('0x34')]);_0x322b37['attributes']=_[_0x8619('0x35')](_0x59558b['model'],qs[_0x8619('0x37')](_0x5e7a36[_0x8619('0x34')][_0x8619('0x37')]));_0x322b37[_0x8619('0x36')]=_0x322b37[_0x8619('0x36')][_0x8619('0x45')]?_0x322b37[_0x8619('0x36')]:_0x59558b[_0x8619('0x32')];_0x322b37['order']=qs[_0x8619('0x3a')](_0x5e7a36[_0x8619('0x34')]['sort']);_0x322b37[_0x8619('0x3b')]=qs['filters'](_['pick'](_0x5e7a36[_0x8619('0x34')],_0x59558b['filters']));if(_0x5e7a36[_0x8619('0x34')]['filter']){_0x322b37['where']=_['merge'](_0x322b37[_0x8619('0x3b')],{'$or':_[_0x8619('0x2d')](_0x322b37[_0x8619('0x36')],function(_0x2defcd){var _0xcb6d3e={};_0xcb6d3e[_0x2defcd]={'$like':'%'+_0x5e7a36[_0x8619('0x34')][_0x8619('0x4d')]+'%'};return _0xcb6d3e;})});}_0x322b37=_[_0x8619('0x3e')]({},_0x322b37,_0x5e7a36['options']);return _0x36d56e[_0x8619('0x4b')](_0x322b37);}})['then'](function(_0x522652){if(_0x522652){_0x5cfeff=_0x522652[_0x8619('0x45')];if(!_0x5e7a36['query'][_0x8619('0x38')](_0x8619('0x4e'))){_0x322b37['limit']=qs[_0x8619('0x1e')](_0x5e7a36[_0x8619('0x34')][_0x8619('0x1e')]);_0x322b37[_0x8619('0x1d')]=qs[_0x8619('0x1d')](_0x5e7a36['query'][_0x8619('0x1d')]);}return _0x36d56e[_0x8619('0x4b')](_0x322b37);}})[_0x8619('0x26')](function(_0x1bd64e){if(_0x1bd64e){return _0x1bd64e?{'count':_0x5cfeff,'rows':_0x1bd64e}:null;}})[_0x8619('0x26')](respondWithResult(_0x4f1d59,null))[_0x8619('0x43')](handleError(_0x4f1d59,null));};exports[_0x8619('0x4f')]=function(_0x4942f4,_0xae0009,_0x2e37c6){if(_0x4942f4[_0x8619('0x48')]['id']){delete _0x4942f4[_0x8619('0x48')]['id'];}return db[_0x8619('0x40')]['findOne']({'where':{'id':_0x4942f4[_0x8619('0x4a')]['id']}})['then'](handleEntityNotFound(_0xae0009,null))[_0x8619('0x26')](function(_0x30e352){if(_0x30e352){_0x4942f4[_0x8619('0x48')]['AccountId']=_0x30e352['id'];_0x4942f4['body'][_0x8619('0x50')]=integrations[_0x8619('0x51')](_0x4942f4[_0x8619('0x48')][_0x8619('0x52')],_0x4942f4[_0x8619('0x48')]['type']);_0x4942f4[_0x8619('0x48')]['Descriptions']=integrations['getDescriptions'](_0x4942f4[_0x8619('0x48')][_0x8619('0x52')],_0x4942f4[_0x8619('0x48')]['type']);return db[_0x8619('0x53')]['create'](_0x4942f4[_0x8619('0x48')],{'include':[{'model':db[_0x8619('0x54')],'as':_0x8619('0x50')},{'model':db[_0x8619('0x54')],'as':_0x8619('0x55')}]});}return null;})['then'](respondWithResult(_0xae0009,null))[_0x8619('0x43')](handleError(_0xae0009,null));};exports['getFields']=function(_0x5a0b96,_0x19f35f,_0x3bdf7a){var _0x20e46c='';var _0x2b12b5=['id',_0x8619('0x2a'),_0x8619('0x56'),_0x8619('0x57'),'description',_0x8619('0x58'),_0x8619('0x59'),_0x8619('0x5a'),_0x8619('0x5b'),'parent_type',_0x8619('0x5c'),_0x8619('0x5d')];return db['SugarcrmAccount'][_0x8619('0x4c')]({'where':{'id':_0x5a0b96[_0x8619('0x4a')]['id']},'attributes':['id',_0x8619('0x5e'),'password','remoteUri']})[_0x8619('0x26')](handleEntityNotFound(_0x19f35f,null))[_0x8619('0x26')](function(_0x596e48){if(_0x596e48){_0x20e46c=_0x596e48['remoteUri'];var _0x111a6b=_0x20e46c['slice'](-0x1);if(_0x111a6b==='/'){_0x20e46c=_0x20e46c[_0x8619('0x5f')](0x0,_0x20e46c[_0x8619('0x60')](_0x111a6b));}return rp({'method':_0x8619('0x61'),'uri':util[_0x8619('0x62')](_0x8619('0x63'),_0x20e46c,_0x8619('0x64')),'json':!![],'form':{'method':_0x8619('0x65'),'input_type':_0x8619('0x66'),'response_type':'JSON','rest_data':JSON[_0x8619('0x67')]({'user_auth':{'user_name':_0x596e48['username'],'password':_0x596e48[_0x8619('0x68')],'encryption':'PLAIN'},'application':_0x8619('0x69')})}});}})[_0x8619('0x26')](function(_0x16eb4a){if(_0x16eb4a&&_0x16eb4a[_0x8619('0x2a')]!==_0x8619('0x6a')&&_0x16eb4a[_0x8619('0x2a')]!==_0x8619('0x6b')){return rp({'method':_0x8619('0x61'),'uri':util['format'](_0x8619('0x63'),_0x20e46c,_0x8619('0x64')),'json':!![],'form':{'method':_0x8619('0x6c'),'input_type':_0x8619('0x66'),'response_type':_0x8619('0x66'),'rest_data':JSON[_0x8619('0x67')]({'session':_0x16eb4a['id'],'module_name':'Calls'})}})[_0x8619('0x26')](function(_0xea8837){if(_0xea8837){var _0x317750=_['values'](_0xea8837[_0x8619('0x6d')]);_[_0x8619('0x6e')](_0x317750,function(_0x569c76){return _0x2b12b5[_0x8619('0x6f')](_0x569c76[_0x8619('0x2a')]);});return{'count':_0x317750[_0x8619('0x45')],'rows':_[_0x8619('0x2d')](_0x317750,function(_0xe2846){return{'id':_0xe2846['name'],'name':_0xe2846[_0x8619('0x70')],'custom':_[_0x8619('0x71')](_0xe2846[_0x8619('0x2a')],'_c')?!![]:![],'options':_0xe2846[_0x8619('0x3f')]?_['map'](_[_0x8619('0x72')](_0xe2846[_0x8619('0x3f')]),function(_0x282157){return{'name':_0x282157[_0x8619('0x73')],'value':_0x282157['name']};}):[]};})};}})[_0x8619('0x26')](respondWithResult(_0x19f35f,null))[_0x8619('0x43')](function(_0x5e32a6){var _0x18c2d2=_0x5a0b96['query']['test']?0x1f4:_0x5e32a6['statusCode']||0x1f4;logger['error'](_0x8619('0x74'),_0x8619('0x75'),_0x18c2d2,JSON[_0x8619('0x67')](_0x5e32a6));delete _0x5e32a6[_0x8619('0x2a')];if(_0x18c2d2===0x191){_0x18c2d2=0x190;}_0x19f35f[_0x8619('0x1b')](_0x18c2d2)[_0x8619('0x2b')](_0x5a0b96[_0x8619('0x34')][_0x8619('0x76')]?{'message':_0x8619('0x77'),'statusCode':_0x5e32a6[_0x8619('0x78')]}:_0x5e32a6);});}else{var _0x53ae3d=0x1f4;_0x19f35f[_0x8619('0x1b')](_0x53ae3d)['send']({'message':_0x8619('0x77'),'statusCode':0x190});}});};