예제 #1
0
        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());
        }