/// <summary>
 /// Deprecated Method for adding a new object to the Semesters EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToSemesters(Semester semester)
 {
     base.AddObject("Semesters", semester);
 }
        public ActionResult Create(Semester newSemester, FormCollection collection)
        {
            try
            {

                Boolean error = false;
                if (ModelState.IsValid)
                {
                    ViewData["SemesterVal"] = "";
                    ViewData["RegVal"] = "";
                    ViewData["StartVal"] = "";

                    newSemester.semester_id = collection["sem_id"] + collection["sem_year"];

                    //check strat and registration dates for validity
                    if(db.Semesters.Any(a => a.semester_id == newSemester.semester_id))
                    {
                        error = true;
                        ViewData["SemesterVal"] = "Semester ID must be unique.";
                    }

                    if (newSemester.start_date.CompareTo(newSemester.drop_date) >= 0 ||
                        newSemester.start_date.CompareTo(newSemester.withdraw_date) >= 0 ||
                        newSemester.start_date.CompareTo(newSemester.reg_start_date) <= 0)
                    {
                        //report error if start date is invalid
                        error = true;
                        ViewData["StartVal"]= "Start date must come after the registration date and before drop and withdraw dates.";
                    }

                    if (newSemester.reg_start_date.CompareTo(newSemester.drop_date) >= 0 ||
                        newSemester.reg_start_date.CompareTo(newSemester.withdraw_date) >= 0 ||
                        newSemester.reg_start_date.CompareTo(newSemester.start_date) >= 0)
                    {
                        //report error if registration date is invalid
                        error = true;
                        ViewData["RegVal"] = "Registration date must come before all other dates.";
                    }

                    if (error == true)
                    {
                        //return view again if there was an error
                        return View(newSemester);
                    }

                    //add semester to database and save
                    db.AddToSemesters(newSemester);
                    db.SaveChanges();

                    //return to index
                    return RedirectToAction("Index");
                }
                else
                {
                    return View(newSemester);
                }
            }
            catch (Exception ex)
            {
                return View(newSemester);
            }
        }
 /// <summary>
 /// Create a new Semester object.
 /// </summary>
 /// <param name="semester_id">Initial value of the semester_id property.</param>
 /// <param name="start_date">Initial value of the start_date property.</param>
 /// <param name="drop_date">Initial value of the drop_date property.</param>
 /// <param name="withdraw_date">Initial value of the withdraw_date property.</param>
 /// <param name="reg_start_date">Initial value of the reg_start_date property.</param>
 /// <param name="credit_step">Initial value of the credit_step property.</param>
 /// <param name="day_step">Initial value of the day_step property.</param>
 public static Semester CreateSemester(global::System.String semester_id, global::System.DateTime start_date, global::System.DateTime drop_date, global::System.DateTime withdraw_date, global::System.DateTime reg_start_date, global::System.Int32 credit_step, global::System.Int32 day_step)
 {
     Semester semester = new Semester();
     semester.semester_id = semester_id;
     semester.start_date = start_date;
     semester.drop_date = drop_date;
     semester.withdraw_date = withdraw_date;
     semester.reg_start_date = reg_start_date;
     semester.credit_step = credit_step;
     semester.day_step = day_step;
     return semester;
 }