""" Service layer for PedimentoDates CRUD operations """ import logging from typing import Optional from sqlalchemy.orm import Session from ..dtos.pedimento_dates import PedimentoDatesCreate, PedimentoDatesUpdate from ..models.pedimento_dates import PedimentoDates logger = logging.getLogger(__name__) class PedimentoDatesService: """Service class for PedimentoDates business logic""" @staticmethod def get_by_pedimento_id( db: Session, pedimento_id: int, tenant_id: int ) -> Optional[PedimentoDates]: """Get dates by pedimento ID""" return ( db.query(PedimentoDates) .filter( PedimentoDates.pedimento_id == pedimento_id, PedimentoDates.tenant_id == tenant_id, ) .first() ) @staticmethod def create(db: Session, data: PedimentoDatesCreate) -> PedimentoDates: """Create new pedimento dates""" dates = PedimentoDates(**data.model_dump()) db.add(dates) db.commit() db.refresh(dates) return dates @staticmethod def update( db: Session, pedimento_id: int, tenant_id: int, data: PedimentoDatesUpdate ) -> Optional[PedimentoDates]: """Update pedimento dates""" dates = PedimentoDatesService.get_by_pedimento_id(db, pedimento_id, tenant_id) if not dates: return None update_data = data.model_dump(exclude_unset=True) for field, value in update_data.items(): setattr(dates, field, value) db.commit() db.refresh(dates) return dates @staticmethod def delete(db: Session, pedimento_id: int, tenant_id: int) -> bool: """Delete pedimento dates""" dates = PedimentoDatesService.get_by_pedimento_id(db, pedimento_id, tenant_id) if not dates: return False db.delete(dates) db.commit() return True