public ActionResult Review(ReviewPageViewModel viewmodel, string Command) { if(Command == "Save") { EAForm eaform = db.EAForms.Find(viewmodel.ID); if (eaform == null) { return HttpNotFound(); } if (ModelState.IsValid) { eaform = Mapper.Map<ReviewPageViewModel, EAForm>(viewmodel, eaform); //Set the status and timestamp(s) eaform.Status = db.EAFormStatuses.First(p => p.Name == "Draft"); eaform.LastUpdated = DateTime.Now; eaform.CreateSaveHistoryRecord(viewmodel.InstructorSignature); db.Entry(eaform).State = EntityState.Modified; db.SaveChanges(); return Content("save:Saved", "text/html"); } else { var errors = ModelState.Values.SelectMany(v => v.Errors); foreach (var error in errors) { if (error.Exception != null) Elmah.ErrorSignal.FromCurrentContext().Raise(error.Exception); else Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception(error.ErrorMessage)); } return Content("save:Review could not be saved", "text/html"); } } else if (Command == "Search") { return Content("search:Keywords ", "text/html"); } else { EAForm eaform = db.EAForms.Find(viewmodel.ID); if (eaform == null) { return HttpNotFound(); } if (ModelState.IsValid) { eaform = Mapper.Map<ReviewPageViewModel, EAForm>(viewmodel, eaform); //Set the status and timestamp(s) eaform.Status = db.EAFormStatuses.First(p => p.Name == "Submitted"); eaform.LastUpdated = DateTime.Now; eaform.LastSubmitted = DateTime.Now; eaform.CreateSaveHistoryRecord(viewmodel.InstructorSignature); db.Entry(eaform).State = EntityState.Modified; db.SaveChanges(); return Content("submit:Thank you for submitting your review", "text/html"); } else { var errors = ModelState.Values.SelectMany(v => v.Errors); foreach (var error in errors) { if (error.Exception != null) Elmah.ErrorSignal.FromCurrentContext().Raise(error.Exception); else Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception(error.ErrorMessage)); } return Content("submit:Review could not be submitted", "text/html"); } } }
//UNAUTHENTICATED to allow instructors access //We use the same view with some minor logic to change the look/functionality //This allows us to avoid duplicating the view for another user public ActionResult Review(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } ViewBag.Title = "Review"; var reviewPageViewModel = new ReviewPageViewModel(); EAForm eaform = db.EAForms.Find(id); if (eaform == null) { return HttpNotFound(); } ((System.Data.Entity.Infrastructure.IObjectContextAdapter)db).ObjectContext.LoadProperty(eaform, i => i.Status); // //Load ViewModel // //Statuses reviewPageViewModel = Mapper.Map<EAForm, ReviewPageViewModel>(eaform, reviewPageViewModel); reviewPageViewModel.SetupMultiSelectViewModels(eaform); return View("Review", "_UnauthLayout", reviewPageViewModel); }