Exemplo n.º 1
0
        public bool CreateStudent(StudentViewModel studentVM)
        {
            using (var dbosisTransaction = db.Database.BeginTransaction())
            {

                try
                {
                    //user auto mapper to fill student object incluing
                    // navigation object studentcurrentyear
                    Student studentmap = Mapper.Map<Student>(studentVM);
                    studentmap.StudentID = Guid.NewGuid();
                    studentmap.StudentCurrentYear[0].PromotedOn = DateTime.Now;
                    //The current is always true when create a student
                    // for the first time
                    studentmap.StudentCurrentYear[0].Active = true;
                    // the school table/object has registration no
                    // which needs to update for for every student
                    // always store the last registration no given to'
                    // a student
                    var LastRegNo = db.Database.SqlQuery<int>("Select LastRegNo from Schools with (XLOCK) where SchoolID={0}", studentmap.StudentCurrentYear[0].SchoolRefID).FirstOrDefault<int>();

                    // increment the lastregno by one
                    int NewRegNo = LastRegNo + 1;

                    //Update database school table with the new latest regno
                    db.Database.ExecuteSqlCommand("UPDATE Schools SET LastRegNo = {0} where schoolID= {1}", NewRegNo, studentmap.StudentCurrentYear[0].SchoolRefID);

                    // assign new registration to student object Registration No property
                    studentmap.RegistrationNo = NewRegNo;

                    //Add student object to student db context
                    db.Students.Add(studentmap);

                    //User Task Parallel Library(TPL) to save changes in asynchronous(background) way
                    db.SaveChanges();

                    //Commit the transaction
                    dbosisTransaction.Commit();

                    return true;

                }
                catch (Exception e)
                {
                    dbosisTransaction.Rollback();
                    _modelstate.AddModelError("", e.InnerException);
                    return false;

                }
            }
        }
Exemplo n.º 2
0
        // GET: /Student/Create
        public ActionResult Create()
        {
            
            //This new code from previous version optimized for performance
            //context object does not return all the colums of table for dropdown boxes 
            //only id and display columns are fetched(checked with sql profiler)

            ViewBag.SchoolRefID = new SelectList(db.Schools.AsNoTracking().Select(x => new { x.SchoolID, x.SchoolName }), "SchoolID", "SchoolName");
            ViewBag.AcademicYearRefID = new SelectList(db.AcademicYears.AsNoTracking().Select(x => new { x.AcademicYearID, x.DisplayYear }), "AcademicYearID", "DisplayYear");
            ViewBag.ClassRefID = new SelectList(db.SchoolClasses.AsNoTracking().Select(x => new { x.ClassID, x.ClassName }), "ClassID", "ClassName");
            StudentViewModel stuVMObj = new StudentViewModel();

            //Create a empty row in Current year table/object
            //data is returned will form gets posted
            List<StudentCurrentYear> CyObj = new List<StudentCurrentYear>
            {
                new StudentCurrentYear
                {
                    SchoolRefID=0,
                    AcademicYearRefID=0,
                    ClassRefID =0,
                    StudentRefID =Guid.NewGuid(),
                    Active = true
                }
            };

            stuVMObj.StudentCurrentYear = CyObj;

            return View(stuVMObj);
        }
