public async Task <OrganizationResponseModel> Post([FromBody] OrganizationCreateRequestModel model) { var user = await _userService.GetUserByPrincipalAsync(User); if (user == null) { throw new UnauthorizedAccessException(); } var plan = StaticStore.Plans.FirstOrDefault(plan => plan.Type == model.PlanType); if (plan == null || plan.LegacyYear != null) { throw new Exception("Invalid plan selected."); } var policies = await _policyRepository.GetManyByUserIdAsync(user.Id); if (policies.Any(policy => policy.Type == PolicyType.SingleOrg)) { throw new Exception("You may not create an organization. You belong to an organization " + "which has a policy that prohibits you from being a member of any other organization."); } var organizationSignup = model.ToOrganizationSignup(user); var result = await _organizationService.SignUpAsync(organizationSignup); return(new OrganizationResponseModel(result.Item1)); }
public async Task <OrganizationExtendedResponseModel> Post([FromBody] OrganizationCreateRequestModel model) { var user = await _userService.GetUserByPrincipalAsync(User); var organizationSignup = model.ToOrganizationSignup(user); var result = await _organizationService.SignUpAsync(organizationSignup); return(new OrganizationExtendedResponseModel(result.Item1, result.Item2)); }
public async Task <OrganizationResponseModel> Post([FromBody] OrganizationCreateRequestModel model) { var user = await _userService.GetUserByPrincipalAsync(User); if (user == null) { throw new UnauthorizedAccessException(); } var organizationSignup = model.ToOrganizationSignup(user); var result = await _organizationService.SignUpAsync(organizationSignup); return(new OrganizationResponseModel(result.Item1)); }
public async Task <ProviderOrganizationResponseModel> Post(Guid providerId, [FromBody] OrganizationCreateRequestModel model) { var user = await _userService.GetUserByPrincipalAsync(User); if (user == null) { throw new UnauthorizedAccessException(); } if (!_currentContext.ManageProviderOrganizations(providerId)) { throw new NotFoundException(); } var organizationSignup = model.ToOrganizationSignup(user); var result = await _providerService.CreateOrganizationAsync(providerId, organizationSignup, user); return(new ProviderOrganizationResponseModel(result)); }
public async Task <OrganizationResponseModel> Post([FromBody] OrganizationCreateRequestModel model) { var user = await _userService.GetUserByPrincipalAsync(User); if (user == null) { throw new UnauthorizedAccessException(); } var plan = StaticStore.Plans.FirstOrDefault(plan => plan.Type == model.PlanType); if (plan == null || plan.LegacyYear != null) { throw new Exception("Invalid plan selected."); } var organizationSignup = model.ToOrganizationSignup(user); var result = await _organizationService.SignUpAsync(organizationSignup); return(new OrganizationResponseModel(result.Item1)); }
public async Task <OrganizationResponseModel> Post([FromBody] OrganizationCreateRequestModel model) { var user = await _userService.GetUserByPrincipalAsync(User); if (user == null) { throw new UnauthorizedAccessException(); } var plan = StaticStore.Plans.FirstOrDefault(plan => plan.Type == model.PlanType); if (plan == null || plan.LegacyYear != null) { throw new Exception("Invalid plan selected."); } var policies = await _policyRepository.GetManyByUserIdAsync(user.Id); var orgUsers = await _organizationUserRepository.GetManyByUserAsync(user.Id); var orgsWithSingleOrgPolicy = policies.Where(p => p.Enabled && p.Type == PolicyType.SingleOrg) .Select(p => p.OrganizationId); var blockedBySingleOrgPolicy = orgUsers.Any(ou => ou.Type != OrganizationUserType.Owner && ou.Type != OrganizationUserType.Admin && ou.Status != OrganizationUserStatusType.Invited && orgsWithSingleOrgPolicy.Contains(ou.OrganizationId)); if (blockedBySingleOrgPolicy) { throw new Exception("You may not create an organization. You belong to an organization " + "which has a policy that prohibits you from being a member of any other organization."); } var organizationSignup = model.ToOrganizationSignup(user); var result = await _organizationService.SignUpAsync(organizationSignup); return(new OrganizationResponseModel(result.Item1)); }