// GET: Classes/Details/5 public async Task<ActionResult> Details(int? id) { if(id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } const int maxItems = 10; Class @class = await db.Classes.Include(c => c.Teacher).Where(c => c.Id == id).FirstOrDefaultAsync(); if(@class == null) { return HttpNotFound(); } var workItemManager = new WorkItemManager(db); var workItems = (await workItemManager.GetClassWorkItems(@class)).Take(5); ViewBag.WorkItems = workItems; var announcementManager = new AnnouncementManager(db); var announcements = (await announcementManager.GetClassAnnouncements(@class)).Take(5); ViewBag.Announcements = announcements; return View(@class); }
/// <summary> /// Calculates and returns a students grade in a class /// </summary> /// <param name="student">To student to calculate a grade for</param> /// <param name="class">The class that the student is enrolled in</param> /// <returns></returns> public async Task<float> GetStudentGradeAsync(ApplicationUser student, Class @class) { WorkItemManager workItemManager = new WorkItemManager(_db); var workItems = await workItemManager.GetClassWorkItems(@class); var total = 0.0f; total += await GetAverageForType(student, workItems, WorkItemType.Exam, @class.GradeDistribution); total += await GetAverageForType(student, workItems, WorkItemType.Homework, @class.GradeDistribution); total += await GetAverageForType(student, workItems, WorkItemType.Other, @class.GradeDistribution); total += await GetAverageForType(student, workItems, WorkItemType.Project, @class.GradeDistribution); total += await GetAverageForType(student, workItems, WorkItemType.Quiz, @class.GradeDistribution); return total; }
// GET: WorkItems /// <summary> /// Returns a list of all work items for a class if classId is given. Otherwise, returns /// a list of all work items /// </summary> /// <param name="classId">Id of class to return work items for</param> public async Task<ActionResult> Index(int? classId) { if(!classId.HasValue) { ViewBag.Title = "All work items"; return View(await db.WorkItems.ToListAsync()); } Class @class = await db.Classes.FindAsync(classId); if(@class == null) { ViewBag.Title = "Error"; ModelState.AddModelError("error", string.Format("No class with id \"{0}\"", classId)); return View(); } ViewBag.Title = string.Format("Work items for \"{0}\"", @class.Title); ViewBag.ClassId = classId; WorkItemManager manager = new WorkItemManager(db); return View(await manager.GetClassWorkItems(@class)); }