from fastapi import APIRouter, HTTPException, Depends
from app.services.angel_service import AngelService
from app.core.dependencies import get_current_user

router = APIRouter(
    prefix="/angel",
    tags=["Angel One"]
)

angel = AngelService()


@router.post("/login")
def angel_login(_user=Depends(get_current_user)):
    """
    Login to Angel One
    """
    try:
        result = angel.login()

        return {
            "success": True,
            "broker": "Angel One",
            "data": result
        }

    except Exception as e:
        raise HTTPException(
            status_code=500,
            detail=str(e)
        )


@router.get("/profile")
def profile(_user=Depends(get_current_user)):
    """
    Get Profile
    """
    try:
        return angel.profile()

    except Exception as e:
        raise HTTPException(
            status_code=500,
            detail=str(e)
        )


@router.get("/funds")
def funds(_user=Depends(get_current_user)):
    """
    Get Funds
    """
    try:
        return angel.funds()

    except Exception as e:
        raise HTTPException(
            status_code=500,
            detail=str(e)
        )


@router.get("/holdings")
def holdings(_user=Depends(get_current_user)):
    """
    Get Holdings
    """
    try:
        return angel.holdings()

    except Exception as e:
        raise HTTPException(
            status_code=500,
            detail=str(e)
        )


@router.get("/positions")
def positions(_user=Depends(get_current_user)):
    """
    Get Positions
    """
    try:
        return angel.positions()

    except Exception as e:
        raise HTTPException(
            status_code=500,
            detail=str(e)
        )


@router.get("/orders")
def orders(_user=Depends(get_current_user)):
    """
    Get Orders
    """
    try:
        return angel.orders()

    except Exception as e:
        raise HTTPException(
            status_code=500,
            detail=str(e)
        )