public ActionResult <PriceDetailsResponse> Put(PriceDetailsRequest priceDetails) { if (!ModelState.IsValid) { _logger.LogDebug("Received invalid message : ", priceDetails); return(new BadRequestObjectResult(ModelState)); } if (!_vatRateValidator.IsValidVatRate(priceDetails.VatRate)) { _logger.LogInformation("Received unallowed vat rate : ", priceDetails); return(StatusCode(StatusCodes.Status451UnavailableForLegalReasons, $"Vat rate {priceDetails.VatRate} is not a legally valid vat rate ")); } var priceDetailsDto = _mapper.Map <PriceDetailsInput>(priceDetails); try { _priceCalculationService.GetCalculatedPrice(priceDetailsDto); var response = _mapper.Map <PriceDetailsResponse>(priceDetailsDto); return(new OkObjectResult(response)); } catch (Exception ex) { _logger.LogError("Error occured while processing message", priceDetails, ex); return(StatusCode(StatusCodes.Status500InternalServerError, $"Something went wrong processing your request. If you keep seeing this... you're doing something wrong. Get in touch and we'll tell you what.")); } }