diff --git a/public/ChartDB(administration-db).json b/public/ChartDB(administration-db).json index 2bc4c00..f379e56 100644 --- a/public/ChartDB(administration-db).json +++ b/public/ChartDB(administration-db).json @@ -1,8 +1,8 @@ { "id": "0", "name": "administration-db", - "createdAt": "2025-01-12T13:30:56.612Z", - "updatedAt": "2025-01-12T13:30:56.612Z", + "createdAt": "2025-01-25T11:15:11.340Z", + "updatedAt": "2025-01-25T11:15:11.340Z", "databaseType": "mariadb", "tables": [ { @@ -453,8 +453,8 @@ "id": "35", "name": "membership", "schema": "administration", - "x": 431.0493261325482, - "y": -194.01007034924007, + "x": 423.2353392314366, + "y": -235.03350158007595, "fields": [ { "id": "36", @@ -698,8 +698,8 @@ "id": "56", "name": "membership_status", "schema": "administration", - "x": 712.2717493973673, - "y": -155.53936203938048, + "x": 704.4577624962558, + "y": -196.5627932702164, "fields": [ { "id": "57", @@ -766,21 +766,6 @@ }, { "id": "62", - "name": "salutation", - "type": { - "id": "varchar", - "name": "varchar" - }, - "primaryKey": false, - "unique": false, - "nullable": false, - "character_maximum_length": "255", - "default": "'none'", - "collation": "utf8mb4_general_ci", - "createdAt": 1734524896259 - }, - { - "id": "63", "name": "firstname", "type": { "id": "varchar", @@ -794,7 +779,7 @@ "createdAt": 1734524896259 }, { - "id": "64", + "id": "63", "name": "lastname", "type": { "id": "varchar", @@ -808,7 +793,7 @@ "createdAt": 1734524896259 }, { - "id": "65", + "id": "64", "name": "nameaffix", "type": { "id": "varchar", @@ -822,7 +807,7 @@ "createdAt": 1734524896259 }, { - "id": "66", + "id": "65", "name": "birthdate", "type": { "id": "date", @@ -834,7 +819,7 @@ "createdAt": 1734524896259 }, { - "id": "67", + "id": "66", "name": "internalId", "type": { "name": "varchar", @@ -845,6 +830,21 @@ "primaryKey": false, "createdAt": 1736351121650 }, + { + "id": "67", + "name": "salutationId", + "type": { + "name": "int", + "id": "int" + }, + "primaryKey": false, + "unique": false, + "nullable": false, + "character_maximum_length": "255", + "default": "'none'", + "collation": "utf8mb4_general_ci", + "createdAt": 1734524896259 + }, { "id": "68", "name": "sendNewsletterId", @@ -889,8 +889,8 @@ "id": "71", "name": "communication_type", "schema": "administration", - "x": 712.818422135433, - "y": 325.42673695158805, + "x": 735.756546723297, + "y": 175.00748910518985, "fields": [ { "id": "72", @@ -1231,8 +1231,8 @@ "id": "96", "name": "communication", "schema": "administration", - "x": 428.2501516386368, - "y": 181.28410937476986, + "x": 451.18827622650076, + "y": 30.864861528371677, "fields": [ { "id": "97", @@ -1682,11 +1682,48 @@ "isMaterializedView": false, "createdAt": 1734524896260, "diagramId": "7gb18czobyir" + }, + { + "id": "132", + "name": "salutation", + "x": 428.6069830535669, + "y": 516.5938067201159, + "fields": [ + { + "id": "133", + "name": "id", + "type": { + "name": "int", + "id": "int" + }, + "unique": true, + "nullable": false, + "primaryKey": true, + "createdAt": 1737803524494 + }, + { + "id": "134", + "name": "salutation", + "type": { + "name": "varchar", + "id": "varchar" + }, + "unique": false, + "nullable": false, + "primaryKey": false, + "createdAt": 1737803546875 + } + ], + "indexes": [], + "color": "#4dee8a", + "createdAt": 1737803524494, + "isView": false, + "order": 15 } ], "relationships": [ { - "id": "132", + "id": "135", "name": "FK_1fd52c8f109123e5a2c67dc2c83", "sourceSchema": "administration", "targetSchema": "administration", @@ -1700,7 +1737,7 @@ "diagramId": "7gb18czobyir" }, { - "id": "133", + "id": "136", "name": "FK_21994db635b47e07f45b2686a51", "sourceSchema": "administration", "targetSchema": "administration", @@ -1714,7 +1751,7 @@ "diagramId": "7gb18czobyir" }, { - "id": "134", + "id": "137", "name": "FK_2912b056a5d0b7977360a986164", "sourceSchema": "administration", "targetSchema": "administration", @@ -1728,7 +1765,7 @@ "diagramId": "7gb18czobyir" }, { - "id": "135", + "id": "138", "name": "FK_3b4b41597707b13086e71727422", "sourceSchema": "administration", "targetSchema": "administration", @@ -1742,7 +1779,7 @@ "diagramId": "7gb18czobyir" }, { - "id": "136", + "id": "139", "name": "FK_98b70e687c35709d2f01b3d7d74", "sourceSchema": "administration", "targetSchema": "administration", @@ -1756,7 +1793,7 @@ "diagramId": "7gb18czobyir" }, { - "id": "137", + "id": "140", "name": "FK_a47e04bfd3671d8a375d1896d25", "sourceSchema": "administration", "targetSchema": "administration", @@ -1770,7 +1807,7 @@ "diagramId": "7gb18czobyir" }, { - "id": "138", + "id": "141", "name": "FK_ba47b44c2ddf34c1bcc75df6675", "sourceSchema": "administration", "targetSchema": "administration", @@ -1784,7 +1821,7 @@ "diagramId": "7gb18czobyir" }, { - "id": "139", + "id": "142", "name": "FK_dbebe53df1caa0b6715a220b0ea", "sourceSchema": "administration", "targetSchema": "administration", @@ -1798,7 +1835,7 @@ "diagramId": "7gb18czobyir" }, { - "id": "140", + "id": "143", "name": "FK_e9fd4d37c4ac0fb08bd6eeeda3c", "sourceSchema": "administration", "targetSchema": "administration", @@ -1812,7 +1849,7 @@ "diagramId": "7gb18czobyir" }, { - "id": "141", + "id": "144", "name": "FK_fc5f59e5c9aafdedd25ed8ed36e", "sourceSchema": "administration", "targetSchema": "administration", @@ -1824,11 +1861,24 @@ "targetCardinality": "one", "createdAt": 1734524896262, "diagramId": "7gb18czobyir" + }, + { + "id": "145", + "name": "member_salutationId_fk", + "sourceSchema": "administration", + "sourceTableId": "60", + "targetSchema": "administration", + "targetTableId": "132", + "sourceFieldId": "67", + "targetFieldId": "133", + "sourceCardinality": "many", + "targetCardinality": "one", + "createdAt": 1737803651894 } ], "dependencies": [ { - "id": "142", + "id": "146", "schema": "administration", "tableId": "60", "dependentSchema": "administration", @@ -1837,7 +1887,7 @@ "diagramId": "7gb18czobyir" }, { - "id": "143", + "id": "147", "schema": "administration", "tableId": "127", "dependentSchema": "administration", @@ -1846,7 +1896,7 @@ "diagramId": "7gb18czobyir" }, { - "id": "144", + "id": "148", "schema": "administration", "tableId": "112", "dependentSchema": "administration", @@ -1854,55 +1904,19 @@ "createdAt": 1734524897267, "diagramId": "7gb18czobyir" }, - { - "id": "145", - "schema": "administration", - "tableId": "60", - "dependentSchema": "administration", - "dependentTableId": "11", - "createdAt": 1734524897283, - "diagramId": "7gb18czobyir" - }, - { - "id": "146", - "schema": "administration", - "tableId": "1", - "dependentSchema": "administration", - "dependentTableId": "11", - "createdAt": 1734524897283, - "diagramId": "7gb18czobyir" - }, - { - "id": "147", - "schema": "administration", - "tableId": "60", - "dependentSchema": "administration", - "dependentTableId": "21", - "createdAt": 1734524897244, - "diagramId": "7gb18czobyir" - }, - { - "id": "148", - "schema": "administration", - "tableId": "56", - "dependentSchema": "administration", - "dependentTableId": "76", - "createdAt": 1734524897297, - "diagramId": "7gb18czobyir" - }, { "id": "149", "schema": "administration", - "tableId": "35", + "tableId": "60", "dependentSchema": "administration", - "dependentTableId": "76", - "createdAt": 1734524897297, + "dependentTableId": "11", + "createdAt": 1734524897283, "diagramId": "7gb18czobyir" }, { "id": "150", "schema": "administration", - "tableId": "123", + "tableId": "1", "dependentSchema": "administration", "dependentTableId": "11", "createdAt": 1734524897283, @@ -1913,6 +1927,42 @@ "schema": "administration", "tableId": "60", "dependentSchema": "administration", + "dependentTableId": "21", + "createdAt": 1734524897244, + "diagramId": "7gb18czobyir" + }, + { + "id": "152", + "schema": "administration", + "tableId": "56", + "dependentSchema": "administration", + "dependentTableId": "76", + "createdAt": 1734524897297, + "diagramId": "7gb18czobyir" + }, + { + "id": "153", + "schema": "administration", + "tableId": "35", + "dependentSchema": "administration", + "dependentTableId": "76", + "createdAt": 1734524897297, + "diagramId": "7gb18czobyir" + }, + { + "id": "154", + "schema": "administration", + "tableId": "123", + "dependentSchema": "administration", + "dependentTableId": "11", + "createdAt": 1734524897283, + "diagramId": "7gb18czobyir" + }, + { + "id": "155", + "schema": "administration", + "tableId": "60", + "dependentSchema": "administration", "dependentTableId": "86", "createdAt": 1734524897266, "diagramId": "7gb18czobyir" diff --git a/public/administration-db.png b/public/administration-db.png index d150de5..1fe4edf 100644 Binary files a/public/administration-db.png and b/public/administration-db.png differ diff --git a/public/administration-db.svg b/public/administration-db.svg index 13fcea8..0a64cc1 100644 --- a/public/administration-db.svg +++ b/public/administration-db.svg @@ -1 +1 @@ -member_executive_positionsidintnotevarchar?startdateenddate?memberIdintexecutivePositionIdintmember_executive_positions_viewpositionIdint?positionvarchar?memberIdint?memberSalutationvarchar?memberFirstnamevarchar?memberLastnamevarchar?memberNameaffixvarchar?memberBirthdatedate?durationInDaysdecimal?member_viewmember_idintmember_salutationvarcharmember_firstnamevarcharmember_lastnamevarcharmember_nameaffixvarcharmember_birthdatedatemember_sendNewsletterIdint?todayAgebigint?ageThisYearint?awardidintawardvarcharmembershipidintstartdateenddate?terminationReasonvarchar?memberIdintstatusIdintmember_awardsidintgiventinyintnotevarchar?datedatememberIdintawardIdintmembership_statusidintstatusvarcharmemberidintsalutationvarcharfirstnamevarcharlastnamevarcharnameaffixvarcharbirthdatedateinternalIdvarchar?sendNewsletterIdint?communication_typeidinttypevarcharuseColumnsvarcharmembership_viewstatusIdint?statusvarchar?memberIdint?memberSalutationvarchar?memberFirstnamevarchar?memberLastnamevarchar?memberNameaffixvarchar?memberBirthdatedate?durationInDaysdecimal?member_qualifications_viewqualificationIdint?qualificationvarchar?memberIdint?memberSalutationvarchar?memberFirstnamevarchar?memberLastnamevarchar?memberNameaffixvarchar?memberBirthdatedate?durationInDaysdecimal?communicationidintpreferredtinyintmobilevarchar?emailvarchar?postalCodevarchar?cityvarchar?streetvarchar?streetNumberint?streetNumberAdditionvarchar?typeIdintmemberIdintisSMSAlarmingtinyintWeniger anzeigenmember_qualificationsidintnotevarchar?startdateenddate?terminationReasonvarchar?memberIdintqualificationIdintexecutive_positionidintpositionvarcharqualificationidintqualificationvarchardescriptionvarchar? \ No newline at end of file +1111NNNNmember_executive_positionsidintnotevarchar?startdateenddate?memberIdintexecutivePositionIdintmember_executive_positions_viewpositionIdint?positionvarchar?memberIdint?memberSalutationvarchar?memberFirstnamevarchar?memberLastnamevarchar?memberNameaffixvarchar?memberBirthdatedate?durationInDaysdecimal?member_viewmember_idintmember_salutationvarcharmember_firstnamevarcharmember_lastnamevarcharmember_nameaffixvarcharmember_birthdatedatemember_sendNewsletterIdint?todayAgebigint?ageThisYearint?awardidintawardvarcharmembershipidintstartdateenddate?terminationReasonvarchar?memberIdintstatusIdintmember_awardsidintgiventinyintnotevarchar?datedatememberIdintawardIdintmembership_statusidintstatusvarcharmemberidintfirstnamevarcharlastnamevarcharnameaffixvarcharbirthdatedateinternalIdvarchar?salutationIdintsendNewsletterIdint?communication_typeidinttypevarcharuseColumnsvarcharmembership_viewstatusIdint?statusvarchar?memberIdint?memberSalutationvarchar?memberFirstnamevarchar?memberLastnamevarchar?memberNameaffixvarchar?memberBirthdatedate?durationInDaysdecimal?member_qualifications_viewqualificationIdint?qualificationvarchar?memberIdint?memberSalutationvarchar?memberFirstnamevarchar?memberLastnamevarchar?memberNameaffixvarchar?memberBirthdatedate?durationInDaysdecimal?communicationidintpreferredtinyintmobilevarchar?emailvarchar?postalCodevarchar?cityvarchar?streetvarchar?streetNumberint?streetNumberAdditionvarchar?typeIdintmemberIdintisSMSAlarmingtinyintWeniger anzeigenmember_qualificationsidintnotevarchar?startdateenddate?terminationReasonvarchar?memberIdintqualificationIdintexecutive_positionidintpositionvarcharqualificationidintqualificationvarchardescriptionvarchar?salutationidintsalutationvarchar \ No newline at end of file diff --git a/src/components/admin/club/member/CreateMemberModal.vue b/src/components/admin/club/member/CreateMemberModal.vue index e3fc822..5ff2e1b 100644 --- a/src/components/admin/club/member/CreateMemberModal.vue +++ b/src/components/admin/club/member/CreateMemberModal.vue @@ -12,7 +12,7 @@ - {{ selectedSalutation }} + {{ selectedSalutation?.salutation }} @@ -102,6 +102,7 @@ import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; 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"; +import type { SalutationViewModel } from "../../../../viewmodels/admin/settings/salutation.models"; + + diff --git a/src/components/admin/settings/salutation/DeleteSalutationModal.vue b/src/components/admin/settings/salutation/DeleteSalutationModal.vue new file mode 100644 index 0000000..dd58907 --- /dev/null +++ b/src/components/admin/settings/salutation/DeleteSalutationModal.vue @@ -0,0 +1,76 @@ + + + + Anrede {{ salutation?.salutation }} löschen? + + + + + + unwiederuflich löschen + + + + + + + + + + abbrechen + + + + + + + + + diff --git a/src/components/admin/settings/salutation/SalutationListItem.vue b/src/components/admin/settings/salutation/SalutationListItem.vue new file mode 100644 index 0000000..d3d558b --- /dev/null +++ b/src/components/admin/settings/salutation/SalutationListItem.vue @@ -0,0 +1,47 @@ + + + + {{ salutation.salutation }} + + + + + + + + + + + + + + + diff --git a/src/router/index.ts b/src/router/index.ts index ad7f073..4d46b2b 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -422,6 +422,28 @@ const router = createRouter({ }, ], }, + { + path: "salutation", + name: "admin-settings-salutation-route", + component: () => import("@/views/RouterView.vue"), + meta: { type: "read", section: "settings", module: "salutation" }, + beforeEnter: [abilityAndNavUpdate], + children: [ + { + path: "", + name: "admin-settings-salutation", + component: () => import("@/views/admin/settings/salutation/Salutation.vue"), + }, + { + path: ":id/edit", + name: "admin-settings-salutation-edit", + component: () => import("@/views/admin/settings/salutation/SalutationEdit.vue"), + meta: { type: "update", section: "settings", module: "salutation" }, + beforeEnter: [abilityAndNavUpdate], + props: true, + }, + ], + }, { path: "calendar-type", name: "admin-settings-calendar_type-route", diff --git a/src/stores/admin/club/member/member.ts b/src/stores/admin/club/member/member.ts index 1d96dc7..d92670e 100644 --- a/src/stores/admin/club/member/member.ts +++ b/src/stores/admin/club/member/member.ts @@ -88,7 +88,7 @@ export const useMemberStore = defineStore("member", { }, async createMember(member: CreateMemberViewModel): Promise> { const result = await http.post(`/admin/member`, { - salutation: member.salutation, + salutationId: member.salutationId, firstname: member.firstname, lastname: member.lastname, nameaffix: member.nameaffix, @@ -100,7 +100,7 @@ export const useMemberStore = defineStore("member", { }, async updateActiveMember(member: UpdateMemberViewModel): Promise> { const result = await http.patch(`/admin/member/${member.id}`, { - salutation: member.salutation, + salutationId: member.salutationId, firstname: member.firstname, lastname: member.lastname, nameaffix: member.nameaffix, diff --git a/src/stores/admin/navigation.ts b/src/stores/admin/navigation.ts index bd1bc84..003f868 100644 --- a/src/stores/admin/navigation.ts +++ b/src/stores/admin/navigation.ts @@ -63,7 +63,7 @@ export const useNavigationStore = defineStore("navigation", { { key: "settings", title: "Einstellungen", - levelDefault: "award", + levelDefault: "salutation", } as topLevelNavigationModel, ] : []), @@ -99,6 +99,7 @@ export const useNavigationStore = defineStore("navigation", { mainTitle: "Einstellungen", main: [ { key: "divider1", title: "Mitgliederdaten" }, + ...(abilityStore.can("read", "settings", "salutation") ? [{ key: "salutation", title: "Anrede" }] : []), ...(abilityStore.can("read", "settings", "award") ? [{ key: "award", title: "Auszeichnungen" }] : []), ...(abilityStore.can("read", "settings", "communication_type") ? [{ key: "communication_type", title: "Kommunikationsarten" }] diff --git a/src/views/admin/club/members/MemberEdit.vue b/src/views/admin/club/members/MemberEdit.vue index 94b1ef3..6053966 100644 --- a/src/views/admin/club/members/MemberEdit.vue +++ b/src/views/admin/club/members/MemberEdit.vue @@ -15,7 +15,7 @@ - {{ member.salutation }} + {{ member.salutation.salutation }} @@ -136,6 +136,7 @@ export default defineComponent({ }, mounted() { this.fetchItem(); + this.fetchSalutations(); }, beforeUnmount() { try { @@ -144,6 +145,7 @@ export default defineComponent({ }, methods: { ...mapActions(useMemberStore, ["fetchMemberByActiveId", "updateActiveMember"]), + ...mapActions(useSalutationStore, ["fetchSalutations"]), resetForm() { this.member = cloneDeep(this.activeMemberObj); }, diff --git a/src/views/admin/club/members/MemberOverview.vue b/src/views/admin/club/members/MemberOverview.vue index 6716daf..db2726c 100644 --- a/src/views/admin/club/members/MemberOverview.vue +++ b/src/views/admin/club/members/MemberOverview.vue @@ -7,7 +7,7 @@ Anrede - + Vorname diff --git a/src/views/admin/settings/salutation/Salutation.vue b/src/views/admin/settings/salutation/Salutation.vue new file mode 100644 index 0000000..a07d432 --- /dev/null +++ b/src/views/admin/settings/salutation/Salutation.vue @@ -0,0 +1,52 @@ + + + + + Anrede + + + + + + + + + + Anrede erstellen + + + + + + + + + + diff --git a/src/views/admin/settings/salutation/SalutationEdit.vue b/src/views/admin/settings/salutation/SalutationEdit.vue new file mode 100644 index 0000000..35def41 --- /dev/null +++ b/src/views/admin/settings/salutation/SalutationEdit.vue @@ -0,0 +1,120 @@ + + + + zurück zur Liste (abbrechen) + + + + Anrede {{ origin?.salutation }} - Daten bearbeiten + + + + + laden fehlgeschlagen + + + Anrede + + + + + verwerfen + + + speichern + + + + + + + + + + + + +
Anrede {{ salutation?.salutation }} löschen?
{{ salutation.salutation }}
laden fehlgeschlagen