from fastapi import HTTPException
from sqlalchemy.orm import Session
from app.models.main.commercial_equipment import CommercialEquipmentBase, TblCommercialEquipment
from app.api.commercial_equipment.schemas import CommercialEquipmentCreate, CommercialEquipmentResponse
from app.dependency.authantication import JWTPayloadSchema
from app.utils.schemas_utils import CustomResponse

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

    # async def create_commercial_equipment(self, request: CommercialEquipmentCreate):
    #     data = prepare_equipment_data(request)
    #     created_equipment = FurnitureEstimateBase.model_validate(data) 
    #     TblCommercialEquipment.create(created_equipment, self.db)
    #     self.db.commit()
    #     return CustomResponse(status="1", message="Commercial Equipment item created successfully.")

    async def create_commercial_equipment(self, request: CommercialEquipmentCreate):
        total=request.cost_per_unit*request.cost_per_unit
        created_equipment = CommercialEquipmentResponse.model_validate(request)
        created_equipment.total=total
        new_equipment = TblCommercialEquipment.create(CommercialEquipmentBase.model_validate(created_equipment.model_dump()),self.db)
        self.db.add(new_equipment)
        self.db.commit()
        self.db.refresh(new_equipment)
        return CustomResponse(status="1", message="Commercial Equipment item created successfully.")
    
    async def get_commercial_equipment(self, equipment_id: int):
        commercial_equipment = TblCommercialEquipment.get_by_id(equipment_id, self.db)
        if not commercial_equipment:
            raise HTTPException(status_code=404,detail="comercial equipment not found")
        return CommercialEquipmentResponse.model_validate(commercial_equipment)

