from sqlalchemy.orm import Session
from app.api.seafarer.schemas import SeafarersCreat, SeafarersResponce
from app.models.main.seafarer import TblSeafarers
from app.models.main.users import TblUsers
from app.utils.schemas_utils import CustomResponse

class SeafarerService:
    def __init__(self, db: Session, token: dict):
        self.db = db
        self.token = token

    # async def create_seafarer(self, request: SeafarersCreat):
    #     TblSeafarers.create(request, self.db)
    #     self.db.commit()
    #     return CustomResponse(status="1", message="Seafarer created successfully")

    async def create_seafarer(self, request: SeafarersCreat):
        created_seafarer = TblSeafarers(**request.dict())
        self.db.add(created_seafarer)
        self.db.flush()
        created_user = TblUsers(
            user_name=request.email,       
            password=request.password,    
            role_id=4,                        
            entity_id=created_seafarer.seafarer_id
        )
        self.db.add(created_user)
        self.db.commit()
        return CustomResponse(status="1", message="Seafarer and user created successfully")
    

    async def get_seafarer_profile(self):
        seafarer_id = self.token.get("seafarer_id")
        if not seafarer_id:
            return CustomResponse(status="-1", message="Invalid token: seafarer_id missing")

        seafarer_profile = (
            self.db.query(TblSeafarers)
            .filter(TblSeafarers.seafarer_id == seafarer_id)
            .first()
        )
        if not seafarer_profile:
            return CustomResponse(status="-1", message="No seafarer data found")

        return CustomResponse(
            status="1",
            message="Seafarer Profile",
            data=SeafarersResponce.model_validate(seafarer_profile)
        )



   