Prueba Tecnica DigitalWare
Se requiere que se puedan realizar facturas (Facturación) y administrar el stock de los articulos, por ejemplo cuanto entra de tal articulo y cuando sale.
- Generar una factura.
- Consultar facturas
- Eliminar una factura.
- Editar productos
- Crear productos
- Eliminar productos
- Consultar productos
- Este proyecto usa secretos de usuario.
- Usa como motor de base de datos Microsoft SQLServer.
- Las pruebas unitarias solo dan cobertura a los casos de uso, 23 pruebas en total.
El diseño del modelo esta basado en Domain-Driven Design (DDD). Se usan tres capas
- Application: Casos de uso.
- Domain: Modelo Dominio
- Infrastructure: Capa de configuration de infraestructura como, implementaciones a acceso a datos y etc. Solo se agregan implementaciones de los repositorios para EFCore
Cada entidad raiz tiene una implementacion de estas 3 capas, visualice la entidad "Invoices" de "Billing".
El proyecto RESTFull esta basado en .NET Core Web API mvc , sin embargo se respeta el principio de responsabilidad unica agregando un controlador para cada operacion HTTP.
├───apps
│ └───Biller
│ └───Server
│ ├───Controllers
│ │ ├───Customers
│ │ │ └───Request
│ │ ├───Invoices
│ │ │ └───Request
│ │ └───Products
│ │ └───Request
│ ├───Infrastructure
│ │ ├───DependencyInjection
│ │ │ ├───Customers
│ │ │ ├───Invoices
│ │ │ └───Products
│ │ └───Mvc
│ │ └───JsonConverts
│ └───Properties
├───src
│ ├───Billing
│ │ ├───Customers
│ │ │ ├───Application
│ │ │ │ ├───Create
│ │ │ │ ├───SearchAll
│ │ │ │ └───SearchById
│ │ │ ├───Domain
│ │ │ │ └───Exceptions
│ │ │ └───Infrastructure
│ │ │ ├───Mappings
│ │ │ └───Persistence
│ │ │ └───Configurations
│ │ ├───Invoices
│ │ │ ├───Application
│ │ │ │ ├───Create
│ │ │ │ ├───Delete
│ │ │ │ ├───SearchAll
│ │ │ │ └───SearchById
│ │ │ ├───Domain
│ │ │ │ ├───Exceptions
│ │ │ │ └───ValueObjects
│ │ │ └───Infrastructure
│ │ │ ├───Mappings
│ │ │ └───Persistence
│ │ │ └───Configurations
│ │ ├───Products
│ │ │ ├───Application
│ │ │ │ ├───AdjustStock
│ │ │ │ ├───Create
│ │ │ │ ├───Delete
│ │ │ │ ├───SearchAll
│ │ │ │ ├───SearchById
│ │ │ │ └───Update
│ │ │ ├───Domain
│ │ │ │ └───Exceptions
│ │ │ └───Infrastructure
│ │ │ ├───Mappings
│ │ │ └───Persistence
│ │ │ └───Configurations
│ │ └───Shared
│ │ └───Infrastructure
│ │ └───Persistence
│ │ └───EfCore
│ │ └───Migrations
│ └───Shared
│ ├───Domain
│ │ ├───Enums
│ │ └───ValueObjects
│ ├───Infrastructure
│ │ └───Persistence
│ │ └───EfCore
└───test
└───src
└───BillingTest
├───Customers
│ └───Domain
├───Invoices
│ ├───Application
│ │ ├───Create
│ │ ├───Delete
│ │ └───Search
│ └───Domain
└───Products
├───Application
│ ├───Create
│ ├───Delete
│ ├───Search
│ └───Update
└───Domain