public async Task <IActionResult> Patch(int id, [FromBody] List <PatchDto> patchDtos) { var resourceResult = resourceRepository.GetResourceById(id); if (!resourceResult.IsSuccess) { return(BadRequest()); } var resourceToValidateResult = resourceRepository.TryPatchResource(resourceResult.ResultObject, patchDtos); if (!resourceToValidateResult.IsSuccess) { return(BadRequest()); } if (!TryValidateModel(resourceToValidateResult.ResultObject)) { return(BadRequest(ModelState)); } if (resourceToValidateResult.ResultObject.CustomProperty3.Month == 5) { if (resourceToValidateResult.ResultObject.CustomProperty5 == null) { ModelState.AddModelError("CustomProperty5", "Is required if CustomProperty3 equals May 2018"); return(BadRequest(ModelState)); } } await resourceRepository.ApplyPatchAsync(resourceResult.ResultObject.Id, patchDtos); return(NoContent()); }