Esempio n. 1
0
        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));
            }
        }