public override void Call(MessageInfoRequest packet, IUser sender, IServerManager manager)
        {
            var message = manager.Data.Messages.Where(x => x.Id == packet.Id).FirstOrDefault();
            var chat    = manager.Data.Chats.Where(x => x.Messages.Any(y => y.Id == packet.Id)).First();
            var p       = new MessageInfoResponse
            {
                Id        = message.Id,
                Text      = message.Text,
                IdChat    = chat.Id,
                IdProfile = message.IdProfile
            };

            sender.Connector.Send(p);
        }
        private MessageModel GetMessage(MessageInfoResponse info)
        {
            var chat = Chats.Where(x => x.Id == info.IdChat).First();

            if (!chat.Messages.Any(x => x.Id == info.Id))
            {
                var model = new MessageModel {
                    Id = info.Id, Manager = _manager
                };
                chat.Messages.AddSorted(model, x => x.Id);
                return(model);
            }
            return(chat.Messages.Where(x => x.Id == info.Id).First());
        }
        public void AddMessageInfo(MessageInfoResponse info)
        {
            if (!Chats.Any(x => x.Id == info.IdChat))
            {
                return;
            }
            var model = GetMessage(info);

            model.Text = info.Text;
            if (!_profiles.Any(x => x.Id == info.Id))
            {
                var request = new ProfileInfoRequest {
                    Id = info.IdProfile
                };
                _manager.ConnectionInspector.Send(request);
            }
            var profile = GetProfile(info.IdProfile);

            model.Profile = profile;
        }
        public override void Call(SendMessageRequest packet, IUser sender, IServerManager manager)
        {
            var ms   = manager.Data.Messages;
            var chat = manager.Data.Chats.Where(x => x.Id == packet.IdChat).First();

            var message = new Message
            {
                Id        = ms.Count() + 1,
                IdProfile = sender.Id,
                Text      = packet.Text
            };

            ms.Add(message);
            chat.Messages.Add(message);


            var response = new SendMessageResponseLuck
            {
                Id = message.Id
            };

            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 p = new MessageInfoResponse
                {
                    Id        = message.Id,
                    Text      = message.Text,
                    IdChat    = chat.Id,
                    IdProfile = message.IdProfile
                };
                user.Connector.Send(p);
            }
        }