public async Task <ActionResult> CreateOrUpdateAsync(string name, [FromBody] TelemetryDataConnector connector) { AADAuthHelper.VerifyUserAccess(this.HttpContext, _logger, true); if (connector == null) { throw new LunaBadRequestUserException(LoggingUtils.ComposePayloadNotProvidedErrorMessage(nameof(connector)), UserErrorCode.PayloadNotProvided); } if (!name.Equals(connector.Name)) { throw new LunaBadRequestUserException(LoggingUtils.ComposeNameMismatchErrorMessage(nameof(name)), UserErrorCode.NameMismatch); } if (await _telemetryDataConnectorService.ExistsAsync(name)) { await _telemetryDataConnectorService.UpdateAsync(name, connector); return(Ok(connector)); } else { await _telemetryDataConnectorService.CreateAsync(name, connector); return(CreatedAtRoute(nameof(GetAsync) + nameof(TelemetryDataConnector), new { name }, connector)); } }
/// <summary> /// Updates a TelemetryDataConnector. /// </summary> /// <param name="name">The name of the TelemetryDataConnector.</param> /// <param name="connector">The updated TelemetryDataConnector.</param> /// <returns>The updated TelemetryDataConnector.</returns> public async Task <TelemetryDataConnector> UpdateAsync(string name, TelemetryDataConnector connector) { if (connector is null) { throw new LunaBadRequestUserException(LoggingUtils.ComposePayloadNotProvidedErrorMessage(typeof(TelemetryDataConnector).Name), UserErrorCode.PayloadNotProvided); } _logger.LogInformation(LoggingUtils.ComposeUpdateResourceMessage(typeof(TelemetryDataConnector).Name, name, payload: JsonSerializer.Serialize(connector))); if (!await ExistsAsync(name)) { throw new LunaConflictUserException(LoggingUtils.ComposeNotFoundErrorMessage(typeof(TelemetryDataConnector).Name, name)); } // Get the customMeter that matches the meterName provided var connectorDb = await GetAsync(name); // Copy over the changes connectorDb.Copy(connector); // Update connector values and save changes in db _context.TelemetryDataConnectors.Update(connectorDb); await _context._SaveChangesAsync(); _logger.LogInformation(LoggingUtils.ComposeResourceUpdatedMessage(typeof(TelemetryDataConnector).Name, name)); return(connector); }
/// <summary> /// Creates a TelemetryDataConnector. /// </summary> /// <param name="offerName">The name of the TelemetryDataConnector.</param> /// <param name="connector">The TelemetryDataConnector to create.</param> /// <returns>The created TelemetryDataConnector.</returns> public async Task <TelemetryDataConnector> CreateAsync(string name, TelemetryDataConnector connector) { if (connector is null) { throw new LunaBadRequestUserException(LoggingUtils.ComposePayloadNotProvidedErrorMessage(typeof(TelemetryDataConnector).Name), UserErrorCode.PayloadNotProvided); } _logger.LogInformation(LoggingUtils.ComposeCreateResourceMessage(typeof(TelemetryDataConnector).Name, name, payload: JsonSerializer.Serialize(connector))); // Check that an TelemetryDataConnector with the same name does not already exist if (await ExistsAsync(name)) { throw new LunaConflictUserException(LoggingUtils.ComposeAlreadyExistsErrorMessage(typeof(TelemetryDataConnector).Name, name)); } _context.TelemetryDataConnectors.Add(connector); await _context._SaveChangesAsync(); _logger.LogInformation(LoggingUtils.ComposeResourceCreatedMessage(typeof(TelemetryDataConnector).Name, name)); return(connector); }