Ejemplo n.º 1
0
        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());
        }