Ejemplo n.º 1
0
        public async Task SyncVkUser(ClaimsPrincipal principal, OAuthTokenResponse tokenResponse)
        {
            var userRepository   = _unitOfWork.UserRepository;
            var vkUserRepository = _unitOfWork.VkUserRepository;
            var yandexUserId     = principal.Claims.First(c => c.Type == "id").Value;
            var payload          = tokenResponse.Response.RootElement;
            var vkId             = payload.GetProperty("user_id").ToString();
            var existingUser     = await vkUserRepository.GetEntity(vkId);

            if (existingUser != null)
            {
                if (existingUser.AccessToken != tokenResponse.AccessToken)
                {
                    existingUser.AccessToken = tokenResponse.AccessToken;
                }
                if (existingUser.YandexUserId != yandexUserId)
                {
                    existingUser.YandexUserId = yandexUserId;
                }
            }
            else
            {
                var vkUser = new VkUser
                {
                    YandexUserId = yandexUserId,
                    Id           = vkId,
                    AccessToken  = tokenResponse.AccessToken
                };

                vkUserRepository.Add(vkUser);
            }

            await _unitOfWork.CommitChanges().ConfigureAwait(false);
        }
Ejemplo n.º 2
0
        async Task <string> IVkService.GetProfilesAsync(VkUser vkUser)
        {
            var result = string.Empty;

            try
            {
                var url = @"https://api.vk.com/method/getProfiles";

                using (var formContent = new FormUrlEncodedContent(new[]
                {
                    new KeyValuePair <string, string>("access_token", vkUser.AccessToken),
                    new KeyValuePair <string, string>("uids", vkUser.UserVkId),
                    new KeyValuePair <string, string>("fields", @"photo_id, verified, sex, bdate, city, country, home_town, has_photo, photo_50, photo_100, photo_200_orig, photo_200, photo_400_orig, photo_max"),
                    new KeyValuePair <string, string>("v", VERSION),
                }))
                {
                    result = await HttpPostAsync(url, formContent);
                }
            }
            catch (Exception ex)
            {
                await _telegramService.SendMessageExceptionAsync(ex);
            }

            return(result);
        }
Ejemplo n.º 3
0
        public static void CreateUser(VkUser user, VkUser origin)
        {
            NeoUser db_user = new NeoUser()
            {
                city_id = user.city,
                name    = $"{user.first_name} {user.last_name}",
                photo   = user.photo_50,
                sex     = user.sex,
                vk_id   = user.uid
            };

            if (!IsExist(user))
            {
                Client.Connect();
                Client.Cypher
                .Create("(user:VkMobile {newUser})")
                .WithParam("newUser", db_user)
                .ExecuteWithoutResults();
            }
            if (!IsRelation(user, origin))
            {
                CreateRelation(user, origin);
            }
            if (!IsRelation(origin, user))
            {
                CreateRelation(origin, user);
            }
        }
Ejemplo n.º 4
0
        public async Task Start(CommandArgs args)
        {
            var id = args.SentFromChatULong();

            if (await _chatRepository.Exists(id))
            {
                return;
            }

            var offset = args.ValueContainer.Get <TimeSpan>(0);

            var vkUser = new VkUser()
            {
                Id = args.SentFromUserULong()
            };
            var admin = new VkChatAdmin()
            {
                IsSuperAdmin = true,
                VkUser       = vkUser
            };
            var chat = new VkChat()
            {
                Id         = id,
                TimeOffset = offset,
                Admins     = new List <VkChatAdmin>()
                {
                    admin
                }
            };

            await _chatRepository.AddChat(chat);

            _api.Messages.SendTo(args.SourceMessage, "Поздравляем, вы успешно используете бота!");
        }
Ejemplo n.º 5
0
 public static void stopTimer(VkUser user)
 {
     if (timersPool.ContainsKey(user.email))
     {
         timersPool[user.email].Abort();
         timersPool[user.email] = null;
         timersPool.Remove(user.email);
     }
 }
