mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
"""Request CRUD operations"""
|
|
from sqlalchemy.orm import Session
|
|
from ..models.request import Request
|
|
from ..schemas.request import RequestCreate
|
|
from ..utils.loggers import request_logger
|
|
|
|
def create_request(db: Session, request: RequestCreate):
|
|
"""Create new request"""
|
|
try:
|
|
db_request = Request(
|
|
employee_id=request.employee_id,
|
|
department=request.department,
|
|
request_type=request.request_type,
|
|
priority=request.priority,
|
|
description=request.description,
|
|
status="new",
|
|
)
|
|
db.add(db_request)
|
|
db.commit()
|
|
db.refresh(db_request)
|
|
|
|
request_logger.info(
|
|
"Request created",
|
|
extra={"request_id": db_request.id}
|
|
)
|
|
|
|
return db_request
|
|
|
|
except Exception as e:
|
|
db.rollback()
|
|
request_logger.error(f"Error creating request: {e}", exc_info=True)
|
|
raise
|
|
|
|
def get_request_details(db: Session, request_id: int):
|
|
"""Get detailed request information including employee details"""
|
|
request = (
|
|
db.query(Request)
|
|
.join(Request.employee)
|
|
.filter(Request.id == request_id)
|
|
.first()
|
|
)
|
|
|
|
if not request:
|
|
return None
|
|
|
|
return {
|
|
"id": request.id,
|
|
"employee_id": request.employee_id,
|
|
"employee_last_name": request.employee.last_name,
|
|
"employee_first_name": request.employee.first_name,
|
|
"department": request.department,
|
|
"office": request.employee.office,
|
|
"request_type": request.request_type,
|
|
"priority": request.priority,
|
|
"description": request.description,
|
|
"status": request.status,
|
|
"created_at": request.created_at.isoformat()
|
|
} |