diff --git a/src/views/Products.vue b/src/views/Products.vue
index fb1c6f6..03bcebe 100644
--- a/src/views/Products.vue
+++ b/src/views/Products.vue
@@ -24,17 +24,18 @@ const formatDate = (date) => DateTime.fromISO(date).toLocaleString(DateTime.DATE
const products = ref([]);
const productName = ref('');
const productDescription = ref('');
-const productQuantity = ref('0');
+const productQuantity = ref(0);
const productAlert = ref(false);
const productStockLimit = ref(null);
const base64Image = ref(null);
-const registerErrors = ref({name:'',description:'',quantity:'',alert_enabled:'',stock_limit:'',image:'',warehouse_ids:''});
+const registerErrors = ref({name:'',description:'',quantity:'',alert_enabled:'',stock_limit:'',image:'',warehouses:''});
+const modifyErrors = ref({name:'',description:'',quantity:'',alert_enabled:'',stock_limit:'',image:'',warehouses:''});
const editingRows = ref([]);
const selectedWarehouses = ref([]);
const warehouses = ref([]);
async function create_product() {
- registerErrors.value = {name:'',description:'',quantity:'',alert_enabled:'',stock_limit:'',warehouse_ids:''};
+ registerErrors.value = {name:'',description:'',quantity:'',alert_enabled:'',stock_limit:'',warehouses:''};
if (productAlert.value && !productStockLimit.value) {
registerErrors.value.stock_limit = 'Veuillez renseigner une limite de stock.';
return;
@@ -47,8 +48,9 @@ async function create_product() {
alert_enabled: productAlert.value,
stock_limit: productStockLimit.value,
image: base64Image.value,
- warehouse_ids: selectedWarehouses.value.map((warehouse) => warehouse.id),
+ warehouses: selectedWarehouses.value.map((warehouse) => warehouse.id),
});
+ warehouses.value = await getWarehouses();
products.value = await getProducts();
products.value = enrichProducts();
toast.add({ severity: 'success', life: 2500, summary:`${productName.value} crée`});
@@ -58,7 +60,7 @@ async function create_product() {
if (data.detail) {
toast.add({ severity: 'error',life: 2500, summary: 'Erreur', detail: data.detail });
}
- if (data.username) {
+ if (data.name) {
registerErrors.value.name = data.name[0];
}
if (data.description) {
@@ -76,8 +78,8 @@ async function create_product() {
if (data.image) {
registerErrors.value.image = data.image[0];
}
- if (data.warehouse_ids) {
- registerErrors.value.warehouse_ids = data.warehouse_ids[0];
+ if (data.warehouses) {
+ registerErrors.value.warehouses = data.warehouses[0];
}
} else {
toast.add({ severity: 'error',life: 2500, summary: 'Erreur', detail: 'Une erreur est survenue.' });
@@ -85,6 +87,7 @@ async function create_product() {
}
}
async function onRowEditSave(event) {
+ modifyErrors.value = { name: '', description: '', quantity: '', alert_enabled: '', stock_limit: '', image: '', warehouses: '' };
if (event && event.data) {
let {newData, index} = event;
products.value[index] = newData;
@@ -100,31 +103,56 @@ async function onRowEditSave(event) {
name: newData.name,
description: newData.description,
quantity: newData.quantity,
- warehouse_ids: newData.warehouse.map((warehouse) => warehouse.id),
- },
+ warehouses: newData.warehouse.map((warehouse) => warehouse.id),
+ },
newData.id);
+ warehouses.value = await getWarehouses();
products.value = await getProducts();
products.value = enrichProducts();
toast.add({ severity: 'success', life: 2500, summary: 'Succès', detail: 'Produit modifié.' });
- } catch (error) {
+ } catch (error) {
if (error.response && error.response.data) {
const data = error.response.data;
if (data.detail) {
- toast.add({ severity: 'error', life: 2500, summary: 'Erreur', detail: data.detail });
+ toast.add({ severity: 'error',life: 2500, summary: 'Erreur', detail: data.detail });
+ }
+ if (data.name) {
+ modifyErrors.value.name = data.name[0];
+ }
+ if (data.description) {
+ modifyErrors.value.description = data.description[0];
+ }
+ if (data.quantity) {
+ modifyErrors.value.quantity = data.quantity[0];
+ }
+ if (data.alert_enabled) {
+ modifyErrors.value.alert_enabled = data.alert_enabled[0];
+ }
+ if (data.stock_limit) {
+ modifyErrors.value.stock_limit = data.stock_limit[0];
+ }
+ if (data.image) {
+ modifyErrors.value.image = data.image[0];
+ }
+ if (data.warehouses) {
+ modifyErrors.value.warehouses = data.warehouses[0];
}
} else {
toast.add({ severity: 'error', life: 2500, summary: 'Erreur', detail: 'Une erreur est survenue.' });
}
- };
- } else {
- console.error("Event or event.data is undefined.");
- toast.add({ severity: 'error', life: 2500, summary: 'Error', detail: 'Aucune donnée n\'a été modifiée.' });
+ }
}
}
+function onRowEditInit(event) {
+ const { data } = event;
+ data.warehouse = data.warehouses.map(warehouse => ({ ...warehouse }));
+}
async function removeProduct(id) {
try {
await deleteProduct(id);
+ editingRows.value = [];
+ warehouses.value = await getWarehouses();
products.value = await getProducts();
products.value = enrichProducts();
toast.add({ severity: 'success', life: 2500, summary: 'Succès', detail: 'Produit supprimé.' });
@@ -142,7 +170,7 @@ async function removeProduct(id) {
const enrichProducts = () => {
return products.value.map((product) => {
const attachedWarehouses = warehouses.value.filter((warehouse) =>
- product.warehouse_ids.includes(warehouse.id)
+ product.warehouses.includes(warehouse.id)
);
return {
@@ -333,9 +361,9 @@ try {
{{ registerErrors.image }}
- {{ registerErrors.warehouse }}
+ {{ registerErrors.warehouses }}