From 3866d406b20cd1df983a410393fcbc6df0f0a9a4 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Sat, 25 Jan 2025 11:57:58 +0100 Subject: [PATCH] update usage of salutation --- .../admin/club/member/CreateMemberModal.vue | 21 ++++---- .../admin/club/member/DeleteMemberModal.vue | 3 -- src/enums/salutation.ts | 6 --- src/stores/admin/settings/salutation.ts | 53 +++++++++++++++++++ src/types/permissionTypes.ts | 3 ++ .../admin/club/member/member.models.ts | 10 ++-- .../admin/club/member/membership.models.ts | 4 +- .../admin/settings/salutation.models.ts | 13 +++++ src/views/admin/club/members/MemberEdit.vue | 17 +++--- 9 files changed, 96 insertions(+), 34 deletions(-) delete mode 100644 src/enums/salutation.ts create mode 100644 src/stores/admin/settings/salutation.ts create mode 100644 src/viewmodels/admin/settings/salutation.models.ts diff --git a/src/components/admin/club/member/CreateMemberModal.vue b/src/components/admin/club/member/CreateMemberModal.vue index 0436dd5..e3fc822 100644 --- a/src/components/admin/club/member/CreateMemberModal.vue +++ b/src/components/admin/club/member/CreateMemberModal.vue @@ -6,7 +6,7 @@
- + Anrede
@@ -39,7 +39,9 @@ 'relative cursor-default select-none py-2 pl-10 pr-4', ]" > - {{ salutation }} + {{ + salutation.salutation + }} @@ -97,9 +99,9 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import FailureXMark from "@/components/FailureXMark.vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; -import { Salutation } from "@/enums/salutation"; import { useMemberStore } from "@/stores/admin/club/member/member"; import type { CreateMemberViewModel } from "@/viewmodels/admin/club/member/member.models"; +import { useSalutationStore } from "../../../../stores/admin/settings/salutation"; diff --git a/src/enums/salutation.ts b/src/enums/salutation.ts deleted file mode 100644 index ba2fce4..0000000 --- a/src/enums/salutation.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum Salutation { - sir = "sir", - madam = "madam", - other = "other", - none = "none", -} diff --git a/src/stores/admin/settings/salutation.ts b/src/stores/admin/settings/salutation.ts new file mode 100644 index 0000000..1b26df3 --- /dev/null +++ b/src/stores/admin/settings/salutation.ts @@ -0,0 +1,53 @@ +import { defineStore } from "pinia"; +import type { + CreateSalutationViewModel, + UpdateSalutationViewModel, + SalutationViewModel, +} from "@/viewmodels/admin/settings/salutation.models"; +import { http } from "@/serverCom"; +import type { AxiosResponse } from "axios"; + +export const useSalutationStore = defineStore("salutation", { + state: () => { + return { + salutations: [] as Array, + loading: "loading" as "loading" | "fetched" | "failed", + }; + }, + actions: { + fetchSalutations() { + this.loading = "loading"; + http + .get("/admin/salutation") + .then((result) => { + this.salutations = result.data; + this.loading = "fetched"; + }) + .catch((err) => { + this.loading = "failed"; + }); + }, + fetchSalutationById(id: number): Promise> { + return http.get(`/admin/salutation/${id}`); + }, + async createSalutation(salutation: CreateSalutationViewModel): Promise> { + const result = await http.post(`/admin/salutation`, { + salutation: salutation.salutation, + }); + this.fetchSalutations(); + return result; + }, + async updateActiveSalutation(salutation: UpdateSalutationViewModel): Promise> { + const result = await http.patch(`/admin/salutation/${salutation.id}`, { + salutation: salutation.salutation, + }); + this.fetchSalutations(); + return result; + }, + async deleteSalutation(salutation: number): Promise> { + const result = await http.delete(`/admin/salutation/${salutation}`); + this.fetchSalutations(); + return result; + }, + }, +}); diff --git a/src/types/permissionTypes.ts b/src/types/permissionTypes.ts index 5ba5cb4..cd37e49 100644 --- a/src/types/permissionTypes.ts +++ b/src/types/permissionTypes.ts @@ -11,6 +11,7 @@ export type PermissionModule = | "executive_position" | "communication_type" | "membership_status" + | "salutation" | "calendar_type" | "user" | "role" @@ -53,6 +54,7 @@ export const permissionModules: Array = [ "executive_position", "communication_type", "membership_status", + "salutation", "calendar_type", "user", "role", @@ -71,6 +73,7 @@ export const sectionsAndModules: SectionsAndModulesObject = { "executive_position", "communication_type", "membership_status", + "salutation", "calendar_type", "query_store", "template", diff --git a/src/viewmodels/admin/club/member/member.models.ts b/src/viewmodels/admin/club/member/member.models.ts index 0283545..a6b49ff 100644 --- a/src/viewmodels/admin/club/member/member.models.ts +++ b/src/viewmodels/admin/club/member/member.models.ts @@ -1,10 +1,10 @@ -import { Salutation } from "@/enums/salutation"; import type { CommunicationViewModel } from "./communication.models"; import type { MembershipViewModel } from "./membership.models"; +import type { SalutationViewModel } from "../../settings/salutation.models"; export interface MemberViewModel { id: number; - salutation: Salutation; + salutation: SalutationViewModel; firstname: string; lastname: string; nameaffix: string; @@ -19,7 +19,7 @@ export interface MemberViewModel { export interface MemberStatisticsViewModel { id: number; - salutation: Salutation; + salutation: string; firstname: string; lastname: string; nameaffix: string; @@ -30,7 +30,7 @@ export interface MemberStatisticsViewModel { } export interface CreateMemberViewModel { - salutation: Salutation; + salutationId: number; firstname: string; lastname: string; nameaffix: string; @@ -40,7 +40,7 @@ export interface CreateMemberViewModel { export interface UpdateMemberViewModel { id: number; - salutation: Salutation; + salutationId: number; firstname: string; lastname: string; nameaffix: string; diff --git a/src/viewmodels/admin/club/member/membership.models.ts b/src/viewmodels/admin/club/member/membership.models.ts index b2114c0..6051ec9 100644 --- a/src/viewmodels/admin/club/member/membership.models.ts +++ b/src/viewmodels/admin/club/member/membership.models.ts @@ -1,5 +1,3 @@ -import type { Salutation } from "../../../../enums/salutation"; - export interface MembershipViewModel { id: number; start: Date; @@ -15,7 +13,7 @@ export interface MembershipStatisticsViewModel { status: string; statusId: number; memberId: number; - memberSalutation: Salutation; + memberSalutation: string; memberFirstname: string; memberLastname: string; memberNameaffix: string; diff --git a/src/viewmodels/admin/settings/salutation.models.ts b/src/viewmodels/admin/settings/salutation.models.ts new file mode 100644 index 0000000..73915ab --- /dev/null +++ b/src/viewmodels/admin/settings/salutation.models.ts @@ -0,0 +1,13 @@ +export interface SalutationViewModel { + id: number; + salutation: string; +} + +export interface CreateSalutationViewModel { + salutation: string; +} + +export interface UpdateSalutationViewModel { + id: number; + salutation: string; +} diff --git a/src/views/admin/club/members/MemberEdit.vue b/src/views/admin/club/members/MemberEdit.vue index af6e56b..94b1ef3 100644 --- a/src/views/admin/club/members/MemberEdit.vue +++ b/src/views/admin/club/members/MemberEdit.vue @@ -9,7 +9,7 @@ >

Mitglied bearbeiten

- + Anrede
@@ -42,7 +42,9 @@ 'relative cursor-default select-none py-2 pl-10 pr-4', ]" > - {{ salutation }} + {{ + salutation.salutation + }} @@ -101,7 +103,7 @@ import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } f import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import cloneDeep from "lodash.clonedeep"; import isEqual from "lodash.isequal"; -import { Salutation } from "@/enums/salutation"; +import { useSalutationStore } from "../../../../stores/admin/settings/salutation";