Ejemplo n.º 1
0
        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"));
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 6
0
        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());
        }
Ejemplo n.º 7
0
        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);
            }
        }
Ejemplo n.º 9
0
        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;
        }
Ejemplo n.º 10
0
        private void btnAssignClasses_Click(object sender, RoutedEventArgs e)
        {
            ClassAssignment ca = new ClassAssignment(_dm.GetParticipantClasses());

            ca.Assign(_dm.GetParticipants());
        }