//This action uses provide editing the school for a student record public async Task<ActionResult> Edit(Guid? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } //get the student by id using db context Student student = await db.Students.FindAsync(id); if (student == null) { return HttpNotFound(); } //populate view model with student values retrived from db StudentViewModel studentVM = Mapper.Map<StudentViewModel>(student); //student view model has constructor which populates // Data of joining property to current date // hence repopulating date of joining property with database retrived value studentVM.DateOfJoining = student.DateOfJoining; // A model is created just to hold a subset StudentCurrentyear Record // namely schoolrefid, academictyearrefid and classrefid StudentCurrentYearSubset CurrentYear = new StudentCurrentYearSubset(); //This loop is nesscary as studentcurrentyear object/table may contain // more than one record for student who are studying in school for // more than one year, so the active flag is checked before retriving the // the relevant record for editing foreach(var studentCurrentRec in student.StudentCurrentYear) { if (studentCurrentRec.Active == true) { CurrentYear.SchoolRefID = studentCurrentRec.SchoolRefID; CurrentYear.AcademicYearRefID= studentCurrentRec.AcademicYearRefID; CurrentYear.ClassRefID=studentCurrentRec.ClassRefID; break; } } ViewBag.SchoolRefID = new SelectList(db.Schools.AsNoTracking().Select(x => new { x.SchoolID, x.SchoolName }), "SchoolID", "SchoolName", CurrentYear.SchoolRefID); ViewBag.AcademicYearRefID = new SelectList(db.AcademicYears.AsNoTracking().Where(sch => sch.SchoolRefID == CurrentYear.SchoolRefID).Select(x => new { x.AcademicYearID, x.DisplayYear }), "AcademicYearID", "DisplayYear", CurrentYear.AcademicYearRefID); ViewBag.ClassRefID = new SelectList(db.SchoolClasses.AsNoTracking().Where(sch => sch.SchoolRefID == CurrentYear.SchoolRefID).Select(x => new { x.ClassID, x.ClassName }), "ClassID", "ClassName", CurrentYear.ClassRefID); return View(studentVM); }
//This action uses provide editing the school for a student record public async Task<ActionResult> Edit(Guid? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } //get the student by id using db context StudentViewModel studentVM = await Task.Run(() => _service.findStudentById(id)); if (studentVM == null) { return HttpNotFound(); } //populate view model with student values retrived from db // A model is created just to hold a subset StudentCurrentyear Record // namely schoolrefid, academictyearrefid and classrefid StudentCurrentYearSubset CurrentYear = new StudentCurrentYearSubset(); //This loop is nesscary as studentcurrentyear object/table may contain // more than one record for student who are studying in school for // more than one year, so the active flag is checked before retriving the // the relevant record for editing foreach(var studentCurrentRec in studentVM.StudentCurrentYear) { if (studentCurrentRec.Active == true) { CurrentYear.SchoolRefID = studentCurrentRec.SchoolRefID; CurrentYear.AcademicYearRefID= studentCurrentRec.AcademicYearRefID; CurrentYear.ClassRefID=studentCurrentRec.ClassRefID; break; } } var dbc = _service.getDBContext(); ViewBag.SchoolRefID = new SelectList(dbc.Schools.AsNoTracking().Select(x => new { x.SchoolID, x.SchoolName }), "SchoolID", "SchoolName", CurrentYear.SchoolRefID); ViewBag.AcademicYearRefID = new SelectList(dbc.AcademicYears.AsNoTracking().Where(sch => sch.SchoolRefID == CurrentYear.SchoolRefID).Select(x => new { x.AcademicYearID, x.DisplayYear }), "AcademicYearID", "DisplayYear", CurrentYear.AcademicYearRefID); ViewBag.ClassRefID = new SelectList(dbc.SchoolClasses.AsNoTracking().Where(sch => sch.SchoolRefID == CurrentYear.SchoolRefID).Select(x => new { x.ClassID, x.ClassName }), "ClassID", "ClassName", CurrentYear.ClassRefID); return View(studentVM); }