public ActionResult EditClassification(ClassificationViewModel viewModel) { using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork()) { try { var loggedOnUserId = LoggedOnReadOnlyUser?.Id ?? Guid.Empty; var user = MembershipService.Get(loggedOnUserId); var classificationNameCheck = _classificationService.GetByName(viewModel.EditName); var classification = _classificationService.GetById(viewModel.ClassificationId); //Updating classification name and the name is not taken if (classificationNameCheck == null) { classification.Name = viewModel.EditName; classification.Description = viewModel.EditDescription; //Fire Event _classificationService.ClassificationUpdated(user, classification); unitOfWork.Commit(); TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel { Message = "Classification was successfully updated.", MessageType = GenericMessages.success }; return(RedirectToAction("Classification", "AdminClassification")); } else { //Prevent updating a classification by using a name already taken. //Compare UniqueKeys by names if (classificationNameCheck.Id == classification.Id) { classification.Name = viewModel.EditName; classification.Description = viewModel.EditDescription; //Fire Event _classificationService.ClassificationUpdated(user, classification); unitOfWork.Commit(); TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel { Message = "Classification was successfully updated.", MessageType = GenericMessages.success }; return(RedirectToAction("Classification", "AdminClassification")); } TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel { Message = "There is already a classification with the name " + viewModel.EditName + ". Update Failed.", MessageType = GenericMessages.danger }; } return(RedirectToAction("EditClassification", "AdminClassification", new { id = viewModel.ClassificationId })); } catch (Exception ex) { unitOfWork.Rollback(); TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel { Message = "Updating the classification failed. Error was logged for administrator.", MessageType = GenericMessages.danger }; LoggingService.Error(ex); } return(RedirectToAction("Classification", "AdminClassification")); } }