import { Router } from "express";
import { buscar, getPerfilRiesgo } from "../controllers/agileCheckController";
import { authorizeModules, verifyToken } from "../middlewares/authJwt";

const router = Router();

/**
 * @swagger
 * tags:
 *   name: AgileCheck
 *   description: Consulta AgileCheck y perfil de riesgo
 */

router.post("/buscar", buscar);

/**
 * @swagger
 * /agile-check/perfil-riesgo/{userId}:
 *   get:
 *     operationId: getPerfilRiesgo
 *     tags: [AgileCheck]
 *     summary: Obtener perfil de riesgo del usuario
 *     description: Obtiene el nivel y valor de riesgo del usuario desde AgileCheck
 *     security:
 *       - bearerAuth: []
 *     parameters:
 *       - in: path
 *         name: userId
 *         required: true
 *         schema:
 *           type: string
 *         description: ID del usuario
 *     responses:
 *       200:
 *         description: Perfil de riesgo obtenido correctamente
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               required: [success, message, data]
 *               properties:
 *                 success:
 *                   type: boolean
 *                   example: true
 *                 message:
 *                   type: string
 *                   example: Nivel y Valor de Riesgo obtenidos correctamente
 *                 data:
 *                   type: object
 *                   properties:
 *                     nivel_riesgo:
 *                       type: string
 *                       description: Nivel de riesgo (ej. Sin Referencia)
 *                     valor_riesgo:
 *                       type: string
 *                       description: Valor numérico del riesgo
 *                 error:
 *                   nullable: true
 *             example:
 *               success: true
 *               message: Nivel y Valor de Riesgo obtenidos correctamente
 *               data:
 *                 nivel_riesgo: "Sin Referencia"
 *                 valor_riesgo: "0"
 *               error: null
 *       400:
 *         description: Error en la consulta AgileCheck
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 success:
 *                   type: boolean
 *                   example: false
 *                 message:
 *                   type: string
 *                 data:
 *                   nullable: true
 *                 error:
 *                   nullable: true
 *             example:
 *               success: false
 *               message: "Agile Check: No se pudo obtener el cliente por documento."
 *               data: null
 *               error: null
 *       404:
 *         description: Usuario no encontrado o userId inválido
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 success:
 *                   type: boolean
 *                   example: false
 *                 message:
 *                   type: string
 *                 data:
 *                   nullable: true
 *             examples:
 *               usuario_invalido:
 *                 summary: Usuario no encontrado
 *                 value:
 *                   success: false
 *                   message: Usuario no válido
 *                   data: null
 *                   error: null
 *               userId_invalido:
 *                 summary: ID inválido
 *                 value:
 *                   success: false
 *                   message: userId no válido
 *                   data: null
 *                   error: null
 *       401:
 *         $ref: "#/components/responses/Unauthorized"
 *       403:
 *         $ref: "#/components/responses/Forbidden"
 *       500:
 *         description: Error al procesar la solicitud
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 message:
 *                   type: string
 *                   example: Error al procesar la solicitud
 *                 error:
 *                   description: Detalle del error
 */
router.get(
  "/perfil-riesgo/:userId",
  verifyToken,
  authorizeModules("clients"),
  getPerfilRiesgo,
);

export default router;
