mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
"""Employee routes"""
|
||
from fastapi import APIRouter, Depends, HTTPException
|
||
from sqlalchemy.orm import Session
|
||
from typing import List
|
||
|
||
from ..database import get_db
|
||
from ..crud import employees as employees_crud
|
||
from ..schemas.employee import EmployeeCreate, Employee
|
||
from ..utils.auth import get_password_hash
|
||
|
||
router = APIRouter()
|
||
|
||
@router.get("/employees/", response_model=List[Employee])
|
||
def get_employees(db: Session = Depends(get_db)):
|
||
"""Get all employees"""
|
||
try:
|
||
return employees_crud.get_employees(db)
|
||
except Exception as e:
|
||
raise HTTPException(
|
||
status_code=500,
|
||
detail=f"Ошибка при получении списка сотрудников: {str(e)}"
|
||
)
|
||
|
||
@router.post("/employees/", response_model=Employee)
|
||
def create_employee(employee: EmployeeCreate, db: Session = Depends(get_db)):
|
||
"""Create new employee"""
|
||
try:
|
||
# Check if employee already exists
|
||
db_employee = employees_crud.get_employee_by_lastname(db, employee.last_name)
|
||
if db_employee:
|
||
raise HTTPException(
|
||
status_code=400,
|
||
detail="Сотрудник с такой фамилией уже существует"
|
||
)
|
||
|
||
# Hash password
|
||
employee_dict = employee.model_dump()
|
||
employee_dict["password"] = get_password_hash(employee_dict["password"])
|
||
|
||
# Create employee
|
||
return employees_crud.create_employee(db=db, employee_data=employee_dict)
|
||
except HTTPException:
|
||
raise
|
||
except Exception as e:
|
||
raise HTTPException(
|
||
status_code=500,
|
||
detail=f"Ошибка при создании сотрудника: {str(e)}"
|
||
) |