Example #1
0
        //查询好友 MyUserName, Condition
        public List <User> SearchFriends(string MyUserName, string condition)
        {
            List <Friends> friendList = FriendsHelper.SelectMore(new Document("UserID", MyUserName));
            List <User>    list       = UserHelper.SelectALl();

            return(list);
        }
Example #2
0
        public static string AddFriend(User creator, long userId, IMessageSenderService sender)
        {
            if (creator.Id == userId)
            {
                return("❌ Отправить запрос самому себе невозможно.");
            }
            if (creator.Friends != null)
            {
                var friends = FriendsHelper.GetFriends(creator.Friends);
                if (friends.Any(id => id == userId))
                {
                    return("❌ Этот пользователь уже у Вас в списке друзей");
                }
            }

            var  helper    = new UsersHelper();
            var  user      = Main.Api.Users.GetUserFromId(userId);
            bool isRequest = false;

            if (sender.Platform == MessengerPlatform.Vkontakte)
            {
                if (user.VkId == 0)
                {
                    return("❌ Этот пользователь зарегестрирован через telegram. Добавление в друзья между платформами пока что недоступны.");
                }
                isRequest = true;
                sender.Text($"🏁 Пользователь {helper.GetLink(creator)} отправил Вам запрос в друзья." +
                            $"\n ❓ Чтобы принять или отклонить запрос, откройте меню телефона в разделе запросы в друзья.", user.VkId);
            }
            else
            {
                if (user.TgId == 0)
                {
                    return("❌ Этот пользователь зарегистрирован через ВКонтакте. Добавление в друзья между платформами пока что недоступны.");
                }
                isRequest = true;
                sender.Text($"🏁 Пользователь {helper.GetLink(creator)} приглашает Вас на гонку!" +
                            $"\n ❓ Чтобы принять или отклонить запрос, откройте меню телефона в разделе запросы в друзья.", user.TgId);
            }

            if (isRequest)
            {
                using (var db = new Database())
                {
                    var usr = db.Users.Single(u => u.Id == userId);
                    if (usr.FriendsRequests is null)
                    {
                        usr.FriendsRequests = "";
                    }
                    usr.FriendsRequests += $"{creator.Id};";
                    db.SaveChanges();
                }
            }



            return("✔ Запрос на дружбу отправлен.");
        }
        private List <VkCommands.Data.IData> searchPeople(ISearchProfile sProfile,
                                                          int currentDepth, ISearchSubscriber subscriber)
        {
            List <IData> tergetUsers = new List <IData>();
            Friends      friends     = FriendsHelper.getFriends(CoreId);
            User         user        = null;
            bool         isTarget    = true;

            if (OnFirstStep)
            {
                for (int i = 0; i < friends.Users.Count; i++)
                {
                    if (isStopped)
                    {
                        return(tergetUsers);
                    }

                    user     = friends.Users[i];
                    isTarget = detectTargetUser(sProfile, user);
                    if (isTarget)
                    {
                        if (sProfile.CheckFriends)
                        {
                            if (!FriendsHelper.areFriends(user.Id,
                                                          AuthFactory.getCurrentAuth().InitialUser).GetAreFriends)
                            {
                                tergetUsers.Add(user);
                                subscriber.onItemFoundEvent(new ItemUpdatedEvent(user.Id));
                            }
                        }
                        else
                        {
                            tergetUsers.Add(user);
                            subscriber.onItemFoundEvent(new ItemUpdatedEvent(user.Id));
                        }
                    }
                    if (currentDepth < Depth)
                    {
                        //if (sProfile.Criteria[NextIterationCriteria].Equals(user.NextIterationCriteria))
                        //{
                        CoreId = user.Id;
                        tergetUsers.AddRange(searchPeople(sProfile, currentDepth + 1, subscriber));
                        //}
                    }
                }
            }
            return(tergetUsers);
        }
