106 lines
4.1 KiB
Python
106 lines
4.1 KiB
Python
from fastapi import APIRouter, HTTPException
|
|
from .schemas import CoveListSchema, CoveRequestSchema
|
|
from typing import List, Dict, Any
|
|
from uuid import UUID
|
|
|
|
from .tasks import process_cove_request, process_acuse_cove_request
|
|
from ..tasks.services import register_task
|
|
|
|
router = APIRouter()
|
|
# Aquí puedes definir tus endpoints relacionados con COVES usando el esquema CoveBaseSchema
|
|
|
|
|
|
|
|
@router.post("/services/cove/", response_model=Dict[str, Any])
|
|
async def get_cove(cove: CoveRequestSchema):
|
|
"""Endpoint para obtener un COVE específico."""
|
|
cove_dict = cove.model_dump()
|
|
task = process_cove_request.delay(cove_dict)
|
|
|
|
# Registrar la tarea en el servicio de seguimiento
|
|
await register_task(
|
|
task_id=task.id,
|
|
message=f"Procesando COVE para pedimento {cove_dict.get('pedimento', {}).get('pedimento_app', 'N/A')}",
|
|
status="submitted",
|
|
pedimento_id=cove_dict.get('pedimento', {}).get('id'),
|
|
organizacion_id=cove_dict.get('pedimento', {}).get('organizacion'),
|
|
servicio=8 # 8 corresponde a "Cove"
|
|
)
|
|
|
|
return {"task_id": task.id, "status": "submitted"}
|
|
|
|
|
|
@router.post("/services/all/coves", response_model=Dict[str, Any])
|
|
async def get_coves(coves_request: CoveListSchema):
|
|
"""Endpoint para obtener múltiples COVEs asociados a un pedimento."""
|
|
task_ids = []
|
|
coves_dict = coves_request.model_dump()
|
|
pedimento = coves_dict.get('pedimento', {})
|
|
|
|
for cove in coves_dict.get('coves', []):
|
|
cove_dict = {
|
|
"cove": cove,
|
|
"pedimento": pedimento,
|
|
"credencial": coves_dict.get('credencial')
|
|
}
|
|
task = process_cove_request.delay(cove_dict)
|
|
task_ids.append(task.id)
|
|
|
|
# Registrar cada tarea en el servicio de seguimiento
|
|
await register_task(
|
|
task_id=task.id,
|
|
message=f"Procesando COVE masivo para pedimento {pedimento.get('pedimento_app', 'N/A')}",
|
|
status="submitted",
|
|
pedimento_id=pedimento.get('id'),
|
|
organizacion_id=pedimento.get('organizacion'),
|
|
servicio=8 # 8 corresponde a "Cove"
|
|
)
|
|
|
|
return {"task_ids": task_ids, "status": "submitted", "total": len(task_ids)}
|
|
|
|
|
|
@router.post("/services/acuse/cove/", response_model=Dict[str, Any])
|
|
async def get_acuse_cove(cove: CoveRequestSchema):
|
|
"""Endpoint para obtener el acuse de un COVE específico."""
|
|
cove_dict = cove.model_dump()
|
|
task = process_acuse_cove_request.delay(cove_dict)
|
|
|
|
# Registrar la tarea en el servicio de seguimiento
|
|
await register_task(
|
|
task_id=task.id,
|
|
message=f"Procesando acuse de COVE para pedimento {cove_dict.get('pedimento', {}).get('pedimento_app', 'N/A')}",
|
|
status="submitted",
|
|
pedimento_id=cove_dict.get('pedimento', {}).get('id'),
|
|
organizacion_id=cove_dict.get('pedimento', {}).get('organizacion'),
|
|
servicio=9 # 9 corresponde a "Acuse Cove"
|
|
)
|
|
|
|
return {"task_id": task.id, "status": "submitted"}
|
|
|
|
@router.post("/services/all/acuse/cove/", response_model=Dict[str, Any])
|
|
async def get_acuses_cove(coves_request: CoveListSchema):
|
|
"""Endpoint para obtener los acuses de múltiples COVEs asociados a un pedimento."""
|
|
task_ids = []
|
|
coves_dict = coves_request.model_dump()
|
|
pedimento = coves_dict.get('pedimento', {})
|
|
|
|
for cove in coves_dict.get('coves', []):
|
|
acuse_dict = {
|
|
"cove": cove,
|
|
"pedimento": pedimento,
|
|
"credencial": coves_dict.get('credencial')
|
|
}
|
|
task = process_acuse_cove_request.delay(acuse_dict)
|
|
task_ids.append(task.id)
|
|
|
|
# Registrar cada tarea en el servicio de seguimiento
|
|
await register_task(
|
|
task_id=task.id,
|
|
message=f"Procesando acuse masivo de COVE para pedimento {pedimento.get('pedimento_app', 'N/A')}",
|
|
status="submitted",
|
|
pedimento_id=pedimento.get('id'),
|
|
organizacion_id=pedimento.get('organizacion'),
|
|
servicio=9 # 9 corresponde a "Acuse Cove"
|
|
)
|
|
|
|
return {"task_ids": task_ids, "status": "submitted", "total": len(task_ids)} |