Example #1
0
        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 {
            });
        }
Example #2
0
 public void AssignUserToProject(int projectId, string userId)
 {
     UserProjectAssignment assignment = new UserProjectAssignment();
     assignment.ProjectID = projectId;
     assignment.UserID = userId;
     UserProjectAssignmentRepository.Add(assignment);
 }
Example #3
0
        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 {
            });
        }
Example #4
0
        public void AssignUserToProject(int projectId, string userId)
        {
            UserProjectAssignment assignment = new UserProjectAssignment();

            assignment.ProjectID = projectId;
            assignment.UserID    = userId;
            UserProjectAssignmentRepository.Add(assignment);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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,
            });
        }
Example #8
0
        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);
        }
Example #9
0
 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);
 }
Example #10
0
        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(),
            });
        }
Example #11
0
        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));
        }
Example #13
0
        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);
        }
Example #14
0
        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);
 }
Example #16
0
 public void Remove(IProject project)
 {
     UserProjectAssignment.Delete(project, User);
 }
Example #17
0
 public IUserProjectAssignment AddOrSet(IProject project, UserRole role, ExtendedUserRoles extendedRoles)
 {
     return(UserProjectAssignment.Create(_user, project, role, extendedRoles));
 }