Ejemplo n.º 1
0
 private bool ContainsTimeConflict(CourseSection first, CourseSection second)
 {
     if (first.StartTime == second.StartTime || first.EndTime == second.EndTime)
     {
         return(true);
     }
     if (first.StartTime < second.StartTime)
     {
         if (first.EndTime > second.StartTime && first.EndTime < second.EndTime)
         {
             return(true);
         }
         if (first.EndTime > second.EndTime)
         {
             return(true);
         }
     }
     else
     {
         if (second.EndTime > first.StartTime && second.EndTime < first.EndTime)
         {
             return(true);
         }
         if (second.EndTime > first.EndTime)
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 2
0
        public RegistrationResults CanRegisterForCourseSection(CourseSection section)
        {
            if (section.EnrolledStudents.Where(s => s.Id == this.Id).Any())
            {
                return(RegistrationResults.AlreadyEnrolled);
            }

            if (Transcript.Where(t => (int)t.GradeEarned <= (int)GradeTypes.C && t.CourseSection.CatalogCourse.Id == section.CatalogCourse.Id).Any())
            {
                return(RegistrationResults.AlreadyCompleted);
            }

            foreach (var pre in section.CatalogCourse.Prerequisites)
            {
                if (!Transcript.Where(t => (int)t.GradeEarned <= (int)GradeTypes.C &&
                                      t.CourseSection.CatalogCourse.Id == pre.Id).Any())
                {
                    return(RegistrationResults.PrerequisiteNotMet);
                }
            }

            foreach (var en in EnrolledCourses)
            {
                if ((en.MeetingDays & section.MeetingDays) != DaysOfWeek.None)
                {
                    if ((en.StartTime <= section.EndTime && section.StartTime <= en.EndTime) ||
                        (section.StartTime <= en.EndTime && en.StartTime <= section.EndTime))
                    {
                        return(RegistrationResults.TimeConflict);
                    }
                }
            }

            return(RegistrationResults.Success);
        }
Ejemplo n.º 3
0
        //public virtual ICollection<CourseSection> CompletedCourses { get; set; } = new List<CourseSection>();

        public RegistrationResults CanRegisterForCourseSection(CourseSection section)
        {
            if (EnrolledCourses.Select(c => c.CatalogCourse).Contains(section.CatalogCourse) && Transcript.Where(c => c.Grade >= GradeTypes.C && c.Course.CatalogCourse == section.CatalogCourse).Count() == 0 && Transcript.Where(c => c.Grade < GradeTypes.C && c.Course.CatalogCourse == section.CatalogCourse).Count() == 0)
            {
                return(RegistrationResults.AlreadyEnrolled);
            }
            if (Transcript.Where(c => c.Course.CatalogCourse == section.CatalogCourse && c.Grade >= GradeTypes.C).Count() != 0)
            {
                return(RegistrationResults.AlreadyCompleted);
            }
            if (!section.CatalogCourse.Prerequisites.All(c => Transcript.Where(tC => tC.Grade >= GradeTypes.C).Select(cC => cC.Course.CatalogCourse).Contains(c)))
            {
                return(RegistrationResults.PrerequisitesNotMet);
            }
            if (EnrolledCourses.Where(c => (c.MeetingDays & section.MeetingDays) > 0 && ContainsTimeConflict(c, section)).Count() != 0)
            {
                return(RegistrationResults.TimeConflict);
            }
            return(RegistrationResults.Success);
        }