Пример #1
0
 public EditDivisionViewModel CreateEditDivisionViewModel(Division division)
 {
     var model = new EditDivisionViewModel() {
     Id = division.Id,
     Version = division.EncodedVersion,
     SeasonName = division.Season.Name,
     Name = division.Name,
     StartingDate = division.StartingDate.ToShortDateString()
       };
       return model;
 }
Пример #2
0
        public ActionResult Edit(EditDivisionViewModel viewModel)
        {
            if (!ModelState.IsValid) {
            return View(viewModel);
              }
              var division = repository.Get<Division>(viewModel.Id);

              // loading the season name here serves two purposes:
              // (1) reload the season name in case we have to redisplay the view due to error
              // (2) lazily load the division.Season property, because EF is too stupid
              // to update the division without Season being set, it thinks you're trying
              // to set the season to null
              viewModel.SeasonName = division.Season.Name;

              DateTime startingDate;
              if (!DateTime.TryParse(viewModel.StartingDate, out startingDate)) {
            ModelState.AddModelErrorFor<EditDivisionViewModel>(m => m.StartingDate, "Enter a valid date");
            return View(viewModel);
              }

              if (null == division) {
            TempData[GlobalViewDataProperty.PageErrorMessage] = "The division you were editing was deleted by another user";
            return RedirectToAction("Index", "Seasons");
              }

              if (viewModel.Version != division.EncodedVersion) {
            return EditRedirectForConcurrency(viewModel.Id);
              }

              if (!division.Name.Equals(viewModel.Name)) {
            // verify that the new name is not already in use
            if (division.Season.DivisionNameIsInUse(viewModel.Name)) {
              ModelState.AddModelErrorFor<EditDivisionViewModel>(m => m.Name, "Name is in use");
              viewModel.Name = division.Name;
              return View(viewModel);
            }
            division.Name = viewModel.Name;
              }
              division.StartingDate = startingDate;

              try {
            repository.SaveChanges();
              }
              catch (UpdateConcurrencyException) {
            return EditRedirectForConcurrency(viewModel.Id);
              }
              TempData[GlobalViewDataProperty.PageNotificationMessage] = "The division was updated";
              return RedirectToAction("Details", "Seasons", new { id = division.Season.Id });
        }