コード例 #1
0
        //users - должна быть копия! тут без локов
        private List <PlanitUser> ClearHideData(RoomSatus roomStatus, string currentUserConnectionId,
                                                List <PlanitUser> users)
        {
            if (users == null)
            {
                return(null);
            }

            users = users.Where(x => !string.IsNullOrWhiteSpace(x.UserConnectionId)).ToList();

            users.ForEach(x =>
            {
                if (x.Vote != null)
                {
                    x.HasVote = true; //todo хорошо бы вытащить из модели
                }
            });

            if (roomStatus != RoomSatus.AllCanVote)
            {
                return(users);
            }

            var user = users.FirstOrDefault(x => x.UserConnectionId == currentUserConnectionId);

            if (user == null)
            {
                return(new List <PlanitUser>());
            }

            if (!user.IsAdmin)
            {
                users.ForEach(x =>
                {
                    if (x.UserConnectionId != currentUserConnectionId)
                    {
                        x.Vote = null;
                    }
                });
            }

            return(users);
        }
コード例 #2
0
        public async Task <bool> ChangeStatusIfCan(Room room, string userConnectionIdRequest, RoomSatus newStatus)
        {
            if (room == null)
            {
                throw new SomeCustomException(Consts.PlanitPokerErrorConsts.RoomNotFound);
            }

            if (string.IsNullOrWhiteSpace(userConnectionIdRequest))
            {
                throw new SomeCustomException(Consts.PlanitPokerErrorConsts.PlanitUserNotFound);
            }

            return(await UpdateIfCan(room, userConnectionIdRequest, rm =>
            {
                rm.Status = newStatus;
                return Task.FromResult(true);
            }));
        }
コード例 #3
0
        public async Task <bool> ChangeStatusIfCan(string roomName, string userConnectionIdRequest, RoomSatus newStatus)
        {
            var room = await TryGetRoom(roomName);

            return(await ChangeStatusIfCan(room, userConnectionIdRequest, newStatus));
        }