Exemplo n.º 3
0
        public async Task<ActionResult> Edit(StudentViewModel studentVM)
        {
            if (ModelState.IsValid)
            {
                Student studentDBC = Mapper.Map<Student>(studentVM);
                studentDBC.StudentCurrentYear[0].Active = true;
                

                foreach(var studCY in studentDBC.StudentCurrentYear)
                {
                    db.StudentCurrentYears.Attach(studCY);
                    db.Entry(studCY).State = EntityState.Modified;
                }
                db.Entry(studentDBC).State = EntityState.Modified;
                
                await db.SaveChangesAsync();
                return RedirectToAction("Index");
            }
            else
            {
                ModelState.AddModelError("", "Error: model state is not valid");
            }
            ViewBag.SchoolRefID = new SelectList(db.Schools.AsNoTracking().Select(x => new { x.SchoolID, x.SchoolName }), "SchoolID", "SchoolName", studentVM.StudentCurrentYear[0].SchoolRefID);
            ViewBag.AcademicYearRefID = new SelectList(db.AcademicYears.AsNoTracking().Where(sch => sch.SchoolRefID == studentVM.StudentCurrentYear[0].SchoolRefID).Select(x => new { x.AcademicYearID, x.DisplayYear }), "AcademicYearID", "DisplayYear", studentVM.StudentCurrentYear[0].AcademicYearRefID);
            ViewBag.ClassRefID = new SelectList(db.SchoolClasses.AsNoTracking().Where(sch => sch.SchoolRefID == studentVM.StudentCurrentYear[0].SchoolRefID).Select(x => new { x.ClassID, x.ClassName }), "ClassID", "ClassName", studentVM.StudentCurrentYear[0].ClassRefID);
            
            return View(studentVM);
        }
Exemplo n.º 4
0
        public async Task<ActionResult> Create(StudentViewModel student)
        {
               
               //Create a transaction 
               using (var dbosisTransaction = db.Database.BeginTransaction())
               {
                   
               try
                  {
                        if (ModelState.IsValid)
                        {
                            //user auto mapper to fill student object incluing
                            // navigation object studentcurrentyear
                            Student studentmap = Mapper.Map<Student>(student);
                            studentmap.StudentID = Guid.NewGuid();

                            //The current is always true when create a student
                            // for the first time
                            studentmap.StudentCurrentYear[0].Active = true;
                            // the school table/object has registration no
                            // which needs to update for for every student
                            // always store the last registration no given to'
                            // a student
                            var LastRegNo = db.Database.SqlQuery<int>("Select LastRegNo from Schools with (XLOCK) where SchoolID={0}", studentmap.StudentCurrentYear[0].SchoolRefID).FirstOrDefault<int>();
                            
                            // increment the lastregno by one
                            int NewRegNo = LastRegNo + 1;

                            //Update database school table with the new latest regno
                            db.Database.ExecuteSqlCommand("UPDATE Schools SET LastRegNo = {0} where schoolID= {1}", NewRegNo, studentmap.StudentCurrentYear[0].SchoolRefID);

                            // assign new registration to student object Registration No property
                            studentmap.RegistrationNo = NewRegNo;
                            
                            //Add student object to student db context
                            db.Students.Add(studentmap);
                            
                            //User Task Parallel Library(TPL) to save changes in asynchronous(background) way
                            await db.SaveChangesAsync();
                            
                            //Commit the transaction
                            dbosisTransaction.Commit();
                            
                            //Return to student index page
                            return RedirectToAction("Index");
                        }
                        else
                        {
                            //if model is invalid the following will excuted
                            //repoulate the dropdown's with values they had
                            //before post
                            ModelState.AddModelError("", "Error: model state is not valid");
                            ViewBag.SchoolRefID = new SelectList(db.Schools.AsNoTracking().Select(x => new { x.SchoolID, x.SchoolName }), "SchoolID", "SchoolName", student.SchoolRefID);
                            ViewBag.AcademicYearRefID = new SelectList(db.AcademicYears.AsNoTracking().Select(x => new { x.AcademicYearID, x.DisplayYear }), "AcademicYearID", "DisplayYear", student.AcademicYearRefID);
                            ViewBag.ClassRefID = new SelectList(db.SchoolClasses.AsNoTracking().Select(x => new { x.ClassID, x.ClassName }), "ClassID", "ClassName", student.ClassRefID);
            
                            return View(student);
                        } 
                    }
               catch (Exception e)
               {
                   dbosisTransaction.Rollback();
                   ModelState.AddModelError("", e.InnerException);
                   TempData["errormessage"] = e.Message;
                   ViewBag.SchoolRefID = new SelectList(db.Schools.AsNoTracking().Select(x => new { x.SchoolID, x.SchoolName }), "SchoolID", "SchoolName", student.SchoolRefID);
                   ViewBag.AcademicYearRefID = new SelectList(db.AcademicYears.AsNoTracking().Select(x => new { x.AcademicYearID, x.DisplayYear }), "AcademicYearID", "DisplayYear", student.AcademicYearRefID);
                   ViewBag.ClassRefID = new SelectList(db.SchoolClasses.AsNoTracking().Select(x => new { x.ClassID, x.ClassName }), "ClassID", "ClassName", student.ClassRefID);
                   return View(student);
               }
            }
         }
