update
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""API-Routen für Mitarbeiterverwaltung."""
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from ..database import get_db
|
||||
from ..core.schemas import EmployeeCreate, EmployeeUpdate, EmployeeRead
|
||||
from ..core.enums import EmployeeRole
|
||||
from ..employees.service import EmployeeService
|
||||
from .auth import get_current_user, require_role
|
||||
from ..core.models import Employee
|
||||
|
||||
router = APIRouter(prefix="/employees", tags=["Mitarbeiter"])
|
||||
|
||||
|
||||
@router.get("/", response_model=list[EmployeeRead])
|
||||
def list_employees(
|
||||
active_only: bool = True,
|
||||
db: Session = Depends(get_db),
|
||||
_user: Employee = Depends(get_current_user),
|
||||
):
|
||||
svc = EmployeeService(db)
|
||||
return svc.list_employees(active_only)
|
||||
|
||||
|
||||
@router.get("/{employee_id}", response_model=EmployeeRead)
|
||||
def get_employee(
|
||||
employee_id: str,
|
||||
db: Session = Depends(get_db),
|
||||
_user: Employee = Depends(get_current_user),
|
||||
):
|
||||
svc = EmployeeService(db)
|
||||
emp = svc.get_employee(employee_id)
|
||||
if not emp:
|
||||
raise HTTPException(404, "Mitarbeiter nicht gefunden")
|
||||
return emp
|
||||
|
||||
|
||||
@router.post("/", response_model=EmployeeRead, status_code=201)
|
||||
def create_employee(
|
||||
data: EmployeeCreate,
|
||||
db: Session = Depends(get_db),
|
||||
_user: Employee = Depends(require_role(EmployeeRole.ADMIN, EmployeeRole.MANAGER)),
|
||||
):
|
||||
svc = EmployeeService(db)
|
||||
try:
|
||||
return svc.create_employee(data)
|
||||
except ValueError as e:
|
||||
raise HTTPException(409, str(e))
|
||||
|
||||
|
||||
@router.patch("/{employee_id}", response_model=EmployeeRead)
|
||||
def update_employee(
|
||||
employee_id: str,
|
||||
data: EmployeeUpdate,
|
||||
db: Session = Depends(get_db),
|
||||
_user: Employee = Depends(require_role(EmployeeRole.ADMIN, EmployeeRole.MANAGER)),
|
||||
):
|
||||
svc = EmployeeService(db)
|
||||
emp = svc.update_employee(employee_id, data)
|
||||
if not emp:
|
||||
raise HTTPException(404, "Mitarbeiter nicht gefunden")
|
||||
return emp
|
||||
|
||||
|
||||
@router.delete("/{employee_id}", status_code=204)
|
||||
def delete_employee(
|
||||
employee_id: str,
|
||||
db: Session = Depends(get_db),
|
||||
_user: Employee = Depends(require_role(EmployeeRole.ADMIN)),
|
||||
):
|
||||
svc = EmployeeService(db)
|
||||
if not svc.delete_employee(employee_id):
|
||||
raise HTTPException(404, "Mitarbeiter nicht gefunden")
|
||||
Reference in New Issue
Block a user