import logging

from django.core.management.base import BaseCommand

from hosting.models import (
    HostingOrder, VMDetail
)
from membership.models import CustomUser

logger = logging.getLogger(__name__)


class Command(BaseCommand):
    help = '''Dumps the email addresses of all customers who have a VM'''

    def add_arguments(self, parser):
        parser.add_argument('-a', '--all_registered', action='store_true',
                            help='All registered users')

    def handle(self, *args, **options):
        all_registered = options['all_registered']
        all_customers_set = set()
        if all_registered:
            all_customers = CustomUser.objects.filter(
                is_admin=False, validated=True
            )
            for customer in all_customers:
                all_customers_set.add(customer.email)
        else:
            all_hosting_orders = HostingOrder.objects.filter()
            running_vm_details = VMDetail.objects.filter(terminated_at=None)
            running_vm_ids = [rvm.vm_id for rvm in running_vm_details]
            for order in all_hosting_orders:
                if order.vm_id in running_vm_ids:
                    all_customers_set.add(order.customer.user.email)
        for cu in all_customers_set:
            print(cu)
        if all_registered:
            print("All registered users = %s" % len(all_customers_set))
        else:
            print("Total active customers = %s" % len(all_customers_set))