"""
Database initialization script for National Medlab Cooperative
"""

import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from app import app, db
from models import User, Wallet
from werkzeug.security import generate_password_hash

def create_admin_user():
    """Create a default admin user"""
    with app.app_context():
        # Check if admin already exists
        admin = User.query.filter_by(email='admin@medlab.coop').first()
        if admin:
            print("Admin user already exists!")
            return
        
        # Create admin user
        admin = User(
            full_name='System Administrator',
            email='admin@medlab.coop',
            phone='08000000000',
            password_hash=generate_password_hash('admin123'),
            registration_number='NLB000001',
            role='Super Admin',
            is_verified=True
        )
        
        db.session.add(admin)
        db.session.commit()
        
        # Create wallet for admin
        wallet = Wallet(user_id=admin.id, balance=0.0)
        db.session.add(wallet)
        db.session.commit()
        
        print("Admin user created successfully!")
        print("Email: admin@medlab.coop")
        print("Password: admin123")
        print("Registration Number: NLB000001")

def reset_database():
    """Reset the entire database"""
    with app.app_context():
        print("Dropping all tables...")
        db.drop_all()
        print("Creating all tables...")
        db.create_all()
        print("Database reset complete!")

if __name__ == '__main__':
    import sys
    
    if len(sys.argv) > 1 and sys.argv[1] == 'reset':
        reset_database()
    else:
        create_admin_user()
