Exemplo n.º 1
0
        public IEnumerable <QuizCategoryViewModel> ToQuizCategoriesViewModel(int?catId)
        {
            var categories = _quizCategorytService.GetAll();
            var quizzes    = _quizService.GetPublicQuizzes();

            var cats = (from c in categories
                        orderby c.Name
                        select new QuizCategoryViewModel
            {
                Id = c.Id,
                Name = c.Name,
                IsSelected = catId.HasValue ? (c.Id == catId.Value) : false,
                QuizCount = quizzes.Count(x => x.Category.Id == c.Id)
            }).ToList();

            cats.Insert(0, new QuizCategoryViewModel
            {
                Id         = -1,
                Name       = "All",
                IsSelected = catId.HasValue ? (-1 == catId.Value) : true,
                QuizCount  = cats.Sum(x => x.QuizCount)
            });

            return(cats);
        }
Exemplo n.º 2
0
        public static IEnumerable <SelectListItem> GetCategoriesAsSelectList(this IQuizCategoryService repo)
        {
            var cats = repo.GetAll()
                       .Select(x =>
                               new SelectListItem
            {
                Value = x.Id.ToString(),
                Text  = x.Name
            });


            return(new SelectList(cats, "Value", "Text"));
        }
Exemplo n.º 3
0
        public ActionResult Import(HttpPostedFileBase file)
        {
            if (file.ContentLength <= 0)
            {
                return(RedirectToAction("Index")); //todo: report error
            }


            var fileName = Path.GetFileName(file.FileName);
            var path     = Path.Combine(Server.MapPath("~/App_Data"), fileName);

            file.SaveAs(path);


            var quizzes = DataProvider.Import(path);

            System.IO.File.Delete(path);


            int successCount = 0, failCount = 0;

            foreach (var quiz in quizzes)
            {
                if (!_quizService.GetAll().Any(x => x.Name == quiz.Name))
                {
                    var cat = _quizCategoryService.GetAll().FirstOrDefault(x => x.Name == quiz.Category.Name);
                    if (cat != null)
                    {
                        quiz.Category = cat;
                    }
                    try
                    {
                        _quizService.Insert(quiz);
                        successCount++;
                    }
                    catch (Exception)
                    {
                        failCount++;
                        //ignore, probably bad format, or validation issue
                    }
                }
            }
            ViewData["ImportStatus"] = string.Format("{0} quizzes imported, {1} quizzes were not imported", successCount,
                                                     failCount);
            return(RedirectToAction("Index"));
        }
Exemplo n.º 4
0
        public static QuizzesViewModel ToQuizzesViewModel(this IQueryable <Quiz> quizzes,
                                                          IQuestionService questions,
                                                          IQuizService quizService,
                                                          IQuizCategoryService categories,
                                                          int?catId)
        {
            var vm = new QuizzesViewModel();

            vm.QuizCategories = categories.GetAll().ToQuizCategoriesViewModel(quizService.GetPublicQuizzes(), catId);

            vm.Filter = QuizFilter.Newest;


            vm.TopQuizzes = quizService.GetBy(QuizFilter.Rating, descending: true, count: 10).Select(x => new TopListItem()
            {
                Id   = x.Id,
                Name = x.Name
            }).ToList();

            vm.SelectedCategoryId = catId.HasValue ?  catId.Value:  -1;

            vm.SearchPlaceHolder = vm.SelectedCategoryId > -1
                ? "Search in " + categories.Get(vm.SelectedCategoryId).Name
                : "Search here";

            const int pageSize  = 10;
            var       quizCount = quizzes.Count();

            if (quizCount <= pageSize)
            {
                vm.PageCount = 1;
            }
            else
            {
                vm.PageCount = (int)Math.Ceiling((double)quizCount / pageSize);
            }

            vm.Quizzes = quizzes.Take(pageSize).ToQuizViewModels();



            return(vm);
        }