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));
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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));
        }
Beispiel #6
0
        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));
        }