fog-controller
Version:
Fog Controller project @ iotracks.com
421 lines (337 loc) • 16.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _async = require('async');
var _async2 = _interopRequireDefault(_async);
var _changeTrackingService = require('../../services/changeTrackingService');
var _changeTrackingService2 = _interopRequireDefault(_changeTrackingService);
var _comsatService = require('../../services/comsatService');
var _comsatService2 = _interopRequireDefault(_comsatService);
var _dataTracksService = require('../../services/dataTracksService');
var _dataTracksService2 = _interopRequireDefault(_dataTracksService);
var _elementInstanceConnectionsService = require('../../services/elementInstanceConnectionsService');
var _elementInstanceConnectionsService2 = _interopRequireDefault(_elementInstanceConnectionsService);
var _elementInstancePortService = require('../../services/elementInstancePortService');
var _elementInstancePortService2 = _interopRequireDefault(_elementInstancePortService);
var _elementInstanceService = require('../../services/elementInstanceService');
var _elementInstanceService2 = _interopRequireDefault(_elementInstanceService);
var _fogService = require('../../services/fogService');
var _fogService2 = _interopRequireDefault(_fogService);
var _networkPairingService = require('../../services/networkPairingService');
var _networkPairingService2 = _interopRequireDefault(_networkPairingService);
var _routingService = require('../../services/routingService');
var _routingService2 = _interopRequireDefault(_routingService);
var _satellitePortService = require('../../services/satellitePortService');
var _satellitePortService2 = _interopRequireDefault(_satellitePortService);
var _userService = require('../../services/userService');
var _userService2 = _interopRequireDefault(_userService);
var _appUtils = require('../../utils/appUtils');
var _appUtils2 = _interopRequireDefault(_appUtils);
var _winstonLogs = require('../../utils/winstonLogs');
var _winstonLogs2 = _interopRequireDefault(_winstonLogs);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/********************************************* EndPoints ******************************************************/
/***************** Create Track User EndPoint (Post: /api/v2/authoring/user/track/create) **************/
/**
* @file trackController.js
* @author Zishan Iqbal
* @description This file includes the implementation of the status end-point
*/
var userTrackCreateEndPoint = function userTrackCreateEndPoint(req, res) {
_winstonLogs2.default.info("Endpoint hit: " + req.originalUrl);
var params = {},
userProps = {
userId: 'bodyParams.t',
setProperty: 'user'
};
params.bodyParams = req.body;
_winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams));
_async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), validateFogInstance, createDataTrack], function (err, result) {
var trackId = void 0;
if (params.dataTrack) {
trackId = params.dataTrack.id;
}
_appUtils2.default.sendResponse(res, err, 'trackId', trackId, result);
});
};
var validateFogInstance = function validateFogInstance(params, callback) {
var fogProps = {
fogId: 'bodyParams.fogInstanceId',
setProperty: 'fogData'
};
if (params.bodyParams.fogInstanceId == 'NONE') {
callback(null, params);
} else {
_fogService2.default.getFogInstance(fogProps, params, callback);
}
};
/***************** Fog Track List EndPoint (Get: /api/v2/authoring/fabric/track/list/:instanceId) **************/
var fogTrackListEndPoint = function fogTrackListEndPoint(req, res) {
_winstonLogs2.default.info("Endpoint hit: " + req.originalUrl);
var params = {},
userProps = {
userId: 'bodyParams.t',
setProperty: 'user'
},
fogInstanceProps = {
fogId: 'bodyParams.instanceId',
setProperty: 'fogData'
},
dataTrackProps = {
instanceId: 'bodyParams.instanceId',
setProperty: 'dataTracks'
};
params.bodyParams = req.params;
params.bodyParams.t = req.query.t;
_winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams));
_async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_fogService2.default.getFogInstance, fogInstanceProps), _async2.default.apply(_dataTracksService2.default.getDataTrackByInstanceId, dataTrackProps)], function (err, result) {
_appUtils2.default.sendResponse(res, err, 'tracks', params.dataTracks, result);
});
};
/***************** Fog Track Delete EndPoint (Post: /api/v2/authoring/fabric/track/delete) **************/
var fogTrackDeleteEndPoint = function fogTrackDeleteEndPoint(req, res) {
_winstonLogs2.default.info("Endpoint hit: " + req.originalUrl);
var params = {},
userProps = {
userId: 'bodyParams.t',
setProperty: 'user'
},
dataTrackProps = {
trackId: 'bodyParams.trackId',
setProperty: 'dataTrack'
},
elementInstanceProps = {
trackId: 'bodyParams.trackId',
setProperty: 'trackElementInstances'
};
params.bodyParams = req.body;
_winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams));
_async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_dataTracksService2.default.getDataTrackById, dataTrackProps), _async2.default.apply(_elementInstanceService2.default.getElementInstancesByTrackId, elementInstanceProps), deleteElementInstances, _async2.default.apply(_dataTracksService2.default.deleteTrackById, dataTrackProps)], function (err, result) {
var errMsg = 'Internal error: There was a problem deleting the track : ' + result;
_appUtils2.default.sendResponse(res, err, 'trackId', params.bodyParams.trackId, errMsg);
});
};
/********** Get Track Data for User EndPoint (Get: /api/v2/authoring/user/track/list/:userId) *******/
var getTracksForUser = function getTracksForUser(req, res) {
_winstonLogs2.default.info("Endpoint hit: " + req.originalUrl);
var params = {},
userProps = {
userId: 'bodyParams.t',
setProperty: 'user'
},
trackProps = {
userId: 'user.id',
setProperty: 'dataTracks'
};
params.bodyParams = req.params;
_winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams));
_async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_dataTracksService2.default.getTracksByUserId, trackProps)], function (err, result) {
_appUtils2.default.sendResponse(res, err, 'dataTracks', params.dataTracks, result);
});
};
/***************** Fog Track Update EndPoint (Post: /api/v2/authoring/fabric/track/update) **************/
var fogTrackUpdateEndPoint = function fogTrackUpdateEndPoint(req, res) {
_winstonLogs2.default.info("Endpoint hit: " + req.originalUrl);
var params = {},
userProps = {
userId: 'bodyParams.t',
setProperty: 'user'
},
dataTrackProps = {
trackId: 'bodyParams.trackId',
setProperty: 'dataTrack'
};
params.bodyParams = req.body;
_winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams));
_async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_dataTracksService2.default.getDataTrackById, dataTrackProps), updateSelectedTrack, updateDataTrackById], function (err, result) {
var trackId = void 0;
if (params.bodyParams) {
trackId = params.bodyParams.trackId;
}
_appUtils2.default.sendResponse(res, err, 'trackId', params.bodyParams.trackId, result);
});
};
/***************** User Track Update EndPoint (Post: /api/v2/authoring/user/track/update) **************/
var userTrackUpdateEndPoint = function userTrackUpdateEndPoint(req, res) {
_winstonLogs2.default.info("Endpoint hit: " + req.originalUrl);
var params = {},
userProps = {
userId: 'bodyParams.t',
setProperty: 'user'
},
dataTrackProps = {
trackId: 'bodyParams.trackId',
setProperty: 'dataTrack'
};
params.bodyParams = req.body;
_winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams));
_async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_dataTracksService2.default.getDataTrackById, dataTrackProps), resetSelectedActivatedAndName, findElementInstanceByTrackId, updateChangeTracking, updateSelectedTrack, updateDataTrackById], function (err, result) {
_appUtils2.default.sendResponse(res, err, 'trackId', params.bodyParams.trackId, result);
});
};
var updateSelectedTrack = function updateSelectedTrack(params, callback) {
try {
if (params.bodyParams.isSelected > 0) {
var updateProps = {
userId: 'user.id',
updatedObj: {
isSelected: 0
}
};
_dataTracksService2.default.updateDataTrackByUserId(updateProps, params, callback);
} else {
callback(null, params);
}
} catch (e) {
_winstonLogs2.default.error(e);
}
};
/***************** User Track Delete EndPoint (Post: /api/v2/authoring/user/track/delete) **************/
var userTrackDeleteEndPoint = function userTrackDeleteEndPoint(req, res) {
_winstonLogs2.default.info("Endpoint hit: " + req.originalUrl);
var params = {},
userProps = {
userId: 'bodyParams.t',
setProperty: 'user'
},
dataTrackProps = {
trackId: 'bodyParams.trackId'
},
elementInstanceProps = {
trackId: 'bodyParams.trackId',
setProperty: 'elementInstances'
},
elementInstanceDataProps = {
elementInstanceData: 'elementInstances',
field: 'uuid'
},
networkPairingProps = {
elementInstanceData: 'elementInstances',
field: 'uuid',
setProperty: 'networkPairingData'
},
satellitePortProps = {
satellitePortIds: 'networkPairingData',
field: 'satellitePortId'
},
deleteNetworkElementInstanceProps = {
elementInstanceData: 'networkPairingData',
field1: 'networkElementId1',
field2: 'networkElementId2'
},
elementInstanceConnectionProps = {
elementInstanceData: 'elementInstances',
field: 'uuid'
};
params.bodyParams = req.body;
_winstonLogs2.default.info("Parameters:" + JSON.stringify(params.bodyParams));
_async2.default.waterfall([_async2.default.apply(_userService2.default.getUser, userProps, params), _async2.default.apply(_dataTracksService2.default.getDataTrackById, dataTrackProps), _async2.default.apply(_dataTracksService2.default.deleteTrackById, dataTrackProps), _async2.default.apply(_elementInstanceService2.default.findElementInstancesByTrackId, elementInstanceProps), _async2.default.apply(_elementInstancePortService2.default.deleteElementInstancePortsByElementIds, elementInstanceDataProps), _async2.default.apply(_networkPairingService2.default.findByElementInstanceIds, networkPairingProps), _async2.default.apply(_satellitePortService2.default.deleteSatellitePortByIds, satellitePortProps), _async2.default.apply(_elementInstanceService2.default.deleteNetworkElementInstances, deleteNetworkElementInstanceProps), _async2.default.apply(_networkPairingService2.default.deleteNetworkPairingByElementId1, networkPairingProps), _async2.default.apply(_elementInstanceConnectionsService2.default.deleteElementInstanceConnection, elementInstanceDataProps), _async2.default.apply(_routingService2.default.deleteByPublishingOrDestinationElementId, elementInstanceDataProps), updateFogChangeTracking, _async2.default.apply(_elementInstanceService2.default.deleteElementInstances, elementInstanceDataProps)], function (err, result) {
var successLabelArr = ['trackId', 'elementInstances'],
successValueArr = [params.bodyParams.trackId, params.elementInstances];
_appUtils2.default.sendMultipleResponse(res, err, successLabelArr, successValueArr, result);
});
};
/************************************* Extra Functions ********************************************/
var updateFogChangeTracking = function updateFogChangeTracking(params, callback) {
var changeTrackingProps = {
elementInstanceData: 'elementInstances',
field: 'iofog_uuid',
changeObject: {
containerList: new Date().getTime()
}
};
_changeTrackingService2.default.updateChangeTrackingData(changeTrackingProps, params, callback);
};
var deleteElement = function deleteElement(params, callback) {
var deleteElementProps = {
elementId: 'bodyParams.elementId'
},
portPasscodeProps = {
elementId: 'bodyParams.elementId',
setProperty: 'portPasscode'
};
_async2.default.waterfall([_async2.default.apply(_elementInstancePortService2.default.deleteElementInstancePort, deleteElementProps, params), _async2.default.apply(_routingService2.default.deleteElementInstanceRouting, deleteElementProps), _async2.default.apply(_routingService2.default.deleteNetworkElementRouting, deleteElementProps), _async2.default.apply(_elementInstanceService2.default.deleteNetworkElementInstance, deleteElementProps), _async2.default.apply(_satellitePortService2.default.getPasscodeForNetworkElements, portPasscodeProps), _comsatService2.default.closePortsOnComsat, _async2.default.apply(_networkPairingService2.default.deleteNetworkPairing, deleteElementProps), _async2.default.apply(_satellitePortService2.default.deletePortsForNetworkElements, deleteElementProps), _async2.default.apply(_elementInstanceService2.default.deleteElementInstance, deleteElementProps)], function (err, result) {
console.log(err);
callback();
});
};
var createDataTrack = function createDataTrack(params, callback) {
var dataTrackProps = {
dataTrackObj: {
name: params.bodyParams.trackName,
instanceId: params.bodyParams.fogInstanceId,
updatedBy: params.user.id,
isSelected: 0,
isActivated: 0,
user_id: params.user.id
},
setProperty: 'dataTrack'
};
_dataTracksService2.default.createDataTrack(dataTrackProps, params, callback);
};
var resetSelectedActivatedAndName = function resetSelectedActivatedAndName(params, callback) {
if (params.bodyParams.isSelected == -1 || params.bodyParams.isSelected == '') params.bodyParams.isSelected = params.dataTrack.isSelected;
if (params.bodyParams.isActivated == -1 || params.bodyParams.isActivated == '') params.bodyParams.isActivated = params.dataTrack.isActivated;
if (!params.bodyParams.trackName) params.bodyParams.trackName = params.dataTrack.name;
callback(null, params);
};
var findElementInstanceByTrackId = function findElementInstanceByTrackId(params, callback) {
var elementInstanceProps = {
trackId: 'bodyParams.trackId',
setProperty: 'elementInstances'
};
if (params.bodyParams.isActivated != params.dataTrack.isActivated) {
_elementInstanceService2.default.findElementInstancesByTrackId(elementInstanceProps, params, callback);
} else {
callback(null, params);
}
};
var updateChangeTracking = function updateChangeTracking(params, callback) {
var changeTrackingProps = {
elementInstanceData: 'elementInstances',
field: 'iofog_uuid',
changeObject: {
containerConfig: new Date().getTime(),
containerList: new Date().getTime()
}
};
_changeTrackingService2.default.updateChangeTrackingData(changeTrackingProps, params, callback);
};
var updateDataTrackById = function updateDataTrackById(params, callback) {
var isSelected = params.bodyParams.isSelected > 0 ? 1 : 0;
var updateDataTrackProps = {
trackId: 'bodyParams.trackId',
updatedObj: {
name: params.bodyParams.trackName,
description: params.bodyParams.description,
lastUpdated: new Date(),
isSelected: isSelected,
isActivated: params.bodyParams.isActivated,
updatedBy: params.user.id
}
};
_dataTracksService2.default.updateDataTrackById(updateDataTrackProps, params, callback);
};
var deleteElementInstances = function deleteElementInstances(params, callback) {
if (params.trackElementInstances && params.trackElementInstances.length > 0) {
_async2.default.eachSeries(params.trackElementInstances, function (elementInstance, callback) {
params.bodyParams.elementId = elementInstance.uuid;
deleteElement(params, callback);
}, function (err) {
params.errormessage = JSON.stringify(err);
callback(null, params);
});
} else {
callback(null, params);
}
};
exports.default = {
fogTrackListEndPoint: fogTrackListEndPoint,
fogTrackUpdateEndPoint: fogTrackUpdateEndPoint,
fogTrackDeleteEndPoint: fogTrackDeleteEndPoint,
getTracksForUser: getTracksForUser,
userTrackCreateEndPoint: userTrackCreateEndPoint,
userTrackUpdateEndPoint: userTrackUpdateEndPoint,
userTrackDeleteEndPoint: userTrackDeleteEndPoint
};