diff --git "a/PULL_REQUEST_TEMPLATE.md\t" "b/PULL_REQUEST_TEMPLATE.md\t" index 9a4d861..3d4df54 100644 --- "a/PULL_REQUEST_TEMPLATE.md\t" +++ "b/PULL_REQUEST_TEMPLATE.md\t" @@ -2,16 +2,16 @@ Solución al reto 04 de Escuela de JavaScript -Nombre: -Usuario Platzi: +Nombre: Alejandro Avila Guerrero +Usuario Platzi: alejandroavilaguerrero ## GRUPO - [ ] Martes - [ ] Miercoles -- [ ] Jueves +- [+] Jueves ## Reto: - - [ ] Primer problema - - [ ] Segundo problema - - [ ] Tercer problema - - [ ] Cuarto Problema (Opcional) \ No newline at end of file + - [+] 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..9bfd017 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,12 @@ +{ + "name": "escuelajs-reto-04", + "version": "1.0.0", + "lockfileVersion": 1, "requires": true, + "dependencies": { + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + } + } +} diff --git a/package.json b/package.json index bf060d5..540620b 100644 --- a/package.json +++ b/package.json @@ -21,4 +21,4 @@ "url": "https://github.com/platzi/escuelajs-reto-04/issues" }, "homepage": "https://github.com/platzi/escuelajs-reto-04#readme" -} \ No newline at end of file +} diff --git a/src/index.js b/src/index.js index 4c965e7..8ce5f0c 100644 --- a/src/index.js +++ b/src/index.js @@ -1,12 +1,43 @@ +const XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; + +const urlApi = 'https://us-central1-escuelajs-api.cloudfunctions.net/orders' +const xhttp = new XMLHttpRequest() +let orderCount =[0, 0, 0, 0, 0]; +let ordersTable = [one=[], two=[], three=[], four=[], five=[]] + const orders = (time, product, table) => { console.log(`### Orden: ${product} para ${table}`); + let n = table.charAt(table.length-1) + ordersTable[n-1][orderCount[n-1]]= product + orderCount[n-1]++ return new Promise((resolve, reject) => { - setTimeout(() => { - resolve(`=== Pedido servido: ${product}, tiempo de preparación ${time}ms para la ${table}`); - }, time); + if (resolve){ + setTimeout(() => { + if(orderCount[n-1] === 1){ + resolve(`=== Pedido servido: ${ordersTable[n-1].map((order)=>order)}, tiempo de preparación ${time}ms para la ${table}`); + orderCount[n-1]=0 + }else orderCount[n-1]-- + + }, time); + }else reject(new Error('Error al ejecutar orders =(')) }); } +const fetchOrders = (url) =>{ + xhttp.open('GET', url, false) + return new Promise((response, reject) => { + xhttp.onreadystatechange = () => { + if (xhttp.readyState === 4){ + if (xhttp.status === 200){ + const res = JSON.parse(xhttp.responseText) + return response(res) + }else return reject(new Error('Error al ejecutar fetch =(')) + } + } + xhttp.send() + }) +} + const menu = { hamburger: 'Combo Hamburguesa', hotdog: 'Combo Hot Dogs', @@ -15,10 +46,57 @@ const menu = { const table = ['Mesa 1', 'Mesa 2', 'Mesa 3', 'Mesa 4', 'Mesa 5']; +const randomTime = () => Math.floor(Math.random() * (8000 - 1000) + 1000) + const waiter = () => { - orders(6000, menu.hamburger, table[3]) + orders(randomTime(), menu.hamburger, table[3]) .then((res) => console.log(res)) .catch((err) => console.error(err)); }; -waiter(); +const waiterTwo = () => { + orders(randomTime(), menu.hotdog, table[0]) + .then((res) => console.log(res)) + .catch((err) => console.error(err)) + orders(randomTime(), menu.pizza, table[2]) + .then((res) => console.log(res)) + .catch((err) => console.error(err)) +} + +const waiterThree = () => { + orders(randomTime(), menu.hotdog, table[1]) + .then((res) =>console.log(res)) + .catch((err) => console.error(err)) + orders(randomTime(), menu.pizza, table[1]) + .then((res) => console.log(res)) + .catch((err) => console.error(err)) + orders(randomTime(), menu.hotdog, table[1]) + .then((res) => console.log(res)) + .catch((err) => console.error(err)) +} + +const waiterFour = async(url) => { +try{ + const pedido1 = await fetchOrders(url) + orders(randomTime(), pedido1.data, table[4]) + .then((res) => console.log(res)) + .catch((err) => console.error(err)) + const pedido2 = await fetchOrders(url) + orders(randomTime(), pedido2.data, table[4]) + .then((res) => console.log(res)) + .catch((err) => console.error(err)) + const pedido3 = await fetchOrders(url) + orders(randomTime(), pedido3.data, table[4]) + .then((res) => console.log(res)) + .catch((err) => console.error(err)) + const pedido4 = await fetchOrders(url) + orders(randomTime(), pedido4.data, table[4]) + .then((res) => console.log(res)) + .catch((err) => console.error(err)) +}catch (error) {console.log(error)} +} + +waiter() +waiterTwo() +waiterThree() +waiterFour(urlApi) \ No newline at end of file