#!/usr/bin/env python3
"""
Create admin user directly without circular imports
"""

import sys
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash
from datetime import datetime

# Create Flask app
app = Flask(__name__)
app.config['SECRET_KEY'] = 'dev-secret-key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///medlab_cooperative.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# Initialize database
db = SQLAlchemy(app)

# Define minimal User model
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    full_name = db.Column(db.String(100), nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    phone = db.Column(db.String(20), nullable=False)
    password_hash = db.Column(db.String(255), nullable=False)
    registration_number = db.Column(db.String(10), unique=True, nullable=False)
    role = db.Column(db.String(20), default='Member', nullable=False)
    is_verified = db.Column(db.Boolean, default=False, nullable=False)
    verification_token = db.Column(db.String(255), nullable=True)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)

# Define Wallet model
class Wallet(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    balance = db.Column(db.Float, default=0.0, nullable=False)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
    
    user = db.relationship('User', backref=db.backref('wallet', uselist=False))

def create_admin():
    with app.app_context():
        # Create tables
        db.create_all()
        
        # Check if admin already exists
        admin = User.query.filter_by(email='admin@medlab.coop').first()
        if admin:
            print("Admin user already exists!")
            print(f"Email: {admin.email}")
            print(f"Registration Number: {admin.registration_number}")
            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")
        print("Role: Super Admin")
        print("\nYou can now login to the admin dashboard!")

if __name__ == '__main__':
    create_admin()
