Solución Semana 4: "Sistema Modular" (IV de V)

El requerimiento número 4 correspondiente a la Semana 4 de Taller decía:

Mejorar la búsqueda: corregir la búsqueda por nombre y descripción para que pueda obtener más de una coincidencia (actualmente solo trae una).

En esta situación se podían discutir dos alternativas.
El sistema originalmente iniciaba el formulario de consultas y procedía a ejecutar posteriormente el módulo "mostrar_usuario". Conceptualmente este módulo sirve para eso, para mostrar un usuario, lo cual nos podía llevar a modificarlo para que permitiera mostrar más de uno, ya que el requerimiento así lo especifica.

La segunda alternativa era sustituir la invocación del módulo actual por el "listado_usuarios", ya que la implementación existente tiene todas las características solicitadas: poder mostrar más de un usuario pero agregando ahora parámetros de filtros de búsqueda. De esta forma, una vez generada la lista de usuarios encontrados se podría seleccionar el correspondiente para visualizar la ficha completa del mismo.

En este caso lo ideal sería esta última opción.

Los fuentes afectados fueron:
  • index.php
  • dominio/DominioFachada.class.php
  • persistencia/PersistenciaFachada.class.php
  • persentacion/ListadoUsuarios.class.php
  • persentacion/PresentaciónFachada.class.php
Y los templates afectados fueron:
  • contenido_consultar_usuario.tpl.html
  • contenido_listado_usuarios.tpl.html
Fundamentalmente se agregó que el listado de usuarios pudiera recibir por parámetros filtros de búsqueda ($request), lo que luego de cruzar todas las capas correspondientes se termina recreando consultas SQL que permiten incorporar estas condiciones.

PersistenciaFachada.class.php

public function traerUsuarios( $request = null ){
require_once(
FWK . DIRECTORY_SEPARATOR . "SentenciaSQL.class.php");
$SentenciaSQL = new SentenciaSQL();

// Consulta base
$SentenciaSQL->addSelect("*");
$SentenciaSQL->addFrom("usuarios");

if( (
$request['id'] != "" ) ){
$SentenciaSQL->addWhere("id = ".$request['id']);
}
if( (
$request['nombre'] != "" ) ){
$SentenciaSQL->addWhere(" nombre LIKE '%".$request['nombre']."%'");
}
if( (
$request['descripcion'] != "" ) ){
$SentenciaSQL->addWhere(" descripcion LIKE '%".$request['descripcion']."%'");
}
return
self::ejecutarSQL( $SentenciaSQL->generar() );
}

Aquí lo único que hace es armar la consulta en base a si viene cargado o no cada parámetro que corresponde con las condiciones de filtro de la consulta SQL.

Ya se encuentra la planilla actualizada, como así también el repositorio con los fuentes y como siempre, en los comentarios de esta entrada se pueden sacar las dudas sobre este tema :-)

No hay comentarios.:

Entradas populares