public override async Task <AddUserResponse> AddUser(AddUserRequest request, ServerCallContext context) { var socialDomain = await dbContext.Domains.FindAsync(SocialDomainId); var user = new User(Guid.Parse(request.UserId), 0); // Set the project and user with their initial quota var project = new Project(Guid.Parse(request.SocialProjectId), user, socialDomain, Resources.QuotaForSocialProject); var userProjectAssignment = new UserProjectAssignment(Guid.Parse(request.SocialProjectAssignmentId), user, project, Resources.QuotaForSocialProject); var userDomainAssignment = new UserDomainAssignment(Guid.Parse(request.SocialDomainAssignmentId), socialDomain, user); dbContext.Users.Add(user); dbContext.Projects.Add(project); dbContext.UserProjectAssignments.Add(userProjectAssignment); dbContext.UserDomainAssignments.Add(userDomainAssignment); // Add user and project into the use cycle, billing cycle and management fee dbContext.UseCycleEntries.Add(new UseCycleEntry(userProjectAssignment.UseCycleSubject)); dbContext.UseCycleEntries.Add(new UseCycleEntry(project.UseCycleSubject)); dbContext.BillingCycleEntries.Add(new BillingCycleEntry(userProjectAssignment.BillingCycleSubject)); dbContext.BillingCycleEntries.Add(new BillingCycleEntry(project.BillingCycleSubject)); dbContext.ManagementFeeEntries.Add(new ManagementFeeEntry(project.Payer)); dbContext.ManagementFeeEntries.Add(new ManagementFeeEntry(user.Payer)); await dbContext.SaveChangesAsync(); return(new AddUserResponse { }); }
public void AssignUserToProject(int projectId, string userId) { UserProjectAssignment assignment = new UserProjectAssignment(); assignment.ProjectID = projectId; assignment.UserID = userId; UserProjectAssignmentRepository.Add(assignment); }
public override async Task <AddProjectResponse> AddProject(AddProjectRequest request, ServerCallContext context) { var payer = await dbContext.Users.FindIfNullThrowAsync(request.PayUserId); var domain = await dbContext.Domains.FindIfNullThrowAsync(tokenClaimsAccessor.TokenClaims.DomainId); var project = new Project(Guid.Parse(request.Id), payer, domain, Resources.Zero); var payUserProjectAssignment = new UserProjectAssignment(Guid.Parse(request.PayUserAssignmentId), payer, project, Resources.Zero); dbContext.Projects.Add(project); dbContext.UserProjectAssignments.Add(payUserProjectAssignment); dbContext.BillingCycleEntries.Add(new BillingCycleEntry(project.BillingCycleSubject)); dbContext.BillingCycleEntries.Add(new BillingCycleEntry(payUserProjectAssignment.BillingCycleSubject)); dbContext.UseCycleEntries.Add(new UseCycleEntry(project.UseCycleSubject)); dbContext.UseCycleEntries.Add(new UseCycleEntry(payUserProjectAssignment.UseCycleSubject)); dbContext.ManagementFeeEntries.Add(new ManagementFeeEntry(project.Payer)); await dbContext.SaveChangesAsync(); return(new AddProjectResponse { }); }
public void HandleProjectAdd(Project project, string userId) { //Project project = Serializer.Serialize(form); ProjectRepository.Add(project); UserProjectAssignment userProjectAssignment = new UserProjectAssignment(); userProjectAssignment.UserID = userId; userProjectAssignment.ProjectID = project.ID; UserProjectAssignmentRepository.Add(userProjectAssignment); }
public override async Task <RegisterResponse> Register(RegisterRequest request, ServerCallContext context) { // Create the user var newUser = new User(Guid.NewGuid(), request.Username, request.Username, request.Password, request.Email, false); dbContext.Users.Add(newUser); // Create a social project whose project name is the new user Guid socialDomainId = SocialDomainId; var socialDomain = await dbContext.Domains.FirstAsync((domain) => domain.Id == socialDomainId); var newProject = new Project(Guid.NewGuid(), request.Username, socialDomain); dbContext.Projects.Add(newProject); // Assign the user into the project and grant admin role var projectAssignment = new UserProjectAssignment(Guid.NewGuid(), newUser, newProject, Identity.Domain.ValueObjects.UserRole.Admin); dbContext.UserProjectAssignments.Add(projectAssignment); // Assign the user into the social domain and grant member role var domainAssignment = new Identity.Domain.Entities.UserDomainAssignment(Guid.NewGuid(), newUser, socialDomain, Identity.Domain.ValueObjects.UserRole.Member); dbContext.UserDomainAssignments.Add(domainAssignment); // Save changes await dbContext.SaveChangesAsync(); // Return the scope (project scope) and token var token = jwtSettings.GenerateToken(new TokenClaims(false, true, newUser.Id.ToString(), socialDomainId.ToString(), newProject.Id.ToString(), projectAssignment.Id.ToString(), Shared.UserRole.Admin)); var scope = new Scope() { System = false, Role = Protos.Common.UserRole.Admin, DomainId = socialDomainId.ToString(), DomainName = socialDomain.Name, ProjectId = newProject.Id.ToString(), ProjectName = newProject.Name, UserProjectAssignmentId = projectAssignment.Id.ToString(), Social = true }; return(new RegisterResponse() { UserId = newUser.Id.ToString(), SocialProjectId = newProject.Id.ToString(), SocialDomainAssignmentId = domainAssignment.Id.ToString(), SocialProjectAssignmentId = projectAssignment.Id.ToString(), Scope = scope, Token = token, }); }
public void HandleProjectDelete(int projectId, string userId) { Project proj = ProjectRepository.GetProjectByIdWithTracking(projectId); ProjectRepository.Remove(proj); UserProjectAssignment userProjectAssignment = UserProjectAssignmentRepository. GetProjectAssignmentByUserIdAndProjectId(userId, projectId); userProjectAssignment.UserID = userId; userProjectAssignment.ProjectID = projectId; UserProjectAssignmentRepository.Remove(userProjectAssignment); }
public void InitializeVariables() { cjdnju = new UserDomainAssignment(Guid.NewGuid(), cjd, nju, UserRole.Member); cjdpku = new UserDomainAssignment(Guid.NewGuid(), cjd, pku, UserRole.Member); cjynju = new UserDomainAssignment(Guid.NewGuid(), cjy, nju, UserRole.Member); lqnju = new UserDomainAssignment(Guid.NewGuid(), lq, nju, UserRole.Member); fghnju = new UserDomainAssignment(Guid.NewGuid(), fgh, nju, UserRole.Member); njuadminnju = new UserDomainAssignment(Guid.NewGuid(), njuadmin, nju, UserRole.Admin); fcpku = new UserDomainAssignment(Guid.NewGuid(), fc, pku, UserRole.Admin); lqproject = new Project(Guid.NewGuid(), "67 Project", nju); fcproject = new Project(Guid.NewGuid(), "fc Project", pku); lq67project = new UserProjectAssignment(Guid.NewGuid(), lq, lqproject, UserRole.Admin); cjd67project = new UserProjectAssignment(Guid.NewGuid(), cjd, lqproject, UserRole.Member); fcfcproject = new UserProjectAssignment(Guid.NewGuid(), fc, fcproject, UserRole.Admin); }
public override async Task <AddUserToProjectResponse> AddUserToProject(AddUserToProjectRequest request, ServerCallContext context) { var user = await dbContext.Users.FindIfNullThrowAsync(request.UserId); var project = await dbContext.Projects.FindIfNullThrowAsync(request.ProjectId); var assignment = new UserProjectAssignment(Guid.NewGuid(), user, project, (Domain.ValueObjects.UserRole)request.Role); dbContext.UserProjectAssignments.Add(assignment); await dbContext.SaveChangesAsync(); return(new AddUserToProjectResponse { UserProjectAssignmentId = assignment.Id.ToString(), }); }
public override async Task <AddUserToProjectResponse> AddUserToProject(AddUserToProjectRequest request, ServerCallContext context) { var project = await dbContext.Projects.FindIfNullThrowAsync(request.ProjectId); var user = await dbContext.Users.FindIfNullThrowAsync(request.UserId); var userProjectAssignment = new UserProjectAssignment(Guid.Parse(request.UserProjectAssignmentId), user, project, Resources.Zero); dbContext.UserProjectAssignments.Add(userProjectAssignment); dbContext.BillingCycleEntries.Add(new BillingCycleEntry(userProjectAssignment.BillingCycleSubject)); dbContext.UseCycleEntries.Add(new UseCycleEntry(userProjectAssignment.UseCycleSubject)); await dbContext.SaveChangesAsync(); return(new AddUserToProjectResponse { }); }
public async Task TestChangeProjectUserResourcesOnSocialProject() { var socialDomain = db.Domains.Find(Constants.SocialDomainId); var lqsocialproject = new Project(Guid.NewGuid(), lq, socialDomain, Domain.ValueObjects.Resources.QuotaForSocialProject); var lqlqsocialproject = new UserProjectAssignment(Guid.NewGuid(), lq, lqsocialproject, Domain.ValueObjects.Resources.QuotaForSocialProject); var lqlqsocialprojectTokenClaims = new TokenClaims(false, true, lq.Id, Constants.SocialDomainId, lqsocialproject.Id, lqlqsocialproject.Id, UserRole.Admin); // set this token as a social project token. var initial = new Domain.ValueObjects.Resources(3, 4, 5); lqlqsocialproject.Resources = initial.Clone(); db.UseCycleEntries.Add(new UseCycleEntry(lqlqsocialproject.UseCycleSubject)); db.UseCycleEntries.Add(new UseCycleEntry(lqsocialproject.UseCycleSubject)); db.BillingCycleEntries.Add(new BillingCycleEntry(lqlqsocialproject.BillingCycleSubject)); db.BillingCycleEntries.Add(new BillingCycleEntry(lqsocialproject.BillingCycleSubject)); await db.SaveChangesAsync(); var service = CreateService(lqlqsocialprojectTokenClaims); // change delta var delta = new Domain.ValueObjects.Resources(-3, -4, -5); await service.ChangeProjectUserResources(new Protos.Interop.ChangeProjectUserResourcesRequest { ResourcesDelta = delta.ToGrpc() }, TestContext); // 1 allocated billing with 0 amount to be allocated to user. var billing = Assert.Single(lqlqsocialproject.BillingCycleRecords); Assert.Equal(0, billing.Amount); // No resources is now being used Assert.Equal(Domain.ValueObjects.Resources.Zero, lqsocialproject.Resources); // lq should pay the resources price // the previous 0 allocated billing should also be included AssertIEnumerableIgnoreOrder(new[] { PricePlan.Instance.Calculate(initial), 0 }, lq.PayedUserTransactions.Select(x => x.Amount)); }
public void InitializeVariables(Domain.Entities.System system) { nju = new DomainEntity(Guid.NewGuid(), njuadmin, new Domain.ValueObjects.Resources(10, 20, 30), system); pku = new DomainEntity(Guid.NewGuid(), fc, new Domain.ValueObjects.Resources(20, 30, 40), system); cjd.JoinDomain(nju); cjd.JoinDomain(pku); lq.JoinDomain(nju); njuadmin.JoinDomain(nju); fc.JoinDomain(pku); lqproject = new Project(Guid.NewGuid(), lq, nju, new Domain.ValueObjects.Resources(5, 10, 20)); fcproject = new Project(Guid.NewGuid(), fc, pku, new Domain.ValueObjects.Resources(10, 30, 40)); lq67project = new UserProjectAssignment(Guid.NewGuid(), lq, lqproject, new Domain.ValueObjects.Resources(4, 8, 10)); cjd67project = new UserProjectAssignment(Guid.NewGuid(), cjd, lqproject, new Domain.ValueObjects.Resources(1, 2, 10)); fcfcproject = new UserProjectAssignment(Guid.NewGuid(), fc, fcproject, new Domain.ValueObjects.Resources(5, 15, 20)); cjdlqTokenClaims = new TokenClaims(false, false, cjd.Id, nju.Id, lqproject.Id, cjd67project.Id, UserRole.Member); lqlqTokenClaims = new TokenClaims(false, false, lq.Id, nju.Id, lqproject.Id, lq67project.Id, UserRole.Admin); njuadminnjuTokenClaims = new TokenClaims(false, false, njuadmin.Id, nju.Id, null, null, UserRole.Admin); fcfcTokenClaims = new TokenClaims(false, false, fc.Id, pku.Id, fcproject.Id, fcfcproject.Id, UserRole.Admin); systemTokenClaims = new TokenClaims(true, false, SystemUserId, nju.Id, null, null, UserRole.Admin); }
public override async Task <CreateProjectResponse> CreateProject(CreateProjectRequest request, ServerCallContext context) { var tokenClaims = tokenClaimsAccessor.TokenClaims; var domain = await dbContext.Domains.FindIfNullThrowAsync(tokenClaims.DomainId); var payUser = await dbContext.Users.FindIfNullThrowAsync(request.AdminId); var project = new Project(Guid.NewGuid(), request.Name, domain); dbContext.Projects.Add(project); var adminAssignment = new UserProjectAssignment(Guid.NewGuid(), payUser, project, Domain.ValueObjects.UserRole.Admin); dbContext.UserProjectAssignments.Add(adminAssignment); await dbContext.SaveChangesAsync(); return(new CreateProjectResponse { ProjectId = project.Id.ToString(), AdminAssignmentId = adminAssignment.Id.ToString(), }); }
public void Remove(IUser user) { UserProjectAssignment.Delete(Project, user); }
public void Remove(IProject project) { UserProjectAssignment.Delete(project, User); }
public IUserProjectAssignment AddOrSet(IProject project, UserRole role, ExtendedUserRoles extendedRoles) { return(UserProjectAssignment.Create(_user, project, role, extendedRoles)); }