public ActionResult Edit(int id, UserEntityViewModel entityViewModel)
 {
     var currentUser = _authenticationService.GetCurrentUser();
     if (currentUser.UserLevel == (int)UserLevels.Administrator || currentUser.UserID == id)
     {
         try
         {
             _userViewService.SaveUserViewModel(id, entityViewModel, EditModes.Update);
             return RedirectToAction("Index", "Administration");
         }
         catch (ValidationException)
         {
             ModelState.AddModelErrors(_userViewService.GetUserViewModelErrors(EditModes.Update));
             return View(entityViewModel);
         }
         catch (EntityException ex)
         {
             ViewData["Error"] = ex.Message;
             return RedirectToAction("Index", "Administration");
         }
     }
     else
     {
         Error = "You cannot edit this user.";
         return HomePage();
     }
 }
        public void MapToModel(UserEntityViewModel entityViewModel, User model, bool passwordChanged)
        {
            model.FirstName = entityViewModel.Firstname.CapFirstLetter();
            model.LastName = entityViewModel.Lastname.CapFirstLetter();
            model.Email = entityViewModel.Email.ToLower();
            model.Username = entityViewModel.Username.ToLower();
            model.UserLevel = entityViewModel.UserLevel;

            if (passwordChanged)
            {
                model.PasswordSalt = _cryptoService.CreateSalt();
                model.PasswordHash = _cryptoService.GetPasswordHash(entityViewModel.Password, model.PasswordSalt);
            }
        }
        public UserEntityViewModel MapToViewModel(User model)
        {
            var viewModel = new UserEntityViewModel();
            if (model != null)
            {
                viewModel.Id = model.UserID;
                viewModel.Email = model.Email;
                viewModel.Firstname = model.FirstName;
                viewModel.Lastname = model.LastName;
                viewModel.UserLevel = model.UserLevel;
                viewModel.Username = model.Username;
            }

            return viewModel;
        }
 public ActionResult New(TeamEntityViewModel teamEntityViewModel, UserEntityViewModel userEntityViewModel)
 {
     try
     {
         teamEntityViewModel.ManagerEntityViewModel = userEntityViewModel;
         _teamViewService.SaveTeamViewModel(teamEntityViewModel, EditModes.Insert);
         return RedirectToAction("Index", "Administration");
     }
     catch(ValidationException)
     {
         _teamViewService.FillModelStateErrors(ModelState, teamEntityViewModel, EditModes.Insert);
         _teamViewService.InitializeViewModel(teamEntityViewModel);
         return View(teamEntityViewModel);
     }
     catch(EntityException x)
     {
         Error = x.Message;
         return RedirectToAction("Index", "Administration");
     }
 }
 public void SaveUserViewModel(int? userId, UserEntityViewModel userEntityViewModel, EditModes editMode)
 {
     _userValidator.EntityViewModel = userEntityViewModel;
     bool passwordChanged = !String.IsNullOrEmpty(userEntityViewModel.Password);
     bool isValid = false;
     switch (editMode)
     {
         case EditModes.Insert:
             isValid = _userValidator.IsInsertValid();
             break;
         case EditModes.Update:
             isValid = _userValidator.IsUpdateValid(passwordChanged);
             break;
     }
     if (isValid)
     {
         User user = null;
         if (userId == null) user = new User();
         else user = _userRepository.GetByID((int) userId);
         if(user == null) throw new EntityException("User does not exist.");
         _userMapper.MapToModel(userEntityViewModel, user, passwordChanged);
         switch (userEntityViewModel.UserInsertScenario)
         {
             case UserInsertScenario.WorkshopMember:
                 _userService.AddToWorkshop((int)userEntityViewModel.OrganizationID, user);
                 break;
             case UserInsertScenario.WorkshopManager:
                 _userService.ChangeWorkshopManager((int)userEntityViewModel.OrganizationID, user);
                 break;
             case UserInsertScenario.TeamManager:
                 _userService.ChangeTeamManager((int)userEntityViewModel.OrganizationID, user);
                 break;
             case UserInsertScenario.Manager:
                 _userService.AddToManagementTeam(user);
                 break;
             case UserInsertScenario.Director:
                 _userService.ChangeDirector(user);
                 break;
             case UserInsertScenario.Unassigned:
             default:
                 _userService.SaveUser(user);
                 break;
         }
     }
     else
     {
         throw new ValidationException();
     }
 }
 public void MapToModel(UserEntityViewModel entityViewModel, User model)
 {
     MapToModel(entityViewModel, model, true);
 }
 public ActionResult New(UserEntityViewModel userEntityViewModel)
 {
     try
     {
         _userViewService.SaveUserViewModel(null, userEntityViewModel, EditModes.Insert);
         return RedirectToAction("Index", "Administration");
     }
     catch (ValidationException)
     {
         ModelState.AddModelErrors(_userViewService.GetUserViewModelErrors(EditModes.Insert));
         return View(userEntityViewModel);
     }
 }