public void Given_valid_viewmodel_is_entered_with_registered_employee_When_update_is_clicked_with_site_id_selected_Then_correct_user_service_is_called() { // Given var controller = CreateUserRoleController(); var viewModel = new AddUsersViewModel { CompanyId = 999L, EmployeeId = Guid.NewGuid(), UserId = Guid.NewGuid(), RoleId = Guid.NewGuid(), SiteId = 10, SiteGroupId = null, EmployeeAlreadyExistsAsUser = true }; _userPermissionsViewModelFactory.Setup(x => x.GetViewModel(viewModel.CompanyId, viewModel.EmployeeId, true, true)).Returns( new AddUsersViewModel()); // When controller.UpdateUser(viewModel); // Then _userService.Verify(x => x.SetRoleAndSite(It.Is<SetUserRoleAndSiteRequest>( y => y.CompanyId == viewModel.CompanyId && y.UserToUpdateId == viewModel.UserId && y.RoleId == viewModel.RoleId && y.SiteId == viewModel.SiteId ))); _cacheHelper.Verify(x => x.RemoveUser(viewModel.UserId)); Assert.IsTrue(controller.ModelState.IsValid); }
public void Setup() { _baseAddUsersViewModel = new AddUsersViewModel { CompanyId = 999L, EmployeeId = Guid.NewGuid(), UserId = Guid.NewGuid(), RoleId = Guid.NewGuid(), SiteId = 10, SiteGroupId = null }; _baseEmployeeDto = new EmployeeDto { Id = _baseAddUsersViewModel.EmployeeId, MainContactDetails = new EmployeeContactDetailDto { Email = "*****@*****.**", Telephone2 = "333444555" } }; _employeeService = new Mock<IEmployeeService>(); _employeeService .Setup(x => x.ValidateRegisterAsUser(It.IsAny<CreateEmployeeAsUserRequest>())) .Returns(new ValidationResult()); _employeeService .Setup(x => x.GetEmployee(It.IsAny<Guid>(), It.IsAny<long>())) .Returns(_baseEmployeeDto); _employeeService .Setup(x => x.CreateUser(It.IsAny<CreateEmployeeAsUserRequest>())); _newUserId = Guid.NewGuid(); _newRegistrationRequestService = new Mock<INewRegistrationRequestService>(); _newRegistrationRequestService .Setup(x => x.RegisterNonAdminUser(It.IsAny<RegisterNonAdminUserRequest>())) .Returns(_newUserId); _newRegistrationRequestService .Setup(x => x.HasEmailBeenRegistered(It.IsAny<string>())) .Returns(false); _userPermissionsViewModelFactory = new Mock<IAddUsersViewModelFactory>(); _userPermissionsViewModelFactory .Setup(x => x.GetViewModel(It.IsAny<long>(), It.IsAny<Guid>(), It.IsAny<bool>(), It.IsAny<bool>())) .Returns(new AddUsersViewModel()); _userPermissionsViewModelFactory .Setup(x => x.WithCurrentUser(It.IsAny<ICustomPrincipal>())) .Returns(_userPermissionsViewModelFactory.Object); }
public CreateEmployeeAsUserRequest Map(AddUsersViewModel viewModel, Guid actioningUserId) { var siteId = default(long); if(viewModel.SiteGroupId.HasValue) siteId = viewModel.SiteGroupId.Value; if(viewModel.SiteId.HasValue) siteId = viewModel.SiteId.Value; return new CreateEmployeeAsUserRequest { EmployeeId = viewModel.EmployeeId, NewUserId = viewModel.UserId, CompanyId = viewModel.CompanyId, RoleId = viewModel.RoleId, SiteId = siteId, ActioningUserId = actioningUserId, MainSiteId = viewModel.MainSiteId }; }
public SetUserRoleAndSiteRequest Map(AddUsersViewModel viewModel, Guid actioningUserId) { var siteId = default(long); if(viewModel.SiteGroupId.HasValue) siteId = viewModel.SiteGroupId.Value; if(viewModel.SiteId.HasValue) siteId = viewModel.SiteId.Value; if(viewModel.PermissionsApplyToAllSites) { siteId = viewModel.MainSiteId; } return new SetUserRoleAndSiteRequest { UserToUpdateId = viewModel.UserId, RoleId = viewModel.RoleId, SiteId = siteId, ActioningUserId = actioningUserId, CompanyId = viewModel.CompanyId, PermissionsApplyToAllSites = viewModel.PermissionsApplyToAllSites, }; }
public ActionResult CreateUser(AddUsersViewModel viewModel) { if (!ModelState.IsValid) { return View("Index", RehydrateViewModel(viewModel)); } CreateEmployeeAsUserRequest registerEmployeeAsUserRequest = new RegisterEmployeeAsUserRequestMapper().Map(viewModel, CurrentUser.UserId); var employee = _employeeService.GetEmployee(viewModel.EmployeeId, CurrentUser.CompanyId); if (!RegistrationAttemptIsValid(employee, registerEmployeeAsUserRequest)) return View("Index", RehydrateViewModel(viewModel)); RegisterEmployeeAsUser(employee, registerEmployeeAsUserRequest); return viewModel.CanChangeEmployeeDdl ? RedirectToAction("Index", new { companyId = CurrentUser.CompanyId, saveSuccess = true }) : RedirectToAction("Index", "ViewUsers", new { companyId = CurrentUser.CompanyId }); }
public void Given_valid_viewmodel_with_deleted_user_When_update_is_clicked_with_site_id_selected_Then_correct_user_service_is_called() { // Given var controller = CreateUserRoleController(); var viewModel = new AddUsersViewModel { CompanyId = 999L, EmployeeId = Guid.NewGuid(), UserId = Guid.NewGuid(), RoleId = Guid.NewGuid(), SiteId = 10, SiteGroupId = null, EmployeeAlreadyExistsAsUser = true, IsUserDeleted = true }; _userPermissionsViewModelFactory.Setup(x => x.GetViewModel(viewModel.CompanyId, viewModel.EmployeeId, true, true)).Returns( new AddUsersViewModel()); UserDto user = new UserDto { Id = Guid.NewGuid(), Employee = new EmployeeDto { MainContactDetails = new EmployeeContactDetailDto { Email = "*****@*****.**", Telephone1 = "098098", Telephone2 = "098098" } } }; _userService.Setup(x => x.GetByIdAndCompanyIdIncludeDeleted(It.IsAny<Guid>(), It.IsAny<long>())).Returns( user); // When controller.UpdateUser(viewModel); // Then _userService.Verify( x => x.ReinstateUser(viewModel.UserId, TestControllerHelpers.UserIdAssigned)); }
public ActionResult UpdateUser(AddUsersViewModel viewModel) { if (!ModelState.IsValid) { return View("Index", RehydrateViewModel(viewModel)); } if (viewModel.IsUserDeleted) { var user = _userService.GetByIdAndCompanyIdIncludeDeleted(viewModel.UserId, viewModel.CompanyId); if (_newRegistrationRequestService.HasEmailBeenRegistered(user.Employee.MainContactDetails.Email)) { ModelState.AddModelError("User", "Sorry you are unable to reinstate this user: the email address has been registered to another user"); return View("Index", RehydrateViewModel(viewModel)); } _userService.ReinstateUser(viewModel.UserId, CurrentUser.UserId); } var request = new SetUserRoleAndSiteRequestMapper().Map(viewModel, CurrentUser.UserId); _userService.SetRoleAndSite(request); _cacheHelper.RemoveUser(viewModel.UserId); if (viewModel.CanChangeEmployeeDdl) return RedirectToAction("Index", new { companyId = viewModel.CompanyId, saveSuccess = true }); return RedirectToAction("Index", "ViewUsers", new { companyId = viewModel.CompanyId }); }
private AddUsersViewModel RehydrateViewModel(AddUsersViewModel viewModel) { return _addUsersViewModelFactory .WithCurrentUser(CurrentUser) .GetViewModel(viewModel.CompanyId, viewModel.EmployeeId, false, viewModel.CanChangeEmployeeDdl); }
public AddUsersViewModel GetViewModel() { var viewModel = new AddUsersViewModel(); //var employeesNotRegisteredAsUsers = _employeeService.GetEmployeesNotRegisteredAsUsers(_companyId); //var employeesRegisteredAsUsers = _employeeService.GetEmployeesRegisteredAsUsers(_companyId); //var employees = employeesNotRegisteredAsUsers.Union(employeesRegisteredAsUsers); var employees = _employeeService.Search(new SearchEmployeesRequest { CompanyId = _companyId, ShowDeleted = false, ExcludeWithActiveUser = true }); var roles = _rolesService.GetAllRoles(_companyId); var sites = _siteService.GetByCompanyId(_companyId); var siteGroups = _siteGroupService.GetByCompanyId(_companyId); viewModel.MainSiteId = sites.Where(x => x.IsMainSite).Select(x => x.Id).Single(); viewModel.CompanyId = _companyId; viewModel.Employees = employees .OrderBy(x => x.FullName) .Select(AutoCompleteViewModel.ForEmployee) .AddDefaultOption(); viewModel.Roles = roles .Where(role => role.Name != "UserAdmin") .Select(AutoCompleteViewModel.ForRole) .AddDefaultOption(); viewModel.SiteGroups = siteGroups .Select(AutoCompleteViewModel.ForSiteGroup) .AddDefaultOption(); viewModel.Sites = sites .Select(AutoCompleteViewModel.ForSite) .AddDefaultOption(); viewModel.SaveSuccessNotificationVisible = _saveSuccessNotificationVisible; viewModel.CanChangeEmployeeDdl = _canChangeEmployee; viewModel.CanChangeRoleDdl = true; if (_employeeId != default(Guid)) { viewModel.SaveCancelButtonsVisible = true; viewModel.EmployeeId = _employeeId; //todo: change this call to call Peninsula Online - that way we can see if the employee is already registered //as a user for other systems. If it is, then we need that User Guid, rather than creating a new one as below //because we need it to have the same ID. var employee = _employeeService.GetEmployee(_employeeId, _companyId); viewModel.EmployeeName = employee.FullName; viewModel.EmployeeReference = employee.EmployeeReference; viewModel.JobTitle = employee.JobTitle; //Todo: store employee department? viewModel.Department = "NOT AVAILABLE"; //Todo: store manager? viewModel.ManagerName = "NOT AVAILABLE"; if (employee.User != null) { viewModel.EmployeeAlreadyExistsAsUser = true; viewModel.UserId = employee.User.Id; viewModel.IsUserDeleted = employee.User.Deleted; viewModel.IsUserRegistered = employee.User.IsRegistered; viewModel.RoleId = employee.User.Role.Id; viewModel.RoleDescription = employee.User.Role.Description; if (employee.User.SiteStructureElement != null) { viewModel.PermissionsApplyToAllSites = employee.User.SiteStructureElement.IsMainSite; if (viewModel.PermissionsApplyToAllSites == false) { if (employee.User.SiteStructureElement.GetType() == typeof(SiteGroupDto)) viewModel.SiteGroupId = employee.User.SiteStructureElement.Id; else if (employee.User.SiteStructureElement.GetType() == typeof(SiteDto)) viewModel.SiteId = employee.User.SiteStructureElement.Id; } } if (_currentUser != null && employee.User.Role.Description == "User Admin" && _currentUser.UserId == employee.User.Id) { viewModel.CanChangeRoleDdl = false; } } else { viewModel.EmployeeAlreadyExistsAsUser = false; viewModel.UserId = Guid.NewGuid(); } } else { viewModel.SaveCancelButtonsVisible = false; } return viewModel; }