Added update and delete functionality to article with cascade for variants.
This commit is contained in:
@@ -18,6 +18,7 @@ interface State {
|
||||
|
||||
// Article
|
||||
article: Article | null,
|
||||
articleEdit: Article | null,
|
||||
|
||||
origins: Array<Origin>,
|
||||
}
|
||||
@@ -36,6 +37,7 @@ export const useLabelEditorStore = defineStore('label_editor_store', {
|
||||
|
||||
// Article
|
||||
article: null,
|
||||
articleEdit: null,
|
||||
|
||||
origins: [
|
||||
Origin.EU,
|
||||
@@ -113,10 +115,13 @@ export const useLabelEditorStore = defineStore('label_editor_store', {
|
||||
method: 'GET',
|
||||
});
|
||||
|
||||
this.article = article;
|
||||
this.addNotification(false, 'Artikel geladen: ' + this.article.name);
|
||||
this.article = JSON.parse(JSON.stringify(article));
|
||||
this.articleEdit = JSON.parse(JSON.stringify(article));
|
||||
|
||||
this.addNotification(false, 'Artikel geladen: ' + this.article!.name);
|
||||
} catch {
|
||||
this.article = null;
|
||||
this.articleEdit = null;
|
||||
this.addNotification(true, 'Fehler beim laden des Artikel. ID:' + articleID);
|
||||
}
|
||||
},
|
||||
@@ -139,12 +144,15 @@ export const useLabelEditorStore = defineStore('label_editor_store', {
|
||||
|
||||
async createArticle(article: Article) {
|
||||
try {
|
||||
this.article = await $fetch<Article>(this.config.public.url + '/article', {
|
||||
let createdArticle = await $fetch<Article>(this.config.public.url + '/article', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(article),
|
||||
});
|
||||
|
||||
this.addNotification(false, 'Artikel "' + article.name + '" erstellt');
|
||||
this.article = JSON.parse(JSON.stringify(createdArticle));
|
||||
this.articleEdit = JSON.parse(JSON.stringify(createdArticle));
|
||||
|
||||
this.addNotification(false, 'Artikel "' + createdArticle.name + '" erstellt');
|
||||
} catch {
|
||||
this.addNotification(true, 'Fehler beim erstellen des Artikel: ' + article.name);
|
||||
}
|
||||
@@ -152,21 +160,49 @@ export const useLabelEditorStore = defineStore('label_editor_store', {
|
||||
|
||||
async updateArticle(article: Article) {
|
||||
if (this.article != null) {
|
||||
console.log(article);
|
||||
|
||||
try {
|
||||
this.article = await $fetch<Article>(this.config.public.url + '/article/update', {
|
||||
let updatedArticle = await $fetch<Article>(this.config.public.url + '/article/' + article.id, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(this.article),
|
||||
body: JSON.stringify(article),
|
||||
});
|
||||
|
||||
this.addNotification(false, 'Artikel "' + this.article.name + '" aktualisiert');
|
||||
this.article.name = updatedArticle.name;
|
||||
this.article.bio = updatedArticle.bio;
|
||||
this.article.origin = updatedArticle.origin;
|
||||
this.article.description = updatedArticle.description;
|
||||
this.article.ingredients = updatedArticle.ingredients;
|
||||
|
||||
this.addNotification(false, 'Artikel "' + article.name + '" aktualisiert');
|
||||
} catch {
|
||||
this.addNotification(true, 'Fehler beim aktualisieren des Artikel: ' + this.article.name);
|
||||
this.addNotification(true, 'Fehler beim aktualisieren des Artikel: ' + article.name);
|
||||
}
|
||||
} else {
|
||||
this.addNotification(true, 'Es ist kein Artikel ausgewählt');
|
||||
}
|
||||
},
|
||||
|
||||
async deleteCurrentArticle() {
|
||||
if(this.article != null) {
|
||||
try {
|
||||
await $fetch(this.config.public.url + '/article/' + this.article.id, {
|
||||
method: 'DELETE',
|
||||
});
|
||||
|
||||
this.article = null;
|
||||
|
||||
this.addNotification(false, 'Variante gelöscht.');
|
||||
} catch {
|
||||
this.addNotification(true, 'Fehler beim löschen der Variante.');
|
||||
}
|
||||
} else {
|
||||
this.addNotification(true, 'Kann Variante nicht gelöscht werden. Es ist kein Artikel ausgewählt.');
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
// Variant
|
||||
async addVariant(variant: Variant) {
|
||||
if(this.article != null) {
|
||||
|
||||
Reference in New Issue
Block a user