Saltearse al contenido

Menús

Un menú es una sección dentro de un menú de categoría que contiene una entidad, permitiendo mostrarla solo para los roles que tienen acceso a ella o deshabilitar su visibilidad dentro de la aplicación.

Definición y propósito de los Menús dentro del sistema.

Sección titulada «Definición y propósito de los Menús dentro del sistema.»

Los menús son una entidad del sistema. Su propósito es mostrar una entidad lógica dentro de un menú de categoría. Permite que una entidad del sistema se muestre solo para los roles que tienen acceso a ella y activar o desactivar su visibilidad.

Al crear un menú de categoría, puedes crear o agregarle menús existentes. Cada menú debe tener un nombre, una entidad vinculada y un estado de visibilidad. Cuando la visibilidad del menú se establece en falso, se ocultará para todos los roles en el sistema. Cuando la visibilidad del menú se establece en verdadero, se mostrará para los roles que tienen acceso a él.

Supongamos que tienes un menú de categoría llamado “Gestión de Investigación”. Deseas agregar dos menús para las entidades “Protocolos de Experimento” y “Pipelines de Datos”, cada uno con diferentes requisitos de acceso y configuraciones de visibilidad.

  1. Crear la estructura:

    • Menú de Categoría: Gestión de Investigación
      • Nombre del Menú: Protocolos de Experimento
        • Entidad vinculada: ExperimentProtocol
        • Visibilidad: true
      • Nombre del Menú: Pipelines de Datos
        • Entidad vinculada: DataPipeline
        • Visibilidad: false
  2. Asignar roles:

    • Otorgar acceso al menú de categoría Gestión de Investigación a los roles Científico Principal y Gerente de Laboratorio.
  3. Resultado:

    • Los usuarios con los roles Científico Principal o Gerente de Laboratorio verán el menú de categoría Gestión de Investigación.
    • Dentro de esta categoría, verán el menú Protocolos de Experimento porque su visibilidad está establecida en true.
    • El menú Pipelines de Datos no será visible para ningún usuario, independientemente de sus roles, porque su visibilidad está establecida en false.
    • Cuando los Pipelines de Datos estén completos y listos para ser accedidos, puedes cambiar su visibilidad a true, haciéndolo disponible para los mismos roles.

Un menú tiene la siguiente estructura:

{
"id": 1,
"visible": true,
"entity": "ExperimentProtocol",
"menuName": "Protocolos de Experimento (ejemplo)",
// Categorías en las que se incluye el menú.
"categoryMenus": [
{
"id": 1,
"name": "Gestión de Investigación"
}
]
}

A continuación se muestran los endpoints disponibles para gestionar los menús:

Recupera todos los menús almacenados.

Endpoint:

GET /api/v1/menus/

Ejemplo de respuesta:

{
"status": 200,
"error": false,
"errors": [ {} ],
"message": "string",
"data": [ { <Menu> } ],
"pagination": { <Pagination> }
}

Recupera un menú específico por su ID.

Endpoint:

GET /api/v1/menus/:id

Ejemplo de respuesta:

{
"status": 200,
"error": false,
"errors": [ {} ],
"message": "string",
"data": [ { <Menu> } ],
"pagination": { <Pagination> }
}

Crea un nuevo menú.

Endpoint:

POST /api/v1/menus/
<Menu>

Ejemplo de solicitud:

{
"visibility": true,
"entity": "ExperimentProtocol",
"menuName": "Protocolos de Experimento"
}

Ejemplo de respuesta:

{
"status": 201,
"error": false,
"errors": [ {} ],
"message": "string",
"data": [ { <Menu> } ],
"pagination": { <Pagination> }
}

Actualiza un menú existente.

Endpoint:

PUT /api/v1/menus/:id
<Menu>

Ejemplo de solicitud:

{
"visibility": false,
"entity": "ExperimentProtocol",
"menuName": "Protocolos de Experimento"
}

Ejemplo de respuesta:

{
"status": 200,
"error": false,
"errors": [ {} ],
"message": "string",
"data": [ { <Menu> } ],
"pagination": { <Pagination> }
}

Elimina un menú específico por su ID.

Endpoint:

DELETE /api/v1/menus/:id

Ejemplo de respuesta:

{
"status": 200,
"error": false,
"errors": [ {} ],
"message": "string",
"data": [ { <Menu> } ],
"pagination": { <Pagination> }
}

Endpoints para asignar categorías a un menú

Sección titulada «Endpoints para asignar categorías a un menú»

A continuación se muestran los endpoints disponibles para asignar categorías a los menús:

Obtener todas las categorías asignadas a un menú

Sección titulada «Obtener todas las categorías asignadas a un menú»

Recupera todas las categorías asignadas a un menú específico.

Endpoint:

GET /api/v1/menus/:id/category-menus

Ejemplo de respuesta:

{
"status": 200,
"error": false,
"errors": [ {} ],
"message": "string",
"data": [ { <CategoryMenu> } ],
"pagination": { <Pagination> }
}

Asigna múltiples categorías a un menú específico.

Endpoint:

POST /api/v1/menus/:id/category-menus

Ejemplo de solicitud:

{
"categoryMenuIds": [1, 2]
}

Ejemplo de respuesta:

{
"status": 200,
"error": false,
"errors": [ {} ],
"message": "string",
"data": [ { <CategoryMenu> } ],
"pagination": { <Pagination> }
}

Elimina una o más categorías de un menú específico.

Endpoint:

DELETE /api/v1/menus/:id/category-menus

Ejemplo de solicitud:

{
"categoryMenuIds": [2]
}

Ejemplo de respuesta:

{
"status": 200,
"error": false,
"errors": [ {} ],
"message": "string",
"data": [ { <CategoryMenu> } ],
"pagination": { <Pagination> }
}