0% encontró este documento útil (0 votos)
15 vistas10 páginas

API para Gestión de Restaurantes

Este documento describe las funcionalidades de una API para un restaurante construida con ASP.NET Core MVC 5. Incluye funciones de login y seguridad, mantenimiento de ingredientes, platos, mesas y órdenes. Todas las funciones requieren autenticación a través de JWT y solo los usuarios con el rol adecuado pueden acceder a cada sección.

Cargado por

DeiiN
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
15 vistas10 páginas

API para Gestión de Restaurantes

Este documento describe las funcionalidades de una API para un restaurante construida con ASP.NET Core MVC 5. Incluye funciones de login y seguridad, mantenimiento de ingredientes, platos, mesas y órdenes. Todas las funciones requieren autenticación a través de JWT y solo los usuarios con el rol adecuado pueden acceder a cada sección.

Cargado por

DeiiN
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

También podría gustarte