from sqlalchemy.orm import Session from . import models, dto class CustomsBrokerService: @staticmethod def get_by_broker_key(db: Session, broker_key: str): return db.query(models.CustomsBroker).filter(models.CustomsBroker.broker_key == broker_key).first() @staticmethod def create_customs_broker(db: Session, broker_data: dto.CustomsBrokerDTO): new_broker = models.CustomsBroker(**broker_data.dict()) db.add(new_broker) db.commit() db.refresh(new_broker) return new_broker @staticmethod def delete_customs_broker(db: Session, broker_key: str): broker = CustomsBrokerService.get_by_broker_key(db, broker_key) if broker: db.delete(broker) db.commit() return broker class CustomsBrokerVUService: @staticmethod def get_by_broker_key(db: Session, broker_key: str): return db.query(models.CustomsBrokerVU).filter(models.CustomsBrokerVU.broker_key == broker_key).first() @staticmethod def create_vu(db: Session, vu_data: dto.CustomsBrokerVUCreateDTO): new_vu = models.CustomsBrokerVU(**vu_data.dict()) db.add(new_vu) db.commit() db.refresh(new_vu) return new_vu @staticmethod def update_vu(db: Session, broker_key: str, vu_data: dto.CustomsBrokerVUCreateDTO): vu = CustomsBrokerVUService.get_by_broker_key(db, broker_key) if vu: for key, value in vu_data.dict(exclude_unset=True).items(): setattr(vu, key, value) db.commit() db.refresh(vu) return vu @staticmethod def delete_vu(db: Session, broker_key: str): vu = CustomsBrokerVUService.get_by_broker_key(db, broker_key) if vu: db.delete(vu) db.commit() return vu class CustomsBrokerPersonnelService: @staticmethod def get_by_broker_key_and_line(db: Session, broker_key: str, line: int): return db.query(models.CustomsBrokerPersonnel).filter( models.CustomsBrokerPersonnel.broker_key == broker_key, models.CustomsBrokerPersonnel.line == line ).first() @staticmethod def create_personnel(db: Session, personnel_data: dto.CustomsBrokerPersonnelDTO): new_personnel = models.CustomsBrokerPersonnel(**personnel_data.dict()) db.add(new_personnel) db.commit() db.refresh(new_personnel) return new_personnel @staticmethod def update_personnel(db: Session, broker_key: str, line: int, personnel_data: dto.CustomsBrokerPersonnelDTO): personnel = CustomsBrokerPersonnelService.get_by_broker_key_and_line(db, broker_key, line) if personnel: for key, value in personnel_data.dict(exclude_unset=True).items(): setattr(personnel, key, value) db.commit() db.refresh(personnel) return personnel @staticmethod def delete_personnel(db: Session, broker_key: str, line: int): personnel = CustomsBrokerPersonnelService.get_by_broker_key_and_line(db, broker_key, line) if personnel: db.delete(personnel) db.commit() return personnel