1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00

починка админки3

This commit is contained in:
MoonTestUse1
2025-01-04 00:02:44 +06:00
parent 06f0569db8
commit 201a34269e

View File

@@ -1,14 +1,16 @@
"""Request CRUD operations"""
from sqlalchemy.orm import Session
from ..models.request import Request
from ..schemas.request import RequestCreate
from sqlalchemy import func
from sqlalchemy import func
from ..schemas.request import RequestCreate, RequestUpdate
from ..schemas.request import RequestCreate, RequestUpdate
from ..utils.loggers import request_logger
from typing import List, Optional
def create_request(db: Session, request: RequestCreate, employee_id: int):
def create_request(db: Session, request: RequestCreate):
"""Create new request"""
try:
db_request = Request(
employee_id=employee_id,
employee_id=request.employee_id,
department=request.department,
request_type=request.request_type,
@@ -74,4 +76,46 @@ def get_employee_requests(db: Session, employee_id: int, skip: int = 0, limit: i
"""
Получить список заявок конкретного сотрудника
"""
def update_request(db: Session, request_id: int, request: RequestUpdate):
"""Update request"""
db_request = get_request(db, request_id)
if not db_request:
return None
update_data = request.model_dump(exclude_unset=True)
for field, value in update_data.items():
setattr(db_request, field, value)
db.commit()
db.refresh(db_request)
return db_request
def delete_request(db: Session, request_id: int):
"""Delete request"""
db_request = get_request(db, request_id)
if db_request:
db.delete(db_request)
db.commit()
return db_request
def get_statistics(db: Session):
"""Get requests statistics"""
total_requests = db.query(func.count(Request.id)).scalar()
status_stats = db.query(
Request.status,
func.count(Request.id)
).group_by(Request.status).all()
priority_stats = db.query(
Request.priority,
func.count(Request.id)
).group_by(Request.priority).all()
return {
"total_requests": total_requests,
"by_status": {status: count for status, count in status_stats},
"by_priority": {priority: count for priority, count in priority_stats}
}
return db.query(Request).filter(Request.employee_id == employee_id).offset(skip).limit(limit).all()