public ActionResult Create(Department department) { if (ModelState.IsValid) { this._db.Departments.Add(department); this._db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.PersonID = new SelectList(this._db.Instructors, "PersonID", "FullName", department.PersonID); return View(department); }
public ActionResult Edit(Department department) { try { if (ModelState.IsValid) { ValidateOneAdministratorAssignmentPerInstructor(department); } if (ModelState.IsValid) { _db.Entry(department).State = EntityState.Modified; _db.SaveChanges(); return RedirectToAction("Index"); } } catch (DbUpdateConcurrencyException ex) { var entry = ex.Entries.Single(); var databaseValues = (Department)entry.GetDatabaseValues().ToObject(); var clientValues = (Department)entry.Entity; if (databaseValues.Name != clientValues.Name) { ModelState.AddModelError("Name", Resource.CurrentValue + databaseValues.Name); } if (databaseValues.Budget != clientValues.Budget) { ModelState.AddModelError("Budget", Resource.CurrentValue + databaseValues.Budget); } if (databaseValues.StartDate != clientValues.StartDate) { ModelState.AddModelError("StartDate", Resource.CurrentValue + databaseValues.StartDate); } if (databaseValues.PersonID != clientValues.PersonID) { ModelState.AddModelError("PersonID", Resource.CurrentValue + this._db.Instructors.Find(databaseValues.PersonID).FullName); } ModelState.AddModelError(string.Empty, Resource.EditConcurrencyError); department.TimeStamp = databaseValues.TimeStamp; } catch (DataException) { //Log the error (add a variable name after Exception) ModelState.AddModelError(string.Empty, Resource.SaveError); } ViewBag.PersonID = new SelectList(this._db.Instructors, "PersonID", "FullName", department.PersonID); return View(department); }
private void ValidateOneAdministratorAssignmentPerInstructor(Department department) { if (department.PersonID == null) return; var duplicateDepartment = _db.Departments.Include("Administrator").Where(d => d.PersonID == department.PersonID).AsNoTracking(). FirstOrDefault(); if (duplicateDepartment == null || duplicateDepartment.DepartmentID == department.DepartmentID) return; var errorMessage = string.Format( "Instructor {0} {1} is already administrator of the {2} department.", duplicateDepartment.Administrator.FirstMiddleName, duplicateDepartment.Administrator.LastName, duplicateDepartment.Name); ModelState.AddModelError(string.Empty, errorMessage); }
public ActionResult DeleteConfirmed(Department department) { try { this._db.Entry(department).State = EntityState.Deleted; this._db.SaveChanges(); return RedirectToAction("Index"); } catch (DbUpdateConcurrencyException) { return RedirectToAction("Delete", new System.Web.Routing.RouteValueDictionary { { "concurrencyError", true } }); } catch (DataException) { //Log the error (add a variable name after Exception) ModelState.AddModelError(string.Empty, Resource.SaveError); return View(department); } }