Exemplo n.º 5
0
        public async Task<ActionResult> Edit(StudentViewModel studentVM)
        {
            if (ModelState.IsValid)
            {
                if(await Task.Run(() => _service.saveAfterEdit(studentVM)))
                {
                    return RedirectToAction("Index");
                }
                else
                {
                    ModelState.AddModelError("", "Error:returned from service class");
                   
                }
                
            }
            else
            {
                ModelState.AddModelError("", "Error: model state is not valid");
            }

            var dbc = _service.getDBContext();
            ViewBag.SchoolRefID = new SelectList(dbc.Schools.AsNoTracking().Select(x => new { x.SchoolID, x.SchoolName }), "SchoolID", "SchoolName", studentVM.StudentCurrentYear[0].SchoolRefID);
            ViewBag.AcademicYearRefID = new SelectList(dbc.AcademicYears.AsNoTracking().Where(sch => sch.SchoolRefID == studentVM.StudentCurrentYear[0].SchoolRefID).Select(x => new { x.AcademicYearID, x.DisplayYear }), "AcademicYearID", "DisplayYear", studentVM.StudentCurrentYear[0].AcademicYearRefID);
            ViewBag.ClassRefID = new SelectList(dbc.SchoolClasses.AsNoTracking().Where(sch => sch.SchoolRefID == studentVM.StudentCurrentYear[0].SchoolRefID).Select(x => new { x.ClassID, x.ClassName }), "ClassID", "ClassName", studentVM.StudentCurrentYear[0].ClassRefID);
            
            return View(studentVM);
        }
Exemplo n.º 6
0
        public async Task<ActionResult> Create(StudentViewModel StudentVM)
        {
               
               //Create a transaction 
                        if (ModelState.IsValid)
                        {
                            if (await Task.Run(() => _service.CreateStudent(StudentVM) == true))
                            {
                                //Return to student index page
                                return RedirectToAction("Index");
                            }
                        }


            //if model is invalid the following will excuted
            //repoulate the dropdown's with values they had
            //efore post
                        ModelState.AddModelError("", "Error: model state is not valid");
                        ViewBag.SchoolRefID = new SelectList(db.Schools.AsNoTracking().Select(x => new { x.SchoolID, x.SchoolName }), "SchoolID", "SchoolName", StudentVM.SchoolRefID);
                        ViewBag.AcademicYearRefID = new SelectList(db.AcademicYears.AsNoTracking().Select(x => new { x.AcademicYearID, x.DisplayYear }), "AcademicYearID", "DisplayYear", StudentVM.AcademicYearRefID);
                        ViewBag.ClassRefID = new SelectList(db.SchoolClasses.AsNoTracking().Select(x => new { x.ClassID, x.ClassName }), "ClassID", "ClassName", StudentVM.ClassRefID);
                    
                        return View(StudentVM);
              } 
Exemplo n.º 7
0
        public bool saveAfterEdit(StudentViewModel StudentVM)
        {
            Student StudentModel = Mapper.Map<Student>(StudentVM);
            //StudentModel.StudentCurrentYear[1].Active = true;

               foreach (var studentCurrYear in StudentModel.StudentCurrentYear)
            {

                if(studentCurrYear.Active== true)
                {
                    db.StudentCurrentYears.Attach(studentCurrYear);
                    db.Entry(studentCurrYear).State = EntityState.Modified;
                }

            }
            db.Entry(StudentModel).State = EntityState.Modified;

            db.SaveChanges();

            return true;
        }