8c25e485b363609dcf366f773da90f89ec985c30
[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 _0x6a94=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','end','status','json','offset','limit','count','set','Content-Range','apply','reject','then','destroy','sendStatus','error','name','send','index','map','SugarcrmAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','params','options','body','update','find','getConfigurations','findOne','SugarcrmConfiguration','order','hasOwnProperty','nolimit','addConfiguration','Subjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','duration_hours','duration_minutes','parent_id','parent_type','password','remoteUri','substring','%s%s','/service/v4_1/rest.php','login','JSON','username','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','POST','format','get_module_fields','Calls','module_fields','remove','includes','values','value','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','fast-json-patch','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x284b45,_0x381b4b){var _0x34bda6=function(_0x3b1aae){while(--_0x3b1aae){_0x284b45['push'](_0x284b45['shift']());}};_0x34bda6(++_0x381b4b);}(_0x6a94,0xd9));var _0x46a9=function(_0xea2cb4,_0xfb5e72){_0xea2cb4=_0xea2cb4-0x0;var _0x5b9521=_0x6a94[_0xea2cb4];return _0x5b9521;};'use strict';var emlformat=require(_0x46a9('0x0'));var rimraf=require(_0x46a9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x46a9('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x46a9('0x3'));var util=require('util');var path=require('path');var sox=require(_0x46a9('0x4'));var csv=require(_0x46a9('0x5'));var ejs=require(_0x46a9('0x6'));var fs=require('fs');var fs_extra=require(_0x46a9('0x7'));var _=require(_0x46a9('0x8'));var squel=require(_0x46a9('0x9'));var crypto=require(_0x46a9('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x46a9('0x5'));var querystring=require(_0x46a9('0xb'));var Papa=require(_0x46a9('0xc'));var Redis=require(_0x46a9('0xd'));var authService=require(_0x46a9('0xe'));var qs=require(_0x46a9('0xf'));var as=require(_0x46a9('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x46a9('0x11'))(_0x46a9('0x12'));var utils=require(_0x46a9('0x13'));var config=require(_0x46a9('0x14'));var licenseUtil=require(_0x46a9('0x15'));var db=require(_0x46a9('0x16'))['db'];var integrations=require(_0x46a9('0x17'));function respondWithStatusCode(_0x34bc14,_0x4f9804){_0x4f9804=_0x4f9804||0xcc;return function(_0x498fdb){if(_0x498fdb){return _0x34bc14['sendStatus'](_0x4f9804);}return _0x34bc14['status'](_0x4f9804)[_0x46a9('0x18')]();};}function respondWithResult(_0x3497a0,_0xe36457){_0xe36457=_0xe36457||0xc8;return function(_0x56253f){if(_0x56253f){return _0x3497a0[_0x46a9('0x19')](_0xe36457)[_0x46a9('0x1a')](_0x56253f);}};}function respondWithFilteredResult(_0x2dbcff,_0x18a6ee){return function(_0x4ddeb6){if(_0x4ddeb6){var _0x25ed69=typeof _0x18a6ee[_0x46a9('0x1b')]==='undefined'&&typeof _0x18a6ee[_0x46a9('0x1c')]==='undefined';var _0x55b844=_0x4ddeb6['count'];var _0x4849ae=_0x25ed69?0x0:_0x18a6ee['offset'];var _0xffe9fa=_0x25ed69?_0x4ddeb6[_0x46a9('0x1d')]:_0x18a6ee[_0x46a9('0x1b')]+_0x18a6ee['limit'];var _0x23cbbb;if(_0xffe9fa>=_0x55b844){_0xffe9fa=_0x55b844;_0x23cbbb=0xc8;}else{_0x23cbbb=0xce;}_0x2dbcff[_0x46a9('0x19')](_0x23cbbb);return _0x2dbcff[_0x46a9('0x1e')](_0x46a9('0x1f'),_0x4849ae+'-'+_0xffe9fa+'/'+_0x55b844)[_0x46a9('0x1a')](_0x4ddeb6);}return null;};}function patchUpdates(_0x5b2957){return function(_0x24bd9e){try{jsonpatch[_0x46a9('0x20')](_0x24bd9e,_0x5b2957,!![]);}catch(_0xe8393b){return BPromise[_0x46a9('0x21')](_0xe8393b);}return _0x24bd9e['save']();};}function saveUpdates(_0x1f1907,_0x2f0378){return function(_0x29ed5d){if(_0x29ed5d){return _0x29ed5d['update'](_0x1f1907)[_0x46a9('0x22')](function(_0x512e36){return _0x512e36;});}return null;};}function removeEntity(_0x53a54c,_0x783b2e){return function(_0x347cf1){if(_0x347cf1){return _0x347cf1[_0x46a9('0x23')]()[_0x46a9('0x22')](function(){_0x53a54c[_0x46a9('0x19')](0xcc)[_0x46a9('0x18')]();});}};}function handleEntityNotFound(_0x3d9b6b,_0x4a92b7){return function(_0x54385f){if(!_0x54385f){_0x3d9b6b[_0x46a9('0x24')](0x194);}return _0x54385f;};}function handleError(_0x43d980,_0x14f404){_0x14f404=_0x14f404||0x1f4;return function(_0x283695){logger[_0x46a9('0x25')](_0x283695['stack']);if(_0x283695[_0x46a9('0x26')]){delete _0x283695[_0x46a9('0x26')];}_0x43d980[_0x46a9('0x19')](_0x14f404)[_0x46a9('0x27')](_0x283695);};}exports[_0x46a9('0x28')]=function(_0x91dbc5,_0x2b870f){var _0x94bcde={},_0x545a27={},_0x2629c6={'count':0x0,'rows':[]};var _0x5420fb=_[_0x46a9('0x29')](db[_0x46a9('0x2a')][_0x46a9('0x2b')],function(_0x56e671){return{'name':_0x56e671[_0x46a9('0x2c')],'type':_0x56e671[_0x46a9('0x2d')][_0x46a9('0x2e')]};});_0x545a27[_0x46a9('0x2f')]=_[_0x46a9('0x29')](_0x5420fb,_0x46a9('0x26'));_0x545a27['query']=_[_0x46a9('0x30')](_0x91dbc5[_0x46a9('0x31')]);_0x545a27[_0x46a9('0x32')]=_[_0x46a9('0x33')](_0x545a27[_0x46a9('0x2f')],_0x545a27[_0x46a9('0x31')]);_0x94bcde[_0x46a9('0x34')]=_[_0x46a9('0x33')](_0x545a27['model'],qs[_0x46a9('0x35')](_0x91dbc5[_0x46a9('0x31')]['fields']));_0x94bcde[_0x46a9('0x34')]=_0x94bcde[_0x46a9('0x34')][_0x46a9('0x36')]?_0x94bcde['attributes']:_0x545a27[_0x46a9('0x2f')];if(!_0x91dbc5[_0x46a9('0x31')]['hasOwnProperty']('nolimit')){_0x94bcde['limit']=qs[_0x46a9('0x1c')](_0x91dbc5[_0x46a9('0x31')][_0x46a9('0x1c')]);_0x94bcde[_0x46a9('0x1b')]=qs[_0x46a9('0x1b')](_0x91dbc5['query']['offset']);}_0x94bcde['order']=qs['sort'](_0x91dbc5[_0x46a9('0x31')][_0x46a9('0x37')]);_0x94bcde[_0x46a9('0x38')]=qs[_0x46a9('0x32')](_[_0x46a9('0x39')](_0x91dbc5[_0x46a9('0x31')],_0x545a27['filters']),_0x5420fb);if(_0x91dbc5[_0x46a9('0x31')][_0x46a9('0x3a')]){_0x94bcde[_0x46a9('0x38')]=_[_0x46a9('0x3b')](_0x94bcde[_0x46a9('0x38')],{'$or':_['map'](_0x5420fb,function(_0x27709){if(_0x27709['type']!==_0x46a9('0x3c')){var _0x42c888={};_0x42c888[_0x27709[_0x46a9('0x26')]]={'$like':'%'+_0x91dbc5[_0x46a9('0x31')][_0x46a9('0x3a')]+'%'};return _0x42c888;}})});}_0x94bcde=_[_0x46a9('0x3b')]({},_0x94bcde,_0x91dbc5['options']);var _0x1170ca={'where':_0x94bcde[_0x46a9('0x38')]};return db['SugarcrmAccount']['count'](_0x1170ca)['then'](function(_0x170d4f){_0x2629c6['count']=_0x170d4f;if(_0x91dbc5[_0x46a9('0x31')][_0x46a9('0x3d')]){_0x94bcde['include']=[{'all':!![]}];}return db[_0x46a9('0x2a')][_0x46a9('0x3e')](_0x94bcde);})[_0x46a9('0x22')](function(_0x4ed8e9){_0x2629c6[_0x46a9('0x3f')]=_0x4ed8e9;return _0x2629c6;})['then'](respondWithFilteredResult(_0x2b870f,_0x94bcde))[_0x46a9('0x40')](handleError(_0x2b870f,null));};exports['show']=function(_0xd583a0,_0xd9d255){var _0x11865a={'raw':![],'where':{'id':_0xd583a0[_0x46a9('0x41')]['id']}},_0x3420e8={};_0x3420e8['model']=_[_0x46a9('0x30')](db[_0x46a9('0x2a')]['rawAttributes']);_0x3420e8[_0x46a9('0x31')]=_[_0x46a9('0x30')](_0xd583a0[_0x46a9('0x31')]);_0x3420e8[_0x46a9('0x32')]=_[_0x46a9('0x33')](_0x3420e8['model'],_0x3420e8[_0x46a9('0x31')]);_0x11865a[_0x46a9('0x34')]=_[_0x46a9('0x33')](_0x3420e8[_0x46a9('0x2f')],qs[_0x46a9('0x35')](_0xd583a0[_0x46a9('0x31')]['fields']));_0x11865a['attributes']=_0x11865a[_0x46a9('0x34')][_0x46a9('0x36')]?_0x11865a[_0x46a9('0x34')]:_0x3420e8['model'];if(_0xd583a0['query'][_0x46a9('0x3d')]){_0x11865a['include']=[{'all':!![]}];}_0x11865a=_[_0x46a9('0x3b')]({},_0x11865a,_0xd583a0[_0x46a9('0x42')]);return db['SugarcrmAccount']['find'](_0x11865a)[_0x46a9('0x22')](handleEntityNotFound(_0xd9d255,null))[_0x46a9('0x22')](respondWithResult(_0xd9d255,null))[_0x46a9('0x40')](handleError(_0xd9d255,null));};exports['create']=function(_0x4a8807,_0x109c4c){return db[_0x46a9('0x2a')]['create'](_0x4a8807[_0x46a9('0x43')],{})[_0x46a9('0x22')](respondWithResult(_0x109c4c,0xc9))[_0x46a9('0x40')](handleError(_0x109c4c,null));};exports[_0x46a9('0x44')]=function(_0x1ca4a1,_0x4c52fb){if(_0x1ca4a1['body']['id']){delete _0x1ca4a1[_0x46a9('0x43')]['id'];}return db[_0x46a9('0x2a')][_0x46a9('0x45')]({'where':{'id':_0x1ca4a1[_0x46a9('0x41')]['id']}})[_0x46a9('0x22')](handleEntityNotFound(_0x4c52fb,null))[_0x46a9('0x22')](saveUpdates(_0x1ca4a1['body'],null))['then'](respondWithResult(_0x4c52fb,null))['catch'](handleError(_0x4c52fb,null));};exports[_0x46a9('0x23')]=function(_0x376960,_0x2c1679){return db[_0x46a9('0x2a')][_0x46a9('0x45')]({'where':{'id':_0x376960[_0x46a9('0x41')]['id']}})['then'](handleEntityNotFound(_0x2c1679,null))[_0x46a9('0x22')](removeEntity(_0x2c1679,null))[_0x46a9('0x40')](handleError(_0x2c1679,null));};exports[_0x46a9('0x46')]=function(_0x2558e0,_0x386614,_0x2a656b){var _0x286f91={};var _0x21dd61={};var _0x417ff0;var _0x5c74fc;return db[_0x46a9('0x2a')][_0x46a9('0x47')]({'where':{'id':_0x2558e0[_0x46a9('0x41')]['id']}})[_0x46a9('0x22')](handleEntityNotFound(_0x386614,null))[_0x46a9('0x22')](function(_0x2a97c0){if(_0x2a97c0){_0x417ff0=_0x2a97c0;_0x21dd61[_0x46a9('0x2f')]=_['keys'](db[_0x46a9('0x48')][_0x46a9('0x2b')]);_0x21dd61[_0x46a9('0x31')]=_[_0x46a9('0x30')](_0x2558e0[_0x46a9('0x31')]);_0x21dd61[_0x46a9('0x32')]=_['intersection'](_0x21dd61['model'],_0x21dd61[_0x46a9('0x31')]);_0x286f91[_0x46a9('0x34')]=_[_0x46a9('0x33')](_0x21dd61[_0x46a9('0x2f')],qs[_0x46a9('0x35')](_0x2558e0[_0x46a9('0x31')][_0x46a9('0x35')]));_0x286f91['attributes']=_0x286f91['attributes'][_0x46a9('0x36')]?_0x286f91[_0x46a9('0x34')]:_0x21dd61[_0x46a9('0x2f')];_0x286f91[_0x46a9('0x49')]=qs[_0x46a9('0x37')](_0x2558e0[_0x46a9('0x31')]['sort']);_0x286f91[_0x46a9('0x38')]=qs['filters'](_[_0x46a9('0x39')](_0x2558e0[_0x46a9('0x31')],_0x21dd61[_0x46a9('0x32')]));if(_0x2558e0['query']['filter']){_0x286f91[_0x46a9('0x38')]=_[_0x46a9('0x3b')](_0x286f91[_0x46a9('0x38')],{'$or':_[_0x46a9('0x29')](_0x286f91['attributes'],function(_0xca29a5){var _0x5382db={};_0x5382db[_0xca29a5]={'$like':'%'+_0x2558e0['query'][_0x46a9('0x3a')]+'%'};return _0x5382db;})});}_0x286f91=_[_0x46a9('0x3b')]({},_0x286f91,_0x2558e0[_0x46a9('0x42')]);return _0x417ff0[_0x46a9('0x46')](_0x286f91);}})[_0x46a9('0x22')](function(_0x1cfecb){if(_0x1cfecb){_0x5c74fc=_0x1cfecb[_0x46a9('0x36')];if(!_0x2558e0[_0x46a9('0x31')][_0x46a9('0x4a')](_0x46a9('0x4b'))){_0x286f91[_0x46a9('0x1c')]=qs[_0x46a9('0x1c')](_0x2558e0[_0x46a9('0x31')]['limit']);_0x286f91[_0x46a9('0x1b')]=qs[_0x46a9('0x1b')](_0x2558e0[_0x46a9('0x31')][_0x46a9('0x1b')]);}return _0x417ff0[_0x46a9('0x46')](_0x286f91);}})[_0x46a9('0x22')](function(_0x46d6d3){if(_0x46d6d3){return _0x46d6d3?{'count':_0x5c74fc,'rows':_0x46d6d3}:null;}})[_0x46a9('0x22')](respondWithResult(_0x386614,null))['catch'](handleError(_0x386614,null));};exports[_0x46a9('0x4c')]=function(_0x416a46,_0x1da0b4,_0x5ae98a){if(_0x416a46[_0x46a9('0x43')]['id']){delete _0x416a46[_0x46a9('0x43')]['id'];}return db[_0x46a9('0x2a')]['findOne']({'where':{'id':_0x416a46[_0x46a9('0x41')]['id']}})[_0x46a9('0x22')](handleEntityNotFound(_0x1da0b4,null))[_0x46a9('0x22')](function(_0x42c889){if(_0x42c889){_0x416a46[_0x46a9('0x43')]['AccountId']=_0x42c889['id'];_0x416a46['body'][_0x46a9('0x4d')]=integrations['getSubjects'](_0x416a46[_0x46a9('0x43')][_0x46a9('0x4e')],_0x416a46[_0x46a9('0x43')][_0x46a9('0x2d')]);_0x416a46[_0x46a9('0x43')][_0x46a9('0x4f')]=integrations[_0x46a9('0x50')](_0x416a46[_0x46a9('0x43')][_0x46a9('0x4e')],_0x416a46[_0x46a9('0x43')][_0x46a9('0x2d')]);return db[_0x46a9('0x48')]['create'](_0x416a46[_0x46a9('0x43')],{'include':[{'model':db[_0x46a9('0x51')],'as':'Subjects'},{'model':db[_0x46a9('0x51')],'as':'Descriptions'}]});}return null;})[_0x46a9('0x22')](respondWithResult(_0x1da0b4,null))[_0x46a9('0x40')](handleError(_0x1da0b4,null));};exports[_0x46a9('0x52')]=function(_0x1c7597,_0x56f8a1,_0x3ca6fe){var _0x2b6476='';var _0x142f13=['id',_0x46a9('0x26'),_0x46a9('0x53'),_0x46a9('0x54'),_0x46a9('0x55'),_0x46a9('0x56'),_0x46a9('0x57'),_0x46a9('0x58'),_0x46a9('0x59'),_0x46a9('0x5a'),'parent_name','direction'];return db[_0x46a9('0x2a')][_0x46a9('0x47')]({'where':{'id':_0x1c7597[_0x46a9('0x41')]['id']},'attributes':['id','username',_0x46a9('0x5b'),_0x46a9('0x5c')]})[_0x46a9('0x22')](handleEntityNotFound(_0x56f8a1,null))[_0x46a9('0x22')](function(_0x33e8eb){if(_0x33e8eb){_0x2b6476=_0x33e8eb[_0x46a9('0x5c')];var _0x30be57=_0x2b6476['slice'](-0x1);if(_0x30be57==='/'){_0x2b6476=_0x2b6476[_0x46a9('0x5d')](0x0,_0x2b6476['lastIndexOf'](_0x30be57));}return rp({'method':'POST','uri':util['format'](_0x46a9('0x5e'),_0x2b6476,_0x46a9('0x5f')),'json':!![],'form':{'method':_0x46a9('0x60'),'input_type':_0x46a9('0x61'),'response_type':'JSON','rest_data':JSON['stringify']({'user_auth':{'user_name':_0x33e8eb[_0x46a9('0x62')],'password':_0x33e8eb[_0x46a9('0x5b')],'encryption':_0x46a9('0x63')},'application':_0x46a9('0x64')})}});}})[_0x46a9('0x22')](function(_0x4dfe46){if(_0x4dfe46&&_0x4dfe46[_0x46a9('0x26')]!==_0x46a9('0x65')&&_0x4dfe46[_0x46a9('0x26')]!==_0x46a9('0x66')){return rp({'method':_0x46a9('0x67'),'uri':util[_0x46a9('0x68')]('%s%s',_0x2b6476,_0x46a9('0x5f')),'json':!![],'form':{'method':_0x46a9('0x69'),'input_type':_0x46a9('0x61'),'response_type':_0x46a9('0x61'),'rest_data':JSON['stringify']({'session':_0x4dfe46['id'],'module_name':_0x46a9('0x6a')})}})['then'](function(_0x3ee2f0){if(_0x3ee2f0){var _0x52dcde=_['values'](_0x3ee2f0[_0x46a9('0x6b')]);_[_0x46a9('0x6c')](_0x52dcde,function(_0xa8d18){return _0x142f13[_0x46a9('0x6d')](_0xa8d18[_0x46a9('0x26')]);});return{'count':_0x52dcde[_0x46a9('0x36')],'rows':_[_0x46a9('0x29')](_0x52dcde,function(_0x55b44e){return{'id':_0x55b44e[_0x46a9('0x26')],'name':_0x55b44e['label'],'custom':_['endsWith'](_0x55b44e[_0x46a9('0x26')],'_c')?!![]:![],'options':_0x55b44e[_0x46a9('0x42')]?_[_0x46a9('0x29')](_[_0x46a9('0x6e')](_0x55b44e[_0x46a9('0x42')]),function(_0x4d4428){return{'name':_0x4d4428[_0x46a9('0x6f')],'value':_0x4d4428[_0x46a9('0x26')]};}):[]};})};}})[_0x46a9('0x22')](respondWithResult(_0x56f8a1,null))['catch'](function(_0xf68b74){var _0x2e6179=_0x1c7597[_0x46a9('0x31')][_0x46a9('0x70')]?0x1f4:_0xf68b74['statusCode']||0x1f4;logger['error'](_0x46a9('0x71'),_0x46a9('0x52'),_0x2e6179,JSON[_0x46a9('0x72')](_0xf68b74));delete _0xf68b74[_0x46a9('0x26')];if(_0x2e6179===0x191){_0x2e6179=0x190;}_0x56f8a1['status'](_0x2e6179)['send'](_0x1c7597[_0x46a9('0x31')][_0x46a9('0x70')]?{'message':_0x46a9('0x73'),'statusCode':_0xf68b74[_0x46a9('0x74')]}:_0xf68b74);});}else{var _0x21ccb5=0x1f4;_0x56f8a1[_0x46a9('0x19')](_0x21ccb5)[_0x46a9('0x27')]({'message':_0x46a9('0x73'),'statusCode':0x190});}});};