member data reads and display

This commit is contained in:
Julian Krauser 2024-09-17 16:44:02 +02:00
parent c1a6c0040d
commit 5eeea631c0
57 changed files with 1149 additions and 110 deletions

View file

@ -1,5 +1,5 @@
import { defineStore } from "pinia";
import type { PermissionModule, PermissionObject, PermissionSection, PermissionType } from "../types/permissionTypes";
import type { PermissionModule, PermissionObject, PermissionSection, PermissionType } from "@/types/permissionTypes";
export const useAbilityStore = defineStore("ability", {
state: () => {

View file

@ -1,5 +1,5 @@
import { defineStore } from "pinia";
import type { PermissionObject } from "../types/permissionTypes";
import type { PermissionObject } from "@/types/permissionTypes";
import { useAbilityStore } from "./ability";
export const useAccountStore = defineStore("account", {

View file

@ -1,6 +1,6 @@
import { defineStore } from "pinia";
import type { CreateAwardViewModel, UpdateAwardViewModel, AwardViewModel } from "../../viewmodels/admin/award.models";
import { http } from "../../serverCom";
import type { CreateAwardViewModel, UpdateAwardViewModel, AwardViewModel } from "@/viewmodels/admin/award.models";
import { http } from "@/serverCom";
import type { AxiosResponse } from "axios";
export const useAwardStore = defineStore("award", {

View file

@ -0,0 +1,74 @@
import { defineStore } from "pinia";
import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/member.models";
import { http } from "@/serverCom";
import type { AxiosResponse } from "axios";
import type { MemberViewModel } from "@/viewmodels/admin/member.models";
import { useMemberStore } from "./member";
import type {
CreateCommunicationViewModel,
CommunicationViewModel,
UpdateCommunicationViewModel,
} from "@/viewmodels/admin/communication.models";
export const useCommunicationStore = defineStore("communication", {
state: () => {
return {
communications: [] as Array<CommunicationViewModel>,
loading: "loading" as "loading" | "fetched" | "failed",
};
},
actions: {
fetchCommunicationsForMember() {
const memberId = useMemberStore().activeMember;
this.loading = "loading";
http
.get(`/admin/member/${memberId}/communications`)
.then((result) => {
this.communications = result.data;
this.loading = "fetched";
})
.catch((err) => {
this.loading = "failed";
});
},
fetchCommunicationById(id: number) {
const memberId = useMemberStore().activeMember;
return http.get(`/admin/member/${memberId}/communication/${id}`);
},
async createCommunication(communication: CreateCommunicationViewModel): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.post(`/admin/member/${memberId}/communication`, {
preferred: communication.preferred,
mobile: communication.mobile,
email: communication.email,
city: communication.city,
street: communication.street,
streetNumber: communication.streetNumber,
streetNumberAddition: communication.streetNumberAddition,
typeId: communication.typeId,
});
this.fetchCommunicationsForMember();
return result;
},
async updateCommunication(communication: UpdateCommunicationViewModel): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.patch(`/admin/member/${memberId}/communication/${communication.id}`, {
preferred: communication.preferred,
mobile: communication.mobile,
email: communication.email,
city: communication.city,
street: communication.street,
streetNumber: communication.streetNumber,
streetNumberAddition: communication.streetNumberAddition,
});
this.fetchCommunicationsForMember();
return result;
},
async deleteCommunication(communication: number): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.delete(`/admin/member/${memberId}/communication/${communication}`);
this.fetchCommunicationsForMember();
return result;
},
},
});

View file

@ -3,8 +3,8 @@ import type {
CreateCommunicationTypeViewModel,
UpdateCommunicationTypeViewModel,
CommunicationTypeViewModel,
} from "../../viewmodels/admin/communicationType.models";
import { http } from "../../serverCom";
} from "@/viewmodels/admin/communicationType.models";
import { http } from "@/serverCom";
import type { AxiosResponse } from "axios";
export const useCommunicationTypeStore = defineStore("communicationType", {

View file

@ -3,8 +3,8 @@ import type {
CreateExecutivePositionViewModel,
UpdateExecutivePositionViewModel,
ExecutivePositionViewModel,
} from "../../viewmodels/admin/executivePosition.models";
import { http } from "../../serverCom";
} from "@/viewmodels/admin/executivePosition.models";
import { http } from "@/serverCom";
import type { AxiosResponse } from "axios";
export const useExecutivePositionStore = defineStore("executivePosition", {

View file

@ -1,8 +1,8 @@
import { defineStore } from "pinia";
import type { CreateAwardViewModel, UpdateAwardViewModel, AwardViewModel } from "../../viewmodels/admin/award.models";
import { http } from "../../serverCom";
import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/member.models";
import { http } from "@/serverCom";
import type { AxiosResponse } from "axios";
import type { MemberViewModel } from "../../viewmodels/admin/member.models";
import type { MemberViewModel } from "@/viewmodels/admin/member.models";
export const useMemberStore = defineStore("member", {
state: () => {
@ -10,7 +10,9 @@ export const useMemberStore = defineStore("member", {
members: [] as Array<MemberViewModel & { tab_pos: number }>,
totalCount: 0 as number,
loading: "loading" as "loading" | "fetched" | "failed",
activeMember: null as null | MemberViewModel,
activeMember: null as number | null,
activeMemberObj: null as MemberViewModel | null,
loadingActive: "loading" as "loading" | "fetched" | "failed",
};
},
actions: {
@ -20,7 +22,6 @@ export const useMemberStore = defineStore("member", {
http
.get(`/admin/member?offset=${offset}&count=${count}`)
.then((result) => {
this.members = result.data.members;
this.totalCount = result.data.total;
result.data.members
.filter((elem: MemberViewModel) => this.members.findIndex((m) => m.id == elem.id) == -1)
@ -39,5 +40,47 @@ export const useMemberStore = defineStore("member", {
this.loading = "failed";
});
},
fetchMemberByActiveId() {
this.loadingActive = "loading";
http
.get(`/admin/member/${this.activeMember}`)
.then((res) => {
this.activeMemberObj = res.data;
this.loadingActive = "fetched";
})
.catch((err) => {
this.loadingActive = "failed";
});
},
fetchMemberById(id: number) {
return http.get(`/admin/member/${id}`);
},
async createMember(member: CreateMemberViewModel): Promise<AxiosResponse<any, any>> {
const result = await http.post(`/admin/member`, {
salutation: member.salutation,
firstname: member.firstname,
lastname: member.lastname,
nameaffix: member.nameaffix,
birthdate: member.birthdate,
});
this.fetchMembers();
return result;
},
async updateActiveMember(member: UpdateMemberViewModel): Promise<AxiosResponse<any, any>> {
const result = await http.patch(`/admin/member/${member.id}`, {
salutation: member.salutation,
firstname: member.firstname,
lastname: member.lastname,
nameaffix: member.nameaffix,
birthdate: member.birthdate,
});
this.fetchMembers();
return result;
},
async deleteMember(member: number): Promise<AxiosResponse<any, any>> {
const result = await http.delete(`/admin/member/${member}`);
this.fetchMembers();
return result;
},
},
});

View file

@ -0,0 +1,67 @@
import { defineStore } from "pinia";
import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/member.models";
import { http } from "@/serverCom";
import type { AxiosResponse } from "axios";
import type { MemberViewModel } from "@/viewmodels/admin/member.models";
import { useMemberStore } from "./member";
import type {
CreateMemberAwardViewModel,
MemberAwardViewModel,
UpdateMemberAwardViewModel,
} from "@/viewmodels/admin/memberAward.models";
export const useMemberAwardStore = defineStore("memberAward", {
state: () => {
return {
memberAwards: [] as Array<MemberAwardViewModel>,
loading: "loading" as "loading" | "fetched" | "failed",
};
},
actions: {
fetchMemberAwardsForMember() {
const memberId = useMemberStore().activeMember;
this.loading = "loading";
http
.get(`/admin/member/${memberId}/awards`)
.then((result) => {
this.memberAwards = result.data;
this.loading = "fetched";
})
.catch((err) => {
this.loading = "failed";
});
},
fetchMemberAwardById(id: number) {
const memberId = useMemberStore().activeMember;
return http.get(`/admin/member/${memberId}/award/${id}`);
},
async createMemberAward(memberAward: CreateMemberAwardViewModel): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.post(`/admin/member/${memberId}/award`, {
given: memberAward.given,
note: memberAward.note,
date: memberAward.date,
awardId: memberAward.awardId,
});
this.fetchMemberAwardsForMember();
return result;
},
async updateMemberAward(memberAward: UpdateMemberAwardViewModel): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.patch(`/admin/member/${memberId}/award/${memberAward.id}`, {
given: memberAward.given,
note: memberAward.note,
date: memberAward.date,
awardId: memberAward.awardId,
});
this.fetchMemberAwardsForMember();
return result;
},
async deleteMemberAward(memberAward: number): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.delete(`/admin/member/${memberId}/award/${memberAward}`);
this.fetchMemberAwardsForMember();
return result;
},
},
});

View file

@ -0,0 +1,71 @@
import { defineStore } from "pinia";
import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/member.models";
import { http } from "@/serverCom";
import type { AxiosResponse } from "axios";
import type { MemberViewModel } from "@/viewmodels/admin/member.models";
import { useMemberStore } from "./member";
import type {
CreateMemberExecutivePositionViewModel,
MemberExecutivePositionViewModel,
UpdateMemberExecutivePositionViewModel,
} from "@/viewmodels/admin/memberExecutivePosition.models";
export const useMemberExecutivePositionStore = defineStore("memberExecutivePosition", {
state: () => {
return {
memberExecutivePositions: [] as Array<MemberExecutivePositionViewModel>,
loading: "loading" as "loading" | "fetched" | "failed",
};
},
actions: {
fetchMemberExecutivePositionsForMember() {
const memberId = useMemberStore().activeMember;
this.loading = "loading";
http
.get(`/admin/member/${memberId}/positions`)
.then((result) => {
this.memberExecutivePositions = result.data;
this.loading = "fetched";
})
.catch((err) => {
this.loading = "failed";
});
},
fetchMemberExecutivePositionById(id: number) {
const memberId = useMemberStore().activeMember;
return http.get(`/admin/member/${memberId}/position/${id}`);
},
async createMemberExecutivePosition(
memberExecutivePosition: CreateMemberExecutivePositionViewModel
): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.post(`/admin/member/${memberId}/position`, {
note: memberExecutivePosition.note,
start: memberExecutivePosition.start,
end: memberExecutivePosition.end,
executivePositionId: memberExecutivePosition.executivePositionId,
});
this.fetchMemberExecutivePositionsForMember();
return result;
},
async updateMemberExecutivePosition(
memberExecutivePosition: UpdateMemberExecutivePositionViewModel
): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.patch(`/admin/member/${memberId}/position/${memberExecutivePosition.id}`, {
note: memberExecutivePosition.note,
start: memberExecutivePosition.start,
end: memberExecutivePosition.end,
executivePositionId: memberExecutivePosition.executivePositionId,
});
this.fetchMemberExecutivePositionsForMember();
return result;
},
async deleteMemberExecutivePosition(memberExecutivePosition: number): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.delete(`/admin/member/${memberId}/position/${memberExecutivePosition}`);
this.fetchMemberExecutivePositionsForMember();
return result;
},
},
});

View file

@ -0,0 +1,73 @@
import { defineStore } from "pinia";
import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/member.models";
import { http } from "@/serverCom";
import type { AxiosResponse } from "axios";
import type { MemberViewModel } from "@/viewmodels/admin/member.models";
import { useMemberStore } from "./member";
import type {
CreateMemberQualificationViewModel,
MemberQualificationViewModel,
UpdateMemberQualificationViewModel,
} from "@/viewmodels/admin/memberQualification.models";
export const useMemberQualificationStore = defineStore("memberQualification", {
state: () => {
return {
memberQualifications: [] as Array<MemberQualificationViewModel>,
loading: "loading" as "loading" | "fetched" | "failed",
};
},
actions: {
fetchMemberQualificationsForMember() {
const memberId = useMemberStore().activeMember;
this.loading = "loading";
http
.get(`/admin/member/${memberId}/qualifications`)
.then((result) => {
this.memberQualifications = result.data;
this.loading = "fetched";
})
.catch((err) => {
this.loading = "failed";
});
},
fetchMemberQualificationById(id: number) {
const memberId = useMemberStore().activeMember;
return http.get(`/admin/member/${memberId}/qualification/${id}`);
},
async createMemberQualification(
memberQualification: CreateMemberQualificationViewModel
): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.post(`/admin/member/${memberId}/qualification`, {
note: memberQualification.note,
start: memberQualification.start,
end: memberQualification.end,
terminationReason: memberQualification.terminationReason,
qualificationId: memberQualification.qualificationId,
});
this.fetchMemberQualificationsForMember();
return result;
},
async updateMemberQualification(
memberQualification: UpdateMemberQualificationViewModel
): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.patch(`/admin/member/${memberId}/qualification/${memberQualification.id}`, {
note: memberQualification.note,
start: memberQualification.start,
end: memberQualification.end,
terminationReason: memberQualification.terminationReason,
qualificationId: memberQualification.qualificationId,
});
this.fetchMemberQualificationsForMember();
return result;
},
async deleteMemberQualification(memberQualification: number): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.delete(`/admin/member/${memberId}/qualification/${memberQualification}`);
this.fetchMemberQualificationsForMember();
return result;
},
},
});

View file

@ -0,0 +1,69 @@
import { defineStore } from "pinia";
import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/member.models";
import { http } from "@/serverCom";
import type { AxiosResponse } from "axios";
import type { MemberViewModel } from "@/viewmodels/admin/member.models";
import { useMemberStore } from "./member";
import type {
CreateMembershipViewModel,
MembershipViewModel,
UpdateMembershipViewModel,
} from "@/viewmodels/admin/membership.models";
export const useMembershipStore = defineStore("membership", {
state: () => {
return {
memberships: [] as Array<MembershipViewModel>,
loading: "loading" as "loading" | "fetched" | "failed",
};
},
actions: {
fetchMembershipsForMember() {
const memberId = useMemberStore().activeMember;
this.loading = "loading";
http
.get(`/admin/member/${memberId}/memberships`)
.then((result) => {
this.memberships = result.data;
this.loading = "fetched";
})
.catch((err) => {
this.loading = "failed";
});
},
fetchMembershipById(id: number) {
const memberId = useMemberStore().activeMember;
return http.get(`/admin/member/${memberId}/membership/${id}`);
},
async createMembership(membership: CreateMembershipViewModel): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.post(`/admin/member/${memberId}/membership`, {
interalId: membership.internalId,
start: membership.start,
end: membership.end,
terminationReason: membership.terminationReason,
statusId: membership.statusId,
});
this.fetchMembershipsForMember();
return result;
},
async updateMembership(membership: UpdateMembershipViewModel): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.patch(`/admin/member/${memberId}/membership/${membership.id}`, {
interalId: membership.internalId,
start: membership.start,
end: membership.end,
terminationReason: membership.terminationReason,
statusId: membership.statusId,
});
this.fetchMembershipsForMember();
return result;
},
async deleteMembership(membership: number): Promise<AxiosResponse<any, any>> {
const memberId = useMemberStore().activeMember;
const result = await http.delete(`/admin/member/${memberId}/membership/${membership}`);
this.fetchMembershipsForMember();
return result;
},
},
});

View file

@ -3,8 +3,8 @@ import type {
CreateMembershipStatusViewModel,
UpdateMembershipStatusViewModel,
MembershipStatusViewModel,
} from "../../viewmodels/admin/membershipStatus.models";
import { http } from "../../serverCom";
} from "@/viewmodels/admin/membershipStatus.models";
import { http } from "@/serverCom";
import type { AxiosResponse } from "axios";
export const useMembershipStatusStore = defineStore("membershipStatus", {

View file

@ -1,6 +1,6 @@
import { defineStore } from "pinia";
import { useAbilityStore } from "../ability";
import router from "../../router";
import { useAbilityStore } from "@/stores/ability";
import router from "@/router";
export interface navigationModel {
club: navigationSplitModel;

View file

@ -3,8 +3,8 @@ import type {
CreateQualificationViewModel,
UpdateQualificationViewModel,
QualificationViewModel,
} from "../../viewmodels/admin/qualification.models";
import { http } from "../../serverCom";
} from "@/viewmodels/admin/qualification.models";
import { http } from "@/serverCom";
import type { AxiosResponse } from "axios";
export const useQualificationStore = defineStore("qualification", {

View file

@ -1,7 +1,7 @@
import { defineStore } from "pinia";
import type { RoleViewModel } from "../../viewmodels/admin/role.models";
import { http } from "../../serverCom";
import type { PermissionObject } from "../../types/permissionTypes";
import type { RoleViewModel } from "@/viewmodels/admin/role.models";
import { http } from "@/serverCom";
import type { PermissionObject } from "@/types/permissionTypes";
import type { AxiosResponse } from "axios";
export const useRoleStore = defineStore("role", {

View file

@ -1,7 +1,7 @@
import { defineStore } from "pinia";
import type { UpdateUserViewModel, UserViewModel } from "../../viewmodels/admin/user.models";
import { http } from "../../serverCom";
import type { PermissionObject } from "../../types/permissionTypes";
import type { UpdateUserViewModel, UserViewModel } from "@/viewmodels/admin/user.models";
import { http } from "@/serverCom";
import type { PermissionObject } from "@/types/permissionTypes";
import type { AxiosResponse } from "axios";
export const useUserStore = defineStore("user", {