Api restaurante
[2022] Documento Funcional
Versión 1.0
14 de julio, 2022
© Itla 2022
Autopista Las Américas, Km. 27, PCSD,
La Caleta, Boca Chica 11606.
Tel. 809-738-4852
1
Índice
Objetivo general 3
Funcionalidades generales 3
Login y Seguridad 3
Mant. Ingredientes 4
Mant. Platos 5
Mant. Mesas 6
Mant. Órdenes 8
Requerimientos técnico 10
2
Objetivo general
● Crear un api para una aplicación de comida de un restaurante, utilizando asp net core
mvc 5.
Funcionalidades generales
Login y Seguridad
Este sistema tendrá dos roles un rol administrador y un rol mesero, la seguridad en los
endpoints del api deben de validarse a través del uso de JWT
El sistema debe crear por defectos estos roles y crear un usuario con el rol
administrador, otro con el rol mesero y un super administrador con los dos roles.
El sistema tiene que tener un controlador para el manejo de las
cuentas(AccountController) que tenga las siguientes funcionalidades:
● Login: (Permite autenticarse y obtener el token JWT para poder usar las demás
funcionalidades de la aplicación)
● Registro de usuario mesero: (Permite crear usuario con el rol de mesero)
● Registro de usuario administrador: (Permite crear usuario con el rol de
administrador este debe tener la seguridad de que debe haber un usuario loqueago y
que debe ser de tipo administrador para poder usar este endpoint)
Los usuarios se crean activos por lo cual no hay que hacer proceso de confirmación de
cuenta.
Si un usuario no está logueado no puede acceder a las funcionalidades ni del
administrador ni del mesero. Cuando intente entrar a esos enlaces y no esté logueado
debe mostrarle un mensaje de que no tiene autorización y el status code de la
respuesta debe ser 401.
3
También se debe validar que si el usuario logueado es un mesero no puede ingresar a
las opciones del administrador y viceversa que si un administrador está logueado no
pueda entrar a las funcionalidades de los meseros, si intenta acceder a una sección que
no tiene autorizado a entrar debe retornar una respuesta con el mensaje de acceso
denegado y status code debe ser 403.
Todas estas validaciones deben realizarse usando los filtros de authorize que
implementa identity con el uso de JWT.
Mant. Ingredientes
Estos son los datos de un ingrediente:
● Id
● Nombre
Esto son los endpoint que debe tener el controlador de ingredientes:
API Ingredientes V 1.0
Nombre Método Parámetros Respuesta Ok Respuesta KO Roles
permitidos
Create POST - Datos del 204 HTTP (sin 500 error Administrador
ingrediente contenido) interno del
servidor
400(error
bad request)
Update PUT - Código de 200 HTTP 500 (error Administrador
ingrediente (datos de el interno del
ingrediente servidor)
- Datos del actualizado en
ingrediente formato json) 400(error
bad request)
List GET - 200 HTTP 500 (error Administrador
(listado de los interno del
ingredientes servidor)
en formato
json) 404 (no existen
ingredientes)
4
GetById GET - Código de 200 HTTP( 500 (error Administrador
ingrediente datos de el interno del
ingrediente en servidor)
formato json)
404 (no
existe el
ingrediente)
Mant. Platos
Estos son los datos de un plato:
● Id
● Nombre
● Precio
● Para cuanta persona da el plato
● Listado de los ingredientes que lo compone,
● Categoría del plato (Entrada, Plato fuerte, Postre o Bebida)
Esto son los endpoint que debe tener el controlador de platos:
API Platos V 1.0
Nombre Método Parámetros Respuesta Respuesta Roles
Ok KO permitidos
Create POST Datos del plato 204 HTTP 500 error Administrador
(sin interno del
contenido) servidor
400
(error
bad
request)
Update PUT Datos del 200 HTTP 500 error Administrador
plato (Se (El plato con interno del
pueden sus datos servidor
agregar o actualizado
quitar s)
400
ingredientes
(error
)
bad
request)
5
List GET - 200 HTTP 500 Administrador
(listado de (error
los platos interno
con sus del
ingrediente servidor)
s en
formato 404 (no
json) existen
platos)
GetById GET - Código 200 HTTP( 500 Administrador
de plato datos de el (error
plato con interno
sus del
ingrediente servidor)
s en
formato 404 (no
json) existe
el
plato)
Mant. Mesas
Estos son los datos de una mesa:
● Id
● Cantidad de personas que puede tener la mesa
● Descripción
● Estado
Una mesa puede tener los siguientes estados (Disponible, en proceso de atención ,
atendida)
6
Esto son los endpoint que debe tener el controlador de mesas:
API Mesas V 1.0
Nombre Método Parámetro Respuesta Respuesta Roles
s Ok KO permitidos
Create POST Datos de la 204 HTTP 500 Administrador
mesa(Se (sin error
crean en contenido) interno
estado del
disponibl servidor
e por
defecto) 400
(error
bad
request)
Update PUT Datos 200 HTTP 500 Administrador
de la (Los datos error
mesa de la mesa interno
(solo se actualizada) del
puede servidor
cambiar la
descripción 400
y la (error
cantidad bad
de request)
personas)
List GET - 200 500 Administrador,
HTTP (error Mesero
(listado interno
de los del
mesas en servidor)
formato
json) 404 (no
existen
mesas)
7
GetById GET - Código de 200 HTTP 500 Administrador,
la datos de (error Mesero
mesa una mesa interno
en del
formato servidor)
json)
404 (no
existe la
mesa)
GetTableOr GET - Código de 200 HTTP( 500 Mesero
den la datos de (error
mesa las interno
órdenes en del
proceso de servidor)
esa mesa
formato 404 (no
json) existen
órdenes en
proceso
esa mesa)
ChangeStatus Change - Código de 204 HTTP 500 Mesero
Status la (sin error
mesa y contenido) interno
código del
del servidor
estado al
cual se
quiere
cambiar
la mesa
Mant. Órdenes
Estos son los datos de una orden
● Id
● Mesa a la cual pertenece
● Platos seleccionados
● Subtotal
● Estado
8
Una orden puede tener los siguientes estados( en proceso y completada).
Esto son los endpoint que debe tener el controlador de órdenes:
API Órdenes V 1.0
Nombre Método Parámetros Respuesta Respuesta Roles
Ok KO permitidos
Create POST Datos de la 204 HTTP 500 Mesero
orden (Se (sin error
crean en contenido) interno
estado en del
proceso servidor
por
defecto) 400
(error bad
request)
Update PUT Datos de 204 HTTP 500 Mesero
la orden (sin (error
(solo se contenido) interno
puede del
cambiar servidor)
los platos
agregar 400
o quitar) (error bad
request)
List GET - 200 500 Mesero
HTTP (error
(listado interno
de los del
todas las servidor)
órdenes
con sus 404 (no
platos en existen
formato órdenes)
json)
GetById GET - Código de 200 HTTP( 500 Mesero
la datos de la (error
9
orden orden con interno
sus platos, del
formato servidor)
json)
404 (no
existe la
orden)
Delete Delete - Código de 204 HTTP 500 Mesero
la (sin (error
orden contenido) interno
del
Se elimina servidor)
la orden
con sus
platos
Requerimientos técnico
* Deben utilizar viewmodels y las validaciones se deben realizar desde los mismos.
* Se debe usar Entity framework con code first para la persistencia de los datos.
* El proyecto debe usar la arquitectura ONION (Esta se debe aplicar correctamente al
100%, en caso de algún error en la misma se considerará que esta incorrecta).
* Se deben utilizar repositorio y servicio genéricos.
* Se deben usar identity para el manejo de los usuarios y de la seguridad de api con
JWT.
* Se deben usar automapper para el mapeo de los viewmodels, entities y dtos.
10