public async Task<ActionResult> EditDepartment(int? id, byte[] rowVersion)
        {
            if (!id.HasValue)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            var departmentToUpdate = await _universityContext.Departments.FindAsync(id);
            var includeProperties = new[] { "DepartmentID", "Name", "Budget", "StartDate", "InstructorID", "RowVersion" };

            if (departmentToUpdate == null)
            {
                departmentToUpdate = new Department();
                TryUpdateModel(departmentToUpdate, includeProperties);
                ModelState.AddModelError(string.Empty, "Unable to save change the Department has already been deleted by another user.");
            }
            else if (TryUpdateModel(departmentToUpdate, includeProperties))
            {
                try
                {
                    _universityContext.Entry(departmentToUpdate).OriginalValues["RowVersion"] = rowVersion;
                    await _universityContext.SaveChangesAsync();

                    return RedirectToAction("Index");
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    var entry = ex.Entries.Single();
                    var clientValues = (Department)entry.Entity;
                    var databaseEntry = entry.GetDatabaseValues();

                    if (databaseEntry == null)
                    {
                        ModelState.AddModelError(string.Empty, "Unable to save change the Department has already been deleted by another user.");
                    }
                    else
                    {
                        var databaseValues = (Department)databaseEntry.ToObject();

                        if (databaseValues.Name != clientValues.Name)
                        {
                            ModelState.AddModelError("Name", "Current value: " + databaseValues.Name);
                        }

                        ModelState.AddModelError(string.Empty, "The record was already edit by some other user");
                        departmentToUpdate.RowVersion = databaseValues.RowVersion;
                    }
                }
                catch (RetryLimitExceededException)
                {
                    ModelState.AddModelError("", "Something went wrong.");
                }
            }

            ViewBag.InstructorID = new SelectList(_universityContext.Instructors, "ID", "FullName", departmentToUpdate.InstructorID);
            return View(departmentToUpdate);
        }
        public async Task<ActionResult> DeleteConfirmed(Department department)
        {
            try
            {
                _universityContext.Entry(department).State = EntityState.Deleted;
                await _universityContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                return RedirectToAction("Delete", new {concurrencyError = true, id = department.DepartmentID});
            }
            catch (DataException)
            {
                ModelState.AddModelError(string.Empty, "Unable to delete");
            }

            return RedirectToAction("Index");
        }