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