public async Task HandleAsync_GivenUsers_UserIsMapped() { var request = new GetActiveOrganisationUsers(Guid.NewGuid()); var user = new OrganisationUser(Guid.NewGuid(), Guid.NewGuid(), UserStatus.Active); var users = new List <OrganisationUser>() { user }; var userMapped = new OrganisationUserData() { UserId = user.Id.ToString(), OrganisationId = user.OrganisationId, UserStatus = (Core.Shared.UserStatus)Enum.Parse(typeof(Core.Shared.UserStatus), user.UserStatus.Value.ToString()) }; A.CallTo(() => dataAccess.FetchActiveOrganisationUsers(request.OrganisationId)).Returns(users); A.CallTo(() => mapper.Map(user)).Returns(userMapped); var result = await handler.HandleAsync(request); result.Should().Contain(userMapped); }
public void UpdateUserStatus_UserStatusRejected_UpdateToActive_UserStatusUpdateToActive() { var orgUser = new OrganisationUser(Guid.NewGuid(), Guid.NewGuid(), UserStatus.Rejected); orgUser.UpdateUserStatus(UserStatus.Active); Assert.Equal(orgUser.UserStatus, UserStatus.Active); }
GetOrganisationBySimpleSearchTerm_SearchIsValid_AndNoConflictingOrganisationUserExists_ReturnsOrganisation( string existingUserId, string userId, Core.Shared.UserStatus userStatus, Core.Shared.OrganisationStatus organisationStatus) { var organisation = A.Fake <Organisation>(); A.CallTo(() => organisation.TradingName).Returns("A Company"); A.CallTo(() => organisation.OrganisationStatus).Returns(organisationStatus.ToDomainEnumeration <OrganisationStatus>()); A.CallTo(() => context.Organisations) .Returns(dbContextHelper.GetAsyncEnabledDbSet(new List <Organisation> { organisation })); var organisationUser = new OrganisationUser(new Guid(userId), new Guid(existingUserId), userStatus.ToDomainEnumeration <UserStatus>()); A.CallTo(() => context.OrganisationUsers) .Returns(dbContextHelper.GetAsyncEnabledDbSet(new List <OrganisationUser> { organisationUser })); var result = await FindMatchingOrganisationsDataAccess().GetOrganisationsBySimpleSearchTerm("A", new Guid(userId)); Assert.Single(result); Assert.Equal(organisation, result.Single()); }
public async Task HandleAsync_NotOrganisationUser_ThrowsSecurityException() { // Arrange IWeeeAuthorization authorization = new AuthorizationBuilder().DenyOrganisationAccess().Build(); Guid organisationUserId = new Guid("10C57182-BF30-4729-BBF8-F8BCBC00EB77"); OrganisationUser organisationUser = A.Fake <OrganisationUser>(); WeeeContext context = A.Fake <WeeeContext>(); A.CallTo(() => context.OrganisationUsers.FindAsync(organisationUserId)).Returns(organisationUser); IMap <OrganisationUser, OrganisationUserData> mapper = A.Fake <IMap <OrganisationUser, OrganisationUserData> >(); OrganisationUserData organisationUserData = new OrganisationUserData(); A.CallTo(() => mapper.Map(organisationUser)).Returns(organisationUserData); var handler = new GetOrganisationUserHandler(context, authorization, mapper); var request = new GetOrganisationUser(organisationUserId); // Act Func <Task> action = async() => await handler.HandleAsync(request); // Assert await Assert.ThrowsAsync <SecurityException>(action); }
public async Task HandleAsync_HappyPath_ReturnsOrganisationUserData() { // Arrange IWeeeAuthorization authorization = AuthorizationBuilder.CreateUserWithAllRights(); Guid organisationUserId = new Guid("10C57182-BF30-4729-BBF8-F8BCBC00EB77"); OrganisationUser organisationUser = A.Fake <OrganisationUser>(); WeeeContext context = A.Fake <WeeeContext>(); A.CallTo(() => context.OrganisationUsers.FindAsync(organisationUserId)).Returns(organisationUser); IMap <OrganisationUser, OrganisationUserData> mapper = A.Fake <IMap <OrganisationUser, OrganisationUserData> >(); OrganisationUserData organisationUserData = new OrganisationUserData(); A.CallTo(() => mapper.Map(organisationUser)).Returns(organisationUserData); var handler = new GetOrganisationUserHandler(context, authorization, mapper); var request = new GetOrganisationUser(organisationUserId); // Act OrganisationUserData result = await handler.HandleAsync(request); // Assert Assert.Equal(organisationUserData, result); }
public async Task <Guid> HandleAsync(JoinOrganisation message) { authorization.EnsureCanAccessExternalArea(); var userId = userContext.UserId; if (!await dataAccess.DoesUserExist(userId)) { throw new ArgumentException(string.Format("Could not find a user with id {0}", userId)); } if (!await dataAccess.DoesOrganisationExist(message.OrganisationId)) { throw new ArgumentException(string.Format("Could not find an organisation with id {0}", message.OrganisationId)); } var organisationUser = new OrganisationUser(userId, message.OrganisationId, Domain.User.UserStatus.Pending); var result = await dataAccess.JoinOrganisation(organisationUser); if (!result.Successful) { throw new InvalidOperationException(result.ErrorMessage); } return(message.OrganisationId); }
public async Task <IActionResult> OnPostAsync() { OrganisationUser = organisationUserService.GetOrganisationUser(HttpContext.Session.GetString("Token")); if (ModelState.IsValid) { await organisationUserService.ConfirmationInvitationAsync(OrganisationUser.OrganisationId, OrganisationUser.User.Email, Input.Password, userManager); return(RedirectToPage("Login")); } // If we got this far, something failed, redisplay form return(Page()); }
public async Task <IActionResult> UpdateUserRole([FromBody] OrganisationUser organisationUser) { try { var url = string.Format("{0}://{1}", Request.Scheme, Request.Host.Value); await organisationUserService.UpdateUserRoleAsync(organisationUserService.OrganisationId, organisationUserService.UserId, organisationUser); return(Ok()); } catch (Exception ex) { return(BadRequest(new Error(ex.Message))); } }
public async Task <OrganisationUserData> HandleAsync(GetManageableOrganisationUser query) { OrganisationUser organisationUser = await context.OrganisationUsers.FindAsync(query.OrganisationUserId); if (organisationUser == null) { string message = string.Format( "No organisation user was found with ID \"{0}\".", query.OrganisationUserId); throw new Exception(message); } authorization.EnsureOrganisationAccess(organisationUser.OrganisationId); return(organisationUserMap.Map(organisationUser)); }
public async void JoinOrganisation_OrganisationUserDoesNotExist_SavesChanges_AndReturnsSuccess() { var organisationId = Guid.NewGuid(); var userId = Guid.NewGuid(); var organisationUser = new OrganisationUser(userId, organisationId, UserStatus.Pending); var result = await JoinOrganisationDataAccess() .JoinOrganisation(organisationUser); A.CallTo(() => context.SaveChangesAsync()) .MustHaveHappened(Repeated.Exactly.Once); Assert.True(result.Successful); }
public async Task <Guid> HandleAsync(CreatePartnershipRequest message) { authorization.EnsureCanAccessExternalArea(); var organisation = Organisation.CreatePartnership(message.TradingName); db.Organisations.Add(organisation); await db.SaveChangesAsync(); var organisationUser = new OrganisationUser(userContext.UserId, organisation.Id, UserStatus.Active); db.OrganisationUsers.Add(organisationUser); await db.SaveChangesAsync(); return(organisation.Id); }
public async void SingleOrganisationUserForUser_ShouldGetRequest(Core.Shared.UserStatus userStatus) { var organisationId = Guid.NewGuid(); var userId = Guid.NewGuid(); var organisationUser = new OrganisationUser(userId, organisationId, userStatus.ToDomainEnumeration <UserStatus>()); A.CallTo(() => context.OrganisationUsers) .Returns(Data(new List <OrganisationUser> { organisationUser })); var result = await GetManageableOrganisationUsersDataAccess().GetManageableUsers(organisationId); Assert.Equal(organisationUser, result.Single()); }
public async Task <Guid> HandleAsync(CreateRegisteredCompanyRequest message) { authorization.EnsureCanAccessExternalArea(); var organisation = Organisation.CreateRegisteredCompany(message.BusinessName, message.CompanyRegistrationNumber, message.TradingName); db.Organisations.Add(organisation); await db.SaveChangesAsync(); var organisationUser = new OrganisationUser(userContext.UserId, organisation.Id, UserStatus.Active); db.OrganisationUsers.Add(organisationUser); await db.SaveChangesAsync(); return(organisation.Id); }
public async void MultipleOrganisationUsersForOneUser_ShouldNotRetrieveAnyRejectedOrganisationUsers_WhenNonRejectedOrganisationUserAlsoExists(Core.Shared.UserStatus previousUserStatus, Core.Shared.UserStatus currentUserStatus) { var organisationId = Guid.NewGuid(); var userId = Guid.NewGuid(); var previousOrganisationUser = new OrganisationUser(userId, organisationId, previousUserStatus.ToDomainEnumeration <UserStatus>()); var currentOrganisationUser = new OrganisationUser(userId, organisationId, previousUserStatus.ToDomainEnumeration <UserStatus>()); A.CallTo(() => context.OrganisationUsers) .Returns(Data(new List <OrganisationUser> { previousOrganisationUser, currentOrganisationUser })); var result = await GetManageableOrganisationUsersDataAccess().GetManageableUsers(organisationId); Assert.Equal(currentOrganisationUser, result.Single()); }
protected WeeeContext GetPreparedContext() { WeeeContext context = A.Fake<WeeeContext>(); var organisations = A.Fake<DbSet<Organisation>>(); A.CallTo(() => organisations.Add(A<Organisation>._)).Invokes((Organisation o) => { addedOrganisation = o; addedOrganisationId = Guid.NewGuid(); dbHelper.SetId(o, addedOrganisationId); }); var organisationUsers = A.Fake<DbSet<OrganisationUser>>(); A.CallTo(() => organisationUsers.Add(A<OrganisationUser>._)).Invokes((OrganisationUser ou) => addedOrganisationUser = ou); A.CallTo(() => context.Organisations).Returns(organisations); A.CallTo(() => context.OrganisationUsers).Returns(organisationUsers); return context; }
public async Task <JoinOrganisationResult> JoinOrganisation(OrganisationUser organisationUser) { var existingRequest = await context.OrganisationUsers .FirstOrDefaultAsync(ou => ou.OrganisationId == organisationUser.OrganisationId && ou.UserId == organisationUser.UserId && ou.UserStatus.Value != UserStatus.Rejected.Value); if (existingRequest == null) { context.OrganisationUsers.Add(organisationUser); await context.SaveChangesAsync(); return(JoinOrganisationResult.Success()); } return(JoinOrganisationResult.Fail(string.Format( "Cannot submit a request for user with Id '{0}' to access organisation with Id '{1}': A request to access this organisation already exists with state '{2}'", organisationUser.UserId, organisationUser.OrganisationId, existingRequest.UserStatus.DisplayName))); }
public async Task <IActionResult> OnGetAsync(string token) { OrganisationUser = organisationUserService.GetOrganisationUser(token); if (OrganisationUser == null) { return(Redirect(Utils.ReturnToError(Url, HttpContext, "The Url is not valid or already expire."))); } if (OrganisationUser.IsInvitingExpired) { return(Redirect(Utils.ReturnToError(Url, HttpContext, "The Url is not valid or already expire."))); } var userdb = await userManager.FindByEmailAsync(OrganisationUser.User.Email); if (userdb != null) { organisationUserService.ConfirmationInvitation(OrganisationUser.OrganisationId, OrganisationUser.User.Email); return(RedirectToPage("Login")); } HttpContext.Session.SetString("Token", token); return(Page()); }
public async void JoinOrganisation_OrganisationUserExistsWithRejectedStatus_SavesChanges_AndReturnsSuccess() { var organisationId = Guid.NewGuid(); var userId = Guid.NewGuid(); var organisationUser = new OrganisationUser(userId, organisationId, UserStatus.Pending); A.CallTo(() => context.OrganisationUsers) .Returns(contextHelper.GetAsyncEnabledDbSet(new List <OrganisationUser> { ValidOrganisationUser(userId, organisationId, Core.Shared.UserStatus.Rejected) })); var result = await JoinOrganisationDataAccess() .JoinOrganisation(organisationUser); A.CallTo(() => context.SaveChangesAsync()) .MustHaveHappened(Repeated.Exactly.Once); Assert.True(result.Successful); }
GetOrganisationBySimpleSearchTerm_SearchIsValid_AndNoConflictingOrganisationUserExists_ReturnsOrganisation( string existingUserId, string userId, Core.Shared.UserStatus userStatus, Core.Shared.OrganisationStatus organisationStatus) { var organisation = A.Fake<Organisation>(); A.CallTo(() => organisation.TradingName).Returns("A Company"); A.CallTo(() => organisation.OrganisationStatus).Returns(organisationStatus.ToDomainEnumeration<OrganisationStatus>()); A.CallTo(() => context.Organisations) .Returns(dbContextHelper.GetAsyncEnabledDbSet(new List<Organisation> { organisation })); var organisationUser = new OrganisationUser(new Guid(userId), new Guid(existingUserId), userStatus.ToDomainEnumeration<UserStatus>()); A.CallTo(() => context.OrganisationUsers) .Returns(dbContextHelper.GetAsyncEnabledDbSet(new List<OrganisationUser> { organisationUser })); var result = await FindMatchingOrganisationsDataAccess().GetOrganisationsBySimpleSearchTerm("A", new Guid(userId)); Assert.Single(result); Assert.Equal(organisation, result.Single()); }
public async Task InviteUserAsync(OrganisationUser organisationUser, string organisationId, string userId, string webUrl) { using var context = Context(); if (string.IsNullOrEmpty(organisationUser.User.Email)) { throw new Exception("Email is require"); } if (string.IsNullOrEmpty(organisationUser.User.FirstName)) { throw new Exception("First name is require"); } if (string.IsNullOrEmpty(organisationUser.User.LastName)) { throw new Exception("Last name is require"); } if (string.IsNullOrEmpty(organisationUser.User.Name)) { throw new Exception("Display name is require"); } if (!context.OrganisationUserMenuFeature.Any(u => u.OrganisationId == organisationId && u.UserId == userId && u.MenuFeatureId == (int)MenuFeatureEnum.ManageOrganisactionSetting)) { throw new Exception("You don't have permission to invite user"); } if (context.OrganisationUser.Any(u => u.OrganisationId == organisationId && u.User.Email.ToLower() == organisationUser.User.Email.ToLower())) { throw new Exception("User already invited"); } if (context.OrganisationInvitingUser.Any(u => u.OrganisationId == organisationId && u.Email == organisationUser.User.Email.ToLower())) { throw new Exception("User already invited"); } var newInviteUser = new Dal.Models.OrganisationInvitingUser { DisplayName = organisationUser.User.Name, Email = organisationUser.User.Email.ToLower(), FirstName = organisationUser.User.FirstName, LastName = organisationUser.User.LastName, OrganisationId = organisationId, RoleName = organisationUser.RoleName, ExpireToken = CurrentCambodiaTime.AddDays(2), Token = Guid.NewGuid().ToString(), }; if (!organisationUser.IsAdministrator) { foreach (var m in organisationUser.MenuFeatures) { if (m.IsCheck) { context.OrganisationInvitingUserMenuFeature.Add(new Dal.Models.OrganisationInvitingUserMenuFeature { Email = organisationUser.User.Email.ToLower(), MenuFeatureId = m.Id, OrganisationId = organisationId }); } } } else { foreach (var m in organisationUser.MenuFeatures) { context.OrganisationInvitingUserMenuFeature.Add(new Dal.Models.OrganisationInvitingUserMenuFeature { Email = organisationUser.User.Email.ToLower(), MenuFeatureId = m.Id, OrganisationId = organisationId }); } } var organisation = context.Organisation.FirstOrDefault(u => u.Id == organisationId); context.OrganisationInvitingUser.Add(newInviteUser); context.SaveChanges(); webUrl += "/Identity/Account/Invite?token=" + newInviteUser.Token; await emailService.SendEmailAsync(organisationUser.User.Email, "Invitation to Invoice Account", $"You've been invited to join: {organisation.DisplayName} <a href='{webUrl}'>clicking here</a>.", true); }
protected WeeeContext GetPreparedContext() { WeeeContext context = A.Fake <WeeeContext>(); var organisations = A.Fake <DbSet <Organisation> >(); A.CallTo(() => organisations.Add(A <Organisation> ._)).Invokes((Organisation o) => { addedOrganisation = o; addedOrganisationId = Guid.NewGuid(); dbHelper.SetId(o, addedOrganisationId); }); var organisationUsers = A.Fake <DbSet <OrganisationUser> >(); A.CallTo(() => organisationUsers.Add(A <OrganisationUser> ._)).Invokes((OrganisationUser ou) => addedOrganisationUser = ou); A.CallTo(() => context.Organisations).Returns(organisations); A.CallTo(() => context.OrganisationUsers).Returns(organisationUsers); return(context); }
public OrganisationUserRequestCompletedEvent(OrganisationUser organisationUser) { OrganisationUser = organisationUser; }
public OrganisationUser GetOrganisationUser(string organisationId, string requestUserId, string email) { using var context = Context(); if (!context.OrganisationUserMenuFeature.Any(u => u.OrganisationId == organisationId && u.UserId == requestUserId && u.MenuFeatureId == (int)MenuFeatureEnum.ManageOrganisactionSetting)) { throw new Exception("You don't have permission to invite user"); } var organisationUser = context.OrganisationUser.FirstOrDefault(u => u.OrganisationId == organisationId && u.User.Email.ToLower() == email); var menuFeauture = context.MenuFeature.Select(u => new MenuFeature { Id = u.Id, Name = u.Name }).ToList(); if (organisationUser != null) { var claims = organisationUser.User.AspNetUserClaims.Select(u => new { u.ClaimValue, u.ClaimType }).ToList(); var result = new OrganisationUser { IsAdministrator = organisationUser.IsOwner || organisationUser.RoleName == "Administrator", IsOwner = organisationUser.IsOwner, IsInviting = false, IsInvitingExpired = false, OrganisationId = organisationUser.OrganisationId, RoleName = organisationUser.RoleName, User = new User { Email = organisationUser.User.Email, FirstName = claims.FirstOrDefault(u => u.ClaimType == ClaimTypes.Surname).ClaimValue, LastName = claims.FirstOrDefault(u => u.ClaimType == ClaimTypes.GivenName).ClaimValue, //Name = claims.FirstOrDefault(u => u.ClaimType == ClaimTypes.Name).ClaimValue, Id = organisationUser.UserId, }, MenuFeatures = menuFeauture }; var mfs = context.OrganisationUserMenuFeature.Where(u => u.OrganisationId == organisationId && u.UserId == organisationUser.UserId) .Select(u => u.MenuFeatureId).ToList(); foreach (var m in result.MenuFeatures) { m.IsCheck = mfs.Any(u => u == m.Id); } return(result); } var invitingUser = context.OrganisationInvitingUser.FirstOrDefault(u => u.OrganisationId == organisationId && u.Email == email); if (invitingUser != null) { var result = new OrganisationUser { IsAdministrator = invitingUser.RoleName == "Administrator", IsInviting = true, IsInvitingExpired = invitingUser.ExpireToken < CurrentCambodiaTime, IsOwner = false, RoleName = invitingUser.RoleName, OrganisationId = invitingUser.OrganisationId, User = new User { Email = invitingUser.Email, FirstName = invitingUser.FirstName, LastName = invitingUser.LastName, Name = invitingUser.DisplayName }, MenuFeatures = menuFeauture }; var mfs = context.OrganisationInvitingUserMenuFeature.Where(u => u.OrganisationId == organisationId && u.Email == result.User.Email) .Select(u => u.MenuFeatureId).ToList(); foreach (var m in result.MenuFeatures) { m.IsCheck = mfs.Any(u => u == m.Id); } return(result); } throw new Exception("User doesn't exist"); }
public void UpdateUserStatus_UserStatusRejected_UpdateToPending_ThrowsException() { var orgUser = new OrganisationUser(Guid.NewGuid(), Guid.NewGuid(), UserStatus.Rejected); Assert.Throws <InvalidOperationException>(() => orgUser.UpdateUserStatus(UserStatus.Pending)); }
public void UpdateUserStatus_UserStatusIsPending_UpdateToInactive_ThrowsException() { var orgUser = new OrganisationUser(Guid.NewGuid(), Guid.NewGuid(), UserStatus.Pending); Assert.Throws <InvalidOperationException>(() => orgUser.UpdateUserStatus(UserStatus.Inactive)); }
protected override void Setup() { base.Setup(); CanGoBack = false; ROSecurityGroupList = ROSecurityGroupList.GetROSecurityGroupList(true); //need to find UserID from query string params int UserID = 0; int OrganisationUserID = 0; int ProtectedAreaUserID = 0; #region " Edit User\Add New Protected Area user\Add New OrganisationUser" if ((Page != null) && (Page.Request.Params["UserID"] != null)) { UserID = Convert.ToInt32(Singular.Encryption.DecryptString(System.Web.HttpUtility.UrlDecode(Page.Request.Params["UserID"]).Replace(" ", "+"))); Editinguser = UserID != 0 ? METTLib.Security.UserList.GetUserList(UserID).First() : null; if (Editinguser != null) { //let's check if the page redirection was from protected areas if ((Page.Request.Params["OrganisationProtectedAreaID"] != null)) { IsProtectedAreaUserInd = true; //check if the user already exists before creating a new one to avoid duplicates ProtectedAreaID = Convert.ToInt32(Singular.Encryption.DecryptString(System.Web.HttpUtility.UrlDecode(Page.Request.Params["ProtectedAreaID"]).Replace(" ", "+"))); var OrganisationProtectedAreaID = Convert.ToInt32(Singular.Encryption.DecryptString(System.Web.HttpUtility.UrlDecode(Page.Request.Params["OrganisationProtectedAreaID"]).Replace(" ", "+"))); var ProtectedAreaUser = OrganisationProtectedAreaUserList.GetOrganisationProtectedAreaUserList().FirstOrDefault(c => c.OrganisationIDProtectedAreaID == OrganisationProtectedAreaID && c.UserID == UserID); ProtectedAreaUserID = ProtectedAreaUser != null?OrganisationProtectedAreaUserList.GetOrganisationProtectedAreaUserList().FirstOrDefault(c => c.OrganisationIDProtectedAreaID == OrganisationProtectedAreaID && c.UserID == UserID).OrganisationProtectedAreaUserID : 0; if (ProtectedAreaUserID != 0) { OrganisationProtectedAreaUser = OrganisationProtectedAreaUserList.GetOrganisationProtectedAreaUserList(ProtectedAreaUserID).FirstOrDefault(); } if (OrganisationProtectedAreaUser != null) { SecurityGroupProtectedAreaUserList = SecurityGroupProtectedAreaUserList.GetSecurityGroupProtectedAreaUserList(UserID, ProtectedAreaID); //mark as Active those roles that exists if ((SecurityGroupProtectedAreaUserList != null) && (SecurityGroupProtectedAreaUserList.Count > 0)) { foreach (var item in ROSecurityGroupList) { if (SecurityGroupProtectedAreaUserList.Any(c => c.SecurityGroupID == item.SecurityGroupID && c.IsActiveInd == true)) { item.IsActiveInd = true; } } } } else { OrganisationProtectedAreaUser = METTLib.ProtectedArea.OrganisationProtectedAreaUser.NewOrganisationProtectedAreaUser(); OrganisationProtectedAreaUser.OrganisationIDProtectedAreaID = Convert.ToInt32(Singular.Encryption.DecryptString(System.Web.HttpUtility.UrlDecode(Page.Request.Params["OrganisationProtectedAreaID"]).Replace(" ", "+"))); OrganisationProtectedAreaUser.UserID = UserID; SecurityGroupProtectedAreaUserList = SecurityGroupProtectedAreaUserList.NewSecurityGroupProtectedAreaUserList(); } } //let's check if the page redirection was from organisations else if ((Page.Request.Params["OrganisationID"] != null)) { IsOrganisationUsersInd = true; //check if the user already exists before creating a new one to avoid duplicates OrganisationID = Convert.ToInt32(Singular.Encryption.DecryptString(System.Web.HttpUtility.UrlDecode(Page.Request.Params["OrganisationID"]).Replace(" ", "+"))); OrganisationUser = OrganisationUserList.GetOrganisationUserList().FirstOrDefault(c => c.OrganisationID == OrganisationID && c.UserID == UserID); if (OrganisationUser == null) { OrganisationUser = OrganisationUser.NewOrganisationUser(); OrganisationUser.OrganisationID = OrganisationID; OrganisationUser.UserID = UserID; SecurityGroupOrganisationUserList = SecurityGroupOrganisationUserList.NewSecurityGroupOrganisationUserList(); } else { SecurityGroupOrganisationUserList = SecurityGroupOrganisationUserList.GetSecurityGroupOrganisationUserList(UserID, OrganisationID); //mark as Active the roles that exists if ((SecurityGroupProtectedAreaUserList != null) && (SecurityGroupProtectedAreaUserList.Count > 0)) { foreach (var item in ROSecurityGroupList) { if (SecurityGroupProtectedAreaUserList.Any(c => c.SecurityGroupID == item.SecurityGroupID && c.IsActiveInd == true)) { item.IsActiveInd = true; } } } } } else { //editing User SecurityGroupUserList = SecurityGroupUserList.GetSecurityGroupUserList(UserID); if ((SecurityGroupUserList != null) && (SecurityGroupUserList.Count > 0)) { foreach (var item in ROSecurityGroupList) { if (SecurityGroupUserList.Any(c => c.SecurityGroupID == item.SecurityGroupID)) { item.IsActiveInd = true; } } } } } } #endregion #region " Edit Organisation User - From Organisation Profile " if ((Page != null) && (Page.Request.Params["OrganisationUserID"] != null)) { OrganisationUserID = Convert.ToInt32(Singular.Encryption.DecryptString(System.Web.HttpUtility.UrlDecode(Page.Request.Params["OrganisationUserID"]).Replace(" ", "+"))); OrganisationID = Convert.ToInt32(Singular.Encryption.DecryptString(System.Web.HttpUtility.UrlDecode(Page.Request.Params["OrganisationID"]).Replace(" ", "+"))); OrganisationUser = OrganisationUserList.GetOrganisationUserList().FirstOrDefault(c => c.OrganisationUserID == OrganisationUserID); if (OrganisationUser != null) { UserID = OrganisationUser.UserID; Editinguser = UserID != 0 ? METTLib.Security.UserList.GetUserList(UserID).FirstOrDefault() : null; IsOrganisationUsersInd = true; SecurityGroupOrganisationUserList = SecurityGroupOrganisationUserList.GetSecurityGroupOrganisationUserList(UserID, OrganisationID); //mark as Active those roles that exists if ((SecurityGroupOrganisationUserList != null) && (SecurityGroupOrganisationUserList.Count > 0)) { foreach (var item in ROSecurityGroupList) { if (SecurityGroupOrganisationUserList.Any(c => c.SecurityGroupID == item.SecurityGroupID && c.IsActiveInd == true)) { item.IsActiveInd = true; } } } } } #endregion #region " Edit Organisation Protected Area User - From Protected Area Profile" if ((Page != null) && (Page.Request.Params["OrganisationProtectedAreaUserID"] != null)) { ProtectedAreaUserID = Convert.ToInt32(Singular.Encryption.DecryptString(System.Web.HttpUtility.UrlDecode(Page.Request.Params["OrganisationProtectedAreaUserID"]).Replace(" ", "+"))); ProtectedAreaID = Convert.ToInt32(Singular.Encryption.DecryptString(System.Web.HttpUtility.UrlDecode(Page.Request.Params["ProtectedAreaID"]).Replace(" ", "+"))); OrganisationProtectedAreaUser = OrganisationProtectedAreaUserList.GetOrganisationProtectedAreaUserList(ProtectedAreaUserID).FirstOrDefault(); if (OrganisationProtectedAreaUser != null) { UserID = OrganisationProtectedAreaUser.UserID; Editinguser = UserID != 0 ? METTLib.Security.UserList.GetUserList(UserID).FirstOrDefault() : null; IsProtectedAreaUserInd = true; //ROSecurityGroupProtectedAreaUserList = ROSecurityGroupProtectedAreaUserList.GetROSecurityGroupProtectedAreaUserList(UserID,ProtectedAreaID); SecurityGroupProtectedAreaUserList = SecurityGroupProtectedAreaUserList.GetSecurityGroupProtectedAreaUserList(UserID, ProtectedAreaID); //mark as Active those roles that exists if ((SecurityGroupProtectedAreaUserList != null) && (SecurityGroupProtectedAreaUserList.Count > 0)) { foreach (var item in ROSecurityGroupList) { if (SecurityGroupProtectedAreaUserList.Any(c => c.SecurityGroupID == item.SecurityGroupID && c.IsActiveInd == true)) { item.IsActiveInd = true; } } } } } #endregion if (Editinguser == null) { //new user //Editinguser = METTLib.Security.UserList.GetUserList.new } }
public void UpdateUserStatus_UserStatusIsPending_UpdateToInactive_ThrowsException() { var orgUser = new OrganisationUser(Guid.NewGuid(), Guid.NewGuid(), UserStatus.Pending); Assert.Throws<InvalidOperationException>(() => orgUser.UpdateUserStatus(UserStatus.Inactive)); }
public void UpdateUserStatus_UserStatusRejected_UpdateToPending_ThrowsException() { var orgUser = new OrganisationUser(Guid.NewGuid(), Guid.NewGuid(), UserStatus.Rejected); Assert.Throws<InvalidOperationException>(() => orgUser.UpdateUserStatus(UserStatus.Pending)); }
public async Task UpdateUserRoleAsync(string organisationId, string updateByUserId, OrganisationUser organisationUser) { using var context = Context(); if (!context.OrganisationUserMenuFeature.Any(u => u.OrganisationId == organisationId && u.UserId == updateByUserId && u.MenuFeatureId == (int)MenuFeatureEnum.ManageOrganisactionSetting)) { throw new Exception("You don't have permission to update user role"); } var user = context.OrganisationUser.FirstOrDefault(u => u.OrganisationId == organisationId && u.User.Email.ToLower() == organisationUser.User.Email.ToLower()); if (user != null) { if (user.IsOwner) { throw new Exception("You cannot update role for owner user"); } user.RoleName = organisationUser.RoleName; context.OrganisationUserMenuFeature.RemoveRange(context.OrganisationUserMenuFeature.Where(u => u.OrganisationId == organisationId && u.UserId == user.UserId)); foreach (var t in organisationUser.MenuFeatures) { if (t.IsCheck) { context.OrganisationUserMenuFeature.Add(new Dal.Models.OrganisationUserMenuFeature { MenuFeatureId = t.Id, OrganisationId = organisationId, UserId = user.UserId }); } } context.SaveChanges(); await emailService.SendEmailAsync(user.User.Email, "Organisation role change", "Organisation role change", true); return; } var invitingUser = context.OrganisationInvitingUser.FirstOrDefault(u => u.OrganisationId == organisationId && u.Email.ToLower() == organisationUser.User.Email.ToLower()); if (invitingUser != null) { invitingUser.RoleName = organisationUser.RoleName; context.OrganisationInvitingUserMenuFeature.RemoveRange(context.OrganisationInvitingUserMenuFeature.Where(u => u.OrganisationId == organisationId && u.Email.ToLower() == organisationUser.User.Email.ToLower())); foreach (var t in organisationUser.MenuFeatures) { if (t.IsCheck) { context.OrganisationInvitingUserMenuFeature.Add(new Dal.Models.OrganisationInvitingUserMenuFeature { MenuFeatureId = t.Id, OrganisationId = organisationId, Email = organisationUser.User.Email.ToLower() }); } } context.SaveChanges(); return; } throw new Exception("User doesn't exist"); }
public async Task <int> ChangeOrganisationUserStatus(OrganisationUser organisationUser, Core.Shared.UserStatus status) { organisationUser.UpdateUserStatus(status.ToDomainEnumeration <UserStatus>()); return(await context.SaveChangesAsync()); }
public async void JoinOrganisation_OrganisationUserExistsWithRejectedStatus_SavesChanges_AndReturnsSuccess() { var organisationId = Guid.NewGuid(); var userId = Guid.NewGuid(); var organisationUser = new OrganisationUser(userId, organisationId, UserStatus.Pending); A.CallTo(() => context.OrganisationUsers) .Returns(contextHelper.GetAsyncEnabledDbSet(new List<OrganisationUser> { ValidOrganisationUser(userId, organisationId, Core.Shared.UserStatus.Rejected) })); var result = await JoinOrganisationDataAccess() .JoinOrganisation(organisationUser); A.CallTo(() => context.SaveChangesAsync()) .MustHaveHappened(Repeated.Exactly.Once); Assert.True(result.Successful); }
public async Task<int> ChangeOrganisationUserStatus(OrganisationUser organisationUser, Core.Shared.UserStatus status) { organisationUser.UpdateUserStatus(status.ToDomainEnumeration<UserStatus>()); return await context.SaveChangesAsync(); }