feature/#29-Membership-statistics #49
4 changed files with 55 additions and 1 deletions
|
@ -1,5 +1,9 @@
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/club/member/member.models";
|
import type {
|
||||||
|
CreateMemberViewModel,
|
||||||
|
MemberStatisticsViewModel,
|
||||||
|
UpdateMemberViewModel,
|
||||||
|
} from "@/viewmodels/admin/club/member/member.models";
|
||||||
import { http } from "@/serverCom";
|
import { http } from "@/serverCom";
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
import type { MemberViewModel } from "@/viewmodels/admin/club/member/member.models";
|
import type { MemberViewModel } from "@/viewmodels/admin/club/member/member.models";
|
||||||
|
@ -12,6 +16,7 @@ export const useMemberStore = defineStore("member", {
|
||||||
loading: "loading" as "loading" | "fetched" | "failed",
|
loading: "loading" as "loading" | "fetched" | "failed",
|
||||||
activeMember: null as number | null,
|
activeMember: null as number | null,
|
||||||
activeMemberObj: null as MemberViewModel | null,
|
activeMemberObj: null as MemberViewModel | null,
|
||||||
|
activeMemberStatistics: null as MemberStatisticsViewModel | null,
|
||||||
loadingActive: "loading" as "loading" | "fetched" | "failed",
|
loadingActive: "loading" as "loading" | "fetched" | "failed",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
@ -70,6 +75,17 @@ export const useMemberStore = defineStore("member", {
|
||||||
fetchMemberById(id: number) {
|
fetchMemberById(id: number) {
|
||||||
return http.get(`/admin/member/${id}`);
|
return http.get(`/admin/member/${id}`);
|
||||||
},
|
},
|
||||||
|
fetchMemberStatisticsByActiveId() {
|
||||||
|
http
|
||||||
|
.get(`/admin/member/${this.activeMember}/statistics`)
|
||||||
|
.then((res) => {
|
||||||
|
this.activeMemberStatistics = res.data;
|
||||||
|
})
|
||||||
|
.catch((err) => {});
|
||||||
|
},
|
||||||
|
fetchMemberStatisticsById(id: number) {
|
||||||
|
return http.get(`/admin/member/${id}/statistics`);
|
||||||
|
},
|
||||||
async createMember(member: CreateMemberViewModel): Promise<AxiosResponse<any, any>> {
|
async createMember(member: CreateMemberViewModel): Promise<AxiosResponse<any, any>> {
|
||||||
const result = await http.post(`/admin/member`, {
|
const result = await http.post(`/admin/member`, {
|
||||||
salutation: member.salutation,
|
salutation: member.salutation,
|
||||||
|
|
|
@ -6,6 +6,7 @@ import type { MemberViewModel } from "@/viewmodels/admin/club/member/member.mode
|
||||||
import { useMemberStore } from "./member";
|
import { useMemberStore } from "./member";
|
||||||
import type {
|
import type {
|
||||||
CreateMembershipViewModel,
|
CreateMembershipViewModel,
|
||||||
|
MembershipStatisticsViewModel,
|
||||||
MembershipViewModel,
|
MembershipViewModel,
|
||||||
UpdateMembershipViewModel,
|
UpdateMembershipViewModel,
|
||||||
} from "@/viewmodels/admin/club/member/membership.models";
|
} from "@/viewmodels/admin/club/member/membership.models";
|
||||||
|
@ -14,6 +15,7 @@ export const useMembershipStore = defineStore("membership", {
|
||||||
state: () => {
|
state: () => {
|
||||||
return {
|
return {
|
||||||
memberships: [] as Array<MembershipViewModel>,
|
memberships: [] as Array<MembershipViewModel>,
|
||||||
|
membershipStatistics: [] as Array<MembershipStatisticsViewModel>,
|
||||||
loading: "loading" as "loading" | "fetched" | "failed",
|
loading: "loading" as "loading" | "fetched" | "failed",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
@ -31,6 +33,15 @@ export const useMembershipStore = defineStore("membership", {
|
||||||
this.loading = "failed";
|
this.loading = "failed";
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
fetchMembershipStatisticsForMember() {
|
||||||
|
const memberId = useMemberStore().activeMember;
|
||||||
|
http
|
||||||
|
.get(`/admin/member/${memberId}/memberships/statistics`)
|
||||||
|
.then((result) => {
|
||||||
|
this.membershipStatistics = result.data;
|
||||||
|
})
|
||||||
|
.catch((err) => {});
|
||||||
|
},
|
||||||
fetchMembershipById(id: number) {
|
fetchMembershipById(id: number) {
|
||||||
const memberId = useMemberStore().activeMember;
|
const memberId = useMemberStore().activeMember;
|
||||||
return http.get(`/admin/member/${memberId}/membership/${id}`);
|
return http.get(`/admin/member/${memberId}/membership/${id}`);
|
||||||
|
|
|
@ -17,6 +17,18 @@ export interface MemberViewModel {
|
||||||
preferredCommunication?: Array<CommunicationViewModel>;
|
preferredCommunication?: Array<CommunicationViewModel>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface MemberStatisticsViewModel {
|
||||||
|
id: number;
|
||||||
|
salutation: Salutation;
|
||||||
|
firstname: string;
|
||||||
|
lastname: string;
|
||||||
|
nameaffix: string;
|
||||||
|
birthdate: Date;
|
||||||
|
todayAge: number;
|
||||||
|
ageThisYear: number;
|
||||||
|
exactAge: string;
|
||||||
|
}
|
||||||
|
|
||||||
export interface CreateMemberViewModel {
|
export interface CreateMemberViewModel {
|
||||||
salutation: Salutation;
|
salutation: Salutation;
|
||||||
firstname: string;
|
firstname: string;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import type { Salutation } from "../../../../enums/salutation";
|
||||||
|
|
||||||
export interface MembershipViewModel {
|
export interface MembershipViewModel {
|
||||||
id: number;
|
id: number;
|
||||||
start: Date;
|
start: Date;
|
||||||
|
@ -7,6 +9,19 @@ export interface MembershipViewModel {
|
||||||
statusId: number;
|
statusId: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface MembershipStatisticsViewModel {
|
||||||
|
durationInDays: number;
|
||||||
|
durationInYears: string;
|
||||||
|
status: string;
|
||||||
|
statusId: number;
|
||||||
|
memberId: number;
|
||||||
|
memberSalutation: Salutation;
|
||||||
|
memberFirstname: string;
|
||||||
|
memberLastname: string;
|
||||||
|
memberNameaffix: string;
|
||||||
|
memberBirthdate: Date;
|
||||||
|
}
|
||||||
|
|
||||||
export interface CreateMembershipViewModel {
|
export interface CreateMembershipViewModel {
|
||||||
start: Date;
|
start: Date;
|
||||||
statusId: number;
|
statusId: number;
|
||||||
|
|
Loading…
Reference in a new issue