From ec0222ff2f12fd07a38ebb7df9393f9738a4bda8 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Fri, 30 May 2025 15:13:50 +0200 Subject: [PATCH] enhance: add membership total view in member --- src/stores/admin/club/member/membership.ts | 11 +++++++++++ .../admin/club/member/membership.models.ts | 12 ++++++++++++ .../admin/club/members/MemberOverview.vue | 18 ++++++++++++++---- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/src/stores/admin/club/member/membership.ts b/src/stores/admin/club/member/membership.ts index fd2aaf8..1d44b92 100644 --- a/src/stores/admin/club/member/membership.ts +++ b/src/stores/admin/club/member/membership.ts @@ -7,6 +7,7 @@ import { useMemberStore } from "./member"; import type { CreateMembershipViewModel, MembershipStatisticsViewModel, + MembershipTotalStatisticsViewModel, MembershipViewModel, UpdateMembershipViewModel, } from "@/viewmodels/admin/club/member/membership.models"; @@ -16,6 +17,7 @@ export const useMembershipStore = defineStore("membership", { return { memberships: [] as Array, membershipStatistics: [] as Array, + totalMembershipStatistics: undefined as undefined | MembershipTotalStatisticsViewModel, loading: "loading" as "loading" | "fetched" | "failed", }; }, @@ -42,6 +44,15 @@ export const useMembershipStore = defineStore("membership", { }) .catch((err) => {}); }, + fetchMembershipTotalStatisticsForMember() { + const memberId = useMemberStore().activeMember; + http + .get(`/admin/member/${memberId}/memberships/totalstatistics`) + .then((result) => { + this.totalMembershipStatistics = result.data; + }) + .catch((err) => {}); + }, fetchMembershipById(id: number) { const memberId = useMemberStore().activeMember; return http.get(`/admin/member/${memberId}/membership/${id}`); diff --git a/src/viewmodels/admin/club/member/membership.models.ts b/src/viewmodels/admin/club/member/membership.models.ts index ccf8105..8f51487 100644 --- a/src/viewmodels/admin/club/member/membership.models.ts +++ b/src/viewmodels/admin/club/member/membership.models.ts @@ -21,6 +21,18 @@ export interface MembershipStatisticsViewModel { memberBirthdate: Date; } +export interface MembershipTotalStatisticsViewModel { + durationInDays: number; + durationInYears: number; + exactDuration: string; + memberId: string; + memberSalutation: string; + memberFirstname: string; + memberLastname: string; + memberNameaffix: string; + memberBirthdate: Date; +} + export interface CreateMembershipViewModel { start: Date; statusId: number; diff --git a/src/views/admin/club/members/MemberOverview.vue b/src/views/admin/club/members/MemberOverview.vue index 9a3d079..f4bb946 100644 --- a/src/views/admin/club/members/MemberOverview.vue +++ b/src/views/admin/club/members/MemberOverview.vue @@ -25,9 +25,15 @@ -
+

Statistiken zur Mitgliedschaft

-
+
+
+

+ gesamt {{ totalMembershipStatistics.durationInDays }} Tage + ~> {{ totalMembershipStatistics.exactDuration }} +

+