Пример #1
0
 public User(User user)
 {
     Id = user.Id;
     Name = user.Name;
     SessionId = user.SessionId;
     MatchId = user.MatchId;
     MatchName = user.MatchName;
     ActiveUsers = user.ActiveUsers;
     Messages = user.Messages;
     user.Messages = new List<Message>();
 }
Пример #2
0
        internal User Register(User user)
        {
            var lowercaseName = user.Name.ToLower().Trim();

            User existing = _users.FirstOrDefault(x => x.Name.ToLower() == lowercaseName);
            if(existing != null){
                if (existing.Password != user.Password)
                {
                    return null;
                }

                user = existing;
            }
            else
            {
                _users.Add(user);
            }

            FindMatch(user);
            user.SessionId = Guid.NewGuid();
            user.ActiveUsers = _users.Count;

            return new User(user);
        }
Пример #3
0
 internal void Send(User user, Message message)
 {
     //TODO: verify expected recipient is current match
     User match = _users.FirstOrDefault(x => x.Id == user.MatchId);
     if (match != null)
     {
         match.Messages.Add(message);
     }
 }
Пример #4
0
        private void FindMatch(User user)
        {
            if (user.MatchId != Guid.Empty)
            {
                return;
            }

            User match = _users.Where(x => x.MatchId == Guid.Empty && x.Id != user.Id).OrderByDescending(x => x.LastActive).FirstOrDefault();
            if (match != null)
            {
                match.MatchId = user.Id;
                match.MatchName = user.Name;
            }

            user.MatchId = match != null ? match.Id : Guid.Empty;
            user.MatchName = match != null ? match.Name : null;
        }