# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://abi.gitbook.io/net-core/introduccion/aplicacion-de-ejemplo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
