from sqlalchemy.orm import Session from fastapi import HTTPException from app.repositories.prodi import ProdiRepository from app.schemas.prodi import ProdiCreate, ProdiUpdate class ProdiService: @staticmethod def get_all(db: Session): return ProdiRepository.get_all(db) @staticmethod def get_by_id(db: Session, prodi_id: int): prodi = ProdiRepository.get_by_id(db, prodi_id) if not prodi: raise HTTPException( status_code=404, detail="Data prodi tidak ditemukan" ) return prodi @staticmethod def create(db: Session, prodi: ProdiCreate): # Cek apakah kode prodi sudah digunakan data = ProdiRepository.get_all(db) for item in data: if item.kode_prodi == prodi.kode_prodi: raise HTTPException( status_code=400, detail="Kode prodi sudah digunakan" ) return ProdiRepository.create(db, prodi) @staticmethod def update(db: Session, prodi_id: int, prodi: ProdiUpdate): if not ProdiRepository.get_by_id(db, prodi_id): raise HTTPException( status_code=404, detail="Data prodi tidak ditemukan" ) return ProdiRepository.update(db, prodi_id, prodi) @staticmethod def delete(db: Session, prodi_id: int): if not ProdiRepository.get_by_id(db, prodi_id): raise HTTPException( status_code=404, detail="Data prodi tidak ditemukan" ) return ProdiRepository.delete(db, prodi_id)