from fastapi import HTTPException
from sqlalchemy.orm import Session
from app.api.plumbing.schemas import PlumbingResponce, plumbingCreate
from app.dependency.authantication import JWTPayloadSchema
from app.models.main.Plumbing import PlumbingBase, TblPlumbing
from app.utils.schemas_utils import CustomResponse

class PlumlingService:
    def __init__(self, db: Session, token: JWTPayloadSchema):
        self.db = db
        self.token = token

    async def create_plumbing(self, request: plumbingCreate):

        total=request.units*request.cost_per_unit
        created_plumbing = PlumbingResponce.model_validate(request) 
        created_plumbing.total=total
        new_equipment = TblPlumbing.create(PlumbingBase.model_validate(created_plumbing.model_dump()),self.db)
        self.db.add(new_equipment)
        self.db.commit()
        self.db.refresh(new_equipment)
        return CustomResponse(status="1", message="Plumbing created successfully.")

    async def get_plumbing(self, group_id: int):
        plumbing_record = self.db.query(TblPlumbing).filter(TblPlumbing.group_id == group_id).first()
        if not plumbing_record:
            raise HTTPException(status_code=404,detail="Plumbing Not Found")
        return PlumbingResponce.model_validate(plumbing_record)