public IHttpActionResult Update([FromBody] JsonPatch.JsonPatchDocument <ShiftPatchDto> patchDoc, int id) { if (patchDoc == null || !patchDoc.HasOperations) { return(BadRequest(AppSettings.PATCH_REQUEST_ERROR_MESSAGE)); } if (patchDoc.Operations .Exists(q => q.Operation != JsonPatch.JsonPatchOperationType.replace)) { return(BadRequest(AppSettings.PATCH_OPERATION_ERROR_MESSAGE)); } if (!ModelState.IsValid) { string errorMessage = new ModelStateError(_logger).OutputMessage(ModelState); return(BadRequest(errorMessage)); } var _partialUpdateDto = _shiftService.PrepareForPartialUpdate(id); if (_partialUpdateDto == null) { return(BadRequest(AppSettings.NOT_FOUND_ERROR_MESSAGE)); } try { patchDoc.ApplyUpdatesTo(_partialUpdateDto.PatchDto); _shiftService.ApplyPartialUpdate(_partialUpdateDto); } catch (LogicalException ex) { return(BadRequest(ex.Message)); } catch (JsonPatch.JsonPatchException ex) { return(BadRequest(ex.Message)); } catch { return(BadRequest(AppSettings.INTERNAL_SERVER_ERROR_MESSAGE)); } return(Ok()); }