示例#1
0
        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);
        }
示例#2
0
        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();
            }
        }
示例#3
0
        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);
        }