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."));
            }
        }