Skip to content

Juanma7882/VentaDotNet

Repository files navigation

SistemaVenta - API de Ventas con .NET 7

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.

Arquitectura del Proyecto

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

Descripcion de cada capa

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.

Tecnologias Utilizadas

  • 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

Modelo de Base de Datos

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)

Endpoints de la API

Usuarios (/api/Usuario)

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

Productos (/api/Producto)

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

Categorias (/api/Categoria)

Metodo Ruta Descripcion
GET /Lista Obtener lista de categorias

Ventas (/api/Venta)

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

Roles (/api/Rol)

Metodo Ruta Descripcion
GET /Lista Obtener lista de roles

Menu (/api/Menu)

Metodo Ruta Descripcion
GET /Lista?idUsuario={id} Obtener menus disponibles segun el usuario

DashBoard (/api/DashBoard)

Metodo Ruta Descripcion
GET /Resumen Obtener resumen del dashboard (metricas)

Roles y Permisos

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

Requisitos Previos

Configuracion e Instalacion

  1. Clonar el repositorio:

    git clone https://github.com/Juanma7882/VentaDotNet.git
    cd VentaDotNet
  2. Crear la base de datos: Ejecutar el script DBVENTA.sql en SQL Server Management Studio (SSMS) o cualquier cliente SQL Server. Este script crea la base de datos, las tablas y los datos iniciales.

  3. Configurar la cadena de conexion: Editar el archivo SistemaVenta.API/appsettings.json y 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"
      }
    }
  4. Ejecutar la aplicacion:

    cd SistemaVenta.API
    dotnet run
  5. Acceder a Swagger: Una vez ejecutada la aplicacion, acceder a la documentacion interactiva en:

    https://localhost:{puerto}/swagger
    

Datos de Prueba

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

Autor

Juan Fernandez - @Juanma7882

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors