Ir al contenido principal

control/grupo/obtener - [show]

Path: /var/www/html/qaservicesapp/app/Http/Controllers/ShalomControl/GrupoController.php

🧾 Descripción

Este servicio obtiene la información detallada de un grupo de cargueros de desembarque, incluyendo:

  • Datos del grupo

  • Terminal asociada

  • Cargueros programados (placas/códigos)

  • Información estructurada lista para visualizar en pantalla

El servicio consulta varias tablas del sistema empresarial para reconstruir toda la información relacionada al grupo.


🚀 Endpoint


POST /grupo-desembarque/show

📥 Request Body

{ "grp_id": 123 }

Parámetros

Campo Tipo Obligatorio Descripción
grp_id integer ID del grupo a consultar.

🔐 Seguridad

Requiere autenticación estándar del sistema (middleware).
La función no implementa validación de permisos directamente.


🧠 Flujo del Servicio (resumen real)

1. Validación del parámetro

  • Si no se envía grp_id, retorna error.


2. Obtiene información del grupo

Consulta:

SELECT id, grupo, nombre, terminal, cerrar_grupo AS cerrar, fecha_creacion AS fecha, null AS placas FROM emp_grupo_cargueros_desembarque WHERE id = <grp_id>
  • Si no se encuentra → error "No se encontró el grupo".


3. Reemplaza el ID de terminal por su nombre

Consulta:

SELECT ter_id, ter_nombre, ter_abrebiatura FROM emp_terminal WHERE ter_id = <grupo.terminal>

Actualiza: grupo.terminal = <terminal.ter_nombre>


4. Convierte el campo grupo a JSON

grupo.grupo es un JSON que contiene una lista de cap_id.

Ejemplo:

[12, 15, 19]

5. Obtiene información de cargueros programados

Consulta:

SELECT cap.cap_cargueroid AS placa1, carg.car_codigo AS codigo1, cap.cap_carguero_id2 AS placa2 FROM emp_cargprogramado cap LEFT JOIN emp_carguero_new carg ON cap.cap_cargid = carg.id WHERE cap.cap_id IN (<lista de cap_id>) AND cap.eliminado = 0

Luego construye una lista tipo: ["PLACA001 COD001", "PLACA002 COD009", ...]

Asignado a: grupo.placas = [...]


6. Respuesta final

Retorna toda la estructura ensamblada.


📤 Response 200 – Ejemplo

{ "success": true, "message": "Informacion de grupo", "data": { "id": 12, "grupo": [125, 126], "nombre": "GRUPO 1", "terminal": "Terminal Norte", "cerrar": 0, "fecha": "2025-01-10 10:20:00", "placas": [ "ABC123 COD001", "XYZ998 COD077" ] } }

Posibles Errores

1. Falta de parámetro obligatorio

{ "success": false, "message": "Es obligatorio enviar grp_id" }

2. Grupo no encontrado

{ "success": false, "message": "No se encontró el grupo" }

📚 Schemas (estructuras usadas)

emp_grupo_cargueros_desembarque

{ "id": "number", "grupo": "json-array", "nombre": "string", "terminal": "number", "cerrar": "number", "fecha": "datetime", "placas": "array<string>" }

emp_terminal

{ "ter_id": "number", "ter_nombre": "string", "ter_abrebiatura": "string" }

emp_cargprogramado + emp_carguero_new

{ "placa1": "string", "codigo1": "string", "placa2": "string" }

🗃 Lógica en pseudo-código

if !grp_id -> error grupo = SELECT ... FROM emp_grupo_cargueros_desembarque WHERE id=grp_id if !grupo -> error terminal = SELECT ... FROM emp_terminal WHERE ter_id=grupo.terminal grupo.terminal = terminal.nombre terminales = JSON decode(grupo.grupo) grupo.grupo = terminales if terminales not empty: cargueros = SELECT cargueros programados WHERE cap_id IN terminales grupo.placas = ["placa1 codigo1", ...] return grupo