public MappingModel AddMapping(MappingModel model) { if (model == null) throw new ArgumentNullException("model"); Mapping mapToReturn; using (var unitOfWork = new UnitOfWork(_connectionString)) { bool userAuthorised = UserAuthorizedToAccessSuite(unitOfWork, model.UserId, model.SuiteId, new[] {RoleType.Admin}); if (!userAuthorised) throw new UnauthorizedUserException( "User does not have access or sufficient privileges for this action to suite: " + model.SuiteId); if ( !unitOfWork.Context.Parameters.Any( x => x.ParameterId == model.ParameterId && x.SuiteId == model.SuiteId)) throw new InvalidOperationException( "Mismatch between parameter id and suite id. Can not add mapping!"); if (!unitOfWork.Context.Servers.Any(x => x.ServerId == model.ServerId && x.SuiteId == model.SuiteId)) throw new InvalidOperationException("Mismatch between server id and suite id. Can not add mapping!"); if (!unitOfWork.Context.Regions.Any(x => x.RegionId == model.RegionId && x.SuiteId == model.SuiteId)) throw new InvalidOperationException("Mismatch between region id and suite id. Can not add mapping!"); if ( !unitOfWork.Context.Environments.Any( x => x.EnvironmentId == model.EnvironmentId && x.SuiteId == model.SuiteId)) throw new InvalidOperationException( "Mismatch between environment id and suite id. Can not add mapping!"); if ( !unitOfWork.Context.Applications.Any( x => x.ApplicationId == model.ApplicationId && x.SuiteId == model.SuiteId)) throw new InvalidOperationException( "Mismatch between application id and suite id. Can not add mapping!"); mapToReturn = model.ToNewDbObject(); unitOfWork.Add(mapToReturn); } if (mapToReturn != null) return mapToReturn.ToModel(); return null; }
public CommandOutput OnExecute(CommandInput arguments) { var output = new CommandOutput {PostAction = CommandOutput.PostCommandAction.None}; long parameterId = long.Parse(arguments["pid"]); long suiteId = long.Parse(arguments["sid"]); long serverId = -1, appId = -1, regionId = -1, environmentId = -1; long userId = arguments.GetUserId(); var suite = CurrentHostContext.Default.Provider.ConfigurationStore.GetSuite(userId, suiteId); var parameter = CurrentHostContext.Default.Provider.ConfigurationStore.GetParameter(userId, parameterId); if (parameter.SuiteId != suite.SuiteId) { output.DisplayMessage = "No such parameter id (pid) exists for suite id:" + suite.SuiteId; output.MessageType = CommandOutput.DisplayMessageType.Error; return output; } if (!long.TryParse(arguments["srid"], out serverId) && suite.Servers.Any(x => x.ServerName == "*")) serverId = suite.Servers.First(x => x.ServerName == "*").ServerId.GetValueOrDefault(); if (!long.TryParse(arguments["aid"], out appId) && suite.Applications.Any(x => x.ApplicationName == "*")) appId = suite.Applications.First(x => x.ApplicationName == "*").ApplicationId.GetValueOrDefault(); if (!long.TryParse(arguments["rid"], out regionId) && suite.Regions.Any(x => x.RegionName == "*")) regionId = suite.Regions.First(x => x.RegionName == "*").RegionId.GetValueOrDefault(); if (!long.TryParse(arguments["eid"], out environmentId) && suite.Environments.Any(x => x.EnvironmentName == "*" && x.EnvironmentType == EnvironmentType.PROD)) environmentId = suite.Environments.First(x => x.EnvironmentName == "*" && x.EnvironmentType == EnvironmentType.PROD) .EnvironmentId.GetValueOrDefault(); if (serverId == 0 || appId == 0 || regionId == 0 || environmentId == 0) { output.DisplayMessage = "Invalid Map Parameters. Please try providing optional fields"; output.MessageType = CommandOutput.DisplayMessageType.Error; output.PostAction = CommandOutput.PostCommandAction.ShowCommandHelp; return output; } var model = new MappingModel { ApplicationId = appId, EnvironmentId = environmentId, ParameterId = parameterId, RegionId = regionId, ServerId = serverId, SuiteId = suiteId, UserId = userId }; MappingModel mapping = CurrentHostContext.Default.Provider.ConfigurationStore.AddMapping(model); output.Data = mapping; output.DisplayMessage = "Success"; return output; }