Se desea crear una aplicación web para la gestión de datos de seguridad (operaciones CRUD) de dos entidades en la base de datos: • Usuarios • Roles de usuarios Se requiere utilizar 3 diferentes tipos de bases de datos relacionales: • Microsoft SQL Server. • PostgreSQL. • MySQL. La aplicación debe construirse con las siguientes características • Framework: Microsoft ASP.NET Core MVC con el lenguaje C#. • Patrones de diseño: o Singleton: para la administración de sesión no persistente (no se guarda en base de datos ni archivos). o Factory: para la estructura de clases a utilizar en la conexión a la base de datos y la gestión de datos de las entidades (insertar, modificar, consultar y eliminar). • Helper (utilerías): clase de utilerías para llamada a métodos de gestión de datos de las entidades (métodos para llamar a las fábricas). Se debe crear un diseño relacional de base de datos para las 2 entidades descritas anteriormente y su respectiva implementación en las 3 bases de datos. Entidades de Base de datos Para cada una de las entidades se desea gestionar la siguiente información: Entidad Dato Detalle Usuarios Nombre de usuario Nombre de usuario Usuarios Nombre completo Nombre completo de la persona asociada al usuario Usuarios Edad Edad de la persona asociada al usuario Usuarios Correo Correo de la persona asociada al usuario Roles Nombre Nombre del rol de usuario Roles Descripción Descripción detallada del rol de usuario Roles Estado Estado del rol de usuario. Puede ser Activo o Inactivo Aplicación Web Frontend Se debe crear una aplicación web que contenga las siguientes opciones de menú: • Inicio: mostrar una página de bienvenida acerca del proyecto y mostrar los datos de conexión que se están utilizando (motor de base datos y cadena de conexión utilizado). • Roles de Usuario: mostrar listado de roles de usuario (preferiblemente en formato tabular), que contenga opciones para las diferentes operaciones del CRUD (insertar, modificar, eliminar y detalles). • Usuario: mostrar listado de usuarios (preferiblemente en formato tabular), que contenga opciones para las diferentes operaciones del CRUD (insertar, modificar y eliminar y detalles). • Configuración: opción para indicar el motor de base de datos y la cadena de conexión a utilizar, además debe mostrar el contenido de las cadenas de conexión. Utilizar el controlador HomeController para esta opción. La pagina de detalles debe mostrar la información de la entidad de base de datos en formato registro, puede utilizar las etiquetas html: • <DL>: lista de descripciones. • <DT>: Define términos / nombres. • <DD>: describe términos / nombres. Aplicación Web Backend Administrador de sesión Se debe crear una estructura de clase a través del patrón de diseño SINGLETON que permita manejar los datos del motor de base de datos y la cadena de conexión que se desea utilizar, estos datos solo existirán en la sesión activa, si se cierra la aplicación los mismo se pierden, por lo tanto, se debe deben inicializar con valores por defecto La estructura de clases debe ser construida utilizando el patrón de diseño Factory de tal manera que se realice una abstracción al momento de la conexión y esta se defina por medio de los parámetros de configuración establecidos en el administrador de sesión (motor de base de datos y cadena de conexión) todo esto debe ser creado en MVC paso a paso, y de la mejor manera explicada, admas sobre que carpetas debo crear, mostrar codigo.
using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.EntityFrameworkCore; using Facturacion.Data; using Facturacion.Models; namespace Facturacion.Pages.Roles { public class IndexModel : PageModel { private readonly Facturacion.Data.FacturacionContext _context; public IndexModel(Facturacion.Data.FacturacionContext context) { _context = context; } public IList<Rol> Rol { get;set; } public async Task OnGetAsync() { Rol = await _context.Rol.ToListAsync(); } } }