Ejemplo n.º 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 {
            });
        }
Ejemplo n.º 2
0
        public override async Task <SetAdminsResponse> SetAdmins(SetAdminsRequest request, ServerCallContext context)
        {
            var domain = await dbContext.Domains.FindIfNullThrowAsync(request.DomainId);

            var assignments = dbContext.UserDomainAssignments.Where(x => x.Domain == domain);

            // 1. Set all roles to members
            await assignments.ForEachAsync(x =>
            {
                x.Role = Domain.ValueObjects.UserRole.Member;
            });

            // 2. Set the admins to admin. If not in the domain, add them into the admin
            foreach (var userId in request.AdminIds)
            {
                var user = await dbContext.Users.FindIfNullThrowAsync(userId);

                var userAssignment = await assignments.FirstOrDefaultAsync(x => x.User == user);

                if (userAssignment != null)
                {
                    userAssignment.Role = Domain.ValueObjects.UserRole.Admin;
                }
                else
                {
                    var assignment = new UserDomainAssignment(Guid.NewGuid(), user, domain, Domain.ValueObjects.UserRole.Admin);
                    dbContext.UserDomainAssignments.Add(assignment);
                }
            }

            await dbContext.SaveChangesAsync();

            return(new SetAdminsResponse {
            });
        }
Ejemplo n.º 3
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);
 }
Ejemplo n.º 4
0
        public override async Task <AddUserToDomainResponse> AddUserToDomain(AddUserToDomainRequest request, ServerCallContext context)
        {
            var user = await dbContext.Users.FindIfNullThrowAsync(request.UserId);

            var domain = await dbContext.Domains.FindIfNullThrowAsync(request.DomainId);

            var assignment = new UserDomainAssignment(Guid.NewGuid(), user, domain, (Domain.ValueObjects.UserRole)request.Role);

            dbContext.UserDomainAssignments.Add(assignment);

            await dbContext.SaveChangesAsync();

            return(new AddUserToDomainResponse
            {
                UserDomainAssignmentId = assignment.Id.ToString(),
            });
        }
Ejemplo n.º 5
0
        public override async Task <CreateDomainResponse> CreateDomain(CreateDomainRequest request, ServerCallContext context)
        {
            var payUser = await dbContext.Users.FindIfNullThrowAsync(request.AdminId);

            var domain = new Domain.Entities.Domain(Guid.NewGuid(), request.Name);

            dbContext.Domains.Add(domain);

            var adminAssignment = new UserDomainAssignment(Guid.NewGuid(), payUser, domain, Identity.Domain.ValueObjects.UserRole.Admin);

            dbContext.UserDomainAssignments.Add(adminAssignment);

            await dbContext.SaveChangesAsync();

            return(new CreateDomainResponse
            {
                DomainId = domain.Id.ToString(),
                AdminDomainAssignmentId = adminAssignment.Id.ToString(),
            });
        }
Ejemplo n.º 6
0
        public override async Task <AddDomainResponse> AddDomain(AddDomainRequest request, ServerCallContext context)
        {
            var payer = await dbContext.Users.FindIfNullThrowAsync(request.PayUserId);

            var system = await dbContext.Systems.FirstOrDefaultAsync();

            var domain = new DomainEntity(Guid.Parse(request.Id), payer, Resources.Zero, system);
            var userDomainAssignment = new UserDomainAssignment(Guid.Parse(request.PayUserAssignmentId), domain, payer);

            dbContext.Domains.Add(domain);
            dbContext.UserDomainAssignments.Add(userDomainAssignment);

            dbContext.BillingCycleEntries.Add(new BillingCycleEntry(domain.BillingCycleSubject));
            dbContext.UseCycleEntries.Add(new UseCycleEntry(domain.UseCycleSubject));
            dbContext.ManagementFeeEntries.Add(new ManagementFeeEntry(domain.Payer));

            await dbContext.SaveChangesAsync();

            return(new AddDomainResponse {
            });
        }
Ejemplo n.º 7
0
 private Domain.Entities.User LoadUser(UserDomainAssignment assignment)
 {
     dbContext.Entry(assignment).Reference(x => x.User).Load();
     return(assignment.User);
 }