1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00
Files
AdministrationItDepartmens/backend/app/crud/statistics.py
2025-01-04 03:22:23 +06:00

41 lines
1.3 KiB
Python

"""Statistics CRUD operations"""
from sqlalchemy.orm import Session
from sqlalchemy import func
from datetime import datetime, timedelta
from ..models.request import Request, RequestStatus
def get_request_statistics(db: Session):
"""Get request statistics"""
# Общее количество заявок
total_requests = db.query(func.count(Request.id)).scalar()
# Количество заявок по статусам
status_counts = {
RequestStatus.NEW: 0,
RequestStatus.IN_PROGRESS: 0,
RequestStatus.COMPLETED: 0,
RequestStatus.REJECTED: 0
}
# Получаем количество заявок для каждого статуса
status_query = db.query(
Request.status,
func.count(Request.id)
).group_by(Request.status).all()
for status, count in status_query:
if status in status_counts:
status_counts[status] = count
# Статистика за последние 7 дней
week_ago = datetime.now() - timedelta(days=7)
recent_requests = db.query(func.count(Request.id)).filter(
Request.created_at >= week_ago
).scalar()
return {
"total_requests": total_requests or 0,
"by_status": status_counts,
"recent_requests": recent_requests or 0
}