public async Task <IActionResult> OnPostAsync(string classId, int?simId) { if (classId == null || simId == null) { return(NotFound()); } ClassAssignment = await Context.ClassAssignments .SingleOrDefaultAsync(m => m.ClassroomID == classId && m.SimulationID == simId); if (ClassAssignment != null) { var isAuthorized = await AuthorizationService.AuthorizeAsync(User, ClassAssignment, Operations.DeleteAssignment); if (!isAuthorized.Succeeded) { return(Forbid()); } Context.ClassAssignments.Remove(ClassAssignment); await Context.SaveChangesAsync(); } return(RedirectToPage("/Classes/Index")); }
public async Task <IActionResult> OnGetAsync(string classId, int?simID, string dateDue) { if (classId == null || simID == null) { return(NotFound()); } if (dateDue != null) { return(await EditAssignment()); } ClassAssignment = await Context.ClassAssignments .Include(c => c.Classroom) .Include(c => c.Simulation) .Where(m => m.ClassroomID == classId) .SingleOrDefaultAsync(m => m.SimulationID == simID); if (ClassAssignment == null) { return(NotFound()); } return(Page()); }
public void ImportParticpantsWithClassAssignment() { string dbFilename = TestUtilities.CreateWorkingFileFrom(testContextInstance.TestDeploymentDir, @"TestDB_EmptyManyClasses.mdb"); RaceHorologyLib.Database db = new RaceHorologyLib.Database(); db.Connect(dbFilename); AppDataModel dm = new AppDataModel(db); var ir = new ImportReader(@"Teilnehmer_V1_202001301844.csv"); RaceMapping mapping = new RaceMapping(ir.Columns); ClassAssignment cla = new ClassAssignment(dm.GetParticipantClasses()); RaceImport im = new RaceImport(dm.GetRace(0), mapping, cla); var impRes = im.DoImport(ir.Data); Assert.AreEqual(153, impRes.SuccessCount); Assert.AreEqual(0, impRes.ErrorCount); for (int i = 0; i < 153; i++) { Participant p = dm.GetParticipants()[i]; RaceParticipant rp = dm.GetRace(0).GetParticipants()[i]; Assert.AreEqual(string.Format("Name {0}", i + 1), p.Name); Assert.AreEqual(string.Format("Name {0}", i + 1), rp.Name); Assert.IsTrue(rp.Participant == p); Assert.AreSame(cla.DetermineClass(p), p.Class); Assert.IsNotNull(p.Class); } }
// To protect from overposting attacks, enable the specific properties you want to bind to, for // more details, see https://aka.ms/RazorPagesCRUD. public async Task <IActionResult> OnPostAsync(string classID) { if (classID == null) { return(NotFound()); } if (!ModelState.IsValid) { PopulateSimulationsDropDownList(ClassAssignmentVM?.SimulationID); return(Page()); } List <int> simIds = await(from s in Context.Simulations select s.SimulationID) .ToListAsync(); if (!simIds.Contains(ClassAssignmentVM.SimulationID)) { PopulateSimulationsDropDownList(); return(Page()); } if (Context.ClassAssignments .Where(c => c.ClassroomID == classID) .SingleOrDefault(c => c.SimulationID == ClassAssignmentVM.SimulationID) != null) { return(RedirectToPage("./Edit", classID, ClassAssignmentVM.SimulationID, ClassAssignmentVM.DateDue.Value.ToString())); } var classAssignment = new ClassAssignment { ClassroomID = classID, SimulationID = ClassAssignmentVM.SimulationID, DateDue = ClassAssignmentVM.DateDue.Value, DateSet = DateTime.Now.Date }; var isAuthorized = await AuthorizationService.AuthorizeAsync (User, classAssignment, Operations.CreateAssignment); if (!isAuthorized.Succeeded) { return(Forbid()); } Context.ClassAssignments.Add(classAssignment); await Context.SaveChangesAsync(); return(RedirectToPage("/Classes/Index")); }
private void btnResetClass_Click(object sender, RoutedEventArgs e) { List <Participant> participants = new List <Participant>(); foreach (var pe in dgParticipants.SelectedItems.Cast <ParticipantEdit>()) { participants.Add(pe.Participant); } ClassAssignment ca = new ClassAssignment(_dm.GetParticipantClasses()); ca.Assign(participants); }
public async Task <IActionResult> OnGetAsync(string classId, int simId) { if (classId == null) { return(NotFound()); } ClassAssignment = await Context.ClassAssignments .Include(c => c.Classroom) .Include(c => c.Simulation) .SingleOrDefaultAsync(m => m.ClassroomID == classId && m.SimulationID == simId); if (ClassAssignment == null) { return(NotFound()); } return(Page()); }
public async Task OnGetAsync(string classId, int?simId, bool?showDetails) { ClassroomData = new ClassroomIndexData(); if (User.IsInRole(Constants.StudentRole)) { var userEnrollments = (from e in Context.Enrollments select e) .Where(e => e.NEAUserId == UserManager.GetUserId(User)); var classIDs = await(from e in userEnrollments select e.ClassroomID) .AsNoTracking() .ToListAsync(); ClassroomData.Classrooms = await Context.Classrooms .Include(c => c.Teacher) .Include(c => c.Enrollments) .ThenInclude(c => c.NEAUser) .ThenInclude(c => c.StudentAssignments) .Include(c => c.Enrollments) .ThenInclude(c => c.NEAUser) .ThenInclude(c => c.StudentQuestions) .Include(c => c.ClassAssignments) .ThenInclude(c => c.Simulation) .ThenInclude(c => c.Questions) .Where(c => classIDs.Contains(c.ClassroomID)) .AsNoTracking() .ToListAsync(); } else { ClassroomData.Classrooms = await Context.Classrooms .Include(c => c.Teacher) .Include(c => c.Enrollments) .ThenInclude(c => c.NEAUser) .ThenInclude(c => c.StudentAssignments) .Include(c => c.Enrollments) .ThenInclude(c => c.NEAUser) .ThenInclude(c => c.StudentQuestions) .Include(c => c.ClassAssignments) .ThenInclude(c => c.Simulation) .ThenInclude(c => c.Questions) .Where(c => c.UserID == UserManager.GetUserId(User)) .AsNoTracking() .ToListAsync(); } /*foreach (var item in classroom) * { * List<Enrollment> students = await Context.Enrollments * .Where(e => e.ClassroomID == item.ClassroomID) * .AsNoTracking() * .ToListAsync(); * * ClassroomVM.Add( * new ClassroomVM * { * ID = item.ClassroomID, * Name = item.Name, * Teacher = item.Teacher.LastName + ", " + item.Teacher.FirstName, * StudentCount = students.Count() * } * ) ; * }*/ if (classId != null) { ClassID = classId; Classroom classroom = ClassroomData.Classrooms.Where(c => c.ClassroomID == ClassID).SingleOrDefault(); if (classroom == null) { return; } ClassroomData.ClassAssignments = classroom.ClassAssignments.Select(c => c); } if (simId != null) { SimulatorID = simId.Value; ClassAssignment assignment = ClassroomData.ClassAssignments.Where(c => c.SimulationID == SimulatorID).SingleOrDefault(); if (assignment == null) { return; } if (User.IsInRole(Constants.StudentRole)) { NEAUser thisuser = ClassroomData.Classrooms .Single(c => c.ClassroomID == ClassID) .Enrollments .Single(e => e.NEAUserId == UserManager.GetUserId(User)) .NEAUser; StudentAssignment?studentAssignment = thisuser .StudentAssignments .SingleOrDefault(s => s.SimulationID == SimulatorID); ClassroomData.StudentAssignments = new List <StudentAssignmentIndexVM> { new StudentAssignmentIndexVM { StudentName = thisuser.LastName + ", " + thisuser.FirstName, Percentage = studentAssignment?.Percentage, DateCompleted = studentAssignment?.DateCompleted, SimulationID = SimulatorID } }; } else { var enrollments = ClassroomData.Classrooms .Single(c => c.ClassroomID == ClassID) .Enrollments; var students = from e in enrollments select e.NEAUser; var studentAssignments = new List <StudentAssignmentIndexVM>(); foreach (var item in students) { var studentAssignment = item.StudentAssignments.SingleOrDefault(s => s.SimulationID == SimulatorID); studentAssignments.Add(new StudentAssignmentIndexVM() { StudentName = item.LastName + ", " + item.FirstName, Percentage = studentAssignment?.Percentage, DateCompleted = studentAssignment?.DateCompleted, SimulationID = SimulatorID }); } ClassroomData.StudentAssignments = studentAssignments; } if (showDetails != null && showDetails == true) { ShowDetails = showDetails.Value; ClassroomData.Questions = await Context.Questions .Where(s => s.SimulationID == SimulatorID) .AsNoTracking() .ToListAsync(); List <NEAUser> students = await(from e in Context.Enrollments where e.ClassroomID == ClassID select e.NEAUser) .AsNoTracking() .ToListAsync(); List <StudentQuestion> studentQuestions = await Context.StudentQuestions .Include(s => s.NEAUser) .ThenInclude(s => s.Enrollments) .Where(s => s.SimulationID == SimulatorID) .AsNoTracking() .ToListAsync(); var studentQuestionsVM = new List <StudentQuestionVM>(); foreach (var student in students) { var thisStudentsQuestions = studentQuestions.Where(s => s.UserID == student.Id); foreach (var question in ClassroomData.Questions) { var studentQuestion = thisStudentsQuestions.SingleOrDefault(s => s.QIndex == question.QIndex); if (studentQuestion == null) { studentQuestion = new StudentQuestion { QIndex = question.QIndex, SimulationID = SimulatorID, Answer = "", isCorrect = AnswerType.Unanswered }; } var isAuthorized = await AuthorizationService.AuthorizeAsync(User, studentQuestion, Operations.ViewStudentAssignment); if (!isAuthorized.Succeeded) { var enrollment = Context.Enrollments .Include(e => e.Classroom) .ThenInclude(e => e.Teacher) .AsNoTracking() .SingleOrDefault(e => e.NEAUserId == student.Id && e.ClassroomID == ClassID); isAuthorized = await AuthorizationService.AuthorizeAsync(User, enrollment, Operations.ViewStudentAssignment); if (!isAuthorized.Succeeded) { continue; } } studentQuestionsVM.Add( new StudentQuestionVM { UserId = student.Id, QIndex = studentQuestion.QIndex, StudentName = student.FirstName + " " + student.LastName, Answer = studentQuestion.Answer, isCorrect = studentQuestion.isCorrect, SimID = SimulatorID }); } } ClassroomData.StudentQuestions = studentQuestionsVM; } } }
public void ClassAssignmentTest() { List <ParticipantClass> classes = new List <ParticipantClass>(); classes.Add(new ParticipantClass("1M", null, "Class1", new ParticipantCategory('M'), 2009, 1)); classes.Add(new ParticipantClass("1W", null, "Class1", new ParticipantCategory('W'), 2009, 2)); classes.Add(new ParticipantClass("2M", null, "Class1", new ParticipantCategory('M'), 2011, 3)); classes.Add(new ParticipantClass("2W", null, "Class1", new ParticipantCategory('W'), 2011, 4)); Participant p2008M = new Participant { Year = 2008, Sex = new ParticipantCategory('M') }; Participant p2008W = new Participant { Year = 2008, Sex = new ParticipantCategory('W') }; Participant p2009M = new Participant { Year = 2009, Sex = new ParticipantCategory('M') }; Participant p2009W = new Participant { Year = 2009, Sex = new ParticipantCategory('W') }; Participant p2010M = new Participant { Year = 2010, Sex = new ParticipantCategory('M') }; Participant p2010W = new Participant { Year = 2010, Sex = new ParticipantCategory('W') }; Participant p2011M = new Participant { Year = 2011, Sex = new ParticipantCategory('M') }; Participant p2011W = new Participant { Year = 2011, Sex = new ParticipantCategory('W') }; Participant p2012M = new Participant { Year = 2012, Sex = new ParticipantCategory('M') }; Participant p2012W = new Participant { Year = 2012, Sex = new ParticipantCategory('W') }; ClassAssignment ca = new ClassAssignment(classes); // Test ClassAssignment.DetermineClass Assert.AreEqual("1M", ca.DetermineClass(p2008M).Id); Assert.AreEqual("1W", ca.DetermineClass(p2008W).Id); Assert.AreEqual("1M", ca.DetermineClass(p2009M).Id); Assert.AreEqual("1W", ca.DetermineClass(p2009W).Id); Assert.AreEqual("2M", ca.DetermineClass(p2010M).Id); Assert.AreEqual("2W", ca.DetermineClass(p2010W).Id); Assert.AreEqual("2M", ca.DetermineClass(p2011M).Id); Assert.AreEqual("2W", ca.DetermineClass(p2011W).Id); Assert.IsNull(ca.DetermineClass(p2012M)); Assert.IsNull(ca.DetermineClass(p2012W)); // Test ClassAssignment.Assign List <Participant> participants = new List <Participant>(); participants.Add(p2008M); participants.Add(p2008W); participants.Add(p2009M); participants.Add(p2009W); participants.Add(p2010M); participants.Add(p2010W); participants.Add(p2011M); participants.Add(p2011W); participants.Add(p2012M); participants.Add(p2012W); ca.Assign(participants); foreach (var p in participants) { Assert.AreEqual(ca.DetermineClass(p), p.Class); } }
private async Task GetChildrenForAssignment(AssignViewModel model) { //TODO: Use automapper var applicationDbContext = _context.Children.Include(c => c.Classroom) .Include(c => c.Session) .Where(c => c.VBSId == this.CurrentVBSId && c.VBS.TenantId == this.TenantId); applicationDbContext = applicationDbContext.Where(c => c.Session.Period == model.SessionOption); if (model.AssignmentOption != Enums.AssignmentOptions.All) { if (model.AssignmentOption == Enums.AssignmentOptions.Assigned) { applicationDbContext = applicationDbContext.Where(c => c.ClassroomId > 0); } else { applicationDbContext = applicationDbContext.Where(c => c.ClassroomId == 0 || c.ClassroomId == null); } } if (model.FilterGrade != Enums.ClassGradeOptions.All) { applicationDbContext = applicationDbContext.Where(c => (int)c.GradeCompleted == (int)model.FilterGrade); } if (!string.IsNullOrWhiteSpace(model.FilterName)) { applicationDbContext = applicationDbContext.Where(c => c.FirstName.ToLower().Contains(model.FilterName.ToLower()) || c.LastName.ToLower().Contains(model.FilterName.ToLower())); } applicationDbContext = applicationDbContext.OrderBy(c => c.Id); List <Child> dbChildren = await applicationDbContext.ToListAsync(); List <AssignChild> assignChildren = new List <AssignChild>(); List <ClassAssignment> classAssignments = new List <ClassAssignment>(); foreach (Child dbChild in dbChildren) { ClassAssignment classAssignment = new ClassAssignment(); classAssignment.ChildId = dbChild.Id; classAssignment.CurrentClassId = (dbChild.ClassroomId.HasValue) ? dbChild.ClassroomId : 0; classAssignment.NewClassId = (dbChild.ClassroomId.HasValue) ? dbChild.ClassroomId : 0; classAssignments.Add(classAssignment); AssignChild assignChild = new AssignChild(); if (dbChild.Classroom != null) { assignChild.CurrentClassName = dbChild.Session.Period + " " + dbChild.Classroom.Grade.GetDisplayName() + " " + dbChild.Classroom.Name; } else { assignChild.CurrentClassName = "None"; } assignChild.DateOfBirth = dbChild.DateOfBirth; assignChild.GradeCompleted = dbChild.GradeCompleted; assignChild.Id = dbChild.Id; assignChild.Name = dbChild.FirstName + " " + dbChild.LastName; assignChild.PlaceChildWithRequest = dbChild.PlaceChildWithRequest; assignChild.HealthConcernsMarkup = string.Empty; if (!string.IsNullOrWhiteSpace(dbChild.AllergiesDescription)) { assignChild.HealthConcernsMarkup = "<div style='text-align:left'><b>Allergies:</b><br/>" + dbChild.AllergiesDescription; } if (!string.IsNullOrWhiteSpace(dbChild.MedicalConditionDescription)) { if (!string.IsNullOrWhiteSpace(assignChild.HealthConcernsMarkup)) { assignChild.HealthConcernsMarkup += "<br/><br/>"; } else { assignChild.HealthConcernsMarkup += "<div style='text-align:left'>"; } assignChild.HealthConcernsMarkup += "<b>Medical Conditions:</b><br/>" + dbChild.MedicalConditionDescription; } if (!string.IsNullOrWhiteSpace(assignChild.HealthConcernsMarkup)) { assignChild.HealthConcernsMarkup += "</div>"; } assignChild.Session = dbChild.Session; assignChild.GuardianName = dbChild.GuardianFirstName + " " + dbChild.GuardianLastName; assignChild.CurrentClassId = (int)((dbChild.ClassroomId.HasValue) ? dbChild.ClassroomId : 0); assignChild.NewClassId = (int)((dbChild.ClassroomId.HasValue) ? dbChild.ClassroomId : 0); assignChildren.Add(assignChild); } model.Children = assignChildren; model.Assignments = classAssignments; }
private void btnAssignClasses_Click(object sender, RoutedEventArgs e) { ClassAssignment ca = new ClassAssignment(_dm.GetParticipantClasses()); ca.Assign(_dm.GetParticipants()); }