Reactivate Admin Panel, implement exercise 2.1, add feedback if exercise solved

This commit is contained in:
2024-10-24 20:23:28 +02:00
parent c5c5a2da8b
commit 37f9f50da3
18 changed files with 409 additions and 350 deletions

View File

@@ -2,6 +2,8 @@ import { fetchAllExerciseGroups, updateExercise } from "@/data/api/exerciseApi";
import { ExerciseGroupApiModel } from "@/data/models/exercises/exerciseGroupApiModel";
import { defineStore } from "pinia";
import { ref } from "vue";
import { useFeedbackStore } from "./feedback.store";
import { BannerStateEnum } from "@/data/enums/bannerStateEnum";
export const useExerciseStore = defineStore("exerciseStore", {
state: () => ({
@@ -23,10 +25,55 @@ export const useExerciseStore = defineStore("exerciseStore", {
},
solveExercise(exerciseGroupNr: number, exerciseNr: number) {
const feedbackStore = useFeedbackStore()
this.fetchInProgress = true
updateExercise(exerciseGroupNr, exerciseNr, true)
.then(result => {
let bannerState = BannerStateEnum.ERROR
switch(exerciseGroupNr) {
case 0: {
switch(exerciseNr) {
case 1: bannerState = BannerStateEnum.EXERCISESOLVED01; break;
case 2: bannerState = BannerStateEnum.EXERCISESOLVED02; break;
}
break;
}
case 1: {
switch(exerciseNr) {
case 1: bannerState = BannerStateEnum.EXERCISESOLVED11; break;
case 2: bannerState = BannerStateEnum.EXERCISESOLVED12; break;
case 3: bannerState = BannerStateEnum.EXERCISESOLVED13; break;
}
break;
}
case 2: {
switch(exerciseNr) {
case 1: bannerState = BannerStateEnum.EXERCISESOLVED21; break;
case 2: bannerState = BannerStateEnum.EXERCISESOLVED22; break;
case 3: bannerState = BannerStateEnum.EXERCISESOLVED23; break;
}
break;
}
case 3: {
switch(exerciseNr) {
case 1: bannerState = BannerStateEnum.EXERCISESOLVED31; break;
case 2: bannerState = BannerStateEnum.EXERCISESOLVED32; break;
case 3: bannerState = BannerStateEnum.EXERCISESOLVED33; break;
}
break;
}
}
feedbackStore.changeBanner(bannerState)
this.getAllExercises()
})
}

View File

@@ -41,6 +41,53 @@ export const useFeedbackStore = defineStore("feedbackStore", {
}
////////// Exercise feedback //////////
case BannerStateEnum.EXERCISESOLVED01: {
this.title = this.i18n.t("bannerMessages.exerciseSolved01"); break;
}
case BannerStateEnum.EXERCISESOLVED02: {
this.title = this.i18n.t("bannerMessages.exerciseSolved02"); break;
}
case BannerStateEnum.EXERCISESOLVED11: {
this.title = this.i18n.t("bannerMessages.exerciseSolved11"); break;
}
case BannerStateEnum.EXERCISESOLVED12: {
this.title = this.i18n.t("bannerMessages.exerciseSolved12"); break;
}
case BannerStateEnum.EXERCISESOLVED13: {
this.title = this.i18n.t("bannerMessages.exerciseSolved13"); break;
}
case BannerStateEnum.EXERCISESOLVED21: {
this.title = this.i18n.t("bannerMessages.exerciseSolved21"); break;
}
case BannerStateEnum.EXERCISESOLVED22: {
this.title = this.i18n.t("bannerMessages.exerciseSolved22"); break;
}
case BannerStateEnum.EXERCISESOLVED23: {
this.title = this.i18n.t("bannerMessages.exerciseSolved23"); break;
}
case BannerStateEnum.EXERCISESOLVED31: {
this.title = this.i18n.t("bannerMessages.exerciseSolved31"); break;
}
case BannerStateEnum.EXERCISESOLVED32: {
this.title = this.i18n.t("bannerMessages.exerciseSolved32"); break;
}
case BannerStateEnum.EXERCISESOLVED33: {
this.title = this.i18n.t("bannerMessages.exerciseSolved33"); break;
}
////////// API Endpoint /api //////////
case BannerStateEnum.DATABASERESETSUCCESSFUL: {
@@ -79,25 +126,6 @@ export const useFeedbackStore = defineStore("feedbackStore", {
}
////////// API Endpoint /categories //////////
case BannerStateEnum.CATEGORYCREATESUCCESSFUL: {
this.title = this.i18n.t('bannerMessages.categoryCreateSuccessful'); break;
}
case BannerStateEnum.CATEGORYDELETESUCESSFUL: {
this.title = this.i18n.t('bannerMessages.categoryDeleteSuccessful'); break;
}
case BannerStateEnum.CATEGORYCREATEERROR: {
this.title = this.i18n.t('bannerMessages.categoryCreateError'); break;
}
case BannerStateEnum.CATEGORYDELETEERROR: {
this.title = this.i18n.t('bannerMessages.categoryDeleteError'); break;
}
////////// API Endpoint /orders //////////
case BannerStateEnum.ORDERPLACESUCCESSFUL: {
@@ -133,8 +161,6 @@ export const useFeedbackStore = defineStore("feedbackStore", {
case BannerStateEnum.ACCOUNTLOGINWRONGLOGIN:
case BannerStateEnum.ACCOUNTREGISTERERROR:
case BannerStateEnum.ACCOUNTREGISTERUSERNAMEINUSE:
case BannerStateEnum.CATEGORYCREATEERROR:
case BannerStateEnum.CATEGORYDELETEERROR:
case BannerStateEnum.PRODUCTDELETESUCCESSFUL:
case BannerStateEnum.PRODUCTDELETEERROR:
this.color = "red"
@@ -146,14 +172,26 @@ export const useFeedbackStore = defineStore("feedbackStore", {
case BannerStateEnum.ACCOUNTREGISTERSUCCESSFUL:
case BannerStateEnum.ACCOUNTUPDATESUCCESSFUL:
case BannerStateEnum.ACCOUNTLOGOUTSUCCESSFUL:
case BannerStateEnum.CATEGORYCREATESUCCESSFUL:
case BannerStateEnum.CATEGORYDELETESUCESSFUL:
case BannerStateEnum.ORDERPLACESUCCESSFUL:
case BannerStateEnum.PRODUCTCREATESUCCESSFUL:
case BannerStateEnum.PRODUCTCREATEERROR:
this.color = "green"
break;
case BannerStateEnum.EXERCISESOLVED01:
case BannerStateEnum.EXERCISESOLVED02:
case BannerStateEnum.EXERCISESOLVED11:
case BannerStateEnum.EXERCISESOLVED12:
case BannerStateEnum.EXERCISESOLVED13:
case BannerStateEnum.EXERCISESOLVED21:
case BannerStateEnum.EXERCISESOLVED22:
case BannerStateEnum.EXERCISESOLVED23:
case BannerStateEnum.EXERCISESOLVED31:
case BannerStateEnum.EXERCISESOLVED32:
case BannerStateEnum.EXERCISESOLVED33:
this.color = "purple"
break;
case BannerStateEnum.BASKETPRODUCTREMOVED:
this.color = "blue"
}
@@ -173,12 +211,6 @@ export const useFeedbackStore = defineStore("feedbackStore", {
this.icon = "mdi-account"
break;
case BannerStateEnum.CATEGORYCREATEERROR:
case BannerStateEnum.CATEGORYDELETEERROR:
case BannerStateEnum.CATEGORYCREATESUCCESSFUL:
case BannerStateEnum.CATEGORYDELETESUCESSFUL:
this.icon = "mdi-label"
break;
case BannerStateEnum.PRODUCTDELETESUCCESSFUL:
case BannerStateEnum.PRODUCTDELETEERROR:
@@ -186,6 +218,20 @@ export const useFeedbackStore = defineStore("feedbackStore", {
case BannerStateEnum.PRODUCTCREATEERROR:
this.icon = "mdi-store"
break;
case BannerStateEnum.EXERCISESOLVED01:
case BannerStateEnum.EXERCISESOLVED02:
case BannerStateEnum.EXERCISESOLVED11:
case BannerStateEnum.EXERCISESOLVED12:
case BannerStateEnum.EXERCISESOLVED13:
case BannerStateEnum.EXERCISESOLVED21:
case BannerStateEnum.EXERCISESOLVED22:
case BannerStateEnum.EXERCISESOLVED23:
case BannerStateEnum.EXERCISESOLVED31:
case BannerStateEnum.EXERCISESOLVED32:
case BannerStateEnum.EXERCISESOLVED33:
this.icon = "mdi-check-circle-outline"
break;
case BannerStateEnum.DATABASERESETSUCCESSFUL:
this.icon = "mdi-database-refresh"