From 5e6cddc076c312b2c7a856e833beec741318c2bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaume=20Sol=C3=ADs?= Date: Thu, 8 Feb 2024 12:27:20 +0100 Subject: [PATCH 1/4] =?UTF-8?q?A=C3=B1adidos=20los=20cambios=20para=20util?= =?UTF-8?q?izar=20Paypal=20y=20para=20acabar=20el=20ciclo=20de=20compra?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 11 +- api/.env.example | 6 +- api/controller/payment/payment.controller.js | 146 ++ .../{ => product}/product.controller.js | 21 +- api/controller/product/products.json | 1997 +++++++++++++++++ api/controller/products.json | 1974 ---------------- .../provinces/provinces.controller.js | 23 + api/db/db.js | 36 +- api/index.js | 23 +- api/package.json | 5 +- package-lock.json | 407 ++-- package.json | 4 +- src/components/@inputs/Calendar.vue | 49 +- src/components/@inputs/Example/CalendarEx.vue | 62 - .../@inputs/Example/PostalCodeEx.vue | 62 - src/components/@inputs/PostalCode.vue | 49 +- src/components/@inputs/SortSelect.vue | 2 +- src/components/header/HeaderPrimary.vue | 4 +- src/components/header/HeaderSecondary.vue | 4 +- src/components/header/UserArea.vue | 18 +- .../carousel/VerticalCarouselImgs.vue | 7 +- .../stripe/StripeCheckoutComponent.vue | 65 - src/components/swiper/Swiper.vue | 4 - src/components/ui/Card.vue | 7 +- src/components/ui/Chat.vue | 4 +- src/components/ui/MobileNav.vue | 1 - src/components/ui/Modal.vue | 4 +- src/components/ui/QuestionForm.vue | 1 - src/css/app.scss | 23 +- src/hooks/useCheckoutForm.js | 106 +- src/hooks/useLocalStorage.js | 25 +- src/hooks/usePostalCalendar.js | 296 ++- src/hooks/useProductPage.js | 51 - src/pages/CategoryPage.vue | 149 +- src/pages/CheckoutErrorPage.vue | 22 + src/pages/CheckoutPage.vue | 31 +- src/pages/CheckoutSuccessPage.vue | 313 +++ src/pages/ExamplePage.vue | 21 - src/pages/HomePage.vue | 8 +- src/pages/ProductPage.vue | 119 +- src/router/routes.js | 17 +- src/stores/cart.js | 270 +-- src/stores/forms.js | 11 +- src/stores/modalStore.js | 3 +- src/stores/rangePrice.js | 1 - src/utils/zod/schemas/checkoutSchema.js | 10 +- src/utils/zod/schemas/rangePriceSchema.js | 4 +- 47 files changed, 3482 insertions(+), 2994 deletions(-) create mode 100644 api/controller/payment/payment.controller.js rename api/controller/{ => product}/product.controller.js (84%) create mode 100644 api/controller/product/products.json delete mode 100644 api/controller/products.json create mode 100644 api/controller/provinces/provinces.controller.js delete mode 100644 src/components/@inputs/Example/CalendarEx.vue delete mode 100644 src/components/@inputs/Example/PostalCodeEx.vue delete mode 100644 src/components/stripe/StripeCheckoutComponent.vue delete mode 100644 src/hooks/useProductPage.js create mode 100644 src/pages/CheckoutErrorPage.vue create mode 100644 src/pages/CheckoutSuccessPage.vue delete mode 100644 src/pages/ExamplePage.vue diff --git a/.vscode/settings.json b/.vscode/settings.json index 2c9288b..f6fae2a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -23,7 +23,6 @@ "source.fixAll.eslint", "source.fixAll.stylelint" ], - "files.exclude": { "**/.git": true, "**/.svn": true, @@ -61,11 +60,6 @@ "terminal.integrated.enableImages": true, "figma.autocompleteBlocks": true, "figma.assetExportDirectory": "src/assets", - "editor.codeActionsOnSave": [ - "source.addMissingImports", - "source.organizeImports", - "source.fixAll.eslint" - ], "gitlens.gitCommands.skipConfirmations": ["fetch:command", "switch:command"], "diffEditor.ignoreTrimWhitespace": false, "svg.preview.mode": "svg", @@ -78,8 +72,5 @@ "workbench.tree.indent": 16, "window.zoomLevel": -1, "git.ignoreRebaseWarning": true, - "editor.largeFileOptimizations": false, - "[javascript]": { - "editor.defaultFormatter": "vscode.typescript-language-features" - } + "editor.largeFileOptimizations": false } diff --git a/api/.env.example b/api/.env.example index 5418d4b..a6af16c 100644 --- a/api/.env.example +++ b/api/.env.example @@ -2,4 +2,8 @@ HOST="127.0.0.1" DB_USER="root" DB_PASSWORD="root" PORT ="3306" -DATABASE="floranet" \ No newline at end of file +DATABASE="floranet" +BASE_URL =http://localhost:9100 + +CLIENT_ID="Ab5vEddhdvdJhLUkXtTiS2pe43W6PD1JNKns7XMnlw8FvC31H2VYakyVEHvuFBi2b543QIHiPh8j4FLF" +SECRET_KEY="EAxLf05kp08cvbLgZrqjwdx-NXnhQtnP4Y0B4LHAM_7T9-HOh4RaNTirinWfTV8GR6DJWg9djry5yHfO" \ No newline at end of file diff --git a/api/controller/payment/payment.controller.js b/api/controller/payment/payment.controller.js new file mode 100644 index 0000000..8f1a06a --- /dev/null +++ b/api/controller/payment/payment.controller.js @@ -0,0 +1,146 @@ +const db = require("../../db/db"); +const paypal = require('paypal-rest-sdk'); +const fs = require('fs'); +const path = require('path'); + +class PaymentController { + async Create(req, res) { + + //parâmetros para retornar os produtos que serão comprados + const products = req.body.products + //parameters to return price + const price = req.body.price + let productsIds = '' + for (let i = 0; i < products.length; i++) { + productsIds += `${products[i]}${i === products.length - 1 ? '' : '-'}` + } + + //json for checkout + var payReq = JSON.stringify({ + 'intent': 'sale', + 'redirect_urls': { + 'return_url': `${process.env.BASE_URL}/checkout/success?productsIds=${productsIds}`, + 'cancel_url': `${process.env.BASE_URL}/checkout/error` + }, + 'payer': { + 'payment_method': 'paypal' + }, + 'transactions': [{ + 'amount': { + 'total': price, + 'currency': 'EUR' + }, + 'description': 'This is the payment transaction description.' + }] + }); + + //Starting checkout process and returning sandbox url + try { + let urlRedirect + urlRedirect = await new Promise(async (resolve, reject) => { + paypal.payment.create(payReq, function (error, payment) { + if (error) { + reject(error) + } else { + //capture HATEOAS links + var links = {}; + payment.links.forEach(function (linkObj) { + links[linkObj.rel] = { + 'href': linkObj.href, + 'method': linkObj.method + }; + }) + //if redirect url present, redirect user + if (links.hasOwnProperty('approval_url')) { + resolve(links['approval_url'].href) + } else { + console.error('no redirect URI present'); + } + } + }); + }).then(res => res) + if (urlRedirect) { + return res.status(200).send({ + data: urlRedirect + }) + } + } catch (error) { + return res.status(422).send({ + data: { + message: "Error when starting payment" + } + }) + } + } + + async Success(req, res) { + //Parameters for validating payment and purchased products + const paramns = JSON.parse(req.body.data) + const custumer = paramns.custumer + const productsIds = paramns.productsIds + const productsArray = productsIds.split('-') + const products = productsArray.map(Number) + const _products = await db.getProducts(); + const productsFilter = _products[0].filter((item) => { + if (products.includes(item.id)) { + return item + } + }); + + const paymentId = paramns.paymentId; + const payerId = { 'payer_id': paramns.PayerID }; + + const jsonOrderData = JSON.stringify({ + "paymentId": paymentId, + "custumer": custumer, + "products": productsFilter + }) + + fs.writeFileSync('order.json', jsonOrderData, 'utf-8') + const contentOrder = fs.readFileSync('order.json', 'utf-8'); + //API validation and data + paypal.payment.execute(paymentId, payerId, async function (error, payment) { + if (error) { + console.log(error); + return res.status(422).send({ + data: { + message: "payment not successful" + } + }) + } else { + if (payment.state == 'approved') { + await db.orderData_put(contentOrder); + return res.status(200).send({ + data: { + id: payment.id, + email: payment.payer.payer_info.email, + message: "payment completed successfully", + products: productsFilter + } + }) + } else { + return res.status(422).send({ + data: { + message: "payment not successful" + } + }) + } + } + }); + /* return res.status(200).send({ + data: { + menssage: "sucesso" + } + }) */ + } + + Cancel(req, res) { + return res.status(200).send({ + data: { + menssage: "cancelado" + } + }) + } +} + +module.exports = new PaymentController(); diff --git a/api/controller/product.controller.js b/api/controller/product/product.controller.js similarity index 84% rename from api/controller/product.controller.js rename to api/controller/product/product.controller.js index 69a9b67..c9095f6 100644 --- a/api/controller/product.controller.js +++ b/api/controller/product/product.controller.js @@ -1,4 +1,4 @@ -const db = require("../db/db"); +const db = require("../../db/db"); const productsJson = require("./products.json") @@ -7,28 +7,14 @@ class ProductController { const params = req.query; const _products = await db.getProducts(params.dateExpired, params.postalCode); - let productsFilter = _products[0]; + let productsFilter = _products[0] if (Number(params.recommend)) { - productsFilter = productsFilter.filter(item => item.recommend == Number(params.recommend)) + productsFilter = productsFilter.filter(item => item.recommend == params.recommend) } if (params.type) { productsFilter = productsFilter.filter(item => item.type === params.type) } - /*if (params.postalCode) { - productsFilter = productsFilter.filter(item => item.postalCode === params.postalCode) - } - if (params.dateExpired) { - const dateSearch = new Date(params.dateExpired); - productsFilter = productsFilter.filter(item => { - const dateProduct = new Date(item.dateExpired); - if (dateProduct >= dateSearch) { - return item - } - }) - }*/ - console.log(productsFilter.length); - if (params.minPrice && !params.maxPrice) { productsFilter = productsFilter.filter(item => { @@ -105,6 +91,7 @@ class ProductController { products: products }) */ + return res.status(200).send({ data: productsFilter }) diff --git a/api/controller/product/products.json b/api/controller/product/products.json new file mode 100644 index 0000000..f2e9fb7 --- /dev/null +++ b/api/controller/product/products.json @@ -0,0 +1,1997 @@ +[ + { + "id": 1, + "name": "Guapo Hormigon Coche", + "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients", + "price": "€110", + "specialPrice": "€30", + "isNew": true, + "slug": "978-0-564-03629-5", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/LEAAkIP/640/480", + "https://picsum.photos/seed/tWW7r9y/640/480", + "https://picsum.photos/seed/ed1HW/640/480", + "https://picsum.photos/seed/hwMU6rFVf/640/480", + "https://picsum.photos/seed/fthy4HO/640/480" + ], + "featured": 1 + }, + { + "id": 2, + "name": "Sorprendente Acero Zapatos", + "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients", + "price": "€148", + "specialPrice": "€38", + "isNew": true, + "slug": "978-1-152-71531-8", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/9F4Gs9tG/640/480", + "https://picsum.photos/seed/7dWIlKx/640/480" + ], + "featured": 1 + }, + { + "id": 3, + "name": "Hecho a mano Granito Salchichas", + "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", + "price": "€154", + "specialPrice": "€32", + "isNew": true, + "slug": "978-0-939639-06-9", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/5G6j4B/640/480", + "https://picsum.photos/seed/ktq0EWKE/640/480", + "https://picsum.photos/seed/2yReX1Y3v/640/480", + "https://picsum.photos/seed/sBeAD0CPIL/640/480", + "https://picsum.photos/seed/fSTmo0v/640/480", + "https://picsum.photos/seed/6AktPwt/640/480" + ], + "featured": 1, + "position": 3 + }, + { + "id": 4, + "name": "Inteligente Ladrillo Mesa", + "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", + "price": "€192", + "specialPrice": "€52", + "isNew": false, + "slug": "978-0-15-488432-9", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/49xnfbPm/640/480", + "https://picsum.photos/seed/YKFVDiRHP/640/480", + "https://picsum.photos/seed/mnRfJQoWhu/640/480", + "https://picsum.photos/seed/OCQdrU2/640/480", + "https://picsum.photos/seed/LFyrh/640/480", + "https://picsum.photos/seed/jIMYByiTiM/640/480" + ], + "featured": 1, + "discount": "13" + }, + { + "id": 5, + "name": "Guapo Granito Queso", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€172", + "specialPrice": "€44", + "isNew": true, + "slug": "978-0-464-17797-5", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/fDOau/640/480", + "https://picsum.photos/seed/Uq9IS/640/480", + "https://picsum.photos/seed/GAis1/640/480", + "https://picsum.photos/seed/bDOanv/640/480", + "https://picsum.photos/seed/mxFXEy/640/480", + "https://picsum.photos/seed/9eB5u/640/480" + ], + "featured": 0, + "discount": "13" + }, + { + "id": 6, + "name": "Sorprendente Acero Silla", + "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", + "price": "€119", + "specialPrice": "€37", + "isNew": true, + "slug": "978-0-939372-79-9", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/aLuyW7j/640/480", + "https://picsum.photos/seed/YSrdOnDE/640/480", + "https://picsum.photos/seed/khPtA9Ks2U/640/480", + "https://picsum.photos/seed/F3nBBoKt/640/480" + ], + "featured": 1, + "discount": "12" + }, + { + "id": 7, + "name": "Sabroso Metal Pantalones", + "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", + "price": "€129", + "specialPrice": "€27", + "isNew": false, + "slug": "978-0-239-62256-3", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/91hQmvZ/640/480", + "https://picsum.photos/seed/GyaRL0xwN5/640/480", + "https://picsum.photos/seed/JcwRJKm/640/480", + "https://picsum.photos/seed/rcAmxwCU/640/480", + "https://picsum.photos/seed/MTGMY4TWg/640/480" + ], + "featured": 0, + "discount": "14" + }, + { + "id": 8, + "name": "Sabroso Acero Toallas", + "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", + "price": "€31", + "specialPrice": "€21", + "isNew": true, + "slug": "978-1-75242-455-9", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/JV2kC0wIo/640/480", + "https://picsum.photos/seed/hIUh3Y/640/480", + "https://picsum.photos/seed/KS8meR/640/480", + "https://picsum.photos/seed/CyBJlY1LFa/640/480", + "https://picsum.photos/seed/Uzej9G7/640/480", + "https://picsum.photos/seed/iJNco/640/480" + ], + "featured": 0 + }, + { + "id": 9, + "name": "Fantástico Algodón Queso", + "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", + "price": "€47", + "specialPrice": "€25", + "isNew": false, + "slug": "978-1-970256-25-3", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/ECDBR/640/480", + "https://picsum.photos/seed/ooc0bH4Je/640/480", + "https://picsum.photos/seed/1fFm6/640/480", + "https://picsum.photos/seed/wo8aoRpwm/640/480" + ], + "featured": 0 + }, + { + "id": 10, + "name": "Pequeño Metal Coche", + "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", + "price": "€27", + "specialPrice": "€32", + "isNew": false, + "slug": "978-0-88064-286-6", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/MYSsRYh/640/480", + "https://picsum.photos/seed/HDLS07/640/480", + "https://picsum.photos/seed/F5vxB48W/640/480" + ], + "featured": 1 + }, + { + "id": 11, + "name": "Sorprendente Madera Camiseta", + "description": "The Football Is Good For Training And Recreational Purposes", + "price": "€121", + "specialPrice": "€46", + "isNew": true, + "slug": "978-0-685-96061-5", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/rIsdXwOg/640/480", + "https://picsum.photos/seed/scW9B/640/480", + "https://picsum.photos/seed/vN6rF8Pf/640/480", + "https://picsum.photos/seed/XFzSJZp6/640/480" + ], + "featured": 0, + "discount": "10" + }, + { + "id": 12, + "name": "Rústico Plástico Salchichas", + "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", + "price": "€162", + "specialPrice": "€20", + "isNew": false, + "slug": "978-0-9671732-5-2", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/uv0ZRq/640/480", + "https://picsum.photos/seed/pgz4EjW3X6/640/480" + ], + "featured": 0, + "discount": "8" + }, + { + "id": 13, + "name": "Artesanal Granito Queso", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€79", + "specialPrice": "€50", + "isNew": true, + "slug": "978-1-031-40047-2", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/T4d7S6dGVR/640/480", + "https://picsum.photos/seed/nOLtZUm/640/480", + "https://picsum.photos/seed/T4VDGK/640/480", + "https://picsum.photos/seed/ifReKNfP/640/480", + "https://picsum.photos/seed/oN8XgVQlP/640/480" + ], + "featured": 1 + }, + { + "id": 14, + "name": "Fantástico Algodón Silla", + "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", + "price": "€127", + "specialPrice": "€50", + "isNew": false, + "slug": "978-0-222-07669-4", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/U2ub6Oue/640/480", + "https://picsum.photos/seed/QxVtVh/640/480", + "https://picsum.photos/seed/W4Brb/640/480", + "https://picsum.photos/seed/CdXU3nm/640/480", + "https://picsum.photos/seed/vhLDE/640/480" + ], + "featured": 0 + }, + { + "id": 15, + "name": "Práctico Acero Salchichas", + "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", + "price": "€117", + "specialPrice": "€22", + "isNew": false, + "slug": "978-0-915560-44-8", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/AcDpRVir/640/480", + "https://picsum.photos/seed/hsjVT/640/480", + "https://picsum.photos/seed/7hFos/640/480", + "https://picsum.photos/seed/X07zIG9X/640/480" + ], + "featured": 0, + "discount": "10" + }, + { + "id": 16, + "name": "Fantástico Metal Bicicleta", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€117", + "specialPrice": "€51", + "isNew": true, + "slug": "978-0-7428-9139-5", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/J5ewzbg/640/480", + "https://picsum.photos/seed/NPoVE/640/480", + "https://picsum.photos/seed/UZRJ7RH8/640/480", + "https://picsum.photos/seed/1yfNI/640/480" + ], + "featured": 0 + }, + { + "id": 17, + "name": "Pequeño Madera Pescado", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€32", + "specialPrice": "€42", + "isNew": true, + "slug": "978-1-154-04029-6", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/5Mu2ZhcNil/640/480", + "https://picsum.photos/seed/3to4nLyST/640/480", + "https://picsum.photos/seed/6hEE6Xczl/640/480", + "https://picsum.photos/seed/BxwWDG7VI/640/480", + "https://picsum.photos/seed/Smqxto/640/480", + "https://picsum.photos/seed/lopZaw/640/480" + ], + "featured": 1, + "position": 17, + "discount": "7" + }, + { + "id": 18, + "name": "Genérico Ladrillo Salchichas", + "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016", + "price": "€123", + "specialPrice": "€32", + "isNew": true, + "slug": "978-0-209-20455-3", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/qjNIwJBH/640/480", + "https://picsum.photos/seed/0x9IX/640/480", + "https://picsum.photos/seed/imUsJFU96/640/480", + "https://picsum.photos/seed/HcNySAdgk/640/480", + "https://picsum.photos/seed/ejXmV5/640/480" + ], + "featured": 1, + "position": 18 + }, + { + "id": 19, + "name": "Rústico Metal Queso", + "description": "The Football Is Good For Training And Recreational Purposes", + "price": "€37", + "specialPrice": "€22", + "isNew": true, + "slug": "978-0-16-851049-8", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/gFfzRc/640/480", + "https://picsum.photos/seed/tpxkYDoio/640/480", + "https://picsum.photos/seed/8VnjVJ/640/480", + "https://picsum.photos/seed/szFsAg2/640/480", + "https://picsum.photos/seed/qVSXAPgc/640/480" + ], + "featured": 1, + "position": 19 + }, + { + "id": 20, + "name": "Práctico Acero Coche", + "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", + "price": "€192", + "specialPrice": "€48", + "isNew": true, + "slug": "978-1-5185-8109-0", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/R63EaR/640/480", + "https://picsum.photos/seed/03zfRW/640/480", + "https://picsum.photos/seed/XziIr5Z5e/640/480" + ], + "featured": 1, + "discount": "7" + }, + { + "id": 21, + "name": "Guapo Acero Pollo", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€72", + "specialPrice": "€54", + "isNew": false, + "slug": "978-1-64463-953-5", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/2pTIx7c5t/640/480", + "https://picsum.photos/seed/CmDhFXaW/640/480", + "https://picsum.photos/seed/PEASp1msV/640/480", + "https://picsum.photos/seed/LiACRzF98/640/480", + "https://picsum.photos/seed/Gj0liud0/640/480", + "https://picsum.photos/seed/ECtHJu/640/480" + ], + "featured": 1, + "discount": "6" + }, + { + "id": 22, + "name": "Guapo Plástico Salchichas", + "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", + "price": "€92", + "specialPrice": "€51", + "isNew": true, + "slug": "978-1-5092-8698-0", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/kPC5ZF0LDu/640/480", + "https://picsum.photos/seed/n3KLsXSV/640/480" + ], + "featured": 0, + "discount": "5" + }, + { + "id": 23, + "name": "Genérico Acero Ordenador", + "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients", + "price": "€63", + "specialPrice": "€24", + "isNew": false, + "slug": "978-0-340-13055-1", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/Z4DDGQ73/640/480", + "https://picsum.photos/seed/Sp8RsXfq/640/480", + "https://picsum.photos/seed/cx5e8o/640/480", + "https://picsum.photos/seed/dcxD9/640/480", + "https://picsum.photos/seed/35ReI7Bu/640/480", + "https://picsum.photos/seed/qICF3pqLM/640/480" + ], + "featured": 1, + "discount": "15" + }, + { + "id": 24, + "name": "Sabroso Granito Atún", + "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", + "price": "€78", + "specialPrice": "€46", + "isNew": true, + "slug": "978-0-9692522-3-8", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/Im7jrJbMpc/640/480", + "https://picsum.photos/seed/SNjyA/640/480" + ], + "featured": 1, + "position": 24, + "discount": "7" + }, + { + "id": 25, + "name": "Increible Granito Sopa", + "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", + "price": "€140", + "specialPrice": "€52", + "isNew": true, + "slug": "978-0-08-880628-2", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/y9EQvXvh1t/640/480", + "https://picsum.photos/seed/tLO2DBxZP/640/480", + "https://picsum.photos/seed/0yoZC8/640/480", + "https://picsum.photos/seed/ZBeTVLxlX/640/480", + "https://picsum.photos/seed/meU8GK/640/480" + ], + "featured": 1, + "position": 25, + "discount": "11" + }, + { + "id": 26, + "name": "Fantástico Ladrillo Teclado", + "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", + "price": "€30", + "specialPrice": "€37", + "isNew": false, + "slug": "978-0-00-016789-7", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/hrMgVn2L3O/640/480", + "https://picsum.photos/seed/hKlXL/640/480", + "https://picsum.photos/seed/pApunk/640/480" + ], + "featured": 0, + "discount": "14" + }, + { + "id": 27, + "name": "Rústico Acero Mesa", + "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", + "price": "€81", + "specialPrice": "€60", + "isNew": true, + "slug": "978-0-461-00555-4", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/i2OUSN/640/480", + "https://picsum.photos/seed/NRgbaPt/640/480" + ], + "featured": 0, + "discount": "14" + }, + { + "id": 28, + "name": "Fantástico Plástico Pollo", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€21", + "specialPrice": "€37", + "isNew": true, + "slug": "978-1-0977-2422-2", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/Qr1ra3RTwp/640/480", + "https://picsum.photos/seed/pO9sUU1qK/640/480", + "https://picsum.photos/seed/OyLRPf/640/480" + ], + "featured": 1, + "position": 28 + }, + { + "id": 29, + "name": "Ergonómico Ladrillo Pollo", + "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", + "price": "€116", + "specialPrice": "€55", + "isNew": false, + "slug": "978-1-6535-5279-5", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/sJmrmtVNr4/640/480", + "https://picsum.photos/seed/BD4foRfia/640/480" + ], + "featured": 1 + }, + { + "id": 30, + "name": "Inteligente Algodón Queso", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€137", + "specialPrice": "€50", + "isNew": false, + "slug": "978-0-497-36469-4", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/CiKNv8u/640/480", + "https://picsum.photos/seed/0MG9M/640/480" + ], + "featured": 1, + "position": 30, + "discount": "12" + }, + { + "id": 31, + "name": "Refinado Metal Queso", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€151", + "specialPrice": "€56", + "isNew": true, + "slug": "978-1-4491-3303-0", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/VDsjCtMqu/640/480", + "https://picsum.photos/seed/wg34YD5Rwf/640/480", + "https://picsum.photos/seed/sdtYQd/640/480", + "https://picsum.photos/seed/jeZwOAh/640/480" + ], + "featured": 0, + "position": 31 + }, + { + "id": 32, + "name": "Ergonómico Algodón Sopa", + "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", + "price": "€66", + "specialPrice": "€48", + "isNew": true, + "slug": "978-1-7062-3107-3", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/EyzrvDOS/640/480", + "https://picsum.photos/seed/vaSce/640/480", + "https://picsum.photos/seed/Ougrgz/640/480", + "https://picsum.photos/seed/qZR7hQr/640/480" + ], + "featured": 1, + "discount": "15" + }, + { + "id": 33, + "name": "Genérico Ladrillo Toallas", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€77", + "specialPrice": "€29", + "isNew": false, + "slug": "978-0-7226-8893-9", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/tMbIX5HfV/640/480", + "https://picsum.photos/seed/et4ExAQi7t/640/480" + ], + "featured": 1, + "position": 33 + }, + { + "id": 34, + "name": "Guapo Hormigon Raton", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€146", + "specialPrice": "€51", + "isNew": true, + "slug": "978-0-634-39251-1", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/At8jG/640/480", + "https://picsum.photos/seed/sDBrvZFV/640/480", + "https://picsum.photos/seed/264y6Kb4/640/480", + "https://picsum.photos/seed/Oq1Vg5wKD1/640/480" + ], + "featured": 0, + "position": 34 + }, + { + "id": 35, + "name": "Increible Ladrillo Gorro", + "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", + "price": "€182", + "specialPrice": "€21", + "isNew": false, + "slug": "978-0-278-87699-6", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/ESZ0vh37/640/480", + "https://picsum.photos/seed/3ipst/640/480", + "https://picsum.photos/seed/UtOIJitn/640/480", + "https://picsum.photos/seed/hOe5PJXL4/640/480", + "https://picsum.photos/seed/6YfyMz/640/480" + ], + "featured": 1, + "position": 35, + "discount": "12" + }, + { + "id": 36, + "name": "Práctico Ladrillo Queso", + "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", + "price": "€121", + "specialPrice": "€37", + "isNew": true, + "slug": "978-1-205-79094-1", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/3fU8oSp/640/480", + "https://picsum.photos/seed/hPilFahxJ/640/480" + ], + "featured": 0, + "discount": "11" + }, + { + "id": 37, + "name": "Artesanal Plástico Mesa", + "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", + "price": "€104", + "specialPrice": "€26", + "isNew": false, + "slug": "978-0-622-78623-0", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/9431Z0N/640/480", + "https://picsum.photos/seed/PRB6XG/640/480", + "https://picsum.photos/seed/VXfA7tWk/640/480", + "https://picsum.photos/seed/UC5Eyk/640/480", + "https://picsum.photos/seed/8zu64Vg/640/480" + ], + "featured": 1, + "position": 37, + "discount": "15" + }, + { + "id": 38, + "name": "Sorprendente Algodón Pelota", + "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", + "price": "€187", + "specialPrice": "€58", + "isNew": true, + "slug": "978-0-07-402974-9", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/L95Tq/640/480", + "https://picsum.photos/seed/jGwY6fe7/640/480", + "https://picsum.photos/seed/8HN5lY/640/480", + "https://picsum.photos/seed/55gXWF/640/480" + ], + "featured": 1, + "position": 38, + "discount": "9" + }, + { + "id": 39, + "name": "Increible Acero Bacon", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€178", + "specialPrice": "€42", + "isNew": false, + "slug": "978-1-988183-69-5", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/OG1z8v/640/480", + "https://picsum.photos/seed/zDIWnh/640/480", + "https://picsum.photos/seed/G8K6Y/640/480", + "https://picsum.photos/seed/X2YQlkyK/640/480", + "https://picsum.photos/seed/vJqjt1xGg/640/480" + ], + "featured": 0, + "position": 39 + }, + { + "id": 40, + "name": "Hecho a mano Algodón Patatas fritas", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€39", + "specialPrice": "€39", + "isNew": true, + "slug": "978-0-02-502903-3", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/pWKYUi/640/480", + "https://picsum.photos/seed/SzzSfmXb/640/480", + "https://picsum.photos/seed/wgx6Fqf2/640/480", + "https://picsum.photos/seed/w2KLf9vsn/640/480", + "https://picsum.photos/seed/jjHHEu8jK/640/480", + "https://picsum.photos/seed/oGjUOtwr8/640/480" + ], + "featured": 1, + "position": 40, + "discount": "9" + }, + { + "id": 41, + "name": "Ergonómico Acero Atún", + "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", + "price": "€198", + "specialPrice": "€22", + "isNew": true, + "slug": "978-1-85589-158-6", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/eGJfc4q1T/640/480", + "https://picsum.photos/seed/k91Bz7/640/480" + ], + "featured": 1, + "position": 41 + }, + { + "id": 42, + "name": "Inteligente Metal Queso", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€156", + "specialPrice": "€27", + "isNew": false, + "slug": "978-0-6456549-2-9", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/JgLUcKGPom/640/480", + "https://picsum.photos/seed/sdfLY8h5Ls/640/480" + ], + "featured": 1, + "position": 42, + "discount": "13" + }, + { + "id": 43, + "name": "Artesanal Plástico Zapatos", + "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", + "price": "€190", + "specialPrice": "€45", + "isNew": true, + "slug": "978-1-02-809202-4", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/PRf7tzKU/640/480", + "https://picsum.photos/seed/Y5VyD4/640/480", + "https://picsum.photos/seed/7CBwb/640/480", + "https://picsum.photos/seed/lGr6JNwzxc/640/480", + "https://picsum.photos/seed/8jHMY3HaW/640/480" + ], + "featured": 0 + }, + { + "id": 44, + "name": "Guapa Algodón Ordenador", + "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", + "price": "€64", + "specialPrice": "€57", + "isNew": true, + "slug": "978-1-68323-226-1", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/Ih19wbu/640/480", + "https://picsum.photos/seed/5ThuuBu0/640/480", + "https://picsum.photos/seed/QoQvfsJWQ/640/480", + "https://picsum.photos/seed/Wmb20fxPNP/640/480" + ], + "featured": 1, + "discount": "9" + }, + { + "id": 45, + "name": "Sorprendente Hormigon Zapatos", + "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", + "price": "€22", + "specialPrice": "€30", + "isNew": false, + "slug": "978-1-968802-11-0", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/NOuUUf2/640/480", + "https://picsum.photos/seed/WzMqaJJI/640/480" + ], + "featured": 0, + "position": 45, + "discount": "5" + }, + { + "id": 46, + "name": "Increible Ladrillo Camiseta", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€97", + "specialPrice": "€47", + "isNew": true, + "slug": "978-1-934589-91-5", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/9OWfenO/640/480", + "https://picsum.photos/seed/R9A2KO8r/640/480", + "https://picsum.photos/seed/JYvlA5niJP/640/480", + "https://picsum.photos/seed/IOhmM955/640/480" + ], + "featured": 0, + "position": 46 + }, + { + "id": 47, + "name": "Sabroso Hormigon Patatas fritas", + "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", + "price": "€61", + "specialPrice": "€46", + "isNew": false, + "slug": "978-0-8463-7330-8", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/8xeXyBLh/640/480", + "https://picsum.photos/seed/ANqlg/640/480", + "https://picsum.photos/seed/01fnkQB/640/480" + ], + "featured": 0, + "position": 47 + }, + { + "id": 48, + "name": "Inteligente Acero Raton", + "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", + "price": "€144", + "specialPrice": "€22", + "isNew": false, + "slug": "978-1-4877-5258-3", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/EZqWI8H/640/480", + "https://picsum.photos/seed/g121Kc/640/480", + "https://picsum.photos/seed/pQXxeZ9/640/480", + "https://picsum.photos/seed/mwxZuQ6nU/640/480" + ], + "featured": 0, + "position": 48, + "discount": "13" + }, + { + "id": 49, + "name": "Guapo Metal Queso", + "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016", + "price": "€33", + "specialPrice": "€50", + "isNew": false, + "slug": "978-1-76643-868-9", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/Mdv0GLuPC/640/480", + "https://picsum.photos/seed/MRltK/640/480", + "https://picsum.photos/seed/83n5YVKd/640/480", + "https://picsum.photos/seed/ebkF5/640/480", + "https://picsum.photos/seed/OoaIaYL/640/480", + "https://picsum.photos/seed/uFVKu4i/640/480" + ], + "featured": 0 + }, + { + "id": 50, + "name": "Práctico Acero Ensalada", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€54", + "specialPrice": "€36", + "isNew": true, + "slug": "978-0-17-032826-5", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/0W3kLsvq48/640/480", + "https://picsum.photos/seed/11wFl/640/480", + "https://picsum.photos/seed/O78YvvqwA3/640/480", + "https://picsum.photos/seed/FGReuQgb/640/480" + ], + "featured": 0, + "discount": "7" + }, + { + "id": 51, + "name": "Guapo Madera Pescado", + "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", + "price": "€68", + "specialPrice": "€32", + "isNew": false, + "slug": "978-1-77154-647-8", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/4ZQQbYb5O3/640/480", + "https://picsum.photos/seed/6H29Cs/640/480", + "https://picsum.photos/seed/8OtUIagf/640/480", + "https://picsum.photos/seed/9Jwjtl6T/640/480" + ], + "featured": 0 + }, + { + "id": 52, + "name": "Guapa Acero Ensalada", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€57", + "specialPrice": "€24", + "isNew": false, + "slug": "978-1-7398942-0-7", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/TEYOLzMxK/640/480", + "https://picsum.photos/seed/uyCfS/640/480", + "https://picsum.photos/seed/zHd13CDHy/640/480", + "https://picsum.photos/seed/kUxnrlYJaT/640/480" + ], + "featured": 0 + }, + { + "id": 53, + "name": "Genérico Ladrillo Toallas", + "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", + "price": "€126", + "specialPrice": "€30", + "isNew": true, + "slug": "978-0-231-46645-5", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/cwvSsJm2/640/480", + "https://picsum.photos/seed/wojCCrdA6/640/480", + "https://picsum.photos/seed/qXfndE/640/480", + "https://picsum.photos/seed/dXPYXZ/640/480" + ], + "featured": 1, + "discount": "10" + }, + { + "id": 54, + "name": "Guapa Acero Raton", + "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", + "price": "€198", + "specialPrice": "€43", + "isNew": true, + "slug": "978-1-120-68725-8", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/RRM6936/640/480", + "https://picsum.photos/seed/fqeIP8F5wK/640/480" + ], + "featured": 1, + "position": 54, + "discount": "8" + }, + { + "id": 55, + "name": "Guapa Madera Pelota", + "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", + "price": "€67", + "specialPrice": "€43", + "isNew": true, + "slug": "978-0-651-31352-0", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/aNBmy7p/640/480", + "https://picsum.photos/seed/nf4w0mU/640/480", + "https://picsum.photos/seed/YQEOVIrkE/640/480", + "https://picsum.photos/seed/ugruE7yh02/640/480" + ], + "featured": 1 + }, + { + "id": 56, + "name": "Inteligente Algodón Silla", + "description": "The Football Is Good For Training And Recreational Purposes", + "price": "€131", + "specialPrice": "€52", + "isNew": true, + "slug": "978-1-56277-598-8", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/DknAAXqqqe/640/480", + "https://picsum.photos/seed/DJrEOpg9LT/640/480", + "https://picsum.photos/seed/ZlCOA/640/480", + "https://picsum.photos/seed/P0l09NRWAB/640/480", + "https://picsum.photos/seed/4pslx9R0W/640/480" + ], + "featured": 0 + }, + { + "id": 57, + "name": "Pequeño Ladrillo Raton", + "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", + "price": "€45", + "specialPrice": "€30", + "isNew": true, + "slug": "978-1-78857-382-5", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/vCQywQG5x3/640/480", + "https://picsum.photos/seed/1bnQZbo/640/480", + "https://picsum.photos/seed/4FaEuS/640/480" + ], + "featured": 1 + }, + { + "id": 58, + "name": "Guapa Madera Silla", + "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", + "price": "€196", + "specialPrice": "€33", + "isNew": true, + "slug": "978-0-07-549789-9", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/wFfnaczJs/640/480", + "https://picsum.photos/seed/h7tpUz/640/480" + ], + "featured": 0, + "position": 58 + }, + { + "id": 59, + "name": "Increible Ladrillo Pantalones", + "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", + "price": "€157", + "specialPrice": "€58", + "isNew": true, + "slug": "978-1-6606-8008-5", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/wSNlqqGDnj/640/480", + "https://picsum.photos/seed/akco17bAP/640/480" + ], + "featured": 1, + "discount": "8" + }, + { + "id": 60, + "name": "Sorprendente Granito Bacon", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€199", + "specialPrice": "€25", + "isNew": true, + "slug": "978-0-214-77678-6", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/UA0IV5/640/480", + "https://picsum.photos/seed/2u1Jq/640/480", + "https://picsum.photos/seed/CZlhlpt/640/480", + "https://picsum.photos/seed/G4vixO3mGA/640/480" + ], + "featured": 0, + "position": 60 + }, + { + "id": 61, + "name": "Guapa Algodón Coche", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€85", + "specialPrice": "€58", + "isNew": false, + "slug": "978-1-61571-806-1", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/ruBW8/640/480", + "https://picsum.photos/seed/s8rox1aZdu/640/480", + "https://picsum.photos/seed/iZoijP/640/480" + ], + "featured": 0, + "position": 61, + "discount": "14" + }, + { + "id": 62, + "name": "Ergonómico Acero Pelota", + "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016", + "price": "€126", + "specialPrice": "€50", + "isNew": true, + "slug": "978-0-9942805-8-9", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/UYdfPT/640/480", + "https://picsum.photos/seed/LwNZQ/640/480", + "https://picsum.photos/seed/UFJqhi/640/480" + ], + "featured": 0 + }, + { + "id": 63, + "name": "Guapo Plástico Zapatos", + "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", + "price": "€115", + "specialPrice": "€50", + "isNew": true, + "slug": "978-1-62601-482-4", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/BuF3co/640/480", + "https://picsum.photos/seed/7E5G7q/640/480", + "https://picsum.photos/seed/L9pPIL4Ew7/640/480", + "https://picsum.photos/seed/ImdLeF9GM/640/480", + "https://picsum.photos/seed/zpR1qakud/640/480", + "https://picsum.photos/seed/k0uzXuaQ9X/640/480" + ], + "featured": 0, + "position": 63 + }, + { + "id": 64, + "name": "Práctico Plástico Queso", + "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016", + "price": "€124", + "specialPrice": "€38", + "isNew": true, + "slug": "978-1-034-57523-8", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/OnpkS/640/480", + "https://picsum.photos/seed/AKAUU/640/480", + "https://picsum.photos/seed/TTXVK/640/480", + "https://picsum.photos/seed/sARKu5/640/480", + "https://picsum.photos/seed/vGpRqpwbBH/640/480", + "https://picsum.photos/seed/i8qOz/640/480" + ], + "featured": 1, + "position": 64, + "discount": "13" + }, + { + "id": 65, + "name": "Sabroso Plástico Mesa", + "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", + "price": "€181", + "specialPrice": "€45", + "isNew": true, + "slug": "978-1-6947-8008-9", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/OQmCabD/640/480", + "https://picsum.photos/seed/gHdcbw01CI/640/480", + "https://picsum.photos/seed/mqIq6dy/640/480" + ], + "featured": 0, + "position": 65, + "discount": "15" + }, + { + "id": 66, + "name": "Increible Granito Ensalada", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€136", + "specialPrice": "€52", + "isNew": false, + "slug": "978-1-62120-910-2", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/8Mg12H88uS/640/480", + "https://picsum.photos/seed/1zQQzEo4/640/480", + "https://picsum.photos/seed/XbMb1AE/640/480" + ], + "featured": 0, + "discount": "5" + }, + { + "id": 67, + "name": "Refinado Metal Coche", + "description": "The Football Is Good For Training And Recreational Purposes", + "price": "€120", + "specialPrice": "€22", + "isNew": true, + "slug": "978-0-9719632-9-0", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/Tal0f7Iz/640/480", + "https://picsum.photos/seed/eK9RYs3o/640/480", + "https://picsum.photos/seed/zFnAPlqRH/640/480", + "https://picsum.photos/seed/6eaXZbEic/640/480", + "https://picsum.photos/seed/rCiuA/640/480" + ], + "featured": 0, + "position": 67 + }, + { + "id": 68, + "name": "Práctico Ladrillo Bicicleta", + "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", + "price": "€92", + "specialPrice": "€28", + "isNew": false, + "slug": "978-1-354-15563-9", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/mfame2/640/480", + "https://picsum.photos/seed/QLdO8Pmrt/640/480", + "https://picsum.photos/seed/6tP9k/640/480", + "https://picsum.photos/seed/JwLDg09x/640/480", + "https://picsum.photos/seed/K9c0oLk/640/480", + "https://picsum.photos/seed/w4UxRRGVu/640/480" + ], + "featured": 1, + "discount": "10" + }, + { + "id": 69, + "name": "Hecho a mano Plástico Pelota", + "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", + "price": "€152", + "specialPrice": "€40", + "isNew": false, + "slug": "978-0-89133-735-5", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/buHA8/640/480", + "https://picsum.photos/seed/KuFBo/640/480" + ], + "featured": 1 + }, + { + "id": 70, + "name": "Increible Plástico Zapatos", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€153", + "specialPrice": "€46", + "isNew": false, + "slug": "978-1-05-703115-5", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/Bv4ya/640/480", + "https://picsum.photos/seed/833dgigNh/640/480", + "https://picsum.photos/seed/VVuT5/640/480" + ], + "featured": 1, + "position": 70, + "discount": "10" + }, + { + "id": 71, + "name": "Rústico Ladrillo Queso", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€68", + "specialPrice": "€40", + "isNew": true, + "slug": "978-1-996167-16-8", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/RR529G8AQ/640/480", + "https://picsum.photos/seed/IyoPdm/640/480", + "https://picsum.photos/seed/d4XQP6rZD/640/480" + ], + "featured": 0, + "discount": "6" + }, + { + "id": 72, + "name": "Rústico Algodón Salchichas", + "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", + "price": "€172", + "specialPrice": "€50", + "isNew": false, + "slug": "978-1-0730-2232-8", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/Zo3HaYLZK/640/480", + "https://picsum.photos/seed/jQ3IRqF28E/640/480" + ], + "featured": 1, + "discount": "14" + }, + { + "id": 73, + "name": "Sorprendente Granito Guantes", + "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016", + "price": "€91", + "specialPrice": "€39", + "isNew": false, + "slug": "978-1-02-320083-7", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/7tyjUczX/640/480", + "https://picsum.photos/seed/vPqCyxn7CJ/640/480", + "https://picsum.photos/seed/SmZOD/640/480", + "https://picsum.photos/seed/N3UNwQd7D/640/480", + "https://picsum.photos/seed/6Loa6r/640/480", + "https://picsum.photos/seed/JoaUtj/640/480" + ], + "featured": 0, + "position": 73 + }, + { + "id": 74, + "name": "Guapa Acero Pescado", + "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", + "price": "€94", + "specialPrice": "€39", + "isNew": false, + "slug": "978-1-135-86374-6", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/IjknxR/640/480", + "https://picsum.photos/seed/Pr9rO0xp/640/480", + "https://picsum.photos/seed/fbCviRHoG2/640/480", + "https://picsum.photos/seed/jDRtEUn192/640/480", + "https://picsum.photos/seed/aQd3mH2F/640/480", + "https://picsum.photos/seed/se4xRmuPPf/640/480" + ], + "featured": 1 + }, + { + "id": 75, + "name": "Hecho a mano Granito Bicicleta", + "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", + "price": "€107", + "specialPrice": "€51", + "isNew": false, + "slug": "978-1-4649-8562-1", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/tTU60/640/480", + "https://picsum.photos/seed/HWRO43jD/640/480", + "https://picsum.photos/seed/TyTRJ0hpaH/640/480", + "https://picsum.photos/seed/3lMIHw/640/480", + "https://picsum.photos/seed/WLIaOAkn/640/480" + ], + "featured": 1, + "position": 75 + }, + { + "id": 76, + "name": "Práctico Ladrillo Pantalones", + "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", + "price": "€34", + "specialPrice": "€32", + "isNew": false, + "slug": "978-1-390-15421-4", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/Yis3juQ/640/480", + "https://picsum.photos/seed/iVIPYmRU/640/480", + "https://picsum.photos/seed/s7PiT6cj2k/640/480", + "https://picsum.photos/seed/XYcc9/640/480", + "https://picsum.photos/seed/RTBU6ReCS/640/480" + ], + "featured": 1, + "position": 76, + "discount": "8" + }, + { + "id": 77, + "name": "Sorprendente Granito Ordenador", + "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", + "price": "€127", + "specialPrice": "€47", + "isNew": true, + "slug": "978-1-61086-263-9", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/jNaW6TTsz7/640/480", + "https://picsum.photos/seed/YgcK2ET/640/480", + "https://picsum.photos/seed/CPxtcHTI/640/480", + "https://picsum.photos/seed/4Ldm2MU9/640/480" + ], + "featured": 0 + }, + { + "id": 78, + "name": "Increible Metal Mesa", + "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", + "price": "€171", + "specialPrice": "€32", + "isNew": true, + "slug": "978-0-7348-9051-1", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/BIYPuDhw/640/480", + "https://picsum.photos/seed/RhBQg/640/480" + ], + "featured": 0 + }, + { + "id": 79, + "name": "Guapa Ladrillo Mesa", + "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", + "price": "€152", + "specialPrice": "€32", + "isNew": false, + "slug": "978-0-85535-182-3", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/gCn3Gn4J/640/480", + "https://picsum.photos/seed/H6woz/640/480", + "https://picsum.photos/seed/7SjKV0Gvo/640/480", + "https://picsum.photos/seed/NosRUe/640/480", + "https://picsum.photos/seed/jfvUkZNxz/640/480", + "https://picsum.photos/seed/hE48zjBkJN/640/480" + ], + "featured": 0, + "position": 79, + "discount": "10" + }, + { + "id": 80, + "name": "Rústico Plástico Bacon", + "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", + "price": "€101", + "specialPrice": "€43", + "isNew": false, + "slug": "978-0-8170-2360-7", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/yqp4WCakW/640/480", + "https://picsum.photos/seed/wJksyr/640/480", + "https://picsum.photos/seed/JxqfhUN/640/480", + "https://picsum.photos/seed/FmPsUwARh/640/480", + "https://picsum.photos/seed/hpsm9Qlz/640/480" + ], + "featured": 1 + }, + { + "id": 81, + "name": "Rústico Plástico Camiseta", + "description": "The Football Is Good For Training And Recreational Purposes", + "price": "€125", + "specialPrice": "€54", + "isNew": true, + "slug": "978-1-63511-395-2", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/kMOLLKeH/640/480", + "https://picsum.photos/seed/7EyXpI/640/480" + ], + "featured": 0, + "position": 81 + }, + { + "id": 82, + "name": "Fantástico Acero Camiseta", + "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", + "price": "€126", + "specialPrice": "€28", + "isNew": false, + "slug": "978-1-84813-407-2", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/RT7NZ/640/480", + "https://picsum.photos/seed/dyyKNLmteo/640/480", + "https://picsum.photos/seed/lQFlM/640/480", + "https://picsum.photos/seed/Bsb3499Muh/640/480" + ], + "featured": 1, + "discount": "10" + }, + { + "id": 83, + "name": "Pequeño Plástico Pelota", + "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", + "price": "€41", + "specialPrice": "€21", + "isNew": false, + "slug": "978-1-204-38618-3", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/cFUtg/640/480", + "https://picsum.photos/seed/D8v5TxdpR/640/480", + "https://picsum.photos/seed/NI48Ih9x/640/480", + "https://picsum.photos/seed/89jXBoU/640/480", + "https://picsum.photos/seed/gWxDFdu57Q/640/480", + "https://picsum.photos/seed/mt3pr8WT/640/480" + ], + "featured": 0, + "discount": "11" + }, + { + "id": 84, + "name": "Ergonómico Algodón Bicicleta", + "description": "The Football Is Good For Training And Recreational Purposes", + "price": "€106", + "specialPrice": "€48", + "isNew": false, + "slug": "978-1-4435-9524-7", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/UttIbigO/640/480", + "https://picsum.photos/seed/XP1J7BcqG5/640/480", + "https://picsum.photos/seed/b0QYzf2M/640/480" + ], + "featured": 1 + }, + { + "id": 85, + "name": "Ergonómico Plástico Pollo", + "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", + "price": "€111", + "specialPrice": "€50", + "isNew": true, + "slug": "978-1-260-73719-6", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/qzxBnGnr8/640/480", + "https://picsum.photos/seed/gOUZqm/640/480", + "https://picsum.photos/seed/voIVe4/640/480", + "https://picsum.photos/seed/abq4MfXds/640/480" + ], + "featured": 0, + "position": 85 + }, + { + "id": 86, + "name": "Práctico Metal Raton", + "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", + "price": "€107", + "specialPrice": "€45", + "isNew": false, + "slug": "978-0-03-755366-3", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/KN9eu0p/640/480", + "https://picsum.photos/seed/UgkBW/640/480", + "https://picsum.photos/seed/4BnYLW2/640/480", + "https://picsum.photos/seed/kCrI71b/640/480", + "https://picsum.photos/seed/ef1i5G/640/480", + "https://picsum.photos/seed/sI2fX/640/480" + ], + "featured": 1 + }, + { + "id": 87, + "name": "Guapa Hormigon Sopa", + "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients", + "price": "€87", + "specialPrice": "€53", + "isNew": false, + "slug": "978-1-0729-5563-4", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/EcwS7OPea/640/480", + "https://picsum.photos/seed/bgFlry/640/480", + "https://picsum.photos/seed/8VkHPIOc5b/640/480", + "https://picsum.photos/seed/FDJiUYJO/640/480", + "https://picsum.photos/seed/7BHOuB/640/480" + ], + "featured": 0 + }, + { + "id": 88, + "name": "Fantástico Hormigon Silla", + "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", + "price": "€180", + "specialPrice": "€45", + "isNew": false, + "slug": "978-0-944532-65-2", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/a1l9oc6wW/640/480", + "https://picsum.photos/seed/cNI5HKX5u/640/480", + "https://picsum.photos/seed/xZlNPB9Xv/640/480", + "https://picsum.photos/seed/OIW2wuep/640/480" + ], + "featured": 1 + }, + { + "id": 89, + "name": "Artesanal Madera Salchichas", + "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", + "price": "€66", + "specialPrice": "€49", + "isNew": false, + "slug": "978-0-630-91631-5", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/Pl4DMgo/640/480", + "https://picsum.photos/seed/Ibec55k/640/480", + "https://picsum.photos/seed/kE0ngnp3u/640/480" + ], + "featured": 0, + "position": 89 + }, + { + "id": 90, + "name": "Práctico Hormigon Pizza", + "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients", + "price": "€172", + "specialPrice": "€35", + "isNew": true, + "slug": "978-1-302-50924-8", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/nelVNN0R8/640/480", + "https://picsum.photos/seed/YohZP/640/480", + "https://picsum.photos/seed/txOphTKo/640/480", + "https://picsum.photos/seed/HXmuv/640/480" + ], + "featured": 1 + }, + { + "id": 91, + "name": "Genérico Hormigon Pantalones", + "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", + "price": "€81", + "specialPrice": "€40", + "isNew": true, + "slug": "978-0-9724921-9-5", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/aZSLe6/640/480", + "https://picsum.photos/seed/dtABipq5ZX/640/480", + "https://picsum.photos/seed/Rju99are/640/480", + "https://picsum.photos/seed/fA8VHW/640/480" + ], + "featured": 1, + "discount": "15" + }, + { + "id": 92, + "name": "Increible Algodón Camiseta", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€67", + "specialPrice": "€27", + "isNew": true, + "slug": "978-1-338-29667-9", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/aYpdJ/640/480", + "https://picsum.photos/seed/hZgXaLBkbv/640/480", + "https://picsum.photos/seed/ZSyl9/640/480", + "https://picsum.photos/seed/ry7F0C216/640/480", + "https://picsum.photos/seed/Oa5Bs/640/480" + ], + "featured": 1, + "position": 92, + "discount": "10" + }, + { + "id": 93, + "name": "Ergonómico Hormigon Salchichas", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€101", + "specialPrice": "€50", + "isNew": false, + "slug": "978-1-4253-6756-5", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/5v2teo6Zz6/640/480", + "https://picsum.photos/seed/rbwjSBZO/640/480", + "https://picsum.photos/seed/mDbpsj/640/480", + "https://picsum.photos/seed/Xxy2oRlrSe/640/480", + "https://picsum.photos/seed/qTE4MY4H/640/480", + "https://picsum.photos/seed/8BdF3DTP/640/480" + ], + "featured": 0, + "position": 93 + }, + { + "id": 94, + "name": "Inteligente Ladrillo Ensalada", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€122", + "specialPrice": "€48", + "isNew": false, + "slug": "978-1-962465-77-9", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/9W1D4ya3/640/480", + "https://picsum.photos/seed/wJhM250/640/480", + "https://picsum.photos/seed/o50uMDdn/640/480" + ], + "featured": 0, + "position": 94, + "discount": "8" + }, + { + "id": 95, + "name": "Rústico Granito Ordenador", + "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", + "price": "€141", + "specialPrice": "€55", + "isNew": false, + "slug": "978-0-255-91043-9", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/V2I1EG5e/640/480", + "https://picsum.photos/seed/Ez6cq/640/480", + "https://picsum.photos/seed/dhhAbcsiMC/640/480" + ], + "featured": 1, + "discount": "15" + }, + { + "id": 96, + "name": "Sabroso Acero Pelota", + "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", + "price": "€154", + "specialPrice": "€46", + "isNew": false, + "slug": "978-0-17-399087-2", + "type": 1, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/aZe2oHA/640/480", + "https://picsum.photos/seed/ZORbd2f/640/480" + ], + "featured": 1, + "discount": "9" + }, + { + "id": 97, + "name": "Rústico Acero Mesa", + "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", + "price": "€81", + "specialPrice": "€20", + "isNew": false, + "slug": "978-1-56213-534-8", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/LnWXyc/640/480", + "https://picsum.photos/seed/2bGZg/640/480", + "https://picsum.photos/seed/AFIHk/640/480", + "https://picsum.photos/seed/g3RB1YV/640/480", + "https://picsum.photos/seed/kkMr2EV0/640/480", + "https://picsum.photos/seed/3U95D/640/480" + ], + "featured": 1, + "position": 97, + "discount": "8" + }, + { + "id": 98, + "name": "Pequeño Ladrillo Ordenador", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€101", + "specialPrice": "€55", + "isNew": false, + "slug": "978-1-317-32624-3", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/N3EHIBNkig/640/480", + "https://picsum.photos/seed/DYzVVwtIis/640/480", + "https://picsum.photos/seed/b5CAifkzaY/640/480", + "https://picsum.photos/seed/lwlEq/640/480" + ], + "featured": 1 + }, + { + "id": 99, + "name": "Pequeño Ladrillo Pantalones", + "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients", + "price": "€61", + "specialPrice": "€55", + "isNew": true, + "slug": "978-1-76170-762-9", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/oiJiOD/640/480", + "https://picsum.photos/seed/Jq1xZr/640/480", + "https://picsum.photos/seed/5TYFRW/640/480" + ], + "featured": 0, + "position": 99, + "discount": "9" + }, + { + "id": 100, + "name": "Práctico Algodón Pollo", + "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", + "price": "€195", + "specialPrice": "€28", + "isNew": false, + "slug": "978-0-516-47110-5", + "type": 2, + "postalCode": "12345", + "dateExpired": "2024-01-30", + "images": [ + "https://picsum.photos/seed/MrRQyfqHW/640/480", + "https://picsum.photos/seed/SQxKuo/640/480", + "https://picsum.photos/seed/Aa5He/640/480", + "https://picsum.photos/seed/wTp5CN7UPU/640/480", + "https://picsum.photos/seed/U8QWR7eUEe/640/480" + ], + "featured": 1, + "position": 100, + "discount": "12" + } +] diff --git a/api/controller/products.json b/api/controller/products.json deleted file mode 100644 index 3840e9b..0000000 --- a/api/controller/products.json +++ /dev/null @@ -1,1974 +0,0 @@ -[ - { - "id": 1, - "name": "Increible Metal Gorro", - "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", - "price": "€200", - "specialPrice": "€54", - "isNew": false, - "slug": "978-1-348-64648-8", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/efCSfe/640/480", - "https://picsum.photos/seed/cJ5zEC/640/480" - ], - "featured": 1 - }, - { - "id": 2, - "name": "Inteligente Ladrillo Atún", - "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", - "price": "€59", - "specialPrice": "€36", - "isNew": true, - "slug": "978-0-8481-8892-4", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/aqCUrLS/640/480", - "https://picsum.photos/seed/AyGVwTCkAI/640/480", - "https://picsum.photos/seed/N0kuFal/640/480" - ], - "featured": 0, - "position": 2 - }, - { - "id": 3, - "name": "Sabroso Madera Camiseta", - "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", - "price": "€67", - "specialPrice": "€25", - "isNew": true, - "slug": "978-0-319-77499-1", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/hLvGjJ/640/480", - "https://picsum.photos/seed/NcOmpIJw/640/480" - ], - "featured": 1, - "position": 3 - }, - { - "id": 4, - "name": "Genérico Algodón Coche", - "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", - "price": "€128", - "specialPrice": "€34", - "isNew": false, - "slug": "978-0-431-46161-8", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/knVoCgN/640/480", - "https://picsum.photos/seed/5yGO2h/640/480" - ], - "featured": 1, - "position": 4, - "discount": "5" - }, - { - "id": 5, - "name": "Ergonómico Algodón Pantalones", - "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", - "price": "€193", - "specialPrice": "€54", - "isNew": false, - "slug": "978-1-342-63425-2", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/YD3k3/640/480", - "https://picsum.photos/seed/jkGhjeZ00/640/480", - "https://picsum.photos/seed/gSNZGN/640/480", - "https://picsum.photos/seed/AEJnS/640/480" - ], - "featured": 1, - "discount": "14" - }, - { - "id": 6, - "name": "Increible Hormigon Sopa", - "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", - "price": "€77", - "specialPrice": "€40", - "isNew": true, - "slug": "978-1-268-28760-0", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/xntRUHQ/640/480", - "https://picsum.photos/seed/Hu4oY/640/480", - "https://picsum.photos/seed/590BcM/640/480", - "https://picsum.photos/seed/HsVfl/640/480" - ], - "featured": 1 - }, - { - "id": 7, - "name": "Sorprendente Metal Teclado", - "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", - "price": "€84", - "specialPrice": "€42", - "isNew": true, - "slug": "978-0-7079-1378-0", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/oVPFFWAPa/640/480", - "https://picsum.photos/seed/DAsBOLDk/640/480", - "https://picsum.photos/seed/WyZIkkU999/640/480", - "https://picsum.photos/seed/qQ5llz2/640/480", - "https://picsum.photos/seed/Neug42/640/480" - ], - "featured": 1, - "position": 7, - "discount": "8" - }, - { - "id": 8, - "name": "Práctico Plástico Patatas fritas", - "description": "The Football Is Good For Training And Recreational Purposes", - "price": "€91", - "specialPrice": "€44", - "isNew": false, - "slug": "978-1-295-54883-5", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/6enb1U/640/480", - "https://picsum.photos/seed/wLiKA/640/480", - "https://picsum.photos/seed/7BHZ8KnK0J/640/480", - "https://picsum.photos/seed/ZswFH/640/480" - ], - "featured": 1, - "position": 8, - "discount": "12" - }, - { - "id": 9, - "name": "Sabroso Ladrillo Pollo", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€179", - "specialPrice": "€48", - "isNew": false, - "slug": "978-1-63125-580-9", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/rtWLLUs/640/480", - "https://picsum.photos/seed/84YmSjI/640/480", - "https://picsum.photos/seed/8mfl0k/640/480", - "https://picsum.photos/seed/FXbll/640/480" - ], - "featured": 0, - "discount": "12" - }, - { - "id": 10, - "name": "Genérico Plástico Gorro", - "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", - "price": "€50", - "specialPrice": "€32", - "isNew": true, - "slug": "978-1-76312-403-5", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/FB6ThP/640/480", - "https://picsum.photos/seed/9KZh5I/640/480" - ], - "featured": 0, - "position": 10, - "discount": "15" - }, - { - "id": 11, - "name": "Ergonómico Plástico Raton", - "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", - "price": "€108", - "specialPrice": "€54", - "isNew": true, - "slug": "978-1-82301-801-4", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/AQBLZ/640/480", - "https://picsum.photos/seed/luBRfDE3N/640/480", - "https://picsum.photos/seed/lDgqkF7FZ/640/480", - "https://picsum.photos/seed/hZC5b3hFzC/640/480", - "https://picsum.photos/seed/LdmTkN/640/480", - "https://picsum.photos/seed/1vhVw/640/480" - ], - "featured": 0 - }, - { - "id": 12, - "name": "Guapo Acero Mesa", - "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016", - "price": "€56", - "specialPrice": "€28", - "isNew": false, - "slug": "978-1-965192-91-7", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/j1ViMIl/640/480", - "https://picsum.photos/seed/GlmDi/640/480", - "https://picsum.photos/seed/fYbvd6t/640/480" - ], - "featured": 1, - "position": 12 - }, - { - "id": 13, - "name": "Genérico Ladrillo Pizza", - "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", - "price": "€130", - "specialPrice": "€50", - "isNew": false, - "slug": "978-0-87287-519-7", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/MeJEmW0/640/480", - "https://picsum.photos/seed/HzpbywR2D/640/480", - "https://picsum.photos/seed/tJBVf/640/480", - "https://picsum.photos/seed/pMCEmn38/640/480", - "https://picsum.photos/seed/oLjn2o/640/480" - ], - "featured": 1, - "discount": "7" - }, - { - "id": 14, - "name": "Refinado Madera Teclado", - "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", - "price": "€95", - "specialPrice": "€31", - "isNew": true, - "slug": "978-1-7991-7993-1", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/jake6b/640/480", - "https://picsum.photos/seed/Bv3GD/640/480", - "https://picsum.photos/seed/NjEk2s/640/480" - ], - "featured": 0 - }, - { - "id": 15, - "name": "Ergonómico Granito Gorro", - "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients", - "price": "€178", - "specialPrice": "€58", - "isNew": true, - "slug": "978-1-236-05968-0", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/NUjeWD/640/480", - "https://picsum.photos/seed/FXcWKarPgR/640/480", - "https://picsum.photos/seed/teETy/640/480", - "https://picsum.photos/seed/xU40Wwc/640/480", - "https://picsum.photos/seed/nYXPBqk/640/480", - "https://picsum.photos/seed/8MIPl/640/480" - ], - "featured": 0, - "discount": "11" - }, - { - "id": 16, - "name": "Inteligente Algodón Toallas", - "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", - "price": "€88", - "specialPrice": "€30", - "isNew": false, - "slug": "978-1-06-472991-5", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/3QgBNrISB/640/480", - "https://picsum.photos/seed/w26O8t4dU/640/480", - "https://picsum.photos/seed/LcunJq/640/480", - "https://picsum.photos/seed/wsxF0MFH/640/480", - "https://picsum.photos/seed/qCaawO/640/480" - ], - "featured": 0, - "discount": "7" - }, - { - "id": 17, - "name": "Sabroso Granito Atún", - "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", - "price": "€21", - "specialPrice": "€60", - "isNew": false, - "slug": "978-1-57118-965-3", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/SN0IW/640/480", - "https://picsum.photos/seed/Ajbvmw3/640/480", - "https://picsum.photos/seed/ZNquT4J50/640/480" - ], - "featured": 0, - "position": 17, - "discount": "11" - }, - { - "id": 18, - "name": "Genérico Plástico Camiseta", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€149", - "specialPrice": "€40", - "isNew": false, - "slug": "978-1-932110-67-8", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/Ib02oSlkv/640/480", - "https://picsum.photos/seed/j7IHn0WcKp/640/480", - "https://picsum.photos/seed/T8heZoClH/640/480", - "https://picsum.photos/seed/oAzVU/640/480", - "https://picsum.photos/seed/lf0N4j/640/480" - ], - "featured": 0 - }, - { - "id": 19, - "name": "Genérico Metal Queso", - "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", - "price": "€27", - "specialPrice": "€26", - "isNew": true, - "slug": "978-1-324-94811-7", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/H9uB5/640/480", - "https://picsum.photos/seed/SoANcSxyac/640/480", - "https://picsum.photos/seed/KLSOpBF9kh/640/480", - "https://picsum.photos/seed/pLNNSDd/640/480", - "https://picsum.photos/seed/6ogPVwRn/640/480" - ], - "featured": 0, - "position": 19 - }, - { - "id": 20, - "name": "Hecho a mano Plástico Salchichas", - "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", - "price": "€152", - "specialPrice": "€32", - "isNew": false, - "slug": "978-1-310-91779-0", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/FEfDF6tnF/640/480", - "https://picsum.photos/seed/eTmq5a/640/480", - "https://picsum.photos/seed/SMULME/640/480", - "https://picsum.photos/seed/t11SEBl6/640/480" - ], - "featured": 0 - }, - { - "id": 21, - "name": "Inteligente Algodón Atún", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€21", - "specialPrice": "€50", - "isNew": true, - "slug": "978-0-7133-9383-5", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/hW3tkRcqCI/640/480", - "https://picsum.photos/seed/t7NHO/640/480", - "https://picsum.photos/seed/V3gdDgxD0/640/480", - "https://picsum.photos/seed/cqgpbHa/640/480", - "https://picsum.photos/seed/jNZ62FSKc/640/480" - ], - "featured": 1, - "position": 21, - "discount": "14" - }, - { - "id": 22, - "name": "Sabroso Algodón Pollo", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€102", - "specialPrice": "€36", - "isNew": false, - "slug": "978-0-288-35801-7", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/z7odxwHu/640/480", - "https://picsum.photos/seed/RaGAjX8R/640/480", - "https://picsum.photos/seed/Hmj1KFPpO/640/480", - "https://picsum.photos/seed/uianxlSxSf/640/480", - "https://picsum.photos/seed/zYhooqjS/640/480" - ], - "featured": 1, - "position": 22 - }, - { - "id": 23, - "name": "Refinado Granito Coche", - "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", - "price": "€81", - "specialPrice": "€26", - "isNew": true, - "slug": "978-0-8275-2208-4", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/XFcxz0YY/640/480", - "https://picsum.photos/seed/bRx77e/640/480", - "https://picsum.photos/seed/eMxcy371u/640/480" - ], - "featured": 1, - "position": 23 - }, - { - "id": 24, - "name": "Increible Metal Pizza", - "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients", - "price": "€188", - "specialPrice": "€56", - "isNew": true, - "slug": "978-1-55027-664-0", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/qMu6FQzt/640/480", - "https://picsum.photos/seed/cslc2/640/480", - "https://picsum.photos/seed/F4wKdsI51V/640/480" - ], - "featured": 0, - "position": 24, - "discount": "8" - }, - { - "id": 25, - "name": "Fantástico Metal Teclado", - "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", - "price": "€89", - "specialPrice": "€22", - "isNew": true, - "slug": "978-1-140-19874-1", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/61xoHbbj3/640/480", - "https://picsum.photos/seed/jvlNP/640/480", - "https://picsum.photos/seed/xciRM7qd3B/640/480", - "https://picsum.photos/seed/rmfcz75sV/640/480" - ], - "featured": 0, - "position": 25 - }, - { - "id": 26, - "name": "Increible Plástico Pelota", - "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", - "price": "€59", - "specialPrice": "€45", - "isNew": false, - "slug": "978-1-048-57120-2", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/Kv2pHL/640/480", - "https://picsum.photos/seed/8nMjd6TU2/640/480", - "https://picsum.photos/seed/Spcwv/640/480", - "https://picsum.photos/seed/OTyjd/640/480", - "https://picsum.photos/seed/YVbDFheA/640/480" - ], - "featured": 1, - "position": 26, - "discount": "15" - }, - { - "id": 27, - "name": "Genérico Acero Coche", - "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", - "price": "€59", - "specialPrice": "€44", - "isNew": true, - "slug": "978-0-15-326573-0", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/WSkuyujFa/640/480", - "https://picsum.photos/seed/WmuRvQx/640/480", - "https://picsum.photos/seed/kb0vcOf/640/480", - "https://picsum.photos/seed/uH0xXb/640/480", - "https://picsum.photos/seed/4MzyV3/640/480" - ], - "featured": 1, - "position": 27 - }, - { - "id": 28, - "name": "Hecho a mano Hormigon Zapatos", - "description": "The Football Is Good For Training And Recreational Purposes", - "price": "€45", - "specialPrice": "€45", - "isNew": true, - "slug": "978-0-7563-2842-9", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/cYKbw/640/480", - "https://picsum.photos/seed/IYFq9N/640/480", - "https://picsum.photos/seed/UvSVZ78/640/480", - "https://picsum.photos/seed/INrOs/640/480", - "https://picsum.photos/seed/dEhAEZrv/640/480", - "https://picsum.photos/seed/cMjA3Z/640/480" - ], - "featured": 1, - "position": 28 - }, - { - "id": 29, - "name": "Refinado Granito Pollo", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€191", - "specialPrice": "€44", - "isNew": true, - "slug": "978-1-3988-7301-8", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/qePoXP6K/640/480", - "https://picsum.photos/seed/h3p0l6/640/480", - "https://picsum.photos/seed/G2EpUubO/640/480" - ], - "featured": 1 - }, - { - "id": 30, - "name": "Inteligente Madera Salchichas", - "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", - "price": "€126", - "specialPrice": "€20", - "isNew": true, - "slug": "978-1-331-75743-6", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/dBTrE/640/480", - "https://picsum.photos/seed/JA4Cw/640/480", - "https://picsum.photos/seed/2q5if/640/480", - "https://picsum.photos/seed/2ih0CRO/640/480", - "https://picsum.photos/seed/8fCncPfW/640/480" - ], - "featured": 0, - "discount": "5" - }, - { - "id": 31, - "name": "Rústico Hormigon Bicicleta", - "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", - "price": "€63", - "specialPrice": "€40", - "isNew": true, - "slug": "978-0-11-989468-4", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/EwzFjj8/640/480", - "https://picsum.photos/seed/Ne0GuwEU6/640/480" - ], - "featured": 1 - }, - { - "id": 32, - "name": "Genérico Algodón Raton", - "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", - "price": "€95", - "specialPrice": "€20", - "isNew": false, - "slug": "978-1-4452-7592-5", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/JzEKDZ/640/480", - "https://picsum.photos/seed/ofYhP4/640/480", - "https://picsum.photos/seed/psUTjl0o/640/480" - ], - "featured": 1 - }, - { - "id": 33, - "name": "Guapa Ladrillo Teclado", - "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", - "price": "€168", - "specialPrice": "€28", - "isNew": false, - "slug": "978-1-8380507-5-7", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/MvlUAg/640/480", - "https://picsum.photos/seed/kJ6aZe/640/480", - "https://picsum.photos/seed/vG2qiqZrI/640/480" - ], - "featured": 1, - "discount": "14" - }, - { - "id": 34, - "name": "Guapa Acero Ensalada", - "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", - "price": "€199", - "specialPrice": "€51", - "isNew": false, - "slug": "978-0-515-08362-0", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/ktlHFZa7T/640/480", - "https://picsum.photos/seed/zGj5G1f/640/480", - "https://picsum.photos/seed/cGn3F/640/480" - ], - "featured": 1 - }, - { - "id": 35, - "name": "Hecho a mano Algodón Pelota", - "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", - "price": "€164", - "specialPrice": "€49", - "isNew": true, - "slug": "978-1-377-81139-0", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/jTkM6B/640/480", - "https://picsum.photos/seed/1bMD1mgLJ/640/480", - "https://picsum.photos/seed/Ho4E1yc/640/480", - "https://picsum.photos/seed/rFUM8gZxsK/640/480", - "https://picsum.photos/seed/9PQ51cFnX/640/480" - ], - "featured": 0, - "discount": "9" - }, - { - "id": 36, - "name": "Guapo Metal Pescado", - "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", - "price": "€187", - "specialPrice": "€51", - "isNew": false, - "slug": "978-0-314-22100-1", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/mcSNVcAt/640/480", - "https://picsum.photos/seed/YgXJEOkF/640/480", - "https://picsum.photos/seed/e3fkI67F/640/480" - ], - "featured": 1, - "position": 36 - }, - { - "id": 37, - "name": "Fantástico Madera Pollo", - "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", - "price": "€195", - "specialPrice": "€39", - "isNew": true, - "slug": "978-1-84460-628-3", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/PuObBpl/640/480", - "https://picsum.photos/seed/D6XW1XMhuR/640/480", - "https://picsum.photos/seed/XaZsN/640/480" - ], - "featured": 0, - "discount": "11" - }, - { - "id": 38, - "name": "Rústico Algodón Queso", - "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", - "price": "€124", - "specialPrice": "€26", - "isNew": true, - "slug": "978-1-309-55513-2", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/8g9ga6K/640/480", - "https://picsum.photos/seed/er1R20/640/480", - "https://picsum.photos/seed/W05nMAmO/640/480", - "https://picsum.photos/seed/NGjAmte4C/640/480" - ], - "featured": 0, - "discount": "10" - }, - { - "id": 39, - "name": "Sorprendente Ladrillo Mesa", - "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", - "price": "€103", - "specialPrice": "€53", - "isNew": true, - "slug": "978-1-6599-5199-8", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/Kbdw1/640/480", - "https://picsum.photos/seed/pEemudoDJ/640/480", - "https://picsum.photos/seed/R9F4r1E/640/480" - ], - "featured": 0 - }, - { - "id": 40, - "name": "Genérico Madera Teclado", - "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016", - "price": "€27", - "specialPrice": "€44", - "isNew": true, - "slug": "978-0-00-710592-2", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/qsKyfaxQ4g/640/480", - "https://picsum.photos/seed/RbYRZBXlm/640/480", - "https://picsum.photos/seed/ZNVJ25dE0X/640/480", - "https://picsum.photos/seed/Mc0Sc/640/480", - "https://picsum.photos/seed/KwPFis3Jh/640/480", - "https://picsum.photos/seed/rShUr0Fxp/640/480" - ], - "featured": 1, - "discount": "14" - }, - { - "id": 41, - "name": "Genérico Granito Pantalones", - "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", - "price": "€38", - "specialPrice": "€48", - "isNew": false, - "slug": "978-1-4176-3485-9", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/zLjAl3/640/480", - "https://picsum.photos/seed/t7lzKsc/640/480", - "https://picsum.photos/seed/EdEpBs2n3/640/480" - ], - "featured": 0 - }, - { - "id": 42, - "name": "Guapo Madera Raton", - "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", - "price": "€160", - "specialPrice": "€22", - "isNew": true, - "slug": "978-0-940197-17-6", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/bB5fh/640/480", - "https://picsum.photos/seed/4z8LC3hXF/640/480", - "https://picsum.photos/seed/KhHhYT/640/480", - "https://picsum.photos/seed/Fg8pI/640/480", - "https://picsum.photos/seed/Uj5w7I3V/640/480" - ], - "featured": 1, - "position": 42, - "discount": "7" - }, - { - "id": 43, - "name": "Artesanal Plástico Gorro", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€154", - "specialPrice": "€56", - "isNew": true, - "slug": "978-1-318-64981-5", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/QVRhLvAY7/640/480", - "https://picsum.photos/seed/JAM43Cq3qz/640/480", - "https://picsum.photos/seed/g1CG1BOr/640/480", - "https://picsum.photos/seed/g5Gpd/640/480" - ], - "featured": 1, - "position": 43 - }, - { - "id": 44, - "name": "Refinado Algodón Camiseta", - "description": "The Football Is Good For Training And Recreational Purposes", - "price": "€32", - "specialPrice": "€28", - "isNew": false, - "slug": "978-0-89872-374-8", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/l97X5/640/480", - "https://picsum.photos/seed/e5a8U/640/480", - "https://picsum.photos/seed/3ID5gT/640/480", - "https://picsum.photos/seed/Fv91Wp2/640/480" - ], - "featured": 1, - "discount": "14" - }, - { - "id": 45, - "name": "Refinado Plástico Zapatos", - "description": "The Football Is Good For Training And Recreational Purposes", - "price": "€106", - "specialPrice": "€34", - "isNew": true, - "slug": "978-0-217-22380-5", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/cSzf4H/640/480", - "https://picsum.photos/seed/yuUm9XD8o/640/480", - "https://picsum.photos/seed/zRg0Tof/640/480" - ], - "featured": 1 - }, - { - "id": 46, - "name": "Increible Madera Ordenador", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€111", - "specialPrice": "€35", - "isNew": true, - "slug": "978-0-909996-40-6", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/8CNBVztO/640/480", - "https://picsum.photos/seed/Xrp987/640/480", - "https://picsum.photos/seed/8uaxkeTHO/640/480" - ], - "featured": 1 - }, - { - "id": 47, - "name": "Fantástico Acero Queso", - "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", - "price": "€123", - "specialPrice": "€23", - "isNew": false, - "slug": "978-1-64697-271-5", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/wCp2KM/640/480", - "https://picsum.photos/seed/nnBEvn/640/480", - "https://picsum.photos/seed/t5y9qSOx/640/480", - "https://picsum.photos/seed/IwucQ3tPf/640/480", - "https://picsum.photos/seed/Jb0yX4/640/480", - "https://picsum.photos/seed/6e7xniBLbp/640/480" - ], - "featured": 1, - "position": 47 - }, - { - "id": 48, - "name": "Rústico Plástico Teclado", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€72", - "specialPrice": "€48", - "isNew": true, - "slug": "978-0-937555-33-0", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/hg9HMXJ4l/640/480", - "https://picsum.photos/seed/PCA1uHX/640/480", - "https://picsum.photos/seed/JFRCbMQO/640/480", - "https://picsum.photos/seed/j5oP44i/640/480", - "https://picsum.photos/seed/8ltyUC/640/480", - "https://picsum.photos/seed/rJMEG/640/480" - ], - "featured": 1 - }, - { - "id": 49, - "name": "Guapa Acero Gorro", - "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", - "price": "€41", - "specialPrice": "€35", - "isNew": false, - "slug": "978-1-238-68808-6", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/mWU235G/640/480", - "https://picsum.photos/seed/ZCinUiiwZ/640/480", - "https://picsum.photos/seed/yJo5MOPK/640/480", - "https://picsum.photos/seed/29OaIyJ/640/480" - ], - "featured": 0, - "discount": "15" - }, - { - "id": 50, - "name": "Genérico Algodón Bicicleta", - "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", - "price": "€190", - "specialPrice": "€20", - "isNew": false, - "slug": "978-1-56675-720-1", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/EaDjCiqk/640/480", - "https://picsum.photos/seed/nGNbbNc/640/480" - ], - "featured": 1, - "discount": "15" - }, - { - "id": 51, - "name": "Refinado Metal Pollo", - "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", - "price": "€20", - "specialPrice": "€56", - "isNew": true, - "slug": "978-1-257-37902-6", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/s8zjP0/640/480", - "https://picsum.photos/seed/9zEZt/640/480", - "https://picsum.photos/seed/V7zVU/640/480" - ], - "featured": 0, - "discount": "13" - }, - { - "id": 52, - "name": "Fantástico Plástico Ensalada", - "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016", - "price": "€194", - "specialPrice": "€38", - "isNew": true, - "slug": "978-1-933903-90-3", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/HTev9LlW/640/480", - "https://picsum.photos/seed/SUxtP5cT/640/480", - "https://picsum.photos/seed/T4487xS9DG/640/480" - ], - "featured": 0, - "position": 52 - }, - { - "id": 53, - "name": "Artesanal Madera Ordenador", - "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016", - "price": "€29", - "specialPrice": "€34", - "isNew": false, - "slug": "978-0-7736-7108-9", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/B6rfb/640/480", - "https://picsum.photos/seed/k3JYiBQRx/640/480", - "https://picsum.photos/seed/gnntwG1BX/640/480", - "https://picsum.photos/seed/A9Wd3/640/480", - "https://picsum.photos/seed/bptxrVNRiz/640/480", - "https://picsum.photos/seed/HbLRfW/640/480" - ], - "featured": 1 - }, - { - "id": 54, - "name": "Pequeño Metal Ordenador", - "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", - "price": "€51", - "specialPrice": "€32", - "isNew": true, - "slug": "978-0-675-04894-1", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/DD2MtGS8/640/480", - "https://picsum.photos/seed/vERlc/640/480", - "https://picsum.photos/seed/ljRUIx1/640/480", - "https://picsum.photos/seed/1lYn2Xcr1g/640/480", - "https://picsum.photos/seed/od7uZ0Hy/640/480", - "https://picsum.photos/seed/eotkUn/640/480" - ], - "featured": 1, - "position": 54 - }, - { - "id": 55, - "name": "Sabroso Ladrillo Pizza", - "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", - "price": "€104", - "specialPrice": "€50", - "isNew": false, - "slug": "978-0-7105-6291-3", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/9N7ink7krJ/640/480", - "https://picsum.photos/seed/7s4aYaneZg/640/480", - "https://picsum.photos/seed/2nhD8DhqKq/640/480" - ], - "featured": 0, - "position": 55, - "discount": "5" - }, - { - "id": 56, - "name": "Artesanal Metal Toallas", - "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients", - "price": "€117", - "specialPrice": "€53", - "isNew": false, - "slug": "978-0-18-757443-3", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/wNA60wdyxq/640/480", - "https://picsum.photos/seed/86jeF/640/480", - "https://picsum.photos/seed/2Ix8CKO0/640/480", - "https://picsum.photos/seed/08QHc5F/640/480" - ], - "featured": 1 - }, - { - "id": 57, - "name": "Ergonómico Acero Pescado", - "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", - "price": "€176", - "specialPrice": "€58", - "isNew": true, - "slug": "978-0-538-86677-4", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/vFAtUVdhTQ/640/480", - "https://picsum.photos/seed/27vewh/640/480" - ], - "featured": 0 - }, - { - "id": 58, - "name": "Inteligente Granito Guantes", - "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", - "price": "€151", - "specialPrice": "€33", - "isNew": false, - "slug": "978-1-61481-833-5", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/4MsN1O/640/480", - "https://picsum.photos/seed/UdYQ9p/640/480" - ], - "featured": 1 - }, - { - "id": 59, - "name": "Ergonómico Algodón Pizza", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€87", - "specialPrice": "€45", - "isNew": false, - "slug": "978-1-716-77358-7", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/YXrh4TJhn/640/480", - "https://picsum.photos/seed/qJ3IS/640/480", - "https://picsum.photos/seed/vZTLJBiSs/640/480", - "https://picsum.photos/seed/yWwpqd9uRR/640/480", - "https://picsum.photos/seed/1oPusQ9Q3/640/480", - "https://picsum.photos/seed/Q6kSK6/640/480" - ], - "featured": 0, - "position": 59 - }, - { - "id": 60, - "name": "Sorprendente Acero Salchichas", - "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016", - "price": "€59", - "specialPrice": "€60", - "isNew": false, - "slug": "978-0-7694-2909-0", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/98Nx8Mi/640/480", - "https://picsum.photos/seed/BwjmGy6VB/640/480" - ], - "featured": 0, - "discount": "6" - }, - { - "id": 61, - "name": "Increible Hormigon Pollo", - "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", - "price": "€57", - "specialPrice": "€50", - "isNew": true, - "slug": "978-0-619-91892-7", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/kxRaIrj5/640/480", - "https://picsum.photos/seed/QAIRpl/640/480" - ], - "featured": 1, - "position": 61, - "discount": "5" - }, - { - "id": 62, - "name": "Guapa Plástico Pizza", - "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", - "price": "€194", - "specialPrice": "€33", - "isNew": false, - "slug": "978-1-377-08792-4", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/t70NVE/640/480", - "https://picsum.photos/seed/WCDGPADT7M/640/480" - ], - "featured": 0 - }, - { - "id": 63, - "name": "Guapo Plástico Patatas fritas", - "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", - "price": "€140", - "specialPrice": "€31", - "isNew": false, - "slug": "978-0-7734-2463-0", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/ibhRMBMJ/640/480", - "https://picsum.photos/seed/7fNck/640/480", - "https://picsum.photos/seed/esXzS36A2/640/480", - "https://picsum.photos/seed/Zyx0R/640/480", - "https://picsum.photos/seed/gyUEYTFw/640/480" - ], - "featured": 1 - }, - { - "id": 64, - "name": "Genérico Algodón Coche", - "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016", - "price": "€137", - "specialPrice": "€47", - "isNew": false, - "slug": "978-1-77867-791-5", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/AsMDYHf3/640/480", - "https://picsum.photos/seed/tCkf3/640/480", - "https://picsum.photos/seed/8ZnlYxm/640/480", - "https://picsum.photos/seed/a4eViqq8y0/640/480", - "https://picsum.photos/seed/VowNo/640/480" - ], - "featured": 1, - "position": 64 - }, - { - "id": 65, - "name": "Inteligente Hormigon Atún", - "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", - "price": "€39", - "specialPrice": "€44", - "isNew": true, - "slug": "978-1-926748-33-7", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/vzOKt7Ss/640/480", - "https://picsum.photos/seed/cvHL8wo/640/480", - "https://picsum.photos/seed/SSNTk/640/480", - "https://picsum.photos/seed/DXRIbXn/640/480", - "https://picsum.photos/seed/eBegt2U/640/480", - "https://picsum.photos/seed/WTaw713G/640/480" - ], - "featured": 0 - }, - { - "id": 66, - "name": "Inteligente Metal Pizza", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€177", - "specialPrice": "€31", - "isNew": false, - "slug": "978-1-229-86164-1", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/6EIye/640/480", - "https://picsum.photos/seed/mKRPxDHnqH/640/480" - ], - "featured": 1 - }, - { - "id": 67, - "name": "Fantástico Algodón Pizza", - "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", - "price": "€25", - "specialPrice": "€36", - "isNew": false, - "slug": "978-0-299-87026-3", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/iGfs1/640/480", - "https://picsum.photos/seed/mxA3uTj/640/480", - "https://picsum.photos/seed/f3Y9Y/640/480" - ], - "featured": 0, - "position": 67 - }, - { - "id": 68, - "name": "Práctico Plástico Mesa", - "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", - "price": "€28", - "specialPrice": "€32", - "isNew": true, - "slug": "978-0-8453-9085-6", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/pZHuRWv1V/640/480", - "https://picsum.photos/seed/P22AtCz7/640/480", - "https://picsum.photos/seed/wKO6C6VO/640/480", - "https://picsum.photos/seed/z86STX25O/640/480" - ], - "featured": 1, - "position": 68 - }, - { - "id": 69, - "name": "Refinado Granito Queso", - "description": "The Football Is Good For Training And Recreational Purposes", - "price": "€173", - "specialPrice": "€45", - "isNew": true, - "slug": "978-0-19-050936-1", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/CQ84sbVM/640/480", - "https://picsum.photos/seed/XOEr59/640/480" - ], - "featured": 1, - "discount": "15" - }, - { - "id": 70, - "name": "Hecho a mano Granito Pescado", - "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", - "price": "€57", - "specialPrice": "€40", - "isNew": false, - "slug": "978-0-533-86437-9", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/oUdfbU/640/480", - "https://picsum.photos/seed/53aGSoCV/640/480", - "https://picsum.photos/seed/TAj3bbm/640/480" - ], - "featured": 1, - "discount": "7" - }, - { - "id": 71, - "name": "Práctico Madera Zapatos", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€26", - "specialPrice": "€34", - "isNew": false, - "slug": "978-1-959637-80-6", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/n5HnJveOa/640/480", - "https://picsum.photos/seed/74riXk3/640/480", - "https://picsum.photos/seed/qVXXnHpTSJ/640/480", - "https://picsum.photos/seed/Pka9uIQyEL/640/480", - "https://picsum.photos/seed/LcQaJud/640/480" - ], - "featured": 1 - }, - { - "id": 72, - "name": "Guapo Granito Pelota", - "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", - "price": "€116", - "specialPrice": "€42", - "isNew": true, - "slug": "978-1-57149-992-9", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/jEUBH4QZke/640/480", - "https://picsum.photos/seed/erI72LXH/640/480", - "https://picsum.photos/seed/23TyWqZQ/640/480", - "https://picsum.photos/seed/b4GfqzlUKx/640/480" - ], - "featured": 0, - "discount": "15" - }, - { - "id": 73, - "name": "Hecho a mano Ladrillo Ordenador", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€53", - "specialPrice": "€24", - "isNew": true, - "slug": "978-1-249-08425-9", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/mBopp/640/480", - "https://picsum.photos/seed/kFK1V/640/480" - ], - "featured": 1 - }, - { - "id": 74, - "name": "Genérico Algodón Atún", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€157", - "specialPrice": "€23", - "isNew": true, - "slug": "978-0-447-47968-3", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/cLwQaL/640/480", - "https://picsum.photos/seed/cgRbBDr2K/640/480", - "https://picsum.photos/seed/e2AkbcrrbQ/640/480", - "https://picsum.photos/seed/WHu0N5/640/480", - "https://picsum.photos/seed/NY7Yv/640/480" - ], - "featured": 0 - }, - { - "id": 75, - "name": "Guapa Plástico Pizza", - "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", - "price": "€109", - "specialPrice": "€30", - "isNew": false, - "slug": "978-0-927854-44-3", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/SKOcqLfbL/640/480", - "https://picsum.photos/seed/3wqPKL9P/640/480", - "https://picsum.photos/seed/A0UPk/640/480" - ], - "featured": 0, - "position": 75, - "discount": "10" - }, - { - "id": 76, - "name": "Ergonómico Metal Ordenador", - "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients", - "price": "€81", - "specialPrice": "€40", - "isNew": true, - "slug": "978-0-448-94113-4", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/aVQJJ/640/480", - "https://picsum.photos/seed/AT7nQkM45Z/640/480", - "https://picsum.photos/seed/FBgbD60/640/480", - "https://picsum.photos/seed/CV2zoRUDiA/640/480", - "https://picsum.photos/seed/TBWP8RW/640/480" - ], - "featured": 1 - }, - { - "id": 77, - "name": "Increible Acero Mesa", - "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", - "price": "€148", - "specialPrice": "€25", - "isNew": true, - "slug": "978-0-251-50209-6", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/4PCEsZUNV8/640/480", - "https://picsum.photos/seed/BLIbPNoqbc/640/480", - "https://picsum.photos/seed/nhtFOy0L/640/480", - "https://picsum.photos/seed/uIOse8YZV/640/480", - "https://picsum.photos/seed/alDhaxN/640/480" - ], - "featured": 1, - "position": 77, - "discount": "10" - }, - { - "id": 78, - "name": "Sorprendente Madera Bicicleta", - "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", - "price": "€93", - "specialPrice": "€59", - "isNew": true, - "slug": "978-0-346-58774-8", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/zJ0aWOHm/640/480", - "https://picsum.photos/seed/xZ3Cb/640/480" - ], - "featured": 0, - "position": 78 - }, - { - "id": 79, - "name": "Sorprendente Metal Atún", - "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", - "price": "€126", - "specialPrice": "€48", - "isNew": false, - "slug": "978-0-7900-3519-2", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/DuYVyZ4V/640/480", - "https://picsum.photos/seed/C1MqeUSve/640/480", - "https://picsum.photos/seed/HSxWo4kxAH/640/480", - "https://picsum.photos/seed/oyfF2q/640/480" - ], - "featured": 0, - "discount": "5" - }, - { - "id": 80, - "name": "Rústico Granito Ensalada", - "description": "The Football Is Good For Training And Recreational Purposes", - "price": "€192", - "specialPrice": "€44", - "isNew": false, - "slug": "978-0-7068-0264-1", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/TDHd4l5/640/480", - "https://picsum.photos/seed/AlODLgF/640/480", - "https://picsum.photos/seed/xIqLgU/640/480", - "https://picsum.photos/seed/vfsbUDfC/640/480" - ], - "featured": 0, - "position": 80, - "discount": "12" - }, - { - "id": 81, - "name": "Refinado Hormigon Silla", - "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality", - "price": "€124", - "specialPrice": "€22", - "isNew": true, - "slug": "978-1-82028-222-7", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/7rQSVsud9y/640/480", - "https://picsum.photos/seed/v503sK/640/480", - "https://picsum.photos/seed/9Yzs3A3x/640/480", - "https://picsum.photos/seed/JeLrcZtW/640/480" - ], - "featured": 1, - "position": 81, - "discount": "9" - }, - { - "id": 82, - "name": "Artesanal Madera Pelota", - "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", - "price": "€63", - "specialPrice": "€33", - "isNew": false, - "slug": "978-0-8045-0032-6", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/apkynsM/640/480", - "https://picsum.photos/seed/x8TxsLqWq/640/480", - "https://picsum.photos/seed/QCvTJm2Vw/640/480", - "https://picsum.photos/seed/Lc2uPnFVd/640/480", - "https://picsum.photos/seed/ZzPt5jVh/640/480" - ], - "featured": 0 - }, - { - "id": 83, - "name": "Ergonómico Algodón Bacon", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€64", - "specialPrice": "€46", - "isNew": false, - "slug": "978-0-06-018240-3", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/zY0e2vmO9O/640/480", - "https://picsum.photos/seed/wSoCzSaP/640/480", - "https://picsum.photos/seed/hx6X2MM/640/480", - "https://picsum.photos/seed/RKj2y/640/480" - ], - "featured": 1, - "position": 83, - "discount": "15" - }, - { - "id": 84, - "name": "Rústico Hormigon Bicicleta", - "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", - "price": "€150", - "specialPrice": "€24", - "isNew": true, - "slug": "978-0-503-25299-1", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/7GgcI3O/640/480", - "https://picsum.photos/seed/QJd06EZD/640/480", - "https://picsum.photos/seed/UUZtuR0/640/480", - "https://picsum.photos/seed/uNnFeax/640/480" - ], - "featured": 0, - "discount": "11" - }, - { - "id": 85, - "name": "Práctico Acero Ensalada", - "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", - "price": "€140", - "specialPrice": "€59", - "isNew": true, - "slug": "978-1-83978-799-7", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/gghO9FeS/640/480", - "https://picsum.photos/seed/spn5I6R/640/480", - "https://picsum.photos/seed/zgqFt9/640/480", - "https://picsum.photos/seed/MA9RK/640/480" - ], - "featured": 1 - }, - { - "id": 86, - "name": "Hecho a mano Plástico Teclado", - "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients", - "price": "€184", - "specialPrice": "€35", - "isNew": true, - "slug": "978-0-609-43686-8", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/JbXS1/640/480", - "https://picsum.photos/seed/0nBtkn8/640/480", - "https://picsum.photos/seed/JNyR9bbz/640/480", - "https://picsum.photos/seed/SjGh0AlcFr/640/480", - "https://picsum.photos/seed/KDUniZvZQ/640/480" - ], - "featured": 0, - "discount": "13" - }, - { - "id": 87, - "name": "Ergonómico Metal Salchichas", - "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", - "price": "€71", - "specialPrice": "€45", - "isNew": false, - "slug": "978-0-527-38222-3", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/kqMq4IbI/640/480", - "https://picsum.photos/seed/V5kJzsX4Qq/640/480" - ], - "featured": 0, - "position": 87 - }, - { - "id": 88, - "name": "Artesanal Acero Toallas", - "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart", - "price": "€20", - "specialPrice": "€36", - "isNew": false, - "slug": "978-1-106-45123-1", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/ZAUKGmZoH8/640/480", - "https://picsum.photos/seed/b4E2a/640/480" - ], - "featured": 1, - "position": 88 - }, - { - "id": 89, - "name": "Inteligente Plástico Ensalada", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€186", - "specialPrice": "€23", - "isNew": true, - "slug": "978-0-09-262953-2", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/yi0wdYVFd/640/480", - "https://picsum.photos/seed/N6x8TCI37/640/480", - "https://picsum.photos/seed/LdnWmnU/640/480", - "https://picsum.photos/seed/ZvJVU7yIs0/640/480", - "https://picsum.photos/seed/CuJshkx/640/480", - "https://picsum.photos/seed/K4BYL/640/480" - ], - "featured": 0, - "position": 89 - }, - { - "id": 90, - "name": "Ergonómico Ladrillo Guantes", - "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", - "price": "€144", - "specialPrice": "€26", - "isNew": false, - "slug": "978-0-08-218659-5", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/r3f9zy6s/640/480", - "https://picsum.photos/seed/geSHZ/640/480", - "https://picsum.photos/seed/0BzdL5/640/480", - "https://picsum.photos/seed/wmspiYqEs/640/480" - ], - "featured": 1, - "position": 90, - "discount": "5" - }, - { - "id": 91, - "name": "Sorprendente Madera Zapatos", - "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support", - "price": "€146", - "specialPrice": "€33", - "isNew": false, - "slug": "978-1-0925-8381-7", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/uFgCLHRlu/640/480", - "https://picsum.photos/seed/09IFrW/640/480", - "https://picsum.photos/seed/9lYlf4bME/640/480", - "https://picsum.photos/seed/dXedo8jO/640/480", - "https://picsum.photos/seed/1mnxTIVfpl/640/480" - ], - "featured": 0, - "discount": "12" - }, - { - "id": 92, - "name": "Increible Hormigon Pizza", - "description": "The Football Is Good For Training And Recreational Purposes", - "price": "€123", - "specialPrice": "€20", - "isNew": false, - "slug": "978-1-6760-4609-7", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/q5RDIKF/640/480", - "https://picsum.photos/seed/gftwcvjbrE/640/480" - ], - "featured": 1, - "position": 92 - }, - { - "id": 93, - "name": "Genérico Algodón Teclado", - "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design", - "price": "€119", - "specialPrice": "€38", - "isNew": false, - "slug": "978-1-4015-3538-4", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/Gc2nBOYHS/640/480", - "https://picsum.photos/seed/7MZtu75Zc/640/480", - "https://picsum.photos/seed/SDqw9obku/640/480", - "https://picsum.photos/seed/xAdLYxsae/640/480", - "https://picsum.photos/seed/epyeMo/640/480", - "https://picsum.photos/seed/g2Ub09a8/640/480" - ], - "featured": 0, - "discount": "5" - }, - { - "id": 94, - "name": "Artesanal Metal Bacon", - "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit", - "price": "€89", - "specialPrice": "€47", - "isNew": true, - "slug": "978-1-043-52433-3", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/lSX3wnBP/640/480", - "https://picsum.photos/seed/LUOu8/640/480" - ], - "featured": 1, - "position": 94, - "discount": "11" - }, - { - "id": 95, - "name": "Genérico Metal Sopa", - "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals", - "price": "€110", - "specialPrice": "€51", - "isNew": false, - "slug": "978-1-006-62105-5", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/JD4XtJf/640/480", - "https://picsum.photos/seed/KE0iL/640/480", - "https://picsum.photos/seed/x0wxQjAyB/640/480", - "https://picsum.photos/seed/3uWlXw9Oa9/640/480", - "https://picsum.photos/seed/NSuo2fRTJ/640/480" - ], - "featured": 0, - "position": 95, - "discount": "6" - }, - { - "id": 96, - "name": "Hecho a mano Ladrillo Zapatos", - "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive", - "price": "€76", - "specialPrice": "€47", - "isNew": true, - "slug": "978-0-553-62311-6", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/tY5Oe7H6T/640/480", - "https://picsum.photos/seed/IFg1o/640/480", - "https://picsum.photos/seed/b3WiU7yw/640/480" - ], - "featured": 0 - }, - { - "id": 97, - "name": "Guapo Granito Toallas", - "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles", - "price": "€178", - "specialPrice": "€31", - "isNew": false, - "slug": "978-0-270-99429-2", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/SKaIE/640/480", - "https://picsum.photos/seed/U4Dl1e/640/480" - ], - "featured": 1, - "position": 97 - }, - { - "id": 98, - "name": "Ergonómico Ladrillo Pizza", - "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J", - "price": "€32", - "specialPrice": "€58", - "isNew": false, - "slug": "978-0-316-30967-7", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/I55ldG/640/480", - "https://picsum.photos/seed/BLzJ5HyqJf/640/480", - "https://picsum.photos/seed/df7KM/640/480", - "https://picsum.photos/seed/wdjnNMXiAS/640/480", - "https://picsum.photos/seed/zVNn3S/640/480" - ], - "featured": 0, - "position": 98 - }, - { - "id": 99, - "name": "Sabroso Metal Ensalada", - "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients", - "price": "€188", - "specialPrice": "€59", - "isNew": true, - "slug": "978-0-212-16286-4", - "category": 2, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/V8MtVycBt/640/480", - "https://picsum.photos/seed/Tu33LX/640/480", - "https://picsum.photos/seed/uGXR6B5VgF/640/480" - ], - "featured": 0, - "discount": "11" - }, - { - "id": 100, - "name": "Sorprendente Ladrillo Pizza", - "description": "The Football Is Good For Training And Recreational Purposes", - "price": "€20", - "specialPrice": "€53", - "isNew": true, - "slug": "978-1-9793-4598-9", - "category": 1, - "postalCode": "12345", - "dateExpired": "30/01/2024", - "images": [ - "https://picsum.photos/seed/Q5rFD/640/480", - "https://picsum.photos/seed/gObhsXJgT/640/480", - "https://picsum.photos/seed/eD2kNo/640/480" - ], - "featured": 0, - "position": 100, - "discount": "8" - } -] diff --git a/api/controller/provinces/provinces.controller.js b/api/controller/provinces/provinces.controller.js new file mode 100644 index 0000000..d4b6f00 --- /dev/null +++ b/api/controller/provinces/provinces.controller.js @@ -0,0 +1,23 @@ +const db = require("../../db/db"); + +class ProvincesController { + async findAll(req, res) { + const params = req.query; + const tmpProvinces = await db.getProvinces(); + + let provinces = []; + + tmpProvinces.forEach(element => { + provinces = [...provinces,{ + code: element.id, + name: element.name + }]; + }) + + return res.status(200).send({ + data: provinces + }) + } +} + +module.exports = new ProvincesController(); diff --git a/api/db/db.js b/api/db/db.js index 5801e03..11e1c38 100644 --- a/api/db/db.js +++ b/api/db/db.js @@ -12,17 +12,47 @@ async function connect() { const mysql = require("mysql2/promise"); const connection = await mysql.createConnection("mysql://" + user + ":" + password + "@" + host + ":" + port + "/" + database + ""); - console.log("Connected to MySQL!"); global.connection = connection; return connection; } +//Procedure for get products async function getProducts(dateExpired, postalCode) { - console.log("Query in table MySQL!"); const conn = await connect(); const [rows] = await conn.query(`CALL catalogue_get("${dateExpired}", "${postalCode}")`); return rows; } +//Procedure for create transactions, do not carry out any manipulation at the bank +async function orderData_put(jsonOrderData) { + const conn = await connect(); + console.log(jsonOrderData); + const [rows] = await conn.query(`CALL orderData_put(?)`, [jsonOrderData], (err, results) => { + if (err) { + console.error(err); + } else { + console.log('Result:', results); + } + }); + return rows; +} -module.exports = { getProducts } \ No newline at end of file +//Procedure for get transactions, do not carry out any manipulation at the bank +async function orderData_get() { + const conn = await connect(); + const [rows] = await conn.query(`CALL orderData_get()`); + return rows; +} + + +async function getProvinces() { + const conn = await connect(); + const [rows] = await conn.query(`SELECT p.id, p.name, c.code, c.country + FROM vn.province p + JOIN vn.country c ON c.id = p.countryFk + WHERE c.country IN('España', 'Francia', 'Portugal')`); + return rows; +} + + +module.exports = { getProducts, orderData_get, orderData_put, getProvinces } \ No newline at end of file diff --git a/api/index.js b/api/index.js index 40bcdd9..6ca4d95 100644 --- a/api/index.js +++ b/api/index.js @@ -1,7 +1,16 @@ const cors = require('cors'); const express = require('express'); const path = require('path'); -const productController = require('./controller/product.controller'); +const paypal = require('paypal-rest-sdk'); +const productController = require('./controller/product/product.controller'); +const paymengtController = require('./controller/payment/payment.controller'); +const provincesController = require('./controller/provinces/provinces.controller'); + +paypal.configure({ + 'mode': 'sandbox', + 'client_id': process.env.CLIENT_ID, + 'client_secret': process.env.SECRET_KEY +}); const app = express(); const port = 9999; @@ -11,8 +20,16 @@ const corsOptions = { origin: allowedOrigins, optionsSuccessStatus: 200, }; + app.use(cors(corsOptions)); +app.use(express.json()); +app.use( + express.urlencoded({ + extended: true, + }), +); + app.get('/', (req, res) => { const indexPath = path.join(__dirname, './', 'index.html'); res.sendFile(indexPath); @@ -21,6 +38,10 @@ app.get('/', (req, res) => { //Products app.get('/api/products', productController.findAll); app.get('/api/products/:id', productController.findById); +app.post('/api/payment/', paymengtController.Create) +app.post('/api/payment/success', paymengtController.Success) +app.get('/api/payment/cancel', paymengtController.Cancel) +app.get('/api/provinces', provincesController.findAll) app.listen(port, () => { console.log(`Server listening at http://localhost:${port}`); diff --git a/api/package.json b/api/package.json index 879cd23..447daea 100644 --- a/api/package.json +++ b/api/package.json @@ -8,8 +8,5 @@ }, "keywords": [], "author": "", - "license": "ISC", - "dependencies": { - "express": "^4.18.2" - } + "license": "ISC" } diff --git a/package-lock.json b/package-lock.json index b22f23e..93b9c6c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,9 @@ "@vueuse/core": "^10.7.0", "axios": "^1.2.1", "express": "^4.18.2", + "fs": "^0.0.1-security", "mysql2": "^3.7.0", + "paypal-rest-sdk": "^1.8.1", "pinia": "^2.0.11", "quasar": "^2.6.0", "vee-validate": "^4.12.2", @@ -54,9 +56,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -133,9 +135,9 @@ } }, "node_modules/@faker-js/faker": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.3.1.tgz", - "integrity": "sha512-FdgpFxY6V6rLZE9mmIBb9hM0xpfvQOSNOLnzolzKwsE1DH+gC7lEKV1p1IbR0lAYyvYd5a4u3qWJzowUkw1bIw==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.4.0.tgz", + "integrity": "sha512-htW87352wzUCdX1jyUQocUcmAaFqcR/w082EC8iP/gtkF0K+aKcBp0hR5Arb7dzR8tQ1TrhE9DNa5EbJELm84w==", "dev": true, "funding": [ { @@ -149,13 +151,13 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -176,9 +178,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "node_modules/@intlify/bundle-utils": { @@ -206,12 +208,12 @@ } }, "node_modules/@intlify/core-base": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.9.0.tgz", - "integrity": "sha512-C7UXPymDIOlMGSNjAhNLtKgzITc/8BjINK5gNKXg8GiWCTwL6n3MWr55czksxn8RM5wTMz0qcLOFT+adtaVQaA==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.9.1.tgz", + "integrity": "sha512-qsV15dg7jNX2faBRyKMgZS8UcFJViWEUPLdzZ9UR0kQZpFVeIpc0AG7ZOfeP7pX2T9SQ5jSiorq/tii9nkkafA==", "dependencies": { - "@intlify/message-compiler": "9.9.0", - "@intlify/shared": "9.9.0" + "@intlify/message-compiler": "9.9.1", + "@intlify/shared": "9.9.1" }, "engines": { "node": ">= 16" @@ -221,11 +223,11 @@ } }, "node_modules/@intlify/message-compiler": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.9.0.tgz", - "integrity": "sha512-yDU/jdUm9KuhEzYfS+wuyja209yXgdl1XFhMlKtXEgSFTxz4COZQCRXXbbH8JrAjMsaJ7bdoPSLsKlY6mXG2iA==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.9.1.tgz", + "integrity": "sha512-zTvP6X6HeumHOXuAE1CMMsV6tTX+opKMOxO1OHTCg5N5Sm/F7d8o2jdT6W6L5oHUsJ/vvkGefHIs7Q3hfowmsA==", "dependencies": { - "@intlify/shared": "9.9.0", + "@intlify/shared": "9.9.1", "source-map-js": "^1.0.2" }, "engines": { @@ -236,9 +238,9 @@ } }, "node_modules/@intlify/shared": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.9.0.tgz", - "integrity": "sha512-1ECUyAHRrzOJbOizyGufYP2yukqGrWXtkmTu4PcswVnWbkcjzk3YQGmJ0bLkM7JZ0ZYAaohLGdYvBYnTOGYJ9g==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.9.1.tgz", + "integrity": "sha512-b3Pta1nwkz5rGq434v0psHwEwHGy1pYCttfcM22IE//K9owbpkEvFptx9VcuRAxjQdrO2If249cmDDjBu5wMDA==", "engines": { "node": ">= 16" }, @@ -336,9 +338,9 @@ } }, "node_modules/@quasar/app-vite": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-1.7.1.tgz", - "integrity": "sha512-cs3ix7w8f7884JiTp3EW6auZ9R+Fg4qoPxEZ7VRGOrSsUg5oQtR/i91jeQk4Z96J/JUOqtcKqdqbzN4fzaFyIg==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-1.7.3.tgz", + "integrity": "sha512-pnDInCFP9M1d7lJzS8UkiFq8bGWdekLz8Gu+NLI9UAxruIM9QVlSD4hUmWptTQXaVEvYlDnqfW3LOr57B8eVtw==", "dev": true, "dependencies": { "@quasar/render-ssr-error": "^1.0.3", @@ -579,9 +581,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.41", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", - "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", + "version": "4.17.42", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz", + "integrity": "sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -600,9 +602,9 @@ } }, "node_modules/@types/filewriter": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.32.tgz", - "integrity": "sha512-Kpi2GXQyYJdjL8mFclL1eDgihn1SIzorMZjD94kdPZh9E4VxGOeyjPxi5LpsM4Zku7P0reqegZTt2GxhmA9VBg==", + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.33.tgz", + "integrity": "sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==", "dev": true }, "node_modules/@types/har-format": { @@ -624,9 +626,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.8.tgz", - "integrity": "sha512-f8nQs3cLxbAFc00vEU59yf9UyGUftkPaLGfvbVOIDdx2i1b8epBqj2aNGyP19fiyXWvlmZ7qC1XLjAzw/OKIeA==", + "version": "20.11.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.13.tgz", + "integrity": "sha512-5G4zQwdiQBSWYTDAH1ctw2eidqdhMJaNsiIDKHFr55ihz5Trl2qqR8fdrT732yPBho5gkNxXm67OxWFBqX9aPg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -677,12 +679,12 @@ "dev": true }, "node_modules/@vee-validate/zod": { - "version": "4.12.4", - "resolved": "https://registry.npmjs.org/@vee-validate/zod/-/zod-4.12.4.tgz", - "integrity": "sha512-iNFhkBfGkre2b+eBXgBpNlNVStxDrI59sJUbzBr01EjyTkFOUgc/0wPJrhY/kBp+0pnGzNi04jklJaKfNK2ibg==", + "version": "4.12.5", + "resolved": "https://registry.npmjs.org/@vee-validate/zod/-/zod-4.12.5.tgz", + "integrity": "sha512-hUjvXaa4HHvlZeosucViIDOUikQmyKaXXuL6P8LR1ETOUrBV6ntTsafJGvRYtwhXosoLYuolUD6Km737okK4Gg==", "dependencies": { "type-fest": "^4.8.3", - "vee-validate": "4.12.4", + "vee-validate": "4.12.5", "zod": "^3.22.4" } }, @@ -709,49 +711,49 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.7.tgz", - "integrity": "sha512-hhCaE3pTMrlIJK7M/o3Xf7HV8+JoNTGOQ/coWS+V+pH6QFFyqtoXqQzpqsNp7UK17xYKua/MBiKj4e1vgZOBYw==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz", + "integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==", "dependencies": { "@babel/parser": "^7.23.6", - "@vue/shared": "3.4.7", + "@vue/shared": "3.4.15", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.7.tgz", - "integrity": "sha512-qDKBAIurCTub4n/6jDYkXwgsFuriqqmmLrIq1N2QDfYJA/mwiwvxi09OGn28g+uDdERX9NaKDLji0oTjE3sScg==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz", + "integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==", "dependencies": { - "@vue/compiler-core": "3.4.7", - "@vue/shared": "3.4.7" + "@vue/compiler-core": "3.4.15", + "@vue/shared": "3.4.15" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.7.tgz", - "integrity": "sha512-Gec6CLkReVswDYjQFq79O5rktri4R7TsD/VPCiUoJw40JhNNxaNJJa8mrQrWoJluW4ETy6QN0NUyC/JO77OCOw==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz", + "integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==", "dependencies": { "@babel/parser": "^7.23.6", - "@vue/compiler-core": "3.4.7", - "@vue/compiler-dom": "3.4.7", - "@vue/compiler-ssr": "3.4.7", - "@vue/shared": "3.4.7", + "@vue/compiler-core": "3.4.15", + "@vue/compiler-dom": "3.4.15", + "@vue/compiler-ssr": "3.4.15", + "@vue/shared": "3.4.15", "estree-walker": "^2.0.2", "magic-string": "^0.30.5", - "postcss": "^8.4.32", + "postcss": "^8.4.33", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.7.tgz", - "integrity": "sha512-PvYeSOvnCkST5mGS0TLwEn5w+4GavtEn6adcq8AspbHaIr+mId5hp7cG3ASy3iy8b+LuXEG2/QaV/nj5BQ/Aww==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz", + "integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==", "dependencies": { - "@vue/compiler-dom": "3.4.7", - "@vue/shared": "3.4.7" + "@vue/compiler-dom": "3.4.15", + "@vue/shared": "3.4.15" } }, "node_modules/@vue/devtools-api": { @@ -760,57 +762,57 @@ "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" }, "node_modules/@vue/reactivity": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.7.tgz", - "integrity": "sha512-F539DO0ogH0+L8F9Pnw7cjqibcmSOh5UTk16u5f4MKQ8fraqepI9zdh+sozPX6VmEHOcjo8qw3Or9ZcFFw4SZA==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.15.tgz", + "integrity": "sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==", "dependencies": { - "@vue/shared": "3.4.7" + "@vue/shared": "3.4.15" } }, "node_modules/@vue/runtime-core": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.7.tgz", - "integrity": "sha512-QMMsWRQaD3BpGyjjChthpl4Mji4Fjx1qfdufsXlDkKU3HV+hWNor2z+29F+E1MmVcP0ZfRZUfqYgtsQoL7IGwQ==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.15.tgz", + "integrity": "sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==", "dependencies": { - "@vue/reactivity": "3.4.7", - "@vue/shared": "3.4.7" + "@vue/reactivity": "3.4.15", + "@vue/shared": "3.4.15" } }, "node_modules/@vue/runtime-dom": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.7.tgz", - "integrity": "sha512-XwegyUY1rw8zxsX1Z36vwYcqo+uOgih5ti7y9vx+pPFhNdSQmN4LqK2RmSeAJG1oKV8NqSUmjpv92f/x6h0SeQ==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.15.tgz", + "integrity": "sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==", "dependencies": { - "@vue/runtime-core": "3.4.7", - "@vue/shared": "3.4.7", + "@vue/runtime-core": "3.4.15", + "@vue/shared": "3.4.15", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.7.tgz", - "integrity": "sha512-3bWnYLEkLLhkDWqvNk7IvbQD4UcxvFKxELBiOO2iG3m6AniFIsBWfHOO5tLVQnjdWkODu4rq0GipmfEenVAK5Q==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.15.tgz", + "integrity": "sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==", "dependencies": { - "@vue/compiler-ssr": "3.4.7", - "@vue/shared": "3.4.7" + "@vue/compiler-ssr": "3.4.15", + "@vue/shared": "3.4.15" }, "peerDependencies": { - "vue": "3.4.7" + "vue": "3.4.15" } }, "node_modules/@vue/shared": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.7.tgz", - "integrity": "sha512-G+i4glX1dMJk88sbJEcQEGWRQnVm9eIY7CcQbO5dpdsD9SF8jka3Mr5OqZYGjczGN1+D6EUwdu6phcmcx9iuPA==" + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz", + "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==" }, "node_modules/@vueuse/core": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.1.tgz", - "integrity": "sha512-74mWHlaesJSWGp1ihg76vAnfVq9NTv1YT0SYhAQ6zwFNdBkkP+CKKJmVOEHcdSnLXCXYiL5e7MaewblfiYLP7g==", + "version": "10.7.2", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.2.tgz", + "integrity": "sha512-AOyAL2rK0By62Hm+iqQn6Rbu8bfmbgaIMXcE3TSr7BdQ42wnSFlwIdPjInO62onYsEMK/yDMU8C6oGfDAtZ2qQ==", "dependencies": { "@types/web-bluetooth": "^0.0.20", - "@vueuse/metadata": "10.7.1", - "@vueuse/shared": "10.7.1", + "@vueuse/metadata": "10.7.2", + "@vueuse/shared": "10.7.2", "vue-demi": ">=0.14.6" }, "funding": { @@ -843,17 +845,17 @@ } }, "node_modules/@vueuse/metadata": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.1.tgz", - "integrity": "sha512-jX8MbX5UX067DYVsbtrmKn6eG6KMcXxLRLlurGkZku5ZYT3vxgBjui2zajvUZ18QLIjrgBkFRsu7CqTAg18QFw==", + "version": "10.7.2", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.2.tgz", + "integrity": "sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==", "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@vueuse/shared": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.1.tgz", - "integrity": "sha512-v0jbRR31LSgRY/C5i5X279A/WQjD6/JsMzGa+eqt658oJ75IvQXAeONmwvEMrvJQKnRElq/frzBR7fhmWY5uLw==", + "version": "10.7.2", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.2.tgz", + "integrity": "sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==", "dependencies": { "vue-demi": ">=0.14.6" }, @@ -920,9 +922,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", - "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true, "engines": { "node": ">=0.4.0" @@ -1109,9 +1111,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", + "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", "dev": true, "funding": [ { @@ -1128,9 +1130,9 @@ } ], "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" @@ -1146,9 +1148,9 @@ } }, "node_modules/axios": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dependencies": { "follow-redirects": "^1.15.4", "form-data": "^4.0.0", @@ -1286,9 +1288,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", "dev": true, "funding": [ { @@ -1305,8 +1307,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, @@ -1345,7 +1347,6 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, "engines": { "node": "*" } @@ -1392,9 +1393,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001576", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz", - "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==", + "version": "1.0.30001581", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz", + "integrity": "sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==", "dev": true, "funding": [ { @@ -1948,9 +1949,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.625", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.625.tgz", - "integrity": "sha512-DENMhh3MFgaPDoXWrVIqSPInQoLImywfCwrSmVl3cf9QHzoZSiutHwGaB/Ql3VkqcQV30rzgdM+BjKqBAJxo5Q==", + "version": "1.4.651", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.651.tgz", + "integrity": "sha512-jjks7Xx+4I7dslwsbaFocSwqBbGHQmuXBJUK9QBZTIrzPq3pzn6Uf2szFSP728FtLYE3ldiccmlkOM/zhGKCpA==", "dev": true }, "node_modules/elementtree": { @@ -2461,9 +2462,9 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "9.19.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.19.2.tgz", - "integrity": "sha512-CPDqTOG2K4Ni2o4J5wixkLVNwgctKXFu6oBpVJlpNq7f38lh9I80pRTouZSJ2MAebPJlINU/KTFSXyQfBUlymA==", + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.21.0.tgz", + "integrity": "sha512-B3NgZRtbi9kSl7M0x/PqhSMk7ULJUwWxQpTvM8b2Z6gNTORK0YSt5v1vzwY84oMs/2+3BWH5XmTepaQebcJwfA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", @@ -2471,7 +2472,7 @@ "nth-check": "^2.1.1", "postcss-selector-parser": "^6.0.13", "semver": "^7.5.4", - "vue-eslint-parser": "^9.3.1", + "vue-eslint-parser": "^9.4.2", "xml-name-validator": "^4.0.0" }, "engines": { @@ -2764,9 +2765,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", - "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", + "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -2896,9 +2897,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "funding": [ { "type": "individual", @@ -2956,6 +2957,11 @@ "node": ">= 0.6" } }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -3256,9 +3262,9 @@ } }, "node_modules/immutable": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", "dev": true }, "node_modules/import-fresh": { @@ -3859,15 +3865,11 @@ "dev": true }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", "engines": { - "node": ">=10" + "node": ">=16.14" } }, "node_modules/magic-string": { @@ -4076,9 +4078,9 @@ "dev": true }, "node_modules/mysql2": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.7.0.tgz", - "integrity": "sha512-c45jA3Jc1X8yJKzrWu1GpplBKGwv/wIV6ITZTlCSY7npF2YfJR+6nMP5e+NTQhUeJPSyOQAbGDCGEHbAl8HN9w==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.1.tgz", + "integrity": "sha512-3njoWAAhGBYy0tWBabqUQcLtczZUxrmmtc2vszQUekg3kTJyZ5/IeLC3Fo04u6y6Iy5Sba7pIIa2P/gs8D3ZeQ==", "dependencies": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -4104,14 +4106,6 @@ "node": ">=0.10.0" } }, - "node_modules/mysql2/node_modules/lru-cache": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", - "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", - "engines": { - "node": ">=16.14" - } - }, "node_modules/named-placeholders": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", @@ -4431,6 +4425,26 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, + "node_modules/paypal-rest-sdk": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/paypal-rest-sdk/-/paypal-rest-sdk-1.8.1.tgz", + "integrity": "sha512-Trj2GuPn10GqpICAxQh5wjxuDT7rq7DMOkvyatz05wI5xPGmqXN7UC0WfDSF9WSBs4YdcWZP0g+nY+sOdaFggw==", + "dependencies": { + "buffer-crc32": "^0.2.3", + "semver": "^5.0.3" + }, + "engines": { + "node": ">= v0.6.0" + } + }, + "node_modules/paypal-rest-sdk/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -4642,9 +4656,9 @@ } }, "node_modules/quasar": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.14.2.tgz", - "integrity": "sha512-f5KliWtM5BEuFsDU4yvuP+dlVIWZNrGu5VpWFsxzjpoykcP4B2HIOUiCl3mx2NCqERHd4Ts0aeioRkt9TTeExA==", + "version": "2.14.3", + "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.14.3.tgz", + "integrity": "sha512-7WzbtZxykLn2ic5oNpepZ2ZjDVpmxyVD4KC9rWe+Ia+4Er61svGr4jOuttN+Ok7IerLSCmKIRyjQMgasF60rFA==", "engines": { "node": ">= 10.18.1", "npm": ">= 6.13.4", @@ -4970,9 +4984,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.69.7", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.7.tgz", - "integrity": "sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==", + "version": "1.70.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", + "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -5013,6 +5027,18 @@ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -5089,14 +5115,15 @@ "dev": true }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", "dependencies": { "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -5478,9 +5505,9 @@ } }, "node_modules/type-fest": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", - "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.2.tgz", + "integrity": "sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==", "engines": { "node": ">=16" }, @@ -5622,9 +5649,9 @@ } }, "node_modules/vee-validate": { - "version": "4.12.4", - "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-4.12.4.tgz", - "integrity": "sha512-rqSjMdl0l/RiGKywKhkXttUKwDlQOoxTxe31uMQiMlwK4Hbtlvr3OcQvpREp/qPTARxNKudKWCUVW/mfzuxUVQ==", + "version": "4.12.5", + "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-4.12.5.tgz", + "integrity": "sha512-rvaDfLPSLwTk+mf016XWE4drB8yXzOsKXiKHTb9gNXNLTtQSZ0Ww26O0/xbIFQe+n3+u8Wv1Y8uO/aLDX4fxOg==", "dependencies": { "@vue/devtools-api": "^6.5.1", "type-fest": "^4.8.3" @@ -5634,9 +5661,9 @@ } }, "node_modules/vite": { - "version": "2.9.16", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz", - "integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==", + "version": "2.9.17", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.17.tgz", + "integrity": "sha512-XxcRzra6d7xrKXH66jZUgb+srThoPu+TLJc06GifUyKq9JmjHkc1Numc8ra0h56rju2jfVWw3B3fs5l3OFMvUw==", "dev": true, "dependencies": { "esbuild": "^0.14.27", @@ -5671,15 +5698,15 @@ } }, "node_modules/vue": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.7.tgz", - "integrity": "sha512-4urmkWpudekq0CPNMO7p6mBGa9qmTXwJMO2r6CT4EzIJVG7WoSReiysiNb7OSi/WI113oX0Srn9Rz1k/DCXKFQ==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.15.tgz", + "integrity": "sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==", "dependencies": { - "@vue/compiler-dom": "3.4.7", - "@vue/compiler-sfc": "3.4.7", - "@vue/runtime-dom": "3.4.7", - "@vue/server-renderer": "3.4.7", - "@vue/shared": "3.4.7" + "@vue/compiler-dom": "3.4.15", + "@vue/compiler-sfc": "3.4.15", + "@vue/runtime-dom": "3.4.15", + "@vue/server-renderer": "3.4.15", + "@vue/shared": "3.4.15" }, "peerDependencies": { "typescript": "*" @@ -5696,9 +5723,9 @@ "integrity": "sha512-4fdRMXO6FHzmE7H4soAph6QmPg3sL/RiGdd+axuxuU07f02LNMns0jMM88fmt1bvSbN+2Wyd8raho6p6nXUzag==" }, "node_modules/vue-eslint-parser": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.0.tgz", - "integrity": "sha512-7KsNBb6gHFA75BtneJsoK/dbZ281whUIwFYdQxA68QrCrGMXYzUMbPDHGcOQ0OocIVKrWSKWXZ4mL7tonCXoUw==", + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz", + "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -5720,12 +5747,12 @@ } }, "node_modules/vue-i18n": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.9.0.tgz", - "integrity": "sha512-xQ5SxszUAqK5n84N+uUyHH/PiQl9xZ24FOxyAaNonmOQgXeN+rD9z/6DStOpOxNFQn4Cgcquot05gZc+CdOujA==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.9.1.tgz", + "integrity": "sha512-xyQ4VspLdNSPTKBFBPWa1tvtj+9HuockZwgFeD2OhxxXuC2CWeNvV4seu2o9+vbQOyQbhAM5Ez56oxUrrnTWdw==", "dependencies": { - "@intlify/core-base": "9.9.0", - "@intlify/shared": "9.9.0", + "@intlify/core-base": "9.9.1", + "@intlify/shared": "9.9.1", "@vue/devtools-api": "^6.5.0" }, "engines": { diff --git a/package.json b/package.json index 57dd062..ca30603 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "floranet", "version": "0.0.1", "description": "A floranet app", - "productName": "Floranet App", + "productName": "Floranet", "author": "user", "private": true, "scripts": { @@ -22,7 +22,9 @@ "@vueuse/core": "^10.7.0", "axios": "^1.2.1", "express": "^4.18.2", + "fs": "^0.0.1-security", "mysql2": "^3.7.0", + "paypal-rest-sdk": "^1.8.1", "pinia": "^2.0.11", "quasar": "^2.6.0", "vee-validate": "^4.12.2", diff --git a/src/components/@inputs/Calendar.vue b/src/components/@inputs/Calendar.vue index a262502..2b91ff1 100644 --- a/src/components/@inputs/Calendar.vue +++ b/src/components/@inputs/Calendar.vue @@ -1,8 +1,10 @@ - - diff --git a/src/components/@inputs/Example/PostalCodeEx.vue b/src/components/@inputs/Example/PostalCodeEx.vue deleted file mode 100644 index 2f99696..0000000 --- a/src/components/@inputs/Example/PostalCodeEx.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - diff --git a/src/components/@inputs/PostalCode.vue b/src/components/@inputs/PostalCode.vue index 25919ab..da50c2d 100644 --- a/src/components/@inputs/PostalCode.vue +++ b/src/components/@inputs/PostalCode.vue @@ -1,47 +1,13 @@ @@ -54,17 +20,6 @@ export default defineComponent({

¿Dónde?

- diff --git a/src/components/@inputs/SortSelect.vue b/src/components/@inputs/SortSelect.vue index 288b368..1fd470c 100644 --- a/src/components/@inputs/SortSelect.vue +++ b/src/components/@inputs/SortSelect.vue @@ -10,7 +10,7 @@ export default defineComponent({ const formStore = useFormStore(); const { sortProductFilters } = storeToRefs(formStore); - async function handleOrder(order) { + function handleOrder(order) { sortProductFilters.value.order = order; sortProductFilters.value.isOpenOrderFilter = false; } diff --git a/src/components/header/HeaderPrimary.vue b/src/components/header/HeaderPrimary.vue index 78f7d52..c37c121 100644 --- a/src/components/header/HeaderPrimary.vue +++ b/src/components/header/HeaderPrimary.vue @@ -29,9 +29,9 @@ export default defineComponent({ :class="isOpenNav && 'mobile-nav'" > diff --git a/src/components/header/HeaderSecondary.vue b/src/components/header/HeaderSecondary.vue index 2a92039..a48753d 100644 --- a/src/components/header/HeaderSecondary.vue +++ b/src/components/header/HeaderSecondary.vue @@ -24,9 +24,9 @@ export default defineComponent({ - + Ver todos los diseños @@ -97,8 +96,7 @@ export default defineComponent({ Nuestra selección de plantas para el verano -

-

+

diff --git a/src/pages/ProductPage.vue b/src/pages/ProductPage.vue index c1a8e79..a6db3dc 100644 --- a/src/pages/ProductPage.vue +++ b/src/pages/ProductPage.vue @@ -1,7 +1,7 @@ - - diff --git a/src/components/@inputs/Example/PostalCodeEx.vue b/src/components/@inputs/Example/PostalCodeEx.vue deleted file mode 100644 index 2f99696..0000000 --- a/src/components/@inputs/Example/PostalCodeEx.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - diff --git a/src/components/@inputs/PostalCode.vue b/src/components/@inputs/PostalCode.vue index 25919ab..91b1743 100644 --- a/src/components/@inputs/PostalCode.vue +++ b/src/components/@inputs/PostalCode.vue @@ -1,47 +1,75 @@ @@ -51,20 +79,35 @@ export default defineComponent({
-

¿Dónde?

+

+ ¿Dónde? + +

- - + @blur="onBlur" + />
+ + diff --git a/src/components/@inputs/PriceRange.vue b/src/components/@inputs/PriceRange.vue index c420066..37f9749 100644 --- a/src/components/@inputs/PriceRange.vue +++ b/src/components/@inputs/PriceRange.vue @@ -11,16 +11,36 @@ export default defineComponent({ default: 0, required: true, }, + minDefault: { + type: Number, + default: 0, + required: true, + }, max: { type: Number, default: 200, required: true, }, + maxDefault: { + type: Number, + default: 200, + required: true, + }, + modelValue: { + type: String, + }, + bindValue: { + type: Object, + }, }, - setup() { + setup(props, { emit }) { const rangePriceStore = useRangePriceStore(); - return { rangePriceStore }; + const updateModel = (value) => { + emit("update:modelValue", value); + }; + + return { rangePriceStore, updateModel }; }, }); @@ -29,7 +49,14 @@ export default defineComponent({

Precio

- +

diff --git a/src/components/@inputs/SortSelect.vue b/src/components/@inputs/SortSelect.vue index 288b368..1fd470c 100644 --- a/src/components/@inputs/SortSelect.vue +++ b/src/components/@inputs/SortSelect.vue @@ -10,7 +10,7 @@ export default defineComponent({ const formStore = useFormStore(); const { sortProductFilters } = storeToRefs(formStore); - async function handleOrder(order) { + function handleOrder(order) { sortProductFilters.value.order = order; sortProductFilters.value.isOpenOrderFilter = false; } diff --git a/src/components/footer/FooterComponent.vue b/src/components/footer/FooterComponent.vue index 50d07d4..f76f966 100644 --- a/src/components/footer/FooterComponent.vue +++ b/src/components/footer/FooterComponent.vue @@ -33,8 +33,7 @@ export default defineComponent({

@@ -44,7 +43,7 @@ export default defineComponent({ Plantas
- Contacta + Contacta
@@ -123,31 +128,17 @@ export default defineComponent({ v-if="modalItem === 'isOpenAvailability'" class="modal-body-availability" > - - - + - - - +
@@ -159,23 +150,11 @@ export default defineComponent({ align="center" class="modal-footer" form="filters-form" + :disabled="modalItem === 'isOpenFilters' && isPostalCalendarEmpty" > -

ver disponibilidad

- @@ -238,6 +217,10 @@ export default defineComponent({ margin-bottom: 29px; &.availability { gap: 65px; + + @media only screen and (max-width: $med-md) { + gap: 10px; + } } & .modal-body-paragraph { diff --git a/src/components/ui/QuestionForm.vue b/src/components/ui/QuestionForm.vue index 3786bb2..0dc400d 100644 --- a/src/components/ui/QuestionForm.vue +++ b/src/components/ui/QuestionForm.vue @@ -1,49 +1,37 @@ + + + + diff --git a/src/pages/CheckoutPage.vue b/src/pages/CheckoutPage.vue index 9793ca3..645376d 100644 --- a/src/pages/CheckoutPage.vue +++ b/src/pages/CheckoutPage.vue @@ -20,7 +20,20 @@ export default defineComponent({ checkoutBlock, cart, totalPrice, - formState: { errors, meta, onSubmit, submitLoading }, + isError, + onError, + redsysData, + tooltip: { + postalCode: { + postalCodeRef, + postalCodeTooltip, + floatingStyles, + isHidden, + hideTooltip, + showTooltip, + }, + }, + formState: { errors, meta, onSubmit, isLoadingSubmit }, fields: { name, nameAttrs, @@ -51,21 +64,31 @@ export default defineComponent({ terms, termsAttrs, }, + phoneInputRef, + phoneSenderInputRef, + redsysFormRef, } = useCheckoutForm(); onBeforeMount(() => { if (cart.length === 0) return push("/"); }); - const isError = ref(false); - const onError = () => { - isError.value = true; - }; - return { handleClickStep, onSubmit, onError, + redsysData, + + phoneInputRef, + phoneSenderInputRef, + redsysFormRef, + + postalCodeRef, + postalCodeTooltip, + floatingStyles, + isHidden, + hideTooltip, + showTooltip, checkoutBlock, stepsFormated, @@ -74,7 +97,7 @@ export default defineComponent({ stepList, cart, step: ref(1), - submitLoading, + isLoadingSubmit, successURL: ref(""), cancelURL: ref(""), meta, @@ -117,21 +140,12 @@ export default defineComponent({ - + Ver todos los diseños @@ -97,8 +96,7 @@ export default defineComponent({ Nuestra selección de plantas para el verano -

-

+

diff --git a/src/pages/ProductPage.vue b/src/pages/ProductPage.vue index c1a8e79..da7acb8 100644 --- a/src/pages/ProductPage.vue +++ b/src/pages/ProductPage.vue @@ -1,7 +1,7 @@ @@ -95,9 +84,6 @@ export default defineComponent({

-<<<<<<< HEAD - -======= ->>>>>>> master
diff --git a/src/components/quasar-components/carousel/VerticalCarouselImgs.vue b/src/components/quasar-components/carousel/VerticalCarouselImgs.vue index 264e896..2343e4c 100644 --- a/src/components/quasar-components/carousel/VerticalCarouselImgs.vue +++ b/src/components/quasar-components/carousel/VerticalCarouselImgs.vue @@ -74,44 +74,10 @@ export default defineComponent({

Regala un verano lleno de flores y plantas

-<<<<<<< HEAD - - -======= ->>>>>>> master