Example #4
0
        /// <summary>
        /// The route handler for the request, which lists friends for this user to
        /// enable a social graph within the app.
        /// </summary>
        /// <param name="context">The request/response context.</param>
        public override void ProcessRequest(HttpContext context)
        {
            User user = GetUser(context);

            // User will be NULL if there isn't someone signed in.
            if (user == null)
            {
                context.Response.StatusCode        = 401;
                context.Response.StatusDescription = "Unauthorized request.";
                return;
            }

            ArrayList friends = FriendsHelper.GetFriends(user);

            context.Response.Write(JsonConvert.SerializeObject(friends));
        }
Example #5
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            if (Main.Api.Users.IsBanned(msg))
            {
                return;
            }

            if (!Main.Api.Users.CheckUser(msg))
            {
                var kb2 = new KeyboardBuilder(bot);
                kb2.AddButton("➕ Зарегистрироваться", "start");
                sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build());
                return;
            }

            var user   = Main.Api.Users.GetUser(msg);
            var helper = new UsersHelper();
            var kb     = new KeyboardBuilder(bot);
            var text   = $"🧒 Друзья пользователя  {helper.GetLink(user)}";

            if (user.Friends is null)
            {
                text = "💔 Ваш список друзей пуст. Найдите себе друзей скорее!";
                kb.AddButton("🔙 В меню телефона", "menuphone");
            }
            else
            {
                var friends = FriendsHelper.GetFriends(user.Friends);
                foreach (var friendId in friends)
                {
                    var friend = Main.Api.Users.GetUserFromId(friendId);
                    text += $"\n 🧒 [{friend.Id}]| [{friend.Prefix}] {helper.GetLink(friend)} - {friend.Level} уровень.";
                }

                kb.AddButton("➕ Добавить друга", "addfriend");
                kb.AddLine();
                kb.AddButton("❌ Удалить друга", "removefriend");
                kb.AddLine();
                kb.AddButton("✔ Запросы в друзья", "requestfriends");
                kb.AddLine();
                kb.AddButton("↩ В меню телефона", "menuphone");
            }


            sender.Text(text, msg.ChatId, kb.Build());
        }
Example #6
0
        //寻找我的好友
        public List <User> GetMyFriends(string Username)
        {
            List <User> users  = new List <User>();
            Document    filter = new Document();

            filter.Add("UserID", Username);
            List <Friends> friends = FriendsHelper.SelectMore(filter);

            foreach (var friend in friends)
            {
                filter = new Document();
                filter.Add("UserName", friend.FriendID);
                User userInfo = UserHelper.SelectOne(filter);
                users.Add(userInfo);
            }
            return(users);
        }
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            if (Main.Api.Users.IsBanned(msg))
            {
                return;
            }

            if (!Main.Api.Users.CheckUser(msg))
            {
                var kb2 = new KeyboardBuilder(bot);
                kb2.AddButton("➕ Зарегистрироваться", "start");
                sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build());
                return;
            }
            var user = Main.Api.Users.GetUser(msg);
            var kb   = new KeyboardBuilder(bot);

            if (user.FriendsRequests == "" || user.FriendsRequests is null)
            {
                sender.Text("🤔 У Вас нет запросов в друзья", msg.ChatId, kb.Build());
                return;
            }
            var requests = FriendsHelper.GetFriends(user.FriendsRequests);

            var text = "🧒 Запросы в друзья";

            foreach (var request in requests)
            {
                var req = Main.Api.Users.GetUserFromId(request);
                text += $"\n🧒 {req.Id} | [{req.Prefix}] {req.Name} - {req.Level} уровень.";
            }

            kb.AddButton("✔ Принять запрос", "acceptrequestfriend", new List <string>()
            {
                requests[0].ToString()
            });
            kb.AddLine();
            kb.AddButton("❌ Отклонить запрос", "noacceptrequestfriend", new List <string>()
            {
                requests[0].ToString()
            });

            sender.Text(text, msg.ChatId, kb.Build());
        }
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            if (Main.Api.Users.IsBanned(msg))
            {
                return;
            }

            if (!Main.Api.Users.CheckUser(msg))
            {
                var kb2 = new KeyboardBuilder(bot);
                kb2.AddButton("➕ Зарегистрироваться", "start");
                sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build());
                return;
            }
            var request = msg.Payload.Arguments[0].ToLong();
            var u       = Main.Api.Users.GetUser(msg);

            using (var db = new Database())
            {
                var user     = db.Users.Single(uu => uu.Id == u.Id);
                var requests = FriendsHelper.GetFriends(user.FriendsRequests);
                requests.Remove(request);
                var s = string.Empty;
                foreach (var rq in requests)
                {
                    s += $"{rq};";
                }

                user.FriendsRequests = s;
                user.Friends        += $"{request};";
                var userFriend = db.Users.Single(uu => uu.Id == request);
                userFriend.Friends += $"{user.Id};";

                db.SaveChanges();
            }

            var kb = new KeyboardBuilder(bot);

            kb.AddButton("📱 В меню телефона", "menuphone");

            sender.Text("Пользователь добавлен в список Ваших друзей!", msg.ChatId, kb.Build());
        }
