1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00
Files
AdministrationItDepartmens/backend/app/routers/employees.py
2025-01-03 16:53:39 +06:00

98 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Employees router"""
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm import Session
from typing import List
from ..database import get_db
from ..crud import employees
from ..schemas.employee import Employee, EmployeeCreate, EmployeeUpdate
from ..utils.auth import get_current_admin
from ..utils.auth import get_password_hash
router = APIRouter()
@router.post("", response_model=Employee)
def create_employee(
employee: EmployeeCreate,
db: Session = Depends(get_db),
_: dict = Depends(get_current_admin)
):
"""
Создание нового сотрудника (только для админа)
"""
# Хэшируем пароль
hashed_password = get_password_hash(employee.password)
# Создаем сотрудника
db_employee = employees.create_employee(
db=db,
employee=employee,
hashed_password=hashed_password
)
return db_employee
@router.get("", response_model=List[Employee])
def get_employees(
skip: int = 0,
limit: int = 100,
db: Session = Depends(get_db),
_: dict = Depends(get_current_admin)
):
"""
Получение списка всех сотрудников (только для админа)
"""
employees_list = employees.get_employees(db, skip=skip, limit=limit)
return employees_list
@router.get("/{employee_id}", response_model=Employee)
def get_employee(
employee_id: int,
db: Session = Depends(get_db),
_: dict = Depends(get_current_admin)
):
"""
Получение информации о сотруднике по ID (только для админа)
"""
db_employee = employees.get_employee(db, employee_id=employee_id)
if db_employee is None:
raise HTTPException(status_code=404, detail="Employee not found")
return db_employee
@router.put("/{employee_id}", response_model=Employee)
def update_employee(
employee_id: int,
employee: EmployeeUpdate,
db: Session = Depends(get_db),
_: dict = Depends(get_current_admin)
):
"""
Обновление информации о сотруднике (только для админа)
"""
db_employee = employees.get_employee(db, employee_id=employee_id)
if db_employee is None:
raise HTTPException(status_code=404, detail="Employee not found")
# Если указан новый пароль, хэшируем его
if employee.password:
employee.password = get_password_hash(employee.password)
updated_employee = employees.update_employee(
db=db,
employee_id=employee_id,
employee=employee
)
return updated_employee
@router.delete("/{employee_id}")
def delete_employee(
employee_id: int,
db: Session = Depends(get_db),
_: dict = Depends(get_current_admin)
):
"""
Удаление сотрудника (только для админа)
"""
db_employee = employees.get_employee(db, employee_id=employee_id)
if db_employee is None:
raise HTTPException(status_code=404, detail="Employee not found")
employees.delete_employee(db=db, employee_id=employee_id)
return {"message": "Employee deleted successfully"}