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)); }
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)); }