# 1.4 Aplicación de ejemplo

La aplicación de ejemplo para crear los servicios REST es la siguiente:

La empresa ACME desea llevar el control de la fecha de caducidad de los  productos de sus clientes, para mandar avisos de los productos que están próximos a caducar. Los productos están ordenados por categorías, y los empleados solo pueden registrar las fechas de caducidad de sus categorías de productos. También se debe llevar una bitácora de quien ha registrado la información del sistema.

{% hint style="info" %}
La seguridad será manejada por roles, para este ejemplo un usuario puede tener varios roles.
{% endhint %}

### Modelo Base de Datos

Actualmente el Entity Framework Core no genera un diagrama visual de las tablas de la base de datos, por lo cual el modelo lo cree con [Draw.io](https://www.draw.io) el cual tiene una versión web, versiones para windows, linux y mac.

Para dejar el ejemplo lo mas sencillo posible el diagrama de la base de datos es el siguiente:

![](https://3731331968-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKmGSg4qhizjqeDPHJC%2F-LSISRgTMff5VlGOGiEi%2F-LSISXPh5ksWijz4qily%2Fdiagrama%20\(3\).png?alt=media\&token=bd4bcb88-7c9a-495a-a5b2-ff5f02dd39d7)

* **Rol:** Roles para la seguridad sistema (Ver sección seguridad)
* **Tabla:** Contiene el nombre de cada tabla para registrar el historial por cada tabla
* **Historial:** Histórico de cambios del sistema
* **Cliente:** Clientes de la empresa
* **Categoría:** Clasificación de los productos
* **Producto:** Información de los productos
* **Caducidad:** Registro de la fecha de caducidad de los productos
* **Usuario:** Personas que utilizan la aplicación
* **UsuarioCategoria:** Registra las categorías de productos que cada persona puede manejar.
* **UsuarioRol:** Registra los roles de cada usuario

### Seguridad

La aplicación cuenta con los siguientes tipos (roles) de usuarios:

* **Administradores:** Pueden consultar y modificar toda información del sistema. Se encarga de dar de alta nuevos clientes.
* **Supervisores:** Pueden dar de alta las categorías y productos de cada cliente. Cada empleado solamente puede ver los productos y categorías de sus clientes.
* **Vendedores:** Pueden registrar las fechas de caducidad de los productos del cliente de sus categorías asignadas.
