public ActionResult Create(int schoolYear)
        {
            try
            {
                dbTIREntities db = new dbTIREntities();
                StudentExt studentExt = new StudentExt();
                ModelServices modelService = new ModelServices();
                studentExt.SchoolYear = schoolYear;
                PopulateViewData(studentExt);
                studentExt.SchoolYearDesc = HelperService.SchoolYearDescription(db);
                studentExt.SchoolYearId = modelService.SchoolYearId();
                return View(studentExt);

            }
            catch (Exception ex)
            {
                Logging log = new Logging();
                log.LogException(ex);
                return View("GeneralError");
            }
        }
        public void PopulateViewData(StudentExt studentExt)
        {

            dbTIREntities db = new dbTIREntities();
            SiteUser siteUser = ((SiteUser)Session["SiteUser"]);
            StudentService studentService = new StudentService(siteUser, db);
            ModelServices modelService = new ModelServices();

            studentExt.DistrictId = siteUser.Districts[0].Id;
            studentExt.DistrictDesc = siteUser.Districts[0].Name;
            studentExt.StudentClasses = studentExt.StudentId != 0 ? modelService.GetClassesByStudent(studentExt.StudentId, studentExt.SchoolYear) : null;
            studentExt.SchoolYears = studentExt.StudentId != 0 ? modelService.GetSchoolYearByStudent(studentExt.StudentId) : null;

            studentExt.DropDown = new DropDownData();
            int schoolYearId = modelService.GetSchoolYearId(studentExt.SchoolYear);
            studentExt.DropDown.School = new SchoolDropDown(modelService.GetSchoolDropDownData(siteUser.EdsUserId, schoolYearId), false);
            studentExt.DropDown.School.SelectedSchool = studentExt.ServingSchoolId;
            studentExt.DropDown.Grade = new GradeDropDown(studentService.DropDownDataForGrade());
            studentExt.DropDown.Grade.SelectedGrade = (studentExt.GradeLevel != null) ? (int)studentExt.GradeLevel : -1;
            studentExt.DropDown.Gender = new GenderDropDown(modelService.DropDownDataForGender());
            studentExt.DropDown.Gender.SelectedGender = (studentExt.GenderId != null) ? (int)studentExt.GenderId : 1;
            studentExt.DropDown.Lineage = new LineageDropDown(studentService.DropDownDataForLineage());
            studentExt.DropDown.Lineage.SelectedLineage = (studentExt.LineageId != null) ? (int)studentExt.LineageId : -1;
            studentExt.DropDown.HomeLanguage = new LanguageDropDown(studentService.DropDownDataForLanguage());
            studentExt.DropDown.HomeLanguage.SelectedLanguage = (studentExt.HomeLanguageId != null) ? (int)studentExt.HomeLanguageId : -1;
            studentExt.DropDown.NativeLanguage = new LanguageDropDown(studentService.DropDownDataForLanguage());
            studentExt.DropDown.NativeLanguage.SelectedLanguage = (studentExt.NativeLanguageId != null) ? (int)studentExt.NativeLanguageId : -1;
            studentExt.DropDown.Race = new RaceDropDown(modelService.DropDownDataForRace());
            studentExt.DropDown.Race.SelectedRace = (studentExt.RaceId != null) ? (int)studentExt.RaceId : -1;
            ViewBag.SchoolYear = studentExt.SchoolYear;
        }
        /// <summary>
        /// This function is used to Add and Update student
        /// </summary>
        /// <param name="studentExtend"></param>
        public void SaveStudents(StudentExt studentExtend)
        {
            using (var context = new dbTIREntities())
            {
                using (var dbContextTransaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        tblStudent newtblStudent = new tblStudent()
                        {
                            FirstName = studentExtend.FirstName,
                            MiddleName = studentExtend.MiddleName,
                            LastName = studentExtend.LastName,
                            DistrictId = studentExtend.DistrictId,
                            StateId = studentExtend.StateId,
                            LocalId = studentExtend.LocalId,
                            LineageId = studentExtend.LineageId == -1 ? null : studentExtend.LineageId,
                            RaceId = studentExtend.RaceId == -1 ? null : studentExtend.RaceId,
                            GenderId = studentExtend.GenderId,
                            BirthDate = studentExtend.BirthDate,
                            HomeLanguageId = studentExtend.HomeLanguageId == -1 ? null : studentExtend.HomeLanguageId,
                            NativeLanguageId = studentExtend.NativeLanguageId == -1 ? null : studentExtend.NativeLanguageId,
                            ChangeDatetime = DateTime.Now
                        };
                        if (studentExtend.StudentId == 0)
                        {
                            context.tblStudents.Add(newtblStudent);
                        }
                        else
                        {
                            newtblStudent.StudentId = studentExtend.StudentId;
                            context.tblStudents.Add(newtblStudent);
                            context.Entry(newtblStudent).State = EntityState.Modified;
                        }
                        context.SaveChanges();
                        tblStudentSchoolYear newtblStudentSchoolYear = new tblStudentSchoolYear()
                        {
                            StudentId = newtblStudent.StudentId,
                            SchoolYearId = studentExtend.SchoolYearId,
                            ServingSchoolId = studentExtend.ServingSchoolId,
                            GradeLevel = studentExtend.GradeLevel,
                            StateId = studentExtend.StateId,
                            LocalId = studentExtend.LocalId,
                            LepIndicator = studentExtend.LepIndicator,
                            IepIndicator = studentExtend.IepIndicator,
                            FrlIndicator = studentExtend.FrlIndicator,
                            EnrollmentDate = studentExtend.EnrollmentDate,
                            ChangeDateTIme = DateTime.Now,
                            Hispanic = studentExtend.Hispanic
                        };

                        if (studentExtend.StudentSchoolYearId == 0)
                        {
                            context.tblStudentSchoolYears.Add(newtblStudentSchoolYear);
                        }
                        else
                        {
                            newtblStudentSchoolYear.StudentSchoolYearId = studentExtend.StudentSchoolYearId;
                            context.tblStudentSchoolYears.Add(newtblStudentSchoolYear);
                            context.Entry(newtblStudentSchoolYear).State = EntityState.Modified;
                        }

                        context.SaveChanges();
                        dbContextTransaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        dbContextTransaction.Rollback();
                        throw ex;
                    }
                }
            }

        }