from app.dependency.authantication import JWTPayloadSchema
from app.models.main.simulation import TblSimulation
from app.models.main.user_simulation import TblUserSimulation, UserSimulationBase
from app.utils.schemas_utils import CustomResponse
from app.locale.messages import Messages
from sqlalchemy.orm import Session
from app.api.user_simulation import schema

class UserSimulationService:
    def __init__(self, db:Session, token:JWTPayloadSchema):
        self.db = db
        self.token = token
        
    async def created(self, request:schema.UserSimulationCreate):
        created_data = UserSimulationBase.model_validate(request.model_dump())
        TblUserSimulation.create(created_data, self.db)
        self.db.commit()
        return CustomResponse(status="1", message=Messages.USER_SIMULATION)
    
    async def get_user_simulation_details(db: Session, user_id: int):
        result = (
            db.query(TblSimulation)
            .join(TblUserSimulation, TblUserSimulation.simulation_id == TblSimulation.simulation_id)
            .filter(TblUserSimulation.user_id == user_id)
            .all()
        )
        
        if not result:
            return {"status": 0, "message": "No simulations found for the user"}
        
        return {"status": 1, "simulations": result}