public ActionResult Create(Program program)
        {
            if (ModelState.IsValid)
            {
                var result = (from c in db.Colleges
                              join d in db.Departments
                              on c.CollegeName equals d.CollegeName
                              from cs in db.Colleges
                              join p in db.Programs
                              on cs.CollegeName equals p.CollegeName
                              where p.ProgramName == program.ProgramName
                              & p.ProgramId != program.ProgramId
                              select new { ProgramName = program.ProgramName }).ToList().Count();

                if (result == 0)
                {
                    program.ProgramLeadDepartment = program.ProgramLeadDepartment.Replace("string:", "").Trim();
                    program.CollegeName = program.CollegeName.Replace("string:", "").Trim();
                    string[] coursesData = program.Courses.Split(';');
                    for(int i =0;i<coursesData.Length;i=i+4)
                    {
                        if((i+1)< coursesData.Length && (i+3) < coursesData.Length)
                        {
                            ProgramCourse pc = new ProgramCourse()
                            {
                                CollegeName = program.CollegeName,
                                CourseName = coursesData[i + 1],
                                CourseType = coursesData[i + 3],
                                ProgramName = program.ProgramName
                            };
                            db.ProgramCourses.Add(pc);
                        }
                    }

                    db.Programs.Add(program);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
                else
                {
                    ModelState.AddModelError("ProgramName", "Program Name already exists in DB.");
                    return View(program);
                }
            }

            return View(program);
        }
        public ActionResult Edit(Program program)
        {
            if (ModelState.IsValid)
            {
                program.ProgramLeadDepartment = program.ProgramLeadDepartment.Replace("string:", "").Trim();
                program.CollegeName = program.CollegeName.Replace("string:", "").Trim();
                string[] coursesData = program.Courses.Split(';');

                for (int i = 0; i < coursesData.Length; i = i + 6)
                {
                    if ((i + 3) < coursesData.Length && (i + 5) < coursesData.Length)
                    {
                        int cId;
                        var isNull = Int32.TryParse(coursesData[i + 1],out cId);
                        var cName = coursesData[i + 3];
                        var cType = coursesData[i + 5];

                        if(!isNull)
                        {
                            ProgramCourse pc = new ProgramCourse()
                            {
                                CollegeName = program.CollegeName,
                                CourseName = cName,
                                CourseType = cType,
                                ProgramName = program.ProgramName
                            };
                            db.ProgramCourses.Add(pc);

                        }
                        else
                        {
                            ProgramCourse pCourse = db.ProgramCourses.Where<ProgramCourse>(x => x.PCId.Equals(cId)).FirstOrDefault<ProgramCourse>();
                            pCourse.CourseName = cName;
                            pCourse.CourseType = cType;
                        }

                    }
                }
                db.Entry(program).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(program);
        }