Exemplo n.º 1
0
        public async Task <IActionResult> Create()
        {
            string         idUser   = _userHelperService.GetUserId(User);
            ChainViewModel newChain = new ChainViewModel();

            if (_userHelperService.HasSelectedGroup(User))
            {
                newChain.IdGroup = _userHelperService.GetSelectedGroup(User).Key;
            }

            ViewBag.Groups = await _context.GroupAdmins
                             .Where(x => x.IdUser == idUser)
                             .Include(x => x.Group)
                             .Select(x => x.Group)
                             .ToDictionaryAsync(x => x.IdVk, x => x.Name);

            return(View(newChain));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Index()
        {
            DateTime?dtExpiresAt = await _userHelperService.GetVkUserAccessTokenExpiresAt(User);

            string idUser   = _userHelperService.GetUserId(User);
            var    idVkUser = await _userHelperService.GetUserIdVk(User);

            var vkApi = await _vkPoolService.GetUserVkApi(idVkUser);

            if (vkApi == null)
            {
                return(RedirectToAction(nameof(AccountController.ExternalLogin), "Account", new { provider = "Vkontakte", returnUrl = "/Groups" }));
            }
            var groups = await vkApi.Groups.GetAsync(new VkNet.Model.RequestParams.GroupsGetParams()
            {
                UserId   = idVkUser,
                Extended = true,
                Filter   = VkNet.Enums.Filters.GroupsFilters.Administrator
            });

            var models = groups.Select(x => new GroupsViewModel()
            {
                IdVk        = x.Id,
                ImageUrl    = x.Photo50,
                Name        = x.Name,
                Link        = $"https://vk.com/club{x.Id}",
                IsConnected = _context.GroupAdmins
                              .Include(y => y.Group)
                              .Any(y => y.IdGroup == x.Id && y.IdUser == idUser && !string.IsNullOrEmpty(y.Group.AccessToken))
            });

            foreach (var connectedGroupModel in models.Where(x => x.IsConnected))
            {
                var connectedGroup = await _context.Groups.FirstAsync(x => x.IdVk == connectedGroupModel.IdVk);

                connectedGroup.Update(groups.First(x => x.Id == connectedGroup.IdVk));
            }
            await _context.SaveChangesAsync();

            return(View(models));
        }