public ActionResult CourseAssign(Department aDepartment, Course aCourse, Teacher aTeacher)
        {
            PopulateDropdownList();
            if (aDepartment.DepartmentId == 0 || aCourse.CourseId == 0 || aTeacher.TeacherId == 0)
            {
                ViewBag.Message = "All fields are required";

                return View();
            }

            aDepartment = db.Departments.Find(aDepartment.DepartmentId);
            aTeacher = db.Teachers.Find(aTeacher.TeacherId);
            aCourse = db.Courses.Find(aCourse.CourseId);

            if (aCourse.Teacher != null)
            {
                PopulateDrodownList(aCourse, aTeacher);
                ViewBag.Message = "This Course already assigned to another teacher ";
                return View();

            }
            aCourse.Teacher = aTeacher;
            aCourse.Department = aDepartment;

            if (!ModelState.IsValid)
            {
                db.Entry(aCourse).State = EntityState.Modified;
                db.SaveChanges();
                aTeacher.RemainingCredit -= aCourse.Credit;
                db.Entry(aTeacher).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("ViewCourseStatus");
            }
            return View();
        }
        public ActionResult Create(Student aStudent, Course aCourse, DateTime date)
        {
            Create();
            if (aStudent.StudentId == 0 || aCourse.CourseId == 0)
            {
                ViewBag.ErrorMessage = "All fields are required.";
                return View();
            }

            Enrollment enrollment = new Enrollment();
            enrollment.StudentId = aStudent.StudentId;
            enrollment.CourseId = aCourse.CourseId;
            enrollment.Date = date;

            Student student = (db.Students.Where(s => s.StudentId == aStudent.StudentId)).Single();
            Course course = db.Courses.Single(c => c.CourseId == aCourse.CourseId);

            enrollment.Student = student;
            enrollment.Course = course;

            bool check = db.Enrollments.Count(c => c.StudentId == aStudent.StudentId && c.CourseId == aCourse.CourseId) ==0;
            if (check)
            {
                db.Enrollments.Add(enrollment);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.ErrorMessage =  "This course has already enrolled for this student";
            return View(enrollment);
        }
 private void PopulateDrodownList(Course aCourse, Teacher aTeacher)
 {
     var teachers = db.Teachers.Where(t => t.DepartmentId == aTeacher.DepartmentId).ToList();
     var courses = db.Courses.Where(s => s.DepartmentId == aCourse.DepartmentId).ToList();
     ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "Code");
     ViewBag.TeacherId = new SelectList(teachers, "TeacherId", "Name", aTeacher.Name);
     ViewBag.CourseId = new SelectList(courses, "CourseId", "Code", aCourse.Code);
 }