Example #9
0
        public static string RemoveFriend(User cretor, long userId)
        {
            var friends = FriendsHelper.GetFriends(cretor.Friends);

            if (friends.All(id => id != userId))
            {
                return("❌ Пользователя с таким Id нет в Ваших друзьях.");
            }

            using (var db = new Database())
            {
                var crt  = db.Users.Single(u => u.Id == cretor.Id);
                var user = db.Users.Single(u => u.Id == userId);


                var fr1 = FriendsHelper.GetFriends(crt.Friends);
                var fr2 = FriendsHelper.GetFriends(user.Friends);

                fr1.Remove(userId);
                fr2.Remove(cretor.Id);
                var stringFriends1 = string.Empty;
                var stringFriends2 = string.Empty;

                foreach (var frs1 in fr1)
                {
                    stringFriends1 += $"{frs1};";
                }
                foreach (var frs2 in fr2)
                {
                    stringFriends2 += $"{frs2};";
                }

                crt.Friends  = stringFriends1;
                user.Friends = stringFriends2;

                db.SaveChanges();
            }

            return("✔ Пользователь удален из списка ваших друзей.");
        }
Example #10
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            if (Main.Api.Users.IsBanned(msg))
            {
                return;
            }

            if (!Main.Api.Users.CheckUser(msg))
            {
                var kb2 = new KeyboardBuilder(bot);
                kb2.AddButton("➕ Зарегистрироваться", "start");
                sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build());
                return;
            }

            var kb = new KeyboardBuilder(bot);

            if (sender.Platform == MessengerPlatform.Vkontakte)
            {
                if (msg.ChatId > 2000000000)
                {
                    var t = "❌ Заходить в раздел гонок можно только в личных сообщениях.";

                    kb.AddButton(ButtonsHelper.ToHomeButton());
                    sender.Text(t, msg.ChatId, kb.Build());
                    return;
                }
            }

            var user = Main.Api.Users.GetUser(msg);

            if (user.OnWork)
            {
                sender.Text("❌ Вы не можете идти в гонку, пока находитесь на работе, дождитесь завершения и возвращайтесь!", msg.ChatId);
                return;
            }

            var garage = Main.Api.Garages.GetGarage(user.Id);

            if (!garage.IsPhone)
            {
                var t = "❌ Для участия в гонках необходим телефон. Загляните в магазин!";

                kb.AddButton("🏪 Перейти в магазин", "store");
                sender.Text(t, msg.ChatId, kb.Build());
                return;
            }


            if (msg.Payload.Arguments is null)
            {
                var text = "🏁 Ваши последние 6 друзей:";

                var friends = FriendsHelper.GetFriends(user.Friends);

                int counter  = 0;
                int counter2 = 0;
                foreach (var friend in friends)
                {
                    if (counter2 >= 6)
                    {
                        break;
                    }
                    var frd = Main.Api.Users.GetUserFromId(friend);
                    text += $"\n [{frd.Prefix}] {frd.Name} (ур. {frd.Level})";
                    kb.AddButton($"{frd.Name}", "raceFriendStart", new List <string>()
                    {
                        $"{frd.Id}"
                    });
                    counter++;
                    counter2++;
                    if (counter == 2)
                    {
                        kb.AddLine();
                        counter = 0;
                    }
                }

                kb.AddButton("➕ Указать Id друга вручную", "racefriend", new List <string>()
                {
                    "123"
                });
                sender.Text(text, msg.ChatId, kb.Build());
            }
            else
            {
                var text = "🏁 Укажите id (в боте) своего друга (друг должен быть в списке Ваших друзей).";

                kb.AddButton("↩ Вернуться в меню гонок", "race");
                if (user.Race != 0)
                {
                    text = "❌ А ну стоять. Ты уже находишься в гонке!";
                    kb.AddLine();
                    kb.AddButton("❌ Отменить гонку", "racestop");
                }
                else
                {
                    UsersCommandHelper.GetHelper().Add("racefriend", user.Id);
                }
                sender.Text(text, msg.ChatId, kb.Build());
            }
        }
