Este repositorio contiene una solución de ASP.NET Core desarrollada en una arquitectura MVC, diseñada para administrar diferentes solicitudes en el sistema interno de la CONADE (Comisión Nacional de Cultura Física y Deporte).
A continuación se muestra el diagrama del modelo de la base de datos utilizado en este proyecto:
La solución incluye tres proyectos dentro de una arquitectura modular:
- AccesoDatos: Biblioteca de clases para gestionar modelos y operaciones relacionadas con la base de datos.
- ClasesBase: Biblioteca de clases base, como modelos de respuesta estándar.
- ConadeWebApi: API principal que implementa los controladores para interactuar con las entidades y operaciones.
- Models: Define las entidades del sistema, como
Usuario
,Solicitud
,Mantenimiento
, etc. - Operations: Contiene los DAO (Data Access Objects) para operaciones CRUD sobre las entidades.
- Respuestas: Contiene clases base reutilizables, como
Respuesta
.
- Controllers: Define los controladres que exponen los endpoints de la API RESTful.
- Program.cs: Configuración inicial del proyecto, incluyendo inyección de dependencias y middleware.
Asegúrate de tener instalado lo siguiente:
- Visual Studio 2022 con soporte para desarrollo de ASP.NET y herramientas de Entity Framework.
- SDK .NET 8.
- SQL Server configurado localmente o en un contenedor.
- Git.
Sigue estos pasos para clonar y configurar el proyecto:
Clona este repositorio en tu máquina local:
git clone https://github.com/tu-usuario/ConadeWebApi.git
cd ConadeWebApi
Restaura los paquetes necesarios con el siguiente comando:
dotnet restore
Los paquetes NuGet que utilizan para la relación con la base de datos son:
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
Los paquetes NuGet que se utilizan para manejar JWT son:
Microsoft.IdentityModel.Tokens
Microsoft.AspNetCore.Authentication.JwtBearer
Debido a que el proyecto utiliza .NET 8, los paquetes para manejar JWT deben estar en la version 8 para garantizar la compatibilidad.
Los paquetes NuGet que se utilizan para ConfigurationBuilder son:
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.DependencyInjection
El proyecto utiliza Entity Framework Core para interactuar con la base de datos. Configura tu cadena de conexión en el archivo appsettings.json
del proyecto ConadeWebApi
, por el momento se encuentra configurado para SQL Server local, pero puedes cambiarlo a tu conveniencia en el archivo de configuración se agregan dos DevelopmentConnection
y ProductionConnection
para que puedas cambiar entre ambientes de desarrollo y producción.
{
"ConnectionStrings": {
"DevelopmentConnection": "Server=hp\\SQLEXPRESS; Encrypt=False; TrustServerCertificate=True; Database=Conade1; Integrated Security=True",
"ProductionConnection": "Server=prod-server-name;Database=ConadeDb;User Id=your_user;Password=your_password;Encrypt=True;TrustServerCertificate=False"
}
}
Recuerda cambiar el valor de connectionString
por la cadena de conexión de tu base de datos, esta variable se encuentra en AccesoDatos/Conade1Context.cs
en el método OnConfiguring
.
Para aplicar las migraciones para crear la base de datos, utiliza estos comandos:
dotnet ef database update --project AccesoDatos --startup-project ConadeWebApi
Update-Database -Project AccesoDatos -StartupProject ConadeWebApi
dotnet run --project ConadeWebApi
- Abre la solución
ConadeWebApi.sln
en Visual Studio. - Establece el proyecto
ConadeWebApi
como proyecto de inicio. - Presiona
Ctrl + F5
para ejecutar el proyecto.
La API estará disponible en el siguiente URL por defecto:
https://localhost:5001
Puedes probar los endpoints utilizando:
- Postman: Crea una colección y prueba los endpoints.
- Swagger: Documentación generada automáticamente en:
https://localhost:5001/swagger/index.html
Si deseas colaborar al proyecto, sigue estos pasos:
- Haz un fork del repositorio.
- Crea una nueva rama (
git checkout -b feature/nueva-funcionalidad
). - Realiza tus cambios y haz commit (
git commit -m "Agregada nueva funcionalidad"
). - Haz push a la rama (
git push origin feature/nueva-funcionalidad
). - Crea un pull request en este repositorio.