public async Task <ActionResult> CreateOrUpdateAsync(string offerName, string parameterName, [FromBody] OfferParameter offerParameter) { AADAuthHelper.VerifyUserAccess(this.HttpContext, _logger, true); if (offerParameter == null) { throw new LunaBadRequestUserException(LoggingUtils.ComposePayloadNotProvidedErrorMessage(nameof(offerParameter)), UserErrorCode.PayloadNotProvided); } if (!parameterName.Equals(offerParameter.ParameterName)) { throw new LunaBadRequestUserException(LoggingUtils.ComposeNameMismatchErrorMessage(typeof(OfferParameter).Name), UserErrorCode.NameMismatch); } if (await _offerParameterService.ExistsAsync(offerName, parameterName)) { _logger.LogInformation($"Update offer parameter {parameterName} in offer {offerName} with payload {JsonSerializer.Serialize(offerParameter)}."); await _offerParameterService.UpdateAsync(offerName, parameterName, offerParameter); return(Ok(offerParameter)); } else { _logger.LogInformation($"Create offer parameter {parameterName} in offer {offerName} with payload {JsonSerializer.Serialize(offerParameter)}."); await _offerParameterService.CreateAsync(offerName, offerParameter); return(CreatedAtRoute(nameof(GetAsync) + nameof(OfferParameter), new { offerName = offerName, parameterName = offerParameter.ParameterName }, offerParameter)); } }