Esta es una API-Rest para un sistema de e-commerce, diseñada con Clean Architecture para manejar la lógica de backend, la gestión de productos, usuarios y órdenes. Está construida con ASP.NET Core, y provee todos los servicios necesarios para que un frontend o aplicación móvil puedan interactuar con el sistema de manera eficiente.
- Autenticación y Autorización: Gestión de usuarios con ASP.NET Core Identity.
- Gestión de Productos: Endpoints para agregar, editar, eliminar y listar productos.
- Gestión de Órdenes: Creación, modificación y consulta de órdenes de compra.
- Facturación: Generación de facturas una vez completada una orden.
- Roles y Permisos: Control de acceso según roles de usuario (clientes, editores, administradores).
- ASP.NET Core con Identity
- Base de datos: SQLite (configurable a SQL Server)
- Entity Framework Core: Para la gestión de la base de datos.
- JWT: Autenticación basada en JSON Web Tokens.
classDiagram
direction TB
class User {
+String Id
+String Nombre
+String Apellido
+String Email
+String Password
+List~Factura~ ListFacturas
+List~Valoraciones~ ListValoraciones
}
class Factura {
+String IdFactura
+DateTime Date
+Orden Orden
+User Usuario
+Decimal MontoTotal
}
class Valoraciones {
+String IdValoracion
+Producto Producto
+User Usuario
+String Imagen
+DateTime CreatedAt
+Int Estrellas
+String Opinion
}
class Producto {
+String Id
+String Nombre
+Decimal Precio
+String Descripcion
+String Imagen
+String Talla
+String Color
+List~Valoraciones~ ListValoraciones
}
class Orden {
+String Id
+List~OrdenLinea~ Lineas
+User Usuario
+Decimal Total
+DateTime FechaCreacion
+String EstadoOrden
}
class OrdenLinea {
+String Id
+Producto Producto
+String Nombre
+Int Cantidad
+Decimal PrecioUnitario
+Decimal Total
}
class Address {
+String Id
+String Street
+String City
+String State
+String PostalCode
+String Country
+String Phone
}
User "1" -- "0..*" Factura : owns
User "1" -- "0..*" Valoraciones : writes
User "1" -- "0..*" Orden : places
direction LR
Producto "1" -- "0..*" Valoraciones : receives
Producto "1" -- "*" OrdenLinea : has
direction TB
Orden "1" -- "0..*" OrdenLinea : contains
Factura "1" -- "0..1" Orden
Address "1" -- "1" Orden : linkedTo
Método | Ruta | Descripción |
---|---|---|
POST | /api/Authentication/authenticate | Autentica a un usuario |
Método | Ruta | Descripción |
---|---|---|
GET | /api/Order/{orderId} | Obtiene una orden por ID |
GET | /api/Order | Obtiene todas las órdenes |
DELETE | /api/Order | Elimina todas las lineas de producto de una orden |
GET | /api/Order/GetAllOrdersForOneUser | Obtiene todas las órdenes de un usuario específico |
POST | /api/Order/{productId} | Crea/actualiza una linea de producto para una orden específica |
DELETE | /api/Order/{productId} | Elimina un producto de una orden específica |
PUT | /api/Order/UpdateOrdetToStatePending | Actualiza una orden al estado pendiente |
PUT | /api/Order/ConfirmOrder/{orderId} | Confirma una orden por ID |
PUT | /api/Order/CancelOrder/{orderId} | Cancela una orden por ID |
Método | Ruta | Descripción |
---|---|---|
GET | /api/Product/{id} | Obtiene un producto por ID |
PUT | /api/Product/{id} | Actualiza un producto por ID |
DELETE | /api/Product/{id} | Elimina un producto por ID |
POST | /api/Product | Crea un nuevo producto |
GET | /api/Product/GetAll | Obtiene todos los productos |
GET | /api/Product/GetAvailable | Obtiene los productos disponibles |
GET | /api/Product/GetMoreCheaper | Obtiene el producto más barato |
GET | /api/Product/GetMostExpansive | Obtiene el producto más caro |
GET | /api/Product/GetByName/{name} | Obtiene un listado de productos por nombre |
GET | /api/Product/GetLittleQuantity | Obtiene productos con poca cantidad |
PUT | /api/Product/{id}/{quantity} | Actualiza la cantidad de un producto (+ / -) |
GET | /api/Product/GetW/Valorations/{id} | Obtiene un producto con sus valoraciones por ID |
Método | Ruta | Descripción |
---|---|---|
GET | /api/User/{id} | Obtiene un usuario por ID |
DELETE | /api/User/{id} | Elimina un usuario por ID |
PUT | /api/User/{id} | Actualiza un usuario por ID |
GET | /api/User | Obtiene todos los usuarios |
POST | /api/User | Crea un nuevo usuario |
GET | /api/User/profile | Obtiene el perfil del usuario autenticado |
GET | /api/User/GetUserWEmail/{email} | Obtiene un usuario por correo electrónico |
PUT | /api/User/role/{userId} | Actualiza el rol de un usuario por ID |
Método | Ruta | Descripción |
---|---|---|
POST | /api/Valoration/{productId} | Crea una nueva valoración para un producto por ID |
GET | /api/Valoration | Obtiene todas las valoraciones |
GET | /api/Valoration/{id} | Obtiene una valoración por ID |
PUT | /api/Valoration/{id} | Actualiza una valoración por ID |
DELETE | /api/Valoration/{id} | Elimina una valoración por ID |
1. git clone https://github.com/nachobastianelli/EcommerceApiRest
2. cd EcommerceApiRest
3. dotnet restore
4. dotnet build
5. dotnet run
📚 Más información del proyecto en la carpeta DOCS