from services.firebase.firestore_service import FirestoreService
from datetime import datetime, timezone
from firebase_admin import auth


def verify_client_dashboard_admin_auth_users():
    # Get today's date at midnight in UTC
    today_midnight_utc = datetime.now(timezone.utc).replace(
        hour=0, minute=0, second=0, microsecond=0)

    print(
        f"This script will verify all users created before {today_midnight_utc} UTC\n")
    response = input("Are you sure? (yes/no): ")

    if response.lower() in ['yes', 'y']:

        # Get all clientDashboardAdmin records
        admin_docs = FirestoreService.firestore_client.collection(
            "clientDashboardAdmin").get()

        for admin_doc in admin_docs:
            admin_data = admin_doc.to_dict()
            email = admin_data.get('email')
            if email:
                try:
                    user = auth.get_user_by_email(email)
                    # Convert creation timestamp from milliseconds to seconds for comparison
                    user_creation_datetime = datetime.fromtimestamp(
                        user.user_metadata.creation_timestamp / 1000, timezone.utc)

                    if True: # user_creation_datetime < today_midnight_utc:
                        # User was created before today
                        # print(
                        #     f"User {user.email} was created before today: {user_creation_datetime}, verified : {user._data.get('emailVerified')}")

                        # Check if email verification
                        if not user._data.get('emailVerified'):
                            # Update the user's email verification status
                            updated_user = auth.update_user(
                                user.uid, email_verified=True)

                            print(
                                f"Email verification for {email} status updated successfully: ", updated_user.email_verified)

                except auth.UserNotFoundError:
                    print("Admin not found in Firebase Auth -- ", email)
                except Exception as e:
                    # General exception catch to handle unexpected errors
                    print(
                        "Error fetching user by email:", email, "; Error:", str(e))
    else:
        print("Operation cancelled.")


verify_client_dashboard_admin_auth_users()
