//Used v-2 /// <summary> /// Returns List<runningClass/> for the upcoming Session. /// </summary> /// <param name="schoolId"></param> /// <param name="nextSessionRelativePosition">Position of either sub-year or session wrt. their year or academic year respectively. /// i.e. within the year the sub-year position is either 1 or 2 (if two subyears). don't provide its actual position, /// but the relative positions within the sub-years. /// </param> /// <param name="academicYearId"> pass id of next academic year.. only pass for getting rcls while saveing</param> /// <param name="sessionId"></param> public Dictionary <Program, List <RunningClass> > ListClassesForNextSession(int schoolId , int nextSessionRelativePosition, int academicYearId = 0, int sessionId = 0) { try { Dictionary <Program, List <RunningClass> > dict = new Dictionary <Program, List <RunningClass> >(); // nextSessionRelativePosition is not 0-indexed so we make it 0-indexed by subtracting 1 var sessAndSubYearPosition = nextSessionRelativePosition - 1; var aYears = Context.AcademicYear.Where(x => !(x.Void ?? false)) .OrderByDescending(x => x.Position).ToList(); //academic years loop for (int a = 0; a < aYears.Count; a++) { var aca = aYears[a]; var progBatches = aca.Batches.First().ProgramBatches.Where(x => !(x.Void ?? false)).ToList(); //program batches loop for (int pb = 0; pb < progBatches.Count; pb++) { var progBatch = progBatches[pb]; var years = progBatch.Program.Year.Where(x => !(x.Void ?? false)) .OrderBy(x => x.Position).ToList(); if (a < years.Count) { var runningClasses = new List <RunningClass>(); if (dict.ContainsKey(progBatch.Program)) { runningClasses = dict[progBatch.Program]; } else { dict.Add(progBatch.Program, runningClasses); } var year = years[a]; var subYears = year.SubYears.Where(x => !(x.Void ?? false)) .OrderBy(x => x.Position).ToList(); //[sessAndSubYearPosition]; // if there's no sub-year then don't create running class if (sessAndSubYearPosition < subYears.Count) { //get sub-year at specified position var subYear = subYears[sessAndSubYearPosition]; var runningClass = new RunningClass() { AcademicYearId = academicYearId, //AcademicYear = latestAca, Completed = false, IsActive = true, SessionId = sessionId, //Session = latestSession, ProgramBatchId = progBatch.Id, ProgramBatch = progBatch, YearId = year.Id, Year = year, Void = false, SubYearId = subYear.Id, SubYear = subYear, }; runningClasses.Add(runningClass); } } } //end of program batch loop } //end of academic years loop return(dict); //} } catch { return(null); } return(null); }
void Save() { //var rc = Session["RunningClassYear"] as RunningClassEventArgs; //if (rc != null) int sessionId = SessionId; int academicYearId = AcademicYearId; var list = new List <RunningClass>(); foreach (ProgramCheckBoxAndLabel p in pnlProgramListing.Controls) { foreach (var y in p.GetControls()) { if (SessionId > 0) { //year and subyear both must be included foreach (var s in y.GetControls()) { //if no data was previously saved and no batch assinged then don't add to list if (s.Checked || s.RunningClassId > 0) { if (s.SelectedProgramBatchId > 0 || s.RunningClassId > 0) { var rc = new RunningClass() { Id = s.RunningClassId , AcademicYearId = academicYearId , YearId = s.YearId , SubYearId = s.SubYearId , SessionId = sessionId , Void = !(s.Checked && y.Checked) }; if (s.SelectedProgramBatchId > 0) { rc.ProgramBatchId = s.SelectedProgramBatchId; } list.Add(rc); } } } } else { //only year, no subyear //if no data was previously saved and no batch assinged then don't add to list if (y.Checked || y.RunningClassId > 0) { if (y.SelectedProgramBatchId > 0 || y.RunningClassId > 0) { var rc = new RunningClass() { Id = y.RunningClassId , AcademicYearId = academicYearId , YearId = y.YearId , Void = (!y.Checked) }; if (y.SelectedProgramBatchId > 0) { rc.ProgramBatchId = y.SelectedProgramBatchId; } list.Add(rc); } } } } } //var lCntrl = pnlProgramListing.FindControl("levelControl" + rc.LevelId) as ListLevelUC; //foreach (ListLevelUC l in pnlProgramListing.Controls) //{ // foreach (var f in l.GetControls()) // { // } //} //save if (list.Any()) { using (var helper = new DbHelper.AcademicPlacement()) { var saved = false;//helper.AddOrUpdateRunningClass(list); if (saved) { if (sessionId > 0) { Response.Redirect("~/Views/Academy/AcademicYear/AcademicYearDetail.aspx?aId=" + academicYearId + "&sId=" + sessionId); } else { Response.Redirect("~/Views/Academy/AcademicYear/AcademicYearDetail.aspx?aId=" + academicYearId); } } //if (saved) Response.Redirect("~/Views/Academy/List.aspx"); } } }