68 lines
2.0 KiB
Python
68 lines
2.0 KiB
Python
from fastapi import APIRouter, Depends, UploadFile, File
|
|
from sqlalchemy.orm import Session
|
|
from typing import List, Optional
|
|
from app.db.database import get_db
|
|
from app.services.non_conformities import NonConformityService
|
|
from app.schemas.non_conformity import NonConformity, NonConformityCreate, NonConformityUpdate
|
|
from app.schemas.evidence import Evidence
|
|
|
|
router = APIRouter()
|
|
|
|
def get_nc_service(db: Session = Depends(get_db)) -> NonConformityService:
|
|
return NonConformityService(db)
|
|
|
|
@router.post("/", response_model=NonConformity)
|
|
def create_nc(
|
|
nc: NonConformityCreate,
|
|
service: NonConformityService = Depends(get_nc_service)
|
|
):
|
|
return service.create_nc(nc)
|
|
|
|
@router.get("/", response_model=List[NonConformity])
|
|
def read_ncs(
|
|
activity_id: Optional[int] = None,
|
|
status: Optional[str] = None,
|
|
service: NonConformityService = Depends(get_nc_service)
|
|
):
|
|
return service.get_ncs(activity_id, status)
|
|
|
|
@router.get("/{nc_id}", response_model=NonConformity)
|
|
def read_nc(
|
|
nc_id: int,
|
|
service: NonConformityService = Depends(get_nc_service)
|
|
):
|
|
return service.get_nc(nc_id)
|
|
|
|
@router.put("/{nc_id}", response_model=NonConformity)
|
|
@router.patch("/{nc_id}", response_model=NonConformity)
|
|
def update_nc(
|
|
nc_id: int,
|
|
nc: NonConformityUpdate,
|
|
service: NonConformityService = Depends(get_nc_service)
|
|
):
|
|
return service.update_nc(nc_id, nc)
|
|
|
|
@router.post("/{nc_id}/upload", response_model=Evidence)
|
|
async def upload_nc_evidence(
|
|
nc_id: int,
|
|
file: UploadFile = File(...),
|
|
description: Optional[str] = None,
|
|
captured_at: Optional[str] = None,
|
|
service: NonConformityService = Depends(get_nc_service)
|
|
):
|
|
return service.upload_nc_evidence(nc_id, file, description, captured_at)
|
|
|
|
@router.delete("/{nc_id}")
|
|
def delete_nc(
|
|
nc_id: int,
|
|
service: NonConformityService = Depends(get_nc_service)
|
|
):
|
|
return service.delete_nc(nc_id)
|
|
|
|
@router.post("/{nc_id}/notify")
|
|
def notify_responsible(
|
|
nc_id: int,
|
|
service: NonConformityService = Depends(get_nc_service)
|
|
):
|
|
return service.notify_responsible(nc_id)
|