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