Example #1
0
        // 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);
        }
Example #2
0
        public async Task<ActionResult> Create([Bind(Include = "Id,Title,Description,DueDate,MaxPoints,ClassId,Type")] CreateWorkItemViewModel workItem)
        {
            if(ModelState.IsValid)
            {
                int classId = workItem.ClassId;
                WorkItemManager manager = new WorkItemManager(db);
                await manager.CreateWorkItem(workItem);
                return RedirectToAction("Index", new { classId = classId });
            }

            return View(workItem);
        }
Example #3
0
        /// <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;
        }
Example #4
0
        // 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));
        }
Example #5
0
 /// <summary>
 /// Create a new default WorkItemsController
 /// </summary>
 public WorkItemsController()
 {
     _db = new ApplicationDbContext();
     _userManager = new ApplicationUserManager(new UserStore<ApplicationUser>(_db));
     _workItemManager = new WorkItemManager(_db);
 }