Ir al contenido principal

Cursos Temas (1, 2, 3, 4, 5, 6, 7) - CAPACITACIÓN ATC (II FASE) - [temas]

🧾 Descripción

Obtiene los temas (topics) de un curso específico y calcula cuántos videos y artículos contiene cada tema.

Este servicio consulta:

  • La información completa del Course

  • El detalle de cada Topic

  • Cuenta los contenidos según su tipo: Video o Article

Está diseñado para mostrar al usuario un resumen claro del material disponible por tema.


🚀 Endpoint

GET /temas

📥 Parámetros (Request)

Se recibe un único valor desde el request:

{ "curso": "ID_DEL_CURSO" }


🔐 Seguridad

Este servicio requiere autenticación válida hacia el ERP mediante:


ServiceErp("GET", ...)

El token o cookies activos son manejados internamente por la clase general.


🧠 Flujo del Servicio (resumen real)

  1. Recibe el curso por parámetro.

  2. Consulta al ERP el recurso:


GET resource/Course/{curso}
  1. Verifica que el curso exista; si no, devuelve error:


    Su usuario no tiene cursos asignados
  2. Extrae la lista de topics del curso.

  3. Para cada topic:

    • Inicializa sus contadores:


      videos = 0 articulos = 0
    • Consulta el contenido del tópico:


      GET resource/Topic/{topic_id}
    • Recorre el contenido (topic_content):

      • Si content_type == Video → incrementa contador de videos

      • Si content_type == Article → incrementa contador de artículos

  4. Retorna la lista de temas con sus conteos.


📤 Response 200 – Ejemplo

{ "valor": true, "data": [ { "topic": "TP-001", "title": "Introducción", "videos": 3, "articulos": 1 }, { "topic": "TP-002", "title": "Conceptos Básicos", "videos": 1, "articulos": 2 } ] }


❗ Posibles Errores

1. Curso no existe o no tiene permisos

{ "valor": false, "msn": "Su usuario no tiene cursos asignados" }

2. El tópico no contiene información (se ignora sin romper el flujo)

No retorna error, simplemente no se contabiliza.

3. Fallo de conexión con ERP

{ "valor": false, "msn": "Error al consultar datos del ERP" }


📚 Schemas Consultados

Course

Campos usados:

{ "topics": [ { "topic": "string", "title": "string" } ] }

Topic

Campos usados:

{ "topic_content": [ { "content_type": "Video | Article", "content": "string" } ] }


🗃 Lógica en pseudo-código

curso = request.curso courseData = GET Course/{curso} if !courseData.exists: return error("Su usuario no tiene cursos asignados") topics = courseData.topics for each topic in topics: topic.videos = 0 topic.articulos = 0 topicContent = GET Topic/{topic.id} for content in topicContent: if content.type == "Video": topic.videos++ if content.type == "Article": topic.articulos++ return topics