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 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 { }); }
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 <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(), }); }
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(), }); }
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 { }); }
private Domain.Entities.User LoadUser(UserDomainAssignment assignment) { dbContext.Entry(assignment).Reference(x => x.User).Load(); return(assignment.User); }