public ModelUpdateChat UpdateChat(ModelUpdateTime time) { if (Player == null) { return(null); } lock (Player) { var res = new ModelUpdateChat() { Time = DateTime.UtcNow }; //Список игроков кого видим var ps = PartyLoginSee(); /* * string ttt = ""; * * try //////////////////////////////// * { * Loger.Log("Server test " + Repository.GetData.PlayersAll[1].Chats[0].Posts.Count + "=" + Player.Chats[0].Posts.Count); * Repository.GetData.PlayersAll[1].Chats[0].Posts.Add(new ChatPost()); * Loger.Log("Server test " + Repository.GetData.PlayersAll[1].Chats[0].Posts.Count + "=" + Player.Chats[0].Posts.Count); * } * catch { } * try * { * ttt = Player.Chats[0].Posts[0].OnlyForPlayerLogin + " - " + Player.Chats[0].Posts[0].OwnerLogin; * } * catch { } * * Loger.Log("Server UpdateChat " + Player.Public.Login + " " + time.Time.Ticks + ": " + string.Join(",", ps.ToArray()) + " | " + ttt); */ //Копируем чат без лишнего и отфильтровываем посты res.Chats = Player.Chats .Select(ct => new Chat() { Id = ct.Id, OwnerLogin = ct.OwnerLogin, Name = ct.Name, OwnerMaker = ct.OwnerMaker, PartyLogin = ct.PartyLogin, Posts = ct.Posts .Where(p => p.Time > time.Time) .Where(p => p.OnlyForPlayerLogin == null && ps.Any(pp => pp == p.OwnerLogin) || p.OnlyForPlayerLogin == ct.OwnerLogin) .ToList() }) .Where(ct => ct != null) .ToList(); //Loger.Log("Server " + res.Chats.Count); return(res); } }
private void checkGetToken(string msg, int index) { var res = _sessionClient.PostingChat(1, msg); Assert.IsTrue(res.Status == 0); var ic = new ModelUpdateTime(); var dc = _sessionClient.UpdateChat(ic); Assert.IsNotNull(dc); Assert.IsTrue(dc.Chats[0].OwnerLogin == userName); var m = dc.Chats[0].Posts[index].Message; var boolres = Guid.TryParse(m, out Guid guid); Assert.IsTrue(boolres); }
private ModelUpdateChat updateChat(ModelUpdateTime time, ServiceContext context) { lock (context.Player) { var res = new ModelUpdateChat() { Time = DateTime.UtcNow, Chats = new List <Chat>(), }; bool fullRequest = time.Time == DateTime.MinValue; var myLogin = context.Player.Public.Login; //Список игроков кого видим, а видим мы пока не построили консоль связи всех кто рядом в 10 клетках) // ( ну или мы админ админ, модератор or discord) var ps = StaticHelper.PartyLoginSee(context.Player); //Копируем чат без лишнего и отфильтровываем посты foreach (var chatPair in context.Player.Chats) { var ct = chatPair.Key; var resChat = new Chat() { Id = ct.Id, OwnerLogin = ct.OwnerLogin, Name = ct.Name, OwnerMaker = ct.OwnerMaker, Posts = new List <ChatPost>(), LastChanged = ct.LastChanged, }; //Копируем чат без лишнего и отфильтровываем посты var ix = chatPair.Value; var countOfPosts = ct.Posts.Count; var fullRequestMinCountPosts = 20; if (fullRequest && countOfPosts - ((int)ix.Value + 1) < fullRequestMinCountPosts) { ix.Value = countOfPosts - fullRequestMinCountPosts - 1; if (ix.Value < 0) { ix.Value = 0; } } for (var i = (int)ix.Value + 1; i < countOfPosts; i++) { var post = ct.Posts[i]; if (post.OnlyForPlayerLogin == null && ps.Any(pp => pp == post.OwnerLogin) || post.OnlyForPlayerLogin == myLogin) { resChat.Posts.Add(post); } } ix.Value = countOfPosts - 1; // Если с с момента последнего изменения изменился список логинов ( добавили или удалили, обновляем список) if (fullRequest || ct.LastChanged > ix.Time) { resChat.PartyLogin = ct.PartyLogin; ix.Time = ct.LastChanged; } res.Chats.Add(resChat); } return(res); } }