コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
 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());
 }
コード例 #3
0
        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);
                }
            }
        }
コード例 #4
0
        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);
        }