API RESTful para la gestion de un sistema de ventas, desarrollada con ASP.NET Core 7 y SQL Server. Permite administrar usuarios, productos, categorias, ventas y generar reportes a traves de endpoints organizados por controladores.
El proyecto sigue una arquitectura en capas, separando responsabilidades en distintos proyectos de la solucion:
VentaDotNet/
├── SistemaVenta.API/ # Capa de presentacion (Controllers, configuracion)
├── SistemaVenta.BLL/ # Capa de logica de negocio (Servicios)
├── SistemaVenta.DAL/ # Capa de acceso a datos (Repositorios, DbContext)
├── SistemaVenta.DTO/ # Objetos de transferencia de datos
├── SistemaVenta.IOC/ # Inyeccion de dependencias
├── SistemaVenta.Model/ # Modelos / Entidades de la base de datos
├── SistemaVenta.Utility/ # Utilidades (AutoMapper profiles)
└── DBVENTA.sql # Script SQL para crear la base de datos
| Capa | Responsabilidad |
|---|---|
| API | Expone los endpoints REST. Contiene los controllers, la configuracion de Swagger y la politica de CORS. |
| BLL (Business Logic Layer) | Implementa la logica de negocio a traves de servicios con interfaces (contratos). |
| DAL (Data Access Layer) | Acceso a la base de datos mediante Entity Framework Core, con un repositorio generico y uno especializado para ventas. |
| DTO | Define los objetos de transferencia que se envian y reciben en la API, desacoplando los modelos internos. |
| IOC (Inversion of Control) | Centraliza el registro de dependencias (servicios, repositorios, AutoMapper, DbContext). |
| Model | Contiene las entidades mapeadas desde la base de datos SQL Server. |
| Utility | Perfiles de AutoMapper para la conversion entre entidades y DTOs. |
- ASP.NET Core 7 (Web API)
- Entity Framework Core (ORM - SQL Server)
- AutoMapper (Mapeo entidades <-> DTOs)
- Swagger / Swashbuckle (Documentacion interactiva de la API)
- SQL Server (Base de datos relacional)
- Inyeccion de Dependencias nativa de .NET
La base de datos DBVENTA contiene las siguientes tablas:
| Tabla | Descripcion |
|---|---|
| Rol | Roles del sistema (Administrador, Empleado, Supervisor) |
| Usuario | Usuarios con nombre, correo, clave y rol asignado |
| Menu | Opciones del menu de navegacion (DashBoard, Usuarios, Productos, etc.) |
| MenuRol | Relacion entre menus y roles (permisos de acceso) |
| Categoria | Categorias de productos (Laptops, Monitores, Teclados, etc.) |
| Producto | Productos con nombre, categoria, stock y precio |
| NumeroDocumento | Control del ultimo numero de documento de venta |
| Venta | Registro de ventas con numero de documento, tipo de pago y total |
| DetalleVenta | Detalle de cada venta (producto, cantidad, precio, total) |
| Metodo | Ruta | Descripcion |
|---|---|---|
| GET | /Lista |
Obtener lista de usuarios |
| POST | /IniciarSesion |
Iniciar sesion con correo y clave |
| POST | /Guardar |
Crear un nuevo usuario |
| PUT | /Editar |
Editar un usuario existente |
| PUT | /Eliminar/{id} |
Eliminar (desactivar) un usuario |
| Metodo | Ruta | Descripcion |
|---|---|---|
| GET | /Lista |
Obtener lista de productos |
| POST | /Guardar |
Crear un nuevo producto |
| PUT | /Editar |
Editar un producto existente |
| PUT | /Eliminar/{id} |
Eliminar (desactivar) un producto |
| Metodo | Ruta | Descripcion |
|---|---|---|
| GET | /Lista |
Obtener lista de categorias |
| Metodo | Ruta | Descripcion |
|---|---|---|
| POST | /Registrar |
Registrar una nueva venta |
| GET | /Historial |
Consultar historial de ventas con filtros |
| GET | /Reporte |
Generar reporte de ventas por rango de fechas |
| Metodo | Ruta | Descripcion |
|---|---|---|
| GET | /Lista |
Obtener lista de roles |
| Metodo | Ruta | Descripcion |
|---|---|---|
| GET | /Lista?idUsuario={id} |
Obtener menus disponibles segun el usuario |
| Metodo | Ruta | Descripcion |
|---|---|---|
| GET | /Resumen |
Obtener resumen del dashboard (metricas) |
El sistema maneja tres roles con distintos niveles de acceso al menu:
| Rol | Acceso |
|---|---|
| Administrador | DashBoard, Usuarios, Productos, Venta, Historial Ventas, Reportes |
| Empleado | Venta, Historial Ventas |
| Supervisor | Productos, Venta, Historial Ventas, Reportes |
- .NET 7 SDK
- SQL Server (Express o superior)
- Un IDE como Visual Studio 2022 o VS Code
-
Clonar el repositorio:
git clone https://github.com/Juanma7882/VentaDotNet.git cd VentaDotNet -
Crear la base de datos: Ejecutar el script
DBVENTA.sqlen SQL Server Management Studio (SSMS) o cualquier cliente SQL Server. Este script crea la base de datos, las tablas y los datos iniciales. -
Configurar la cadena de conexion: Editar el archivo
SistemaVenta.API/appsettings.jsony actualizar la cadena de conexion con los datos de tu servidor SQL Server:{ "ConnectionStrings": { "DefaultConnection": "Server=TU_SERVIDOR;Database=DBVENTA;Trusted_Connection=True;TrustServerCertificate=True" } } -
Ejecutar la aplicacion:
cd SistemaVenta.API dotnet run -
Acceder a Swagger: Una vez ejecutada la aplicacion, acceder a la documentacion interactiva en:
https://localhost:{puerto}/swagger
El script SQL incluye datos de prueba:
- Usuarios:
juan@prueba.com(Admin),empleado@prueba.com(Empleado) - Categorias: Laptops, Monitores, Teclados, Auriculares, Memorias, Accesorios
- Productos: 15 productos de tecnologia con stock y precios
Juan Fernandez - @Juanma7882