Example #11
0
        public static string RunFriendBattle(long creatorId, long enemyId, IMessageSenderService sender, IBot bot, Message msg)
        {
            if (creatorId == enemyId)
            {
                return("❌ Участвовать в гонке с самим собой невозможно.");
            }

            using (var db = new Database())
            {
                var creator = db.Users.Single(u => u.Id == creatorId);
                var friends = FriendsHelper.GetFriends(creator.Friends);
                if (!friends.Any(f => f == enemyId))
                {
                    return("❌ Этот пользователь не в списке Ваших друзей.");
                }

                if (creator.Race != 0)
                {
                    return("❌ Вы уже участвуете в гонке!");
                }
                User enemy;
                try
                {
                    enemy = db.Users.Single(u => u.Id == enemyId);
                    if (enemy.Race != 0)
                    {
                        return("❌ Этот пользователь уже учавствует в гонке!");
                    }
                }
                catch
                {
                    return("❌ Не найден пользователь с таким ID");
                }

                var race = new Models.Race();
                race.Creator   = creatorId;
                race.Enemy     = enemyId;
                race.Id        = db.Races.Count() + 1;
                race.IsRequest = true;

                var helper = new UsersHelper();

                if (sender.Platform == MessengerPlatform.Vkontakte)
                {
                    if (enemy.VkId == 0)
                    {
                        return("❌ Этот пользователь зарегестрирован через telegram. Гонки между платформами пока что недоступны.");
                    }
                    sender.Text($"🏁 Пользователь {helper.GetLink(creator)} приглашает Вас на гонку!" +
                                $"\n ❓ Чтобы принять или отклонить гонку, откройте меню телефона в разделе гонок.", enemy.VkId);
                }
                else
                {
                    if (enemy.TgId == 0)
                    {
                        return("❌ Этот пользователь зарегистрирован через ВКонтакте. Гонки между платформами пока что недоступны.");
                    }
                    sender.Text($"🏁 Пользователь {helper.GetLink(creator)} приглашает Вас на гонку!" +
                                $"\n ❓ Чтобы принять или отклонить гонку, откройте меню телефона в разделе гонок.", enemy.TgId);
                }

                creator.Race = race.Id;
                db.Races.Add(race);
                db.SaveChanges();
                UsersCommandHelper.GetHelper().Add("", creatorId);


                Task.Run(() =>
                {
                    Thread.Sleep(TimeSpan.FromSeconds(3));
                    var kb = new KeyboardBuilder(bot);
                    kb.AddButton("❌ Отменить гонку", "racestop");
                    sender.Text("❓ Вы можете отменить гонку, если Ваш противник не принимает гонку.", msg.ChatId, kb.Build());
                });

                return("🏁 Мы отправили пользователю запрос о гонке с Вами. ");
            }
        }