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
start (int). Número de la primera fila a retornar. Es obligatorio
rows (int). Número de filas a retornar. Es obligatorio
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:
id es el identificador de la agrupación
descr es el nombre de la agrupación
codi es el código de la agrupación
altDescr es el nombre alternativo de la agrupación
date y dateGenerated la fecha de la agrupación en formato texto o en formato Date.
template nos indica si la agrupación es una plantilla
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