public async Task <ActionResult> UpdateGroupRoom(int roomId, [FromBody] JsonPatchDocument <GroupRoomUpdateModel> patchDoc) { var userId = _identityService.GetUserIdentity(); var roomResult = await _roomsService.GetAsync(roomId); if (roomResult.Succeeded) { return(BadRequest(roomResult.Errors)); } var room = roomResult.Data; if (room.Type == RoomType.Private) { var errors = new[] { "Unable to update private room." }; return(BadRequest(errors)); } var groupRoom = room as GroupRoomModel; var updateModel = GroupRoomUpdateModel.From(groupRoom); patchDoc.ApplyTo(updateModel); TryValidateModel(updateModel); if (!ModelState.IsValid) { var validationErrors = ModelState .Keys .SelectMany(k => ModelState[k].Errors) .Select(e => e.ErrorMessage) .ToArray(); return(BadRequest(validationErrors)); } var updateResult = await _groupRoomsService.UpdateAsync(roomId, updateModel, userId); if (!updateResult.Succeeded) { return(BadRequest(updateResult.Errors)); } return(Ok()); }