diff --git "a/PULL_REQUEST_TEMPLATE.md\t" "b/PULL_REQUEST_TEMPLATE.md\t" deleted file mode 100644 index 9a4d861..0000000 --- "a/PULL_REQUEST_TEMPLATE.md\t" +++ /dev/null @@ -1,17 +0,0 @@ -## DESCRIPTION - -Solución al reto 04 de Escuela de JavaScript - -Nombre: -Usuario Platzi: - -## GRUPO -- [ ] Martes -- [ ] Miercoles -- [ ] Jueves - -## Reto: - - [ ] Primer problema - - [ ] Segundo problema - - [ ] Tercer problema - - [ ] Cuarto Problema (Opcional) \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0844706 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "escuelajs-reto-04", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + } + } +} diff --git a/package.json b/package.json index bf060d5..b4101bc 100644 --- a/package.json +++ b/package.json @@ -20,5 +20,8 @@ "bugs": { "url": "https://github.com/platzi/escuelajs-reto-04/issues" }, - "homepage": "https://github.com/platzi/escuelajs-reto-04#readme" -} \ No newline at end of file + "homepage": "https://github.com/platzi/escuelajs-reto-04#readme", + "dependencies": { + "node-fetch": "^2.6.0" + } +} diff --git a/src/index.js b/src/index.js index 4c965e7..787a455 100644 --- a/src/index.js +++ b/src/index.js @@ -1,8 +1,28 @@ -const orders = (time, product, table) => { +const fetch = require("node-fetch"); + +const maximo=8000; +const minimo=1000; +const randomTime=(maximo, minimo)=>Math.round(Math.random()*(maximo-minimo)+minimo); + +const orders = (time,product,table) => { console.log(`### Orden: ${product} para ${table}`); return new Promise((resolve, reject) => { + let Timing=randomTime(maximo, minimo); + setTimeout(() => { + let working=true; + if(working) resolve(`=== Pedido servido: ${product}, tiempo de preparación ${Timing}ms para la ${table}`); + else reject(`El pedido no pudo ser preparado`); + }, time); + }); +} + +const pickup_orders = (time, product, table) => { + return new Promise((resolve, reject) => { + let Timing=randomTime(maximo, minimo); setTimeout(() => { - resolve(`=== Pedido servido: ${product}, tiempo de preparación ${time}ms para la ${table}`); + let working=true; + if(working) resolve(`=== Pedido retirado: ${product}, tiempo de retiro ${Timing}ms para la ${table}`); + else reject(`El pedido no pudo ser retirado`); }, time); }); } @@ -21,4 +41,66 @@ const waiter = () => { .catch((err) => console.error(err)); }; +const waiter2=()=>{ + pickup_orders(6000, menu.hotdog, table[0]) + .then((res) =>{ + console.log(res) + return pickup_orders(6000, menu.pizza,table[2]) + }) + .then((res) => console.log(res)) + .catch((err) => console.error(err)); +} + +const waiter3=()=>{ + const pickup_orders2=async()=>{ + try{ + order=[menu.hotdog, menu.pizza, menu.hotdog] + const promises=order.map((product)=>orders(6000, product, table[1])); + const alertpickup=await Promise.all(promises); + console.log(alertpickup); + console.log(`Los pedidos para la ${table[1]} ya estan listos para ser retirados`); + const finalpromises=order.map((product)=>pickup_orders(6000, product, table[1])); + const pickup=await Promise.all(finalpromises); + console.log(pickup); + }catch(error){ + onerror(error) + } + } + pickup_orders2(); +} + +const fetchOrders=async()=>{ + try{ + n=0; + let newarrayorder = []; + while(n<4){ + n++; + let url = 'https://us-central1-escuelajs-api.cloudfunctions.net/orders'; + const response = await fetch(url); + const commits = await response.json(); + const answer=commits.data; + newarrayorder.push(answer); + } + console.log(newarrayorder); + const promises=newarrayorder.map((product)=>orders(6000, product, table[3])); + const alertpickup=await Promise.all(promises); + console.log(alertpickup); + console.log(`Los pedidos para la ${table[3]} ya estan listos para ser retirados`); + const finalpromises=newarrayorder.map((product)=>pickup_orders(6000, product, table[1])); + const pickup=await Promise.all(finalpromises); + console.log(pickup); + }catch(error){ + onerror(); + } +} + +waiter4=()=>{ + fetchOrders(); +} + +const onerror=()=>console.log(`No se pudo retirar los pedidos solicitados`); + waiter(); +waiter2(); +waiter3(); +waiter4(); \ No newline at end of file