Esempio n. 1
0
        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"));
            }
        }