Ejemplo n.º 6
0
 public static void startNewTask(VkUser user)
 {
     if (!timersPool.ContainsKey(user.email))
     {
         Thread checkForTime = new Thread(new TimeHandler(user.email, user.password, Sex.Male).doTask);
         checkForTime.IsBackground = true;
         timersPool.Add(user.email, checkForTime);
         checkForTime.Start();
     }
 }
Ejemplo n.º 7
0
        public User(VkUser vkUser)
        {
            VkId      = vkUser.Id;
            FirstName = vkUser.FirstName;
            LastName  = vkUser.LastName;
            Photo     = vkUser.Photo50;

            Posts   = new List <Post>();
            Groups  = new HashSet <Group>();
            Friends = new List <User>();
        }
Ejemplo n.º 8
0
        public ActionResult AddUser(VkCreateModel model)
        {
            string json = HttpProtocol.TakeData(
                $"https://api.vk.com/method/users.get?user_ids={model.user_id}&fields=sex,city,photo_50&v=5.62", "GET",
                Encoding.UTF8);
            var    person = JsonConvert.DeserializeObject <Response>(json);
            VkUser user   = person.response[0];

            NeoTool.CreateUser(user);
            return(RedirectToAction("AllUsers", "Data"));
        }
Ejemplo n.º 9
0
 public static void CreateRelation(VkUser origin, VkUser target)
 {
     Client.Connect();
     Client.Cypher
     .Match("(x:VkMobile)", "(y:VkMobile)")
     .Where((NeoUser x) => x.vk_id == origin.uid)
     .AndWhere((NeoUser y) => y.vk_id == target.uid)
     .Create("(x)-[:FRIEND]->(y)")
     .ExecuteWithoutResults();
     Client.Dispose();
 }
Ejemplo n.º 10
0
        public void UpdateMessages(List <Message> messages, long chatId)
        {
            if ((messages?.Count ?? 0) == 0)
            {
                return;
            }
            var ids         = messages.Select(m => m.Id ?? 0);
            var attachments = messages.Where(m => m.Attachments.Any()).SelectMany(m =>
                                                                                  m.Attachments.Select(a => new MessageAttachment
            {
                ExternalMessageId = m.Id ?? 0, ExternalId = a.Instance.Id ?? 0, Type = a.Type.Name
            }));

            using (var context = new  ApplicationContext(_contextService.Options))
            {
                var existsMessagesIds = context.VkMessages.Where(e => ids.Contains(e.ExternalId)).Select(e => e.ExternalId).ToList();
                var newMessages       = messages.Where(e => !existsMessagesIds.Contains(e.Id ?? 0));
                if (!newMessages.Any())
                {
                    return;
                }
                var user = context.VkUsers.FirstOrDefault(u => u.ExternalId == chatId);
                if (user == null)
                {
                    user = new VkUser
                    {
                        ExternalId = chatId
                    };
                    context.VkUsers.Add(user);
                    context.SaveChanges();
                }

                var insertResult = new List <VkMessage>();
                foreach (var message in newMessages)
                {
                    var mappedMessage = new VkMessage
                    {
                        ExternalId = message.Id ?? 0,
                        Text       = message.Text,
                        VkUser     = user,
                        DateTime   = message.Date ?? default,
                        Title      = message.Title,
                        DialogId   = message.FromId ?? 0
                    };
                    insertResult.Add(mappedMessage);
                }
                context.VkMessages.AddRange(insertResult);
                context.SaveChanges();
            }
        }
    }
        private void Window_Loaded_1(object sender, RoutedEventArgs e)
        {
            try
            {
                //VkApi.AccessToken = "501e669057305704920915316838e10b8c30adff0f7f037d135b0a9a92d4b3c20d2a5ed3dfd0bc1414d20";
                if (File.Exists("token.txt"))
                {
                    VkApi.AccessToken = File.ReadAllText("token.txt");
                }
                else
                {
                    File.Create("token.txt");
                    VkApi.AccessToken = "";
                }
                if (VkApi.AccessToken == "")
                {
                    var form = new LoginVk();
                    form.ShowDialog();
                    VkApi.AccessToken = form.AccessToken;
                }
                if (!Directory.Exists("image"))
                {
                    Directory.CreateDirectory("image");
                }

                if (VkApi.AccessToken != null && !VkApi.AccessToken.StartsWith("#error"))
                {
                    User = VkApi.GetUser();
                    var list = VkApi.GetAudio(User.Uid, "");

                    AddAudioPlayList(PlayListBox, list);
                    GetAlbomsUser();
                    PlayListTabs.SelectedIndex = 0;
                    var t = (ScrollViewer)PlayListTabs.Template.FindName("ScrollViewerTab", PlayListTabs);
                    t.ScrollToHorizontalOffset(0);
                    TimerPosition.Elapsed += TimerPosition1_Tick;
                    TimerPosition.Interval = 1000;
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show(@"Ошибка авторизации.");
                }
                _eq = new Eq(Eq);
                SetBFX_EQ();
            }
            catch (NetworkInformationException)
            {
                System.Windows.Forms.MessageBox.Show(@"Ошибка интернет соединения.");
            }
        }
Ejemplo n.º 12
0
        private void webBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
        {
            if (e.Uri.ToString().StartsWith(_redirectPage))
            {
                vKAPI.AuthorizationRedirect(e.Uri);
                //нужно вернуть имя этого юзера в текстбокс окна регистрации
                var user = vKAPI.GetFriends();
                VkUser?.Invoke(user);
                //Name?.Invoke(user.Name);
                //window.textBoxname.Text = user.Name;

                Close();
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Проверка существования элемента в базе
        /// </summary>
        /// <param name="model"></param>
        /// <returns>true - если существует, false - если нет элемента в базе</returns>
        public static bool IsExist(VkUser model)
        {
            Client.Connect();
            var result = Client.Cypher
                         .Match("(user:VkMobile)")
                         .Where((NeoUser user) => user.vk_id == model.uid)
                         .Return(user => user.As <NeoUser>())
                         .Results;

            Client.Dispose();
            if (result.Any())
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 14
0
        public ActionResult AddUserFriends(VkCreateModel model)
        {
            string jsonOrigin = HttpProtocol.TakeData(
                $"https://api.vk.com/method/users.get?user_ids={model.user_id}&fields=sex,city,photo_50", "GET",
                Encoding.UTF8);
            var    person     = JsonConvert.DeserializeObject <Response>(jsonOrigin);
            VkUser userOrigin = person.response[0];

            NeoTool.CreateUser(userOrigin);
            string jsonEnd = HttpProtocol.TakeData(
                $"https://api.vk.com/method/friends.get?user_id={userOrigin.uid}&fields=city,sex,photo_50", "GET",
                Encoding.UTF8);
            var friends = JsonConvert.DeserializeObject <Response>(jsonEnd);

            foreach (var vkUser in friends.response)
            {
                NeoTool.CreateUser(vkUser, userOrigin);
            }
            return(RedirectToAction("AllUsers", "Data"));
        }
Ejemplo n.º 15
0
        static void Registration(Message msg)
        {
            var id = msg.FromId.Value;

            if (!users.HasUser(id))
            {
                VkUser vk = VkRequests.VkRequestUser(id); //получаем юзера из вк
                User   us = new User(vk, dictionary);
                users.AddUser(us);                        //создаём нового юзера
            }
            User user = users[id];

            user.regId++;
            if (!Directory.Exists("users"))
            {
                Directory.CreateDirectory("users");
            }
            Directory.CreateDirectory("users\\" + id);
            Console.WriteLine("Registered: " + user.name + " " + user.userId);
            users.Save();
            Testing_Start(id, false);

            /*
             * switch (user.regId++)
             * {
             *  case 0:
             *      Console.WriteLine("Registered: "+ user.name+" "+user.userId);
             *      Testing_Start(id);
             *      return "Приветствую, " + user.name + "!\n" +
             *          "Вам будет предложен тест на знание английских слов.\n" +
             *          "Не стоит подсматривать, от результатов теста зависит ваша дальнейшая программа обучения.\n";
             *  case 1:
             *      if(msg.Text.ToLower() == "готов")
             *          return "redId =" + user.regId;
             *      break;
             *  default: return "end!";
             * }
             *
             * return "You cannot see it!";
             */
        }
Ejemplo n.º 16
0
        public Window1()
        {
            InitializeComponent();

            List<VkGroupCategory> headCategories = new List<VkGroupCategory>();
            VkGroupCategory person1 = new VkGroupCategory() { Name = "Фото", isGroup = false };
            person1.IconSource = person1.GetIconSource();
            VkGroupCategory person2 = new VkGroupCategory() { Name = "Юмор", isGroup = false };
            person2.IconSource = person2.GetIconSource();
            VkGroup child1 = new VkGroup() { Name = "Лучший юмор", isGroup = true, groupId = 98013659 };
            child1.IconSource = child1.GetIconSource();
            person2.Children.Add(child1);

            VkGroup test = new VkGroup() { Name = "Лучшие фото", isGroup = true, groupId = 98738124 };
            test.IconSource = test.GetIconSource();
            person1.Children.Add(test);
            test = new VkGroup() { Name = "VkBoTest", isGroup = true, groupId = 97462940 };
            test.IconSource = test.GetIconSource();

            person1.Children.Add(test);

            headCategories.Add(person1);
            headCategories.Add(person2);

            person1.IsExpanded = true;
            person2.IsExpanded = true;

            categoriesTreeView.ItemsSource = headCategories;
            List<VkUser> userCategories = new List<VkUser>();
            VkUser user3 = new VkUser() { Name = "User3", email = "*****@*****.**", password = "******" };
            //VkUser user4 = new VkUser() { Name = "User4", email = "*****@*****.**", password = "******" };
            //VkUser user5 = new VkUser() { Name = "User5", email = "*****@*****.**", password = "******" };
            //VkUser user6 = new VkUser() { Name = "User6", email = "*****@*****.**", password = "******" };
            userCategories.Add(user3);
            //userCategories.Add(user4);
            //userCategories.Add(user5);
            //userCategories.Add(user6);
            usersTreeView.ItemsSource = userCategories;

                logger.Info("Application started");
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Проверка связей между сущностями
        /// </summary>
        /// <param name="origin"></param>
        /// <param name="target"></param>
        /// <returns>true - есть связь от origin к target, false - нет</returns>
        public static bool IsRelation(VkUser origin, VkUser target)
        {
            Client.Connect();
            var result = Client.Cypher
                         .Match("(x:VkMobile)-[:FRIEND]->(y:VkMobile)")
                         .Where((NeoUser x) => x.vk_id == origin.uid)
                         .AndWhere((NeoUser y) => y.vk_id == target.uid)
                         .Return((x, y) => new
            {
                x = x.As <NeoUser>(),
                y = y.As <NeoUser>()
            })
                         .Results;

            Client.Dispose();
            if (result.Any())
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 18
0
        public Task UpdateFriendList(FriendsUpdateDto dto, ApplicationContext context = null)
        {
            Console.WriteLine($"{GetType()}.{nameof(UpdateFriendList)} started");
            if (context == null)
            {
                context = new ApplicationContext(_contextService.Options);
            }

            if (dto.UserId == null)
            {
                dto.UserId = _vkApiService.GetCurrentId();
            }

            //Находим текущего пользователя и обновляем его связи
            var currentUserEntity = context.VkUsers.FirstOrDefault(u => u.ExternalId == dto.UserId);

            if (currentUserEntity == null)
            {
                User vkUser;
                try
                {
                    vkUser = _vkApiService.GetUser(dto.UserId);
                }
                catch
                {
                    return(Task.CompletedTask);
                }

                currentUserEntity = new VkUser
                {
                    ExternalId    = vkUser.Id,
                    IsDeactivated = false,
                    PhotoUrl      = vkUser.PhotoMaxOrig.ToString(),
                    FullName      = $"{vkUser.FirstName} {vkUser.LastName}"
                };
                context.Add(currentUserEntity);
                context.SaveChanges();
            }

            List <User> friends;

            try
            {
                friends = _vkApiService.GetFriends(currentUserEntity.ExternalId).ToList();
            }
            catch
            {
                return(Task.CompletedTask);
            }

            context.RemoveRange(_friendsService.GetRemovedUsers(context, currentUserEntity.Id, friends));
            var newFriends = _friendsService.GetNewUsers(context, currentUserEntity.Id, friends);


            foreach (var newFriend in newFriends.Where(f => context.VkUsers.All(u => u.ExternalId != f.Id)))
            {
                context.VkUsers.Add(new VkUser
                {
                    ExternalId    = newFriend.Id,
                    FullName      = $"{newFriend.FirstName} {newFriend.LastName}",
                    IsDeactivated = newFriend.IsDeactivated,
                    LastCheck     = DateTime.Now,
                    PhotoUrl      = newFriend.PhotoMaxOrig?.ToString()
                });
            }

            context.SaveChanges();


            foreach (var friend in friends)
            {
                if (dto.Recursive)
                {
                    UpdateFriendList(new FriendsUpdateDto {
                        Recursive = false, UserId = friend.Id
                    }, context);
                }

                var friendEntity = context.VkUsers.First(f => f.ExternalId == friend.Id);
                if (context.FriendsUserToUsers.Any(c =>
                                                   c.RightUserId == friendEntity.Id && c.LeftUserId == currentUserEntity.Id))
                {
                    continue;
                }

                context.FriendsUserToUsers.Add(new FriendsUserToUser
                {
                    LeftUserId  = currentUserEntity.Id,
                    RightUserId = friendEntity.Id
                });
            }

            context.SaveChanges();
            Console.WriteLine($"{GetType()}.{nameof(UpdateFriendList)} completed");
            return(Task.CompletedTask);
        }
Ejemplo n.º 19
0
 public GetVkStatusAction(IVkClient vkClient, VkUser user)
 {
     _vkClient = vkClient;
     _user     = user;
 }
Ejemplo n.º 20
0
        private async Task <IViewComponentResult> InstagramLoadAsync(VkUser vkUser, VkGroup vkGroup,
                                                                     Models.User user, Models.Order order,
                                                                     string photo, bool isPremium, string groupId, string isInst, string url)
        {
            try
            {
                var json = await _instagramService.GetInstagramJsonAsync(url);

                var    instagram = _jsonService.JsonConvertDeserializeObject <JsonModel.Instagram.Instagram>(json);
                var    profiles  = instagram?.EntryData?.ProfilePage;
                string jsonNext  = null;

                if (profiles != null)
                {
                    var token = profiles.FirstOrDefault()?.User?.Media?.PageInfo?.EndCursor;
                    if (!string.IsNullOrWhiteSpace(token))
                    {
                        var owner = profiles.FirstOrDefault()?.User?.Media?.Nodes?.FirstOrDefault()?.Owner?.Id;
                        if (!string.IsNullOrWhiteSpace(owner))
                        {
                            user.InstagramToken   = token;
                            user.InstagramOwnerId = owner;

                            _context.Update(user);
                            await _context.SaveChangesAsync();

                            var query_id = (await _context.VkClientSet.FirstOrDefaultAsync())
                                           .InstagramQueryId;

                            if (!string.IsNullOrWhiteSpace(query_id))
                            {
                                var count = 12;
                                jsonNext = await _instagramService.GetNextJsonAsync(query_id, owner, count, token);
                            }
                        }
                    }

                    var srcs = profiles.SelectMany(prof =>
                                                   prof?.User?.Media?.Nodes?.Select(node => new VkItemViewModel
                    {
                        Likes   = node?.EdgeMediaPreviewLike?.Count ?? node?.Likes.Count,
                        Coments = node?.EdgeMediaToComment?.Count ?? node.Comments?.Count,
                        Text    = string.Join("\n", node?.EdgeMediaToCaption?.Edges?.Select(o => o?.Node?.Text) ?? new List <string> {
                            node?.Caption
                        }),
                        Photo = new List <string> {
                            node?.DisplaySrc
                        },
                        Date = node?.Date ?? node?.TakenAtTimestamp
                    }))
                               .ToList();

                    if (!string.IsNullOrWhiteSpace(jsonNext))
                    {
                        var instagramNext = _jsonService.JsonConvertDeserializeObject <InstagramNext>(jsonNext);
                        if (instagramNext.Status == "ok")
                        {
                            var media = instagramNext?.Data?.User?.EdgeOwnerToTimelineMedia;

                            if (media != null)
                            {
                                var srcsNext = media.Edges?.Select(prof =>
                                                                   new VkItemViewModel
                                {
                                    Likes   = prof?.Node?.EdgeMediaPreviewLike?.Count,
                                    Coments = prof?.Node?.EdgeMediaToComment?.Count,
                                    Text    = string.Join("\n", prof?.Node?.EdgeMediaToCaption?.Edges?.Select(o => o?.Node?.Text) ?? new List <string> {
                                        string.Empty
                                    }),
                                    Photo = new List <string> {
                                        prof?.Node?.DisplayUrl
                                    },
                                    Date = prof?.Node?.TakenAtTimestamp
                                })
                                               .ToList();

                                srcs = srcs.Union(srcsNext).ToList();
                                if (media.PageInfo?.HasNextPage == true)
                                {
                                    user.InstagramToken = media.PageInfo?.EndCursor;

                                    _context.Update(user);
                                    await _context.SaveChangesAsync();
                                }
                            }
                        }
                        else
                        {
                            await _telegramService.SendMessage($"instagram query error: {instagramNext.Message}");
                        }
                    }

                    #region Загружаем выделенное, удаляем не использованное
                    var srcsDd = await _context.InstagramSet
                                 .Where(sel => sel.VkGroupId == vkGroup.VkGroupId && sel.Statuse == "Selected")
                                 .Select(node => new VkItemViewModel
                    {
                        ItemId  = node.InstagramId,
                        Statuse = node.Statuse,
                        Text    = node.Text,
                        Photo   = new List <string> {
                            node.Url
                        },
                        Date    = node.Date,
                        Coments = node.Coment,
                        Likes   = node.Likes
                    })
                                 .AsNoTracking()
                                 .ToListAsync();

                    var remove = _context.InstagramSet
                                 .Where(sel => sel.VkGroupId == vkGroup.VkGroupId && sel.Statuse != "Selected");

                    _context.RemoveRange(remove);
                    await _context.SaveChangesAsync();

                    #endregion

                    return(View(new VkResponseAndGroupVk
                    {
                        Responses = srcs.Union(srcsDd).OrderByDescending(ch => Tuple.Create(ch.Statuse == "Selected", ch.Likes)),
                        VkGroupViewModel = new VkGroupViewModel
                        {
                            VkGroupId = groupId,
                            Photo = photo,
                            Domain = vkGroup?.GroupInfo?.ScreenName ?? vkGroup?.Domain,
                            GroupName = vkGroup?.GroupInfo.Name
                        },
                        IsInst = "true"
                    }));
                }
            }
            catch (Exception ex)
            {
                await _telegramService.SendMessageExceptionAsync(ex);
            }

            return(View());
        }
Ejemplo n.º 21
0
        private async Task <IViewComponentResult> VkLoadAsync(VkUser vkUser, VkGroup vkGroup,
                                                              Models.User user, Models.Order order,
                                                              string photo, bool isPremium, string groupId, string isLoad)
        {
            try
            {
                var toLoad = true;
                if (!isPremium)
                {
                    var firstId = (await _context.VkGroupSet
                                   .FirstOrDefaultAsync(id => id.VkUserId == vkUser.VkUserId)).VkGroupId;

                    toLoad = vkGroup.VkGroupId == firstId;
                }

                // Не грузить левые группы, для непремиум
                if (toLoad)
                {
                    var vkGroupFrom = await _context.VkGroupFromSet
                                      .Include(inf => inf.GroupInfo)
                                      .Include(set => set.Filter)
                                      .Where(g => g.VkGroupId == vkGroup.VkGroupId)
                                      .Take(isPremium ? 20 : 10)

                                      .AsNoTracking()
                                      .ToListAsync();

                    if (isLoad == "true" && vkGroupFrom != null && vkGroupFrom.Count > 0)
                    {
                        Stopwatch sw      = Stopwatch.StartNew();
                        var       oldItem = await _context.VkGroupSet
                                            .Where(g => g.VkGroupId == groupId)
                                            .SelectMany(g => g.VkGroupsFrom
                                                        .SelectMany(gr => gr.WallGets
                                                                    .SelectMany(wall => wall.Items.Select(item => new VkItemViewModel
                        {
                            Text = item.Text,
                            Date = item.Date
                        }))))

                                            .AsNoTracking()
                                            .ToListAsync();

                        var count     = vkGroup.MaxFrom ?? (TAKE / vkGroupFrom.Count) * 2;
                        var responses = new List <WallGet>(vkGroupFrom.Count);

                        if (vkUser != null)
                        {
                            foreach (var group in vkGroupFrom)
                            {
                                var onlyGroup = vkGroup.Filter?.GetOnlyGroupPost == true ||
                                                group.Filter?.GetOnlyGroupPost == true;

                                var result = await _vkService.WallGetAsync(vkUser.AccessToken,
                                                                           $"{count}", "0", $"-{group.GroupId}", group.Domain, onlyGroup);

                                if (!result.Contains("error_code"))
                                {
                                    WallGet wallGetResponse = _jsonService.JsonConvertDeserializeObject <WallGetResponse>(result)?
                                                              .Response;

                                    if (wallGetResponse != null)
                                    {
                                        wallGetResponse = await _textService.SortedTextAsync(wallGetResponse, oldItem);

                                        for (int i = 0; i < wallGetResponse.Items.Count; i++)
                                        {
                                            var item = wallGetResponse.Items[i];

                                            var tag = $"{group.Atribute} {vkGroup.Atribute}".Trim(' ');
                                            item.Text = await _textService.TextFilterAsync(item.Text, vkGroup.Filter, group.Filter);

                                            item.Text = _textService.AddTag(item.Text, tag);
                                        }

                                        wallGetResponse.VkGroupFromId = group.VkGroupFromId;
                                        responses.Add(wallGetResponse);
                                    }
                                }
                                else
                                {
                                    await _telegramService.SendMessage(result);
                                }
                            }
                        }

                        await _context.AddRangeAsync(responses);

                        await _context.SaveChangesAsync();

                        sw.Stop();
                        await _telegramService.SendMessage($"time1: {sw.Elapsed.TotalMilliseconds}");

                        sw = Stopwatch.StartNew();

                        DateTime dateNow  = DateTime.Now;
                        long     unixTime = ((DateTimeOffset)dateNow).ToUnixTimeSeconds() - 30 * 60;

                        var date   = DateTime.Now;
                        var take   = vkGroup.MaxLoad ?? TAKE;
                        var vkItem = (await _context.VkGroupSet
                                      .Where(g => g.VkGroupId == groupId)
                                      .SelectMany(g => g.VkGroupsFrom
                                                  .SelectMany(gr => gr.WallGets
                                                              .SelectMany(wall => wall.Items
                                                                          .Where(st =>
                                                                                 string.IsNullOrWhiteSpace(st.Statuse) ||
                                                                                 (st.Statuse == "Selected" && st.AddedTime < unixTime)
                                                                                 ))))
                                      .OrderByDescending(ch => ch.Statuse == "Selected")
                                      .Take(take)
                                      .Select(item => new
                        {
                            Filter = item.WallGet.VkGroupFrom.Filter,
                            Atribute = item.WallGet.VkGroupFrom.Atribute,
                            Statuse = item.Statuse,
                            GroupInfo = item.WallGet.VkGroupFrom.GroupInfo,
                            ItemId = item.ItemId,
                            Likes = item.Likes.Count,
                            Reposts = item.Reposts.Count,
                            Views = item.Views.Count,
                            Date = item.Date,
                            GifPrew = item.Attachments.Select(doc =>
                                                              new
                            {
                                Gif = doc.Doc.Url,
                                DocExt = doc.Doc.Ext,
                                Preview = doc.Doc.Preview.Photo.Sizes
                            }),
                            Photo = item.Attachments.Select(ph => ph.Photo.Photo604),
                            Text = item.Text
                        })
                                      .AsNoTracking()
                                      .ToListAsync())

                                     .Select(item => new VkItemViewModel
                        {
                            Filter    = item.Filter,
                            Atribute  = item.Atribute,
                            Statuse   = item.Statuse,
                            GroupInfo = item.GroupInfo,
                            ItemId    = item.ItemId,
                            Likes     = item.Likes,
                            Reposts   = item.Reposts,
                            Views     = item.Views,
                            Date      = item.Date,
                            GifPrew   = item.GifPrew.Select(doc =>
                                                            new GifPreviewViewModel
                            {
                                Gif          = doc.Gif,
                                DocExt       = doc.DocExt,
                                PreviewPhoto = doc.Preview.ToList()
                            }).ToList(),
                            Photo = item.Photo.ToList(),
                            Text  = item.Text
                        });

                        vkItem = await _textService.SortingItemAsync(vkItem, vkGroup.Filter);

                        sw.Stop();
                        await _telegramService.SendMessage($"time2: {sw.Elapsed.TotalMilliseconds}");

                        return(View(new VkResponseAndGroupVk
                        {
                            Responses = vkItem.OrderByDescending(ch => Tuple.Create(ch.Statuse == "Selected", ch.Likes + ch.Reposts, ch.Likes, ch.Reposts, ch.Views)),
                            VkGroupViewModel = new VkGroupViewModel
                            {
                                VkGroupId = groupId,
                                VkGroupsFrom = vkGroupFrom,
                                Photo = photo,
                                Domain = vkGroup?.GroupInfo?.ScreenName ?? vkGroup?.Domain,
                                GroupName = vkGroup?.GroupInfo.Name
                            },
                            AttributeAll = vkGroup.Atribute,
                        }));
                    }

                    return(View(new VkResponseAndGroupVk
                    {
                        VkGroupViewModel = new VkGroupViewModel
                        {
                            VkGroupId = groupId,
                            VkGroupsFrom = vkGroupFrom,
                            Photo = photo,
                            Domain = vkGroup?.GroupInfo?.ScreenName ?? vkGroup?.Domain,
                            GroupName = vkGroup?.GroupInfo.Name
                        },
                        AttributeAll = vkGroup.Atribute
                    }));
                }
            }
            catch (Exception ex)
            {
                await _telegramService.SendMessageExceptionAsync(ex);
            }

            return(View());
        }
Ejemplo n.º 22
0
 public ActionResult VkResult(VkUser person)
 {
     return(View(person));
 }
Ejemplo n.º 23
0
        private void usersTreeView_Selected(object sender, RoutedPropertyChangedEventArgs<object> e)
        {
            try
            {
                VkUser item = (VkUser)usersTreeView.SelectedItem;
                currentlySelectedUser = item;
                //VkApi vk = VkApiFactory.getInstance().getVkApi(item.email, item.password, Settings.All);
                VkApi vk = VkApiFactory.getInstance().getDefaultVkApi();
                User group = vk.Users.Get((long)vk.UserId, ProfileFields.All);
                nameLabel2.Text = group.FirstName + " " + group.LastName;
                statusLabel2.Content = group.Status;
                Hyperlink link = new Hyperlink();
                link.NavigateUri = new Uri("http://vk.com/" + group.Domain);
                link.RequestNavigate += RequestNavigateEventHandler;

                link.Inlines.Add("vk.com/" + group.Domain);
                linkLabel2.Inlines.Clear();
                linkLabel2.Inlines.Add(link);
                //image.Source = ByteToImage(group.PhotoPreviews.Photo400);
                autoPostingCheckBox2.IsChecked = item.workIsOn;

            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
        }