private async Task <SectionViewModel> CreateSectionViewModelAsync(Section section, IList <string> userRoles, int maxCountOfLastTopics) { var sectionVm = new SectionViewModel(section, ControllerContext.HttpContext.Request); sectionVm.LastTopics = new List <Topic>(); var topics = section.Topics.OrderBy(t => t.Created); foreach (var topic in topics) { if (sectionVm.LastTopics.Count() == maxCountOfLastTopics) { break; } bool displayTopic = AccessibilityChecker.HasAccess(userRoles, section.Accessibility); if (!displayTopic) { continue; } topic.Author = _dbContext.Users.FirstOrDefault(u => u.Id == topic.AuthorId); topic.Posts = _dbContext.Posts.Where(t => t.TopicId == topic.Id).ToList(); sectionVm.LastTopics.Add(topic); } return(sectionVm); }
private async void ButtonUrlCheck_ClickAsync(object sender, RibbonControlEventArgs e) { ExcelStatic.StartTask(); CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource.Token.Register(() => ExcelStatic.EndTask()); StatusForm statusForm = new StatusForm(); statusForm.FormClosing += (object s, FormClosingEventArgs eventArgs) => cancellationTokenSource.Cancel(); AccessibilityChecker accessibilityChecker = new AccessibilityChecker() { ResultOffSet = this.OffSet }; accessibilityChecker.Reportor.ProgressChange += statusForm.ChangeProgress; accessibilityChecker.Reportor.MessageChange += statusForm.ChangeMessage; try { await accessibilityChecker.StartAsync(cancellationTokenSource.Token); } catch (Exception Ex) { System.Windows.Forms.MessageBox.Show(Ex.Message); } finally { ExcelStatic.EndTask(); } }
public async Task <IList <SectionViewModel> > GetAllSections(int maxCountOfLastTopics) { var result = new List <SectionViewModel>(); var sections = _dbContext.Sections.ToArray(); var userRoles = _usersController.GetUserRolesAsync(User).Result; foreach (var section in sections) { bool displaySection = AccessibilityChecker.HasAccess(userRoles, section.Accessibility); if (!displaySection) { continue; } var sectionViewModel = CreateSectionViewModelAsync(section, userRoles, maxCountOfLastTopics).Result; result.Add(sectionViewModel); } return(result); }