43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from fastapi import APIRouter, HTTPException, Depends
|
|
from fastapi.responses import JSONResponse
|
|
from typing import Dict, Any, List, Optional
|
|
|
|
from api.api_v2.modules.authentication.services import get_current_user
|
|
from api.api_v2.modules.tasks.services import register_task
|
|
from .schemas import AcuseSchema, AcuseMasivoSchema
|
|
from .tasks import process_acuse_request
|
|
|
|
router = APIRouter()
|
|
|
|
@router.post("/services/acuse/", response_model=Dict[str, Any])
|
|
async def obtener_acuse(acuse_request: AcuseSchema):
|
|
"""
|
|
Endpoint para obtener el acuse de recibo de un documento específico.
|
|
"""
|
|
|
|
acuse_dict = acuse_request.model_dump()
|
|
# Ejecuta la tarea de Celery de forma asíncrona
|
|
task = process_acuse_request.delay(acuse_dict)
|
|
|
|
return {"task_id": task.id, "status": "submitted"}
|
|
|
|
|
|
@router.post("/services/all/acuse/pedimento/", response_model=Dict[str, Any])
|
|
async def obtener_acuses(acuse_request: AcuseMasivoSchema):
|
|
"""
|
|
Endpoint para obtener acuses de recibo de documentos asociados a un pedimento.
|
|
"""
|
|
# Para cada edoc en la lista, dispara una tarea Celery
|
|
task_ids = []
|
|
acuse_request_dict = acuse_request.model_dump()
|
|
for edoc in acuse_request_dict.get('edocs', []):
|
|
acuse_dict = {
|
|
"edoc": edoc,
|
|
"pedimento": acuse_request_dict.get('pedimento'),
|
|
"credencial": acuse_request_dict.get('credencial')
|
|
}
|
|
task = process_acuse_request.delay(acuse_dict)
|
|
task_ids.append(task.id)
|
|
|
|
return {"task_ids": task_ids, "status": "submitted", "total": len(task_ids)}
|