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>(); }
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); }
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); } }
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; }