From fcb83d05fbbb2857b5ee7207ba6b553d5314a867 Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sat, 11 Jan 2025 11:34:37 -0500 Subject: [PATCH] #84 refactor(frontend): send purchase moved to repository. --- .../don-confiao/src/components/Purchase.vue | 32 ++++++------------- .../frontend/don-confiao/src/services/api.js | 4 +++ .../don-confiao/src/services/django-api.js | 25 +++++++++++++++ 3 files changed, 39 insertions(+), 22 deletions(-) diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/Purchase.vue b/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/Purchase.vue index 19c112d..400e8a2 100644 --- a/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/Purchase.vue +++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/Purchase.vue @@ -309,28 +309,16 @@ }, async submit() { this.$refs.purchase.validate(); - if (this.valid) { - try { - const response = await fetch('/don_confiao/api/sales/', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(this.purchase), - }); - if (response.ok) { - const data = await response.json(); - console.log('Compra enviada:', data); - this.$router.push({ - path: "/summary_purchase", - query : {id: parseInt(data.id)} - }); - } else { - console.error('Error al enviar la compra:', response.statusText); - } - } catch (error) { - console.error('Error de red:', error); - } + if (this.valid) { + this.api.createPurchase(this.purchase) + .then(data => { + console.log('Compra enviada:', data); + this.$router.push({ + path: "/summary_purchase", + query : {id: parseInt(data.id)} + }); + }) + .catch(error => console.error('Error al enviarl la compra:', error)); } else { this.show_alert_purchase = true; setTimeout(() => { diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api.js b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api.js index d783b0b..46d54be 100644 --- a/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api.js +++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api.js @@ -14,6 +14,10 @@ class Api { getPaymentMethods() { return this.apiImplementation.getPaymentMethods(); } + + createPurchase(purchase) { + return this.apiImplementation.createPurchase(purchase); + } } export default Api; diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/django-api.js b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/django-api.js index 756bfcf..5e716d6 100644 --- a/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/django-api.js +++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/django-api.js @@ -37,6 +37,31 @@ class DjangoApi { }); }); } + + createPurchase(purchase) { + return new Promise((resolve, reject) => { + console.log('compra a enviar:', purchase); + fetch('/don_confiao/api/sales/', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(purchase), + }).then(response => { + if (!response.ok) { + reject(new Error(`Error ${response.status}: ${response.statusText}`)); + } else { + response.json().then(data => { + if (!data) { + reject(new Error('La respuesta no es un JSON vĂ¡lido')); + } else { + resolve(data); + } + }); + } + }).catch(error => reject(error)); + }); + } } export default DjangoApi;