Exemple #1
0
        public override async Task <IdentityResult> DeleteAsync(User user)
        {
            // Check if user is the only owner of any organizations.
            var onlyOwnerCount = await _organizationUserRepository.GetCountByOnlyOwnerAsync(user.Id);

            if (onlyOwnerCount > 0)
            {
                return(IdentityResult.Failed(new IdentityError
                {
                    Description = "You must leave or delete any organizations that you are the only owner of first."
                }));
            }

            if (!string.IsNullOrWhiteSpace(user.GatewaySubscriptionId))
            {
                var paymentService = user.GetPaymentService(_globalSettings);
                try
                {
                    await paymentService.CancelSubscriptionAsync(user, true);
                }
                catch (GatewayException) { }
            }

            await _userRepository.DeleteAsync(user);

            await _pushService.PushLogOutAsync(user.Id);

            return(IdentityResult.Success);
        }
Exemple #2
0
        public override async Task <IdentityResult> DeleteAsync(User user)
        {
            // Check if user is the only owner of any organizations.
            var onlyOwnerCount = await _organizationUserRepository.GetCountByOnlyOwnerAsync(user.Id);

            if (onlyOwnerCount > 0)
            {
                var deletedOrg = false;
                var orgs       = await _organizationUserRepository.GetManyDetailsByUserAsync(user.Id,
                                                                                             OrganizationUserStatusType.Confirmed);

                if (orgs.Count == 1)
                {
                    var org = await _organizationRepository.GetByIdAsync(orgs.First().OrganizationId);

                    if (org != null && (!org.Enabled || string.IsNullOrWhiteSpace(org.GatewaySubscriptionId)))
                    {
                        var orgCount = await _organizationUserRepository.GetCountByOrganizationIdAsync(org.Id);

                        if (orgCount <= 1)
                        {
                            await _organizationRepository.DeleteAsync(org);

                            deletedOrg = true;
                        }
                    }
                }

                if (!deletedOrg)
                {
                    return(IdentityResult.Failed(new IdentityError
                    {
                        Description = "You must leave or delete any organizations that you are the only owner of first."
                    }));
                }
            }

            if (!string.IsNullOrWhiteSpace(user.GatewaySubscriptionId))
            {
                try
                {
                    await CancelPremiumAsync(user, null, true);
                }
                catch (GatewayException) { }
            }

            await _userRepository.DeleteAsync(user);

            await _referenceEventService.RaiseEventAsync(
                new ReferenceEvent(ReferenceEventType.DeleteAccount, user));

            await _pushService.PushLogOutAsync(user.Id);

            return(IdentityResult.Success);
        }
Exemple #3
0
        public override async Task <IdentityResult> DeleteAsync(User user)
        {
            // Check if user is the only owner of any organizations.
            var onlyOwnerCount = await _organizationUserRepository.GetCountByOnlyOwnerAsync(user.Id);

            if (onlyOwnerCount > 0)
            {
                var deletedOrg = false;
                var orgs       = await _organizationUserRepository.GetManyDetailsByUserAsync(user.Id,
                                                                                             OrganizationUserStatusType.Confirmed);

                if (orgs.Count == 1)
                {
                    var org = await _organizationRepository.GetByIdAsync(orgs.First().OrganizationId);

                    if (org != null)
                    {
                        var orgCount = await _organizationUserRepository.GetCountByOrganizationIdAsync(org.Id);

                        if (orgCount <= 1)
                        {
                            await _organizationRepository.DeleteAsync(org);

                            deletedOrg = true;
                        }
                    }
                }

                if (!deletedOrg)
                {
                    return(IdentityResult.Failed(new IdentityError
                    {
                        Description = "You must leave or delete any organizations that you are the only owner of first."
                    }));
                }
            }

            await _userRepository.DeleteAsync(user);

            await _pushService.PushLogOutAsync(user.Id);

            return(IdentityResult.Success);
        }