TIF_E41253310/Backend/app/services/prodi.py

60 lines
1.6 KiB
Python

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)