Example #1
0
        static void Main(string[] args)
        {
            CatalogContext con = new CatalogContext();

            int choice = -1;

            do
            {
                Console.WriteLine("Menu:\n0. Quit\n1. Populate database\n2. Show courses\n3. Show course sections\n"
                                  + "4. Print transcript");
                choice = Convert.ToInt32(Console.ReadLine());

                switch (choice)
                {
                case 1:
                    // Add some courses to the catalog
                    var cecs174 = new CatalogCourse()
                    {
                        DepartmentName = "CECS",
                        CourseNumber   = "174",
                    };
                    con.Courses.Add(cecs174);

                    var cecs274 = new CatalogCourse()
                    {
                        DepartmentName = "CECS",
                        CourseNumber   = "274",
                    };
                    cecs274.Prerequisites.Add(cecs174);
                    con.Courses.Add(cecs274);

                    var cecs228 = new CatalogCourse()
                    {
                        DepartmentName = "CECS",
                        CourseNumber   = "228",
                    };
                    cecs228.Prerequisites.Add(cecs174);
                    con.Courses.Add(cecs228);

                    var cecs277 = new CatalogCourse()
                    {
                        DepartmentName = "CECS",
                        CourseNumber   = "277",
                    };
                    cecs277.Prerequisites.Add(cecs274);
                    cecs277.Prerequisites.Add(cecs228);
                    con.Courses.Add(cecs277);

                    // Add a semester term
                    var spring2017 = new SemesterTerm()
                    {
                        Name      = "Spring 2017",
                        StartDate = new DateTime(2017, 1, 23),
                        EndDate   = new DateTime(2017, 5, 26)
                    };
                    con.SemesterTerms.Add(spring2017);
                    var fall2017 = new SemesterTerm()
                    {
                        Name      = "Fall 2017",
                        StartDate = new DateTime(2017, 8, 21),
                        EndDate   = new DateTime(2017, 12, 22)
                    };
                    con.SemesterTerms.Add(fall2017);

                    // Add instructors
                    var neal = new Instructor()
                    {
                        FirstName = "Neal",
                        LastName  = "Terrell",
                    };
                    con.Instructors.Add(neal);
                    var anthony = new Instructor()
                    {
                        FirstName = "Anthony",
                        LastName  = "Giacalone"
                    };
                    con.Instructors.Add(anthony);

                    // Add sections
                    var cecs174_99 = new CourseSection()
                    {
                        CatalogCourse = cecs174,
                        SectionNumber = 1,
                        Instructor    = neal,
                        MeetingDays   = DaysOfWeek.Monday | DaysOfWeek.Wednesday,
                        StartTime     = new DateTime(2017, 1, 1, 8, 0, 0),                             // 9 am
                        EndTime       = new DateTime(2017, 1, 1, 8, 50, 0),
                    };
                    spring2017.CourseSections.Add(cecs174_99);

                    var cecs228_99 = new CourseSection()
                    {
                        CatalogCourse = cecs228,
                        SectionNumber = 1,
                        Instructor    = anthony,
                        MeetingDays   = DaysOfWeek.Friday,
                        StartTime     = new DateTime(2017, 1, 1, 10, 0, 0),                             // 9 am
                        EndTime       = new DateTime(2017, 1, 1, 11, 50, 0),
                    };
                    spring2017.CourseSections.Add(cecs228_99);

                    var cecs228_01 = new CourseSection()
                    {
                        CatalogCourse = cecs228,
                        SectionNumber = 1,
                        Instructor    = neal,
                        MeetingDays   = DaysOfWeek.Tuesday | DaysOfWeek.Thursday,
                        StartTime     = new DateTime(2017, 1, 1, 9, 0, 0),                             // 9 am
                        EndTime       = new DateTime(2017, 1, 1, 9, 50, 0),
                    };
                    fall2017.CourseSections.Add(cecs228_01);

                    //var cecs228_03 = new CourseSection() {
                    //	CatalogCourse = cecs228,
                    //	SectionNumber = 1,
                    //	Instructor = neal,
                    //	MeetingDays = DaysOfWeek.Monday | DaysOfWeek.Wednesday,
                    //	StartTime = new DateTime(2017, 1, 1, 12, 30, 0), // 9 am
                    //	EndTime = new DateTime(2017, 1, 1, 13, 20, 0),
                    //};
                    //fall2017.CourseSections.Add(cecs228_03);

                    var cecs274_05 = new CourseSection()
                    {
                        CatalogCourse = cecs274,
                        SectionNumber = 5,
                        Instructor    = anthony,
                        MeetingDays   = DaysOfWeek.Tuesday | DaysOfWeek.Thursday,
                        StartTime     = new DateTime(2017, 1, 1, 9, 30, 0),                             // 9 am
                        EndTime       = new DateTime(2017, 1, 1, 10, 20, 0),
                    };
                    fall2017.CourseSections.Add(cecs274_05);

                    var cecs274_11 = new CourseSection()
                    {
                        CatalogCourse = cecs274,
                        SectionNumber = 11,
                        Instructor    = anthony,
                        MeetingDays   = DaysOfWeek.Monday | DaysOfWeek.Wednesday | DaysOfWeek.Friday,
                        StartTime     = new DateTime(2017, 1, 1, 13, 0, 0),                             // 1 pm
                        EndTime       = new DateTime(2017, 1, 1, 13, 50, 0),
                    };
                    fall2017.CourseSections.Add(cecs274_11);

                    Student s1 = new Student()
                    {
                        FirstName = "A",
                        LastName  = "B",
                    };
                    s1.Transcript.Add(new CourseGrade()
                    {
                        CourseSection = cecs174_99,
                        Grade         = GradeTypes.A
                    });
                    s1.Transcript.Add(new CourseGrade()
                    {
                        CourseSection = cecs228_99,
                        Grade         = GradeTypes.D
                    });
                    con.Students.Add(s1);

                    Student s2 = new Student()
                    {
                        FirstName = "C",
                        LastName  = "D",
                    };
                    con.Students.Add(s2);

                    con.SaveChanges();
                    break;

                case 2:
                    // Print all courses in the catalog
                    foreach (var course in con.Courses.OrderBy(c => c.CourseNumber))
                    {
                        Console.Write($"{course.DepartmentName} {course.CourseNumber}");
                        if (course.Prerequisites.Count > 0)
                        {
                            Console.Write(" (Prerequisites: ");
                            Console.Write(string.Join(", ", course.Prerequisites));
                            Console.Write(")");
                        }
                        Console.WriteLine();
                    }

                    break;

                case 3:
                    // Print all offered sections for Fall 2017
                    var fallSem = con.SemesterTerms.Where(s => s.Name == "Fall 2017").FirstOrDefault();
                    if (fallSem == null)
                    {
                        break;
                    }

                    Console.WriteLine($"{fallSem.Name}: {fallSem.StartDate.ToString("MMM dd")} - {fallSem.EndDate.ToString("MMM dd")}");
                    foreach (var section in fallSem.CourseSections)
                    {
                        Console.WriteLine($"{section.CatalogCourse}-{section.SectionNumber.ToString("D2")} -- " +
                                          $"{section.Instructor.FirstName[0]} {section.Instructor.LastName} -- " +
                                          $"{section.MeetingDays}, {section.StartTime.ToShortTimeString()} to {section.EndTime.ToShortTimeString()}");
                    }
                    break;

                case 4:
                    Console.WriteLine("Enter a name:");
                    string   name = Console.ReadLine();
                    string[] split = name.Split(' ');
                    string   f = split[0], l = split[1];
                    Student  tStudent = con.Students.Where(s => s.FirstName == f && s.LastName == l)
                                        .FirstOrDefault();
                    if (tStudent == null)
                    {
                        Console.WriteLine("Not found");
                        break;
                    }
                    Console.WriteLine($"{tStudent.FirstName} {tStudent.LastName}");
                    Console.WriteLine("Transcript: {0}",
                                      string.Join(", ", tStudent.Transcript));

                    break;

                case 5:
                    Console.WriteLine("Enter a name:");
                    string   ename = Console.ReadLine();
                    string[] esplit = ename.Split(' ');
                    string   ef = esplit[0], el = esplit[1];
                    Student  eStudent = con.Students.Where(s => s.FirstName == ef && s.LastName == el)
                                        .FirstOrDefault();
                    if (eStudent == null)
                    {
                        Console.WriteLine("Not found");
                        break;
                    }

                    Console.WriteLine("Enter a course section for Fall 2017:");
                    string   cName  = Console.ReadLine();
                    string[] csplit = cName.Split(new char[] { ' ', '-' });
                    string   dept   = csplit[0];
                    string   num    = csplit[1];
                    int      sec    = Convert.ToInt32(csplit[2]);

                    SemesterTerm  f2017 = con.SemesterTerms.Where(s => s.Name == "Fall 2017").First();
                    CourseSection sec2  = f2017.CourseSections.Where(
                        c => c.CatalogCourse.DepartmentName == dept &&
                        c.CatalogCourse.CourseNumber == num &&
                        c.SectionNumber == sec).FirstOrDefault();

                    if (sec2 == null)
                    {
                        Console.WriteLine("not found");
                        break;
                    }

                    var register = eStudent.CanRegisterForCourseSection(sec2);
                    Console.WriteLine(register);
                    break;
                }
                Console.WriteLine();
                Console.WriteLine();
            } while (choice != 0);
        }
Example #2
0
        static void Main(string[] args)
        {
            CatalogContext con = new CatalogContext();

            int choice = -1;

            do
            {
                Console.WriteLine("Menu:\n0. Quit\n1. Populate database\n2. Show courses\n3. Show course sections\n4. Print student details\n5. Register for course");
                choice = Convert.ToInt32(Console.ReadLine());

                switch (choice)
                {
                case 1:
                    // Add some courses to the catalog
                    var cecs174 = new CatalogCourse()
                    {
                        DepartmentName = "CECS",
                        CourseNumber   = "174",
                    };
                    con.Courses.Add(cecs174);

                    var cecs274 = new CatalogCourse()
                    {
                        DepartmentName = "CECS",
                        CourseNumber   = "274",
                    };
                    cecs274.Prerequisites.Add(cecs174);
                    con.Courses.Add(cecs274);

                    var cecs228 = new CatalogCourse()
                    {
                        DepartmentName = "CECS",
                        CourseNumber   = "228",
                    };
                    cecs228.Prerequisites.Add(cecs174);
                    con.Courses.Add(cecs228);

                    var cecs277 = new CatalogCourse()
                    {
                        DepartmentName = "CECS",
                        CourseNumber   = "277",
                    };
                    cecs277.Prerequisites.Add(cecs274);
                    cecs277.Prerequisites.Add(cecs228);
                    con.Courses.Add(cecs277);

                    // Add a semester term
                    var spring2017 = new SemesterTerm()
                    {
                        Name      = "Spring 2017",
                        StartDate = new DateTime(2017, 1, 23),
                        EndDate   = new DateTime(2017, 5, 26)
                    };
                    var fall2017 = new SemesterTerm()
                    {
                        Name      = "Fall 2017",
                        StartDate = new DateTime(2017, 8, 21),
                        EndDate   = new DateTime(2017, 12, 22)
                    };
                    con.SemesterTerms.Add(fall2017);

                    // Add instructors
                    var neal = new Instructor()
                    {
                        FirstName = "Neal",
                        LastName  = "Terrell",
                    };
                    con.Instructors.Add(neal);
                    var anthony = new Instructor()
                    {
                        FirstName = "Anthony",
                        LastName  = "Giaccalone"
                    };
                    con.Instructors.Add(anthony);

                    // Add sections
                    var cecs174_99 = new CourseSection()
                    {
                        CatalogCourse = cecs174,
                        SectionNumber = 99,
                        Instructor    = neal,
                        MeetingDays   = DaysOfWeek.Monday | DaysOfWeek.Wednesday,
                        StartTime     = new DateTime(2017, 1, 1, 8, 0, 0), // 8 am
                        EndTime       = new DateTime(2017, 1, 1, 8, 50, 0),
                    };
                    spring2017.CourseSections.Add(cecs174_99);

                    var cecs228_99 = new CourseSection()
                    {
                        CatalogCourse = cecs228,
                        SectionNumber = 99,
                        Instructor    = anthony,
                        MeetingDays   = DaysOfWeek.Friday,
                        StartTime     = new DateTime(2017, 1, 1, 10, 0, 0), // 10 am
                        EndTime       = new DateTime(2017, 1, 1, 11, 50, 0),
                    };
                    spring2017.CourseSections.Add(cecs228_99);

                    var cecs228_01 = new CourseSection()
                    {
                        CatalogCourse = cecs228,
                        SectionNumber = 1,
                        Instructor    = neal,
                        MeetingDays   = DaysOfWeek.Tuesday | DaysOfWeek.Thursday,
                        StartTime     = new DateTime(2017, 1, 1, 9, 0, 0), // 9 am
                        EndTime       = new DateTime(2017, 1, 1, 9, 50, 0),
                    };
                    fall2017.CourseSections.Add(cecs228_01);

                    var cecs274_05 = new CourseSection()
                    {
                        CatalogCourse = cecs274,
                        SectionNumber = 5,
                        Instructor    = anthony,
                        MeetingDays   = DaysOfWeek.Monday | DaysOfWeek.Wednesday,
                        StartTime     = new DateTime(2017, 1, 1, 9, 30, 0), // 9:30 am
                        EndTime       = new DateTime(2017, 1, 1, 10, 20, 0),
                    };
                    fall2017.CourseSections.Add(cecs274_05);

                    var cecs274_11 = new CourseSection()
                    {
                        CatalogCourse = cecs274,
                        SectionNumber = 11,
                        Instructor    = anthony,
                        MeetingDays   = DaysOfWeek.Monday | DaysOfWeek.Wednesday | DaysOfWeek.Friday,
                        StartTime     = new DateTime(2017, 1, 1, 13, 0, 0), // 1 pm
                        EndTime       = new DateTime(2017, 1, 1, 13, 50, 0),
                    };
                    fall2017.CourseSections.Add(cecs274_11);

                    // Add Students
                    var studentDavid = new Student()
                    {
                        FirstName = "David",
                        LastName  = "Van",
                    };

                    CourseGrade davidCECS174 = new CourseGrade()
                    {
                        Student = studentDavid,
                        Course  = cecs174_99,
                        Grade   = GradeTypes.A
                    };

                    CourseGrade davidCECS228 = new CourseGrade()
                    {
                        Student = studentDavid,
                        Course  = cecs228_99,
                        Grade   = GradeTypes.D
                    };

                    cecs174_99.EnrolledStudents.Add(studentDavid);
                    cecs228_99.EnrolledStudents.Add(studentDavid);

                    studentDavid.Transcript.Add(davidCECS174);
                    studentDavid.Transcript.Add(davidCECS228);

                    var studentRyan = new Student()
                    {
                        FirstName = "Ryan",
                        LastName  = "Ea"
                    };

                    con.Students.Add(studentDavid);
                    con.Students.Add(studentRyan);

                    con.SaveChanges();
                    break;

                case 2:
                    // Print all courses in the catalog
                    foreach (var course in con.Courses.OrderBy(c => c.CourseNumber))
                    {
                        Console.Write($"{course.DepartmentName} {course.CourseNumber}");
                        if (course.Prerequisites.Count > 0)
                        {
                            Console.Write(" (Prerequisites: ");
                            Console.Write(string.Join(", ", course.Prerequisites));
                            Console.Write(")");
                        }
                        Console.WriteLine();
                    }

                    break;

                case 3:
                    // Print all offered sections for Fall 2017
                    var fallSem = con.SemesterTerms.Where(s => s.Name == "Fall 2017").FirstOrDefault();
                    if (fallSem == null)
                    {
                        break;
                    }

                    Console.WriteLine($"{fallSem.Name}: {fallSem.StartDate.ToString("MMM dd")} - {fallSem.EndDate.ToString("MMM dd")}");
                    foreach (var section in fallSem.CourseSections)
                    {
                        Console.WriteLine($"{section.CatalogCourse}-{section.SectionNumber.ToString("D2")} -- " +
                                          $"{section.Instructor.FirstName[0]} {section.Instructor.LastName} -- " +
                                          $"{section.MeetingDays}, {section.StartTime.ToShortTimeString()} to {section.EndTime.ToShortTimeString()}");
                        if (section.EnrolledStudents.Count() > 0)
                        {
                            Console.Write("Enrolled: ");
                            int i = 0;
                            foreach (var student in section.EnrolledStudents)
                            {
                                Console.Write($"{student.LastName}, {student.FirstName}");
                                if (i < section.EnrolledStudents.Count() - 1)
                                {
                                    Console.Write("; ");
                                }
                                else
                                {
                                    Console.WriteLine();
                                }
                                i++;
                            }
                        }
                    }
                    break;

                case 4:
                    Console.Write("Enter the name of the student (First Name Last Name) you wish to find: ");
                    string[] nameForFind         = Console.ReadLine().Split(' ');
                    var      studentsListForFind = con.Students;
                    foreach (var student in studentsListForFind)
                    {
                        if (student.FirstName == nameForFind[0] && student.LastName == nameForFind[1])
                        {
                            Console.WriteLine($"{student.FirstName} {student.LastName}");
                            if (student.Transcript.Count() == 0)
                            {
                                Console.WriteLine("No Transcript.");
                            }
                            else
                            {
                                int i = 0;
                                Console.Write("Transcript: ");
                                foreach (var grade in student.Transcript)
                                {
                                    Console.Write($"{grade.Course.CatalogCourse.DepartmentName} {grade.Course.CatalogCourse.CourseNumber} ({grade.Grade})");
                                    if (i < student.Transcript.Count() - 1)
                                    {
                                        Console.Write(", ");
                                    }
                                    else
                                    {
                                        Console.WriteLine();
                                    }
                                    i++;
                                }
                            }
                            var currentSemesterCourses = student.EnrolledCourses.Where(c => c.Semester == con.SemesterTerms.Where(s => s.Name == "Fall 2017").First());
                            if (currentSemesterCourses.Count() == 0)
                            {
                                Console.WriteLine("No Enrolled Courses.");
                            }
                            else
                            {
                                int i = 0;
                                Console.Write("Enrolled: ");
                                foreach (var course in currentSemesterCourses)
                                {
                                    Console.Write($"{course.CatalogCourse.DepartmentName} {course.CatalogCourse.CourseNumber}-");
                                    if (course.SectionNumber < 10)
                                    {
                                        Console.Write("0");
                                    }
                                    Console.Write($"{course.SectionNumber}");
                                    if (i < currentSemesterCourses.Count() - 1)
                                    {
                                        Console.Write(", ");
                                    }
                                    else
                                    {
                                        Console.WriteLine();
                                    }
                                    i++;
                                }
                            }
                        }
                    }
                    break;

                case 5:
                    Console.WriteLine("Enter the name of the student you want to enroll (First Name Last Name): ");
                    string[] nameForRegister = Console.ReadLine().Split(' ');
                    Console.WriteLine("Enter the name of the course and the section number you want to enroll in (e.g. CECS 228-01): ");
                    string[] courseName       = Console.ReadLine().Split(' ', '-');
                    var      fall2017Semester = con.SemesterTerms.Where(sT => sT.Name == "Fall 2017").FirstOrDefault();

                    var studentsListForRegister = con.Students;
                    foreach (var student in studentsListForRegister)
                    {
                        if (student.FirstName == nameForRegister[0] && student.LastName == nameForRegister[1])
                        {
                            if (fall2017Semester != null)
                            {
                                var courses = fall2017Semester.CourseSections;
                                foreach (var course in courses)
                                {
                                    if (course.CatalogCourse.DepartmentName == courseName[0] && course.CatalogCourse.CourseNumber == courseName[1] && course.SectionNumber == Convert.ToInt32(courseName[2]))
                                    {
                                        var result = student.CanRegisterForCourseSection(course);
                                        switch (result)
                                        {
                                        case RegistrationResults.Success:
                                            course.EnrolledStudents.Add(student);
                                            student.EnrolledCourses.Add(course);
                                            Console.WriteLine("Course successfully registered!");
                                            break;

                                        case RegistrationResults.PrerequisitesNotMet:
                                            Console.WriteLine("Prerequisites Not Met!");
                                            break;

                                        case RegistrationResults.TimeConflict:
                                            Console.WriteLine("Time Conflict!");
                                            break;

                                        case RegistrationResults.AlreadyEnrolled:
                                            Console.WriteLine("Already Enrolled!");
                                            break;

                                        case RegistrationResults.AlreadyCompleted:
                                            Console.WriteLine("Already Completed!");
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    con.SaveChanges();
                    break;
                }
                Console.WriteLine();
                Console.WriteLine();
            } while (choice != 0);
        }