public async Task <IActionResult> Post(ProductInputModel model) { var product = model.ToProduct(); var addResult = await _productDataRepository.AddProductAsync(product); if (addResult.IsSuccess) { return(CreatedAtAction(nameof(Get), new { id = product.Id }, ProductOutputModel.FromProduct(product))); } if (addResult.IsDuplicate) { var existingUrl = Url.Action(nameof(Get), ControllerContext.ActionDescriptor.ControllerName, new { id = product.Id }, Request.Scheme, Request.Host.ToUriComponent()); HttpContext.Response.Headers.Add("Location", existingUrl); return(StatusCode(StatusCodes.Status409Conflict)); } ModelState.AddValidationResultErrors(addResult.ValidationResult.Errors); return(ValidationProblem()); }