public void AddChatInfo(ChatInfoResponse info) { if (!info.IdProfiles.Any(x => x == MyProfile.Id)) { return; } var model = GetChat(info); model.Name = info.Name; foreach (var id in info.IdProfiles) { if (!_profiles.Any(x => x.Id == id)) { var request = new ProfileInfoRequest { Id = id }; _manager.ConnectionInspector.Send(request); } if (!model.Profiles.Any(x => x.Id == id)) { model.Profiles.AddSorted(GetProfile(id), x => x.Id); } } foreach (var id in info.IdMessages) { if (!model.Messages.Any(x => x.Id == id)) { var request = new MessageInfoRequest { Id = id }; _manager.ConnectionInspector.Send(request); } } }
private ChatModel GetChat(ChatInfoResponse info) { if (!Chats.Any(x => x.Id == info.Id)) { var model = new ChatModel { Id = info.Id, Manager = _manager }; Chats.AddSorted(model, x => x.Id); return(model); } return(Chats.Where(x => x.Id == info.Id).First()); }
public override void Call(InviteProfileRequest packet, IUser sender, IServerManager manager) { if (!manager.Data.Chats.Any(x => x.Id == packet.IdChat)) { var response = new InviteProfileResponseFail { Info = InviteProfileResponseFail.FailInfo.NotFoundChat }; sender.Connector.Send(response); } else if (!manager.Data.Profiles.Any(x => x.Id == packet.Id)) { var response = new InviteProfileResponseFail { Info = InviteProfileResponseFail.FailInfo.NotFoundProfile }; sender.Connector.Send(response); } else if (manager.Data.Chats.Where(x => x.Id == packet.IdChat).First().Profiles.Any(x => x.Id == packet.Id)) { var response = new InviteProfileResponseFail { Info = InviteProfileResponseFail.FailInfo.Invited }; sender.Connector.Send(response); } else { var chat = manager.Data.Chats.Where(x => x.Id == packet.IdChat).First(); var profile = manager.Data.Profiles.Where(x => x.Id == packet.Id).First(); chat.Profiles.Add(profile); var response = new InviteProfileResponseLuck { IdChat = packet.IdChat }; sender.Connector.Send(response); var users = manager.Users.Where(x => x.IsLogIn && chat.Profiles.Any(y => y.Id == x.Id)); foreach (var user in users) { var idMessages = chat.Messages.Select(x => x.Id).ToArray(); var idProfiles = chat.Profiles.Select(x => x.Id).ToArray(); var info = new ChatInfoResponse { Id = chat.Id, Name = chat.Name, IdProfiles = idProfiles, IdMessages = idMessages }; user.Connector.Send(info); } } }
public override void Call(ChatInfoRequest packet, IUser sender, IServerManager manager) { var chat = manager.Data.Chats.Where(x => x.Id == packet.Id).First(); var idMessages = chat.Messages.Select(x => x.Id).ToArray(); var idProfiles = chat.Profiles.Select(x => x.Id).ToArray(); var p = new ChatInfoResponse { Id = chat.Id, Name = chat.Name, IdProfiles = idProfiles, IdMessages = idMessages }; sender.Connector.Send(p); }