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); }
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); }
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); }