from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm import Session
from src.utils.db import get_db
from src.apps.users.controller import create_user
from src.apps.users.schemas import UserCreate, UserResponse
from src.apps.users.models import User
import traceback  # For debugging errors

router = APIRouter()

@router.post("/register", response_model=dict, status_code=status.HTTP_201_CREATED)  
def register(user_data: UserCreate, db: Session = Depends(get_db)):
    try:
        # Check if email already exists
        existing_user = db.query(User).filter(User.email == user_data.email).first()
        if existing_user:
            return {
                "status": False,
                "code": 400,
                "message": "Email already registered",
                "data": {}
            }

        # Create new user
        new_user = create_user(user_data, db)

        return {
            "status": True,
            "code": 201,
            "message": "User registered successfully",
            "data": {
                "name": new_user.name,
                "email": new_user.email,
                "role": new_user.role
            }
        }

    except Exception as e:
        traceback.print_exc()  # Print error for debugging
        return {
            "status": False,
            "code": 500,
            "message": "Internal server error",
            "data": {}
        }
