public async Task InvoicePaidAsync(Invoice invoice)
        {
            StripeCustomerDto customer = await _stripePaymentService.GetCustomerAsync(invoice.CustomerId);

            await _userManagementService.UpdateAppMetadataAsync(customer.Auth0Id,
                                                                new UserAppMetadataWriteDto()
            {
                SubscriptionPlan    = SubscriptionPlan.Basic,
                SubscriptionExpires = new DateTimeOffset(invoice.PeriodEnd)
            });
        }
        public async Task SubscriptionDeletedAsync(Subscription subscriptionDeleted)
        {
            StripeCustomerDto customer = await _stripePaymentService.GetCustomerAsync(subscriptionDeleted.CustomerId);

            await _userManagementService.UpdateAppMetadataAsync(customer.Auth0Id,
                                                                new UserAppMetadataWriteDto()
            {
                SubscriptionPlan    = SubscriptionPlan.Free,
                SubscriptionExpires = new DateTimeOffset(subscriptionDeleted.EndedAt ?? DateTime.UtcNow),
            });

            await _userManagementService.DeleteRoleAsync(customer.Auth0Id, "basic");

            await _userManagementService.AssignRoleAsync(customer.Auth0Id, "free");
        }
        public async Task InvoiceFailedAsync(Invoice invoice)
        {
            StripeCustomerDto customer = await _stripePaymentService.GetCustomerAsync(invoice.CustomerId);

            await _userManagementService.UpdateAppMetadataAsync(customer.Auth0Id,
                                                                new UserAppMetadataWriteDto()
            {
                SubscriptionPlan    = SubscriptionPlan.Free,
                SubscriptionExpires = new DateTimeOffset(invoice.PeriodEnd)
            });

            await _userManagementService.DeleteRoleAsync(customer.Auth0Id, "basic");

            await _userManagementService.AssignRoleAsync(customer.Auth0Id, "free");
        }