Ir al contenido principal
Rest API: Agrupaciones

Como listar y crear agrupaciones

Rafel Tugues avatar
Escrito por Rafel Tugues
Actualizado hace más de 2 años

1. Gestión de Agrupaciones

En este artículo veremos como gestionar las agrupaciones

1.1. Rest API : Login

Para poder hacer llamadas a nuestras api's lo primero que necesitamos es identificarnos mediante una llamada de login

Esa llamada nos retornara una token que después debemos asociar en cada llamada posterior.

Este shell script muestra como autenticar-nos mediante curl

[email protected]
password=XXXXXXX

url=https://www.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password

echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt

En las llamadas posteriores debemos añadir a nuestros headers el token recibido de la llamada de login

curl -X PUT -v -H "$(cat rememberme.txt)" $url/integration/llamada

1.2. Rest API : Seleccionar un centro de coste/restaurante

Las peticiones que se describen en los apartados siguientes hacen referencia a un centro de coste. Que en la mayoría de los casos se correspondería con un restaurante

Para recuperar la lista de centros de costes y sus identificadores consulta el documento

El identificador de cenetro de coste se corresponde al campo idOrderCenter de la classe UserOrderCenter

Una vez tenemos el identificador este deberá añadirse a los headers para que sea utilizado en llamadas posteriores

echo -n 'order:351583444167656299610202XXXXXXXXXXXX' >> rememberme.txt

Por tanto en nuestros request headers debemos especificar tanto el token devuelto por el login como el identificador del centro de coste

rememberme:aGVucnkudXBzYWxsLmRAZXXXXXXXXXXXXXXXXXX
order:351583444167656299610202XXXXXXXXXXXX

1.3 Rest API : Seleccionar un libro de elaboraciones finales

Las peticiones que se describen en los apartados siguientes pueden realizarse para todos lo libros de elaboraciones finales o solo para un libro.

Para recuperar la lista de elaboraciones finales y sus identificadores consulta el documento

El identificador de libro de elaboraciones finales se corresponde al campo idRecipeCenter de la classe UserRecipeCenter

Una vez tenemos el identificador este deberá añadirse a los headers para que sea utilizado en llamadas posteriores

echo -n 'recipe:351583444167656299610202XXXXXXXXXXXX' >> rememberme.txt

Por tanto en nuestros request headers debemos especificar tanto el token devuelto por el login como el identificador del centro de coste

Debemos enviar ademas del token de rememberme el centro de costes y el libro de elaboraciones finales

rememberme:aGVucnkudXBzYWxsLmRAZXXXXXXXXXXXXXXXXXX
recipe:351583444167656299610202XXXXXXXXXXXX
order:351583444167656299610202XXXXXXXXXXXX

En caso que deseemos hacer las llamadas para que afecten a todos los libros de elaboraciones finales debemos especificar all en recipe

rememberme:aGVucnkudXBzYWxsLmRAZXXXXXXXXXXXXXXXXXX
recipe:all
order:351583444167656299610202XXXXXXXXXXXX

1.4. Rest API : Recuperar las agrupaciones

Para recuperar los agrupaciones

GET: 
https://www.tspoonlab.com/recipes/api/listMenusPagedEx

Podemos pasar los siguentes request params

  1. start (int). Número de la primera fila a retornar. Es obligatorio

  2. rows (int). Número de filas a retornar. Es obligatorio

  3. filter (String). Cadena para filtrar los ingredientes. Es opcional

Retorna

retorna una List<EntityBaseMenu> 

EntityBaseMenu {
String id;
String descr;
String codi;
String altDescr;
String date;
Date dateGenerated;
boolean template;
Double pax;
}

Donde:

  1. id es el identificador de la agrupación

  2. descr es el nombre de la agrupación

  3. codi es el código de la agrupación

  4. altDescr es el nombre alternativo de la agrupación

  5. date y dateGenerated la fecha de la agrupación en formato texto o en formato Date.

  6. template nos indica si la agrupación es una plantilla

  7. pax el número de comensales para el que hemos definido la agrupación

1.5. Rest API : Recuperar una agrupación

GET: 
https://www.tspoonlab.com/recipes/api/menu/ext/{idMenu}

donde

idMenu es el identificador de la agrupación. Se corresponde al campo id de EntityBaseMenu de la llamada anterior

Retorna

MenuExt  {

String id;
String descr;
String altDescr;
String codi;
boolean template;
Date date;
String dateFormatted;
Double pax;


private Double costMin;
private Double costMax;
private Double costAvg;
private List<MenuGroupExt> listMenuGroup;

}

id, descr, altDescr, codi, template, date, dateFormatted y pax toman los mismos valores que los obtenidos en EntityBaseMenu

costMin, costMax, costAvg son los costes mínimo, máximo y medio de la agrupación

listMenuGroup es la lista de secciones dentro de la agrupación

MenuGroupExt {
String id;
String descr;
String comment;
Double costMin;
Double costMax;
Double costAvg;
List<MenuGroupComponentExt> listMenuGroupComponent;
int typeMenuGroup;
Short numSelected;
}

id es el identificador de la sección

descr es la descripción de la sección

comment es el comentario de la sección.

costMin, costMax, costAvg son el coste mínimo, máximo y medio de la agrupación

En las secciones de las agrupaciones podemos tener varias opciones donde se indica si se incluyen todos los platos o se deben seleccionar algunos.

typeMenuGroup puede tomar los siguientes valores

short allIncluded = 0;
short chooseOne = 1;
short chooseMoreThanOne = 2;
short chooseMoreThanOneRepeated = 3;

allincluded es que se servirán todas las elaboraciones de la sección

chooseOne el cliente escogerá solo una de las elaboraciones de la sección

chooseMoreThanOne el cliente escogerá n elaboraciones de la sección

chooseMoreThanOneRepeated el cliente escogerá n elaboraciones de la sección pero puede escoger más de una vez la misma elaboración

numSelelected es el número de elaboraciones a escoger. Solo tiene sentido para chooseMoreThanOne o chooseMoreThanOneRepeated

MenuGroupComponentExt {

String id;
String idComponent;
String descrComponent;

String idUnit;
String descrUnit;

String comment;
Double quantity;
Double cost;

}

Donde id es el identificador de la elaboración dentro de la sección

idComponent y descrComponent es la elaboración

idUnit, descrUnit es la unidad en que se expresa la elaboración

comment comentario

quantity es la cantidad de la elaboración para los pax definidos en la agrupación

cost es el coste de la elaboración

1.6. Rest API : Crear una agrupación

Para crear una agrupación debemos hacer esta llamada

POST: 
https://www.tspoonlab.com/recipes/api/menu/no/groups

Pasando en el request body la siguiente estructura

NewMenu {

String descr;
String altDescr;
String comment;
String codi;
Date date;
Boolean template;
Double pax;
}

Donde

descr es el nombre de la agrupación

altDescr el nombre alternativo

comment comentario

codi código de la agrupacion

date fecha de la agrupación. Este campo es opcional

template true si se trata de una plantilla

pax el numero de comensales para el que definimos la agrupación

Retorna una clase del tipo idWrapper con el identificador del nuevo menú creado

class IdWrapper {
String id;
}

1.7. Rest API : Añadir elaboraciones a la agrupación creada

PUT: 
https://www.tspoonlab.com/recipes/api/menu/{idMenu}/components

Pasaremos el idMenu obtenido en la creación de la agrupación de la llamada anterior

Primero crearemos las secciones


class NewMenuGroupWrapper {

List<NewMenuGroup> menuGroups;
}

class NewMenuGroup {

String descr;
String comment;
short typeMenuGroup;
Short numSelected;
int position;

List<NewMenuGroupComponent> listMenuGroupComponent;

}

descr nombre de la sección

comment comentario de la sección

typeMenuGroup toma los valores

short allIncluded = 0;
short chooseOne = 1;
short chooseMoreThanOne = 2;
short chooseMoreThanOneRepeated = 3;

numSelelected es el número de elaboraciones a escoger. Solo tiene sentido para chooseMoreThanOne o chooseMoreThanOneRepeated. Para las otras opciones null;

position nos indica el orden de las secciones.

listMenuGroupComponent es la lista de elaboraciones de la sección

class NewMenuGroupComponent {


String idComponent;
String idUnit;
Double quantity;
String comment;
int position;
}

Donde idComponent es el identificador de la elaboración

idUnit identificador de la unidad

quantity cantidad de la elaboración para los pax definidos en la agrupación

comment comentario

position orden de la elaboración dentro de la sección

1.8. Rest API : Elimnar una agrupación

Para eliminar una agrupación

DELETE: 
https://www.tspoonlab.com/recipes/api/menu/{idMenu}

Pasando el identificador

¿Ha quedado contestada tu pregunta?