Portal Municipalidad v.1.0

Descripción: La página simula un portal web amigable con el usuario para una municipalidad (gobierno local en Costa Rica). Desde él se pueden consultar propiedades registradas, propietarios (incluyendo de tipo jurídico), usuarios registrados en el portal y conceptos de cobro sobre los servicios municipales. 

Si se utiliza el modo administrador es posible alterar las diversas relaciones entre los objetos del portal, por ejemplo: Añadir propiedades, propietarios, usuarios y conceptos de cobro; modificar los diferentes propietarios de cierta propiedad, los usuarios que tienen derecho consultar la propiedad y los conceptos de cobro que van a ser asociados a los diferentes bienes inmuebles. 

Características:

  1. Utilización de CRUD's para realizar las diferentes acciones de la página web. 
  2. Scripts para carga desde archivos XML tipo simulación.
  3. Manejo de errores por medio de códigos personalizados.
  4. Validaciones en capa de datos y en capa lógica para evitar al máximo los bugs.
  5. Versionamiento de la página por medio de la plataforma Github.
  6. Base de datos con respaldo en servidor de AWS.
  7. La página web posee una UI amigable. 
Anotaciones: La lectura de los archivos XML requiere subir el archivo .xml en el mismo servidor donde sea hospedada la base de datos. Por motivos de AWS (solo permite .json y .csv) no se permitía la carga de tipo BULK del archivo XML a la base de datos SQL. Es por esa razón que creamos una copia de la base de datos y la corrimos en un servidor local. 

Consejos: La simulación creada a partir del XML toma muchísimo tiempo. Para aumentar la eficiencia se diseñó un método que rebaja el tiempo de ejecución un 97,67% (de 5 min a 7 seg). Este consiste en extraer los datos y colocarlos en tablas temporales, incluyendo en estas tablas la fecha para luego utilizar un 'WHERE' y sacar la información según la fecha. Por lo que en el while solamente se estará extrayendo información de las tablas con los datos precargados. 
     Esto evita que se extraigan los datos de las 3700 líneas del XML 121 veces para solo insertar las que cumplen con esa fecha. En la primera versión del archivo se brindaba la fecha en un nodo dentro de "Operacion_Dia" por lo que debíamos recorrer un nodo sacando por ejemplo los datos de un propietario y luego devolverse para poder sacar el nodo fecha lo cual ralentizaba aún más el proceso. 
     
En la página web se pueden reutilizar métodos como por ejemplo el de mostrar propiedades ya que lo único diferente es el nombre del SP y  el de los parámetros pero siguen una línea muy similar. Además, al mostrar las propiedades los atributos a mostrar son los mismos por lo que el archivo .aspx que contiene el html y genera la misma tabla y mismo orden de botones y demás. En la cuestión de los errores se manejan en la base de datos ya que esta no puede permitir que se generen problemas, sin embargo no se puede enviar un dato que se supone que es int como varchar  porque  al sacarlo del textBox, este dará error entonces se debe previamente utilizar alguna estrategia para mitigar estos errores que pueden provocar que la página se caiga. En este caso nuestra solución fue usar expresiones regulares y al encontrar que un storing contiene letras convertir el valor de esa variable a -1 para que al recibirse en la base esta notara ese detalle y devuelva error. 


Recursos:
La página web fue creada utilizando ASP.NET con conexión a una base de datos creada en SQL Server. AWS (Debido a la emergencia de la cuarentena se logró trabajar de manera remota para que ambos integrantes pudiesen trabajar en conjunto)

Estado final: Luego de arduos días de trabajo la base finalmente se encuentra totalmente funcional. Cuenta con todos los requerimientos pedido por el profesor. Esto se traduce en la implementación del modelado hecho en clase, siguiendo exclusivamente los estándares del curso: utilización de índices por medio de llaves primarias, de tipo integer, identity, incremental de 1 en 1, con formato de nombre "ID". Además, la colocación del prefijo "in"(input) para parámetros de entrada de los diferentes stored procedures. La base posee manejo de errores por medio de Try and Catch, retornando números de error personalizados. Por último la implementación de alias para las tablas en los inner join.

Adicionalmente, se implementaron CRUD's en la totalidad de la tablas para satisfacer las consultas requeridas por el portal, utilizando el estándar de stored procedure dado en clase. La página web también está también totalmente funcional y contiene elementos para optimizarla como por ejemplo:  no mostramos todos los objetos de una tabla para no sobrecargar la página. Además, se implementó un botón de volver para que el usuario pueda ir hacia atrás sin tener que darle click a los botones de arriba. Esto puede ser más funcional en el caso de que se desee agregar más elementos a la página y existan más botones. Y es bastante natural tener botón para ir hacia atrás en la UI de las páginas. Se utiliza un menú principal que permite navegar por las diferentes páginas; este se mantiene estático por lo que facilita la navegación por el portal y permite ir de una consulta a otra fácilmente. El tamaño de los botones y del texto fue considerado ya que, como no hay muchos elementos se puede ampliar el texto pero sin que sea masivo, tratando de mantener una interfaz limpia. En el caso de las propiedades donde el texto es muy extenso se amplía el ancho de las tablas para evitar la acumulación de texto en un espacio reducido y así mantener un buen diseño.



Comentarios

Entradas más populares de este blog

Avance #28

Avance #39

Avance #32