import { AxiosResponse } from "axios"; import { RequestDefinition, RequestData, ImplementsRequestInterface } from "../requestBase"; import { MemberViewModel, MemberStatisticsViewModel, CreateMemberViewModel, UpdateMemberViewModel, MembershipViewModel, MembershipStatisticsViewModel, CreateMembershipViewModel, UpdateMembershipViewModel, MemberAwardViewModel, MemberQualificationViewModel, MemberExecutivePositionViewModel, CommunicationViewModel, } from "../../viewmodels/admin/member.models"; import { BaseClient } from "../../clients/clientBase"; interface IMemberRequests { getAllMembers: RequestDefinition; getMemberById: RequestDefinition<{ id: string }, void, MemberViewModel>; getMemberStatisticsById: RequestDefinition<{ id: string }, void, MemberStatisticsViewModel>; createMember: RequestDefinition; updateMember: RequestDefinition<{ id: string }, UpdateMemberViewModel, void>; deleteMember: RequestDefinition<{ id: string }, void, void>; getMembershipsByMember: RequestDefinition<{ memberId: string }, void, MembershipViewModel[]>; getMembershipStatisticsByMember: RequestDefinition<{ memberId: string }, void, MembershipStatisticsViewModel>; getMembershipByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, void, MembershipViewModel>; addMembershipByMember: RequestDefinition<{ memberId: string }, CreateMembershipViewModel, void>; updateMembershipByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, UpdateMembershipViewModel, void>; deleteMembershipByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, void, void>; getAwardsByMember: RequestDefinition<{ memberId: string }, void, MemberAwardViewModel[]>; getAwardByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, void, MemberAwardViewModel>; addAwardByMember: RequestDefinition<{ memberId: string }, CreateMembershipViewModel, void>; updateAwardByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, UpdateMembershipViewModel, void>; deleteAwardByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, void, void>; getQualificationsByMember: RequestDefinition<{ memberId: string }, void, MemberQualificationViewModel[]>; getQualificationByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, void, MemberQualificationViewModel>; addQualificationByMember: RequestDefinition<{ memberId: string }, CreateMembershipViewModel, void>; updateQualificationByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, UpdateMembershipViewModel, void>; deleteQualificationByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, void, void>; getPositionsByMember: RequestDefinition<{ memberId: string }, void, MemberExecutivePositionViewModel[]>; getPositionByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, void, MemberExecutivePositionViewModel>; addPositionByMember: RequestDefinition<{ memberId: string }, CreateMembershipViewModel, void>; updatePositionByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, UpdateMembershipViewModel, void>; deletePositionByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, void, void>; getCommunicationsByMember: RequestDefinition<{ memberId: string }, void, CommunicationViewModel[]>; getCommunicationByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, void, CommunicationViewModel>; addCommunicationsByMember: RequestDefinition<{ memberId: string }, CreateMembershipViewModel, void>; updateCommunicationsByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, UpdateMembershipViewModel, void>; deleteCommunicationsByMemberAndId: RequestDefinition<{ memberId: string; recordId: number }, void, void>; } @ImplementsRequestInterface() export default abstract class MemberRequests { static async getAllMembers({ http }: BaseClient): Promise> { return await http.get("/admin/member"); } static async getMemberById({ http }: BaseClient, p: RequestData<{ id: string }, void>): Promise> { return await http.get(`/admin/member/${p.params.id}`); } static async getMemberStatisticsById( { http }: BaseClient, p: RequestData<{ id: string }, void> ): Promise> { return await http.get(`/admin/member/${p.params.id}/statistics`); } static async createMember({ http }: BaseClient, p: RequestData): Promise> { return await http.post("/admin/member", p.body); } static async updateMember({ http }: BaseClient, p: RequestData<{ id: string }, UpdateMemberViewModel>): Promise> { return await http.post(`/admin/member/${p.params.id}`, p.body); } static async deleteMember({ http }: BaseClient, p: RequestData<{ id: string }, void>): Promise> { return await http.post(`/admin/member/${p.params.id}`); } static async getMembershipsByMember( { http }: BaseClient, p: RequestData<{ memberId: string }, void> ): Promise> { return await http.get(`/admin/member/${p.params.memberId}/memberships`); } static async getMembershipStatisticsByMember( { http }: BaseClient, p: RequestData<{ memberId: string }, void> ): Promise> { return await http.get(`/admin/member/${p.params.memberId}/memberships/statistics`); } static async getMembershipByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, void> ): Promise> { return await http.get(`/admin/member/${p.params.memberId}/membership/${p.params.recordId}`); } static async addMembershipByMember( { http }: BaseClient, p: RequestData<{ memberId: string }, CreateMembershipViewModel> ): Promise> { return await http.post(`/admin/member/${p.params.memberId}/membership`, p.body); } static async updateMembershipByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, UpdateMembershipViewModel> ): Promise> { return await http.put(`/admin/member/${p.params.memberId}/memberships/${p.params.recordId}`, p.body); } static async deleteMembershipByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, void> ): Promise> { return await http.delete(`/admin/member/${p.params.memberId}/memberships/${p.params.recordId}`); } static async getAwardsByMember( { http }: BaseClient, p: RequestData<{ memberId: string }, void> ): Promise> { return await http.get(`/admin/member/${p.params.memberId}/awards`); } static async getAwardByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, void> ): Promise> { return await http.get(`/admin/member/${p.params.memberId}/award/${p.params.recordId}`); } static async addAwardByMember( { http }: BaseClient, p: RequestData<{ memberId: string }, CreateMembershipViewModel> ): Promise> { return await http.post(`/admin/member/${p.params.memberId}/award`, p.body); } static async updateAwardByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, UpdateMembershipViewModel> ): Promise> { return await http.put(`/admin/member/${p.params.memberId}/award/${p.params.recordId}`, p.body); } static async deleteAwardByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, void> ): Promise> { return await http.delete(`/admin/member/${p.params.memberId}/award/${p.params.recordId}`); } static async getQualificationsByMember( { http }: BaseClient, p: RequestData<{ memberId: string }, void> ): Promise> { return await http.get(`/admin/member/${p.params.memberId}/qualifications`); } static async getQualificationByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, void> ): Promise> { return await http.get(`/admin/member/${p.params.memberId}/qualification/${p.params.recordId}`); } static async addQualificationByMember( { http }: BaseClient, p: RequestData<{ memberId: string }, CreateMembershipViewModel> ): Promise> { return await http.post(`/admin/member/${p.params.memberId}/qualification`, p.body); } static async updateQualificationByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, UpdateMembershipViewModel> ): Promise> { return await http.put(`/admin/member/${p.params.memberId}/qualification/${p.params.recordId}`, p.body); } static async deleteQualificationByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, void> ): Promise> { return await http.delete(`/admin/member/${p.params.memberId}/qualification/${p.params.recordId}`); } static async getPositionsByMember( { http }: BaseClient, p: RequestData<{ memberId: string }, void> ): Promise> { return await http.get(`/admin/member/${p.params.memberId}/positions`); } static async getPositionByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, void> ): Promise> { return await http.get(`/admin/member/${p.params.memberId}/position/${p.params.recordId}`); } static async addPositionByMember( { http }: BaseClient, p: RequestData<{ memberId: string }, CreateMembershipViewModel> ): Promise> { return await http.post(`/admin/member/${p.params.memberId}/position`, p.body); } static async updatePositionByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, UpdateMembershipViewModel> ): Promise> { return await http.put(`/admin/member/${p.params.memberId}/position/${p.params.recordId}`, p.body); } static async deletePositionByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, void> ): Promise> { return await http.delete(`/admin/member/${p.params.memberId}/position/${p.params.recordId}`); } static async getCommunicationsByMember( { http }: BaseClient, p: RequestData<{ memberId: string }, void> ): Promise> { return await http.get(`/admin/member/${p.params.memberId}/communications`); } static async getCommunicationByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, void> ): Promise> { return await http.get(`/admin/member/${p.params.memberId}/communication/${p.params.recordId}`); } static async addCommunicationsByMember( { http }: BaseClient, p: RequestData<{ memberId: string }, CreateMembershipViewModel> ): Promise> { return await http.post(`/admin/member/${p.params.memberId}/communication`, p.body); } static async updateCommunicationsByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, UpdateMembershipViewModel> ): Promise> { return await http.put(`/admin/member/${p.params.memberId}/communication/${p.params.recordId}`, p.body); } static async deleteCommunicationsByMemberAndId( { http }: BaseClient, p: RequestData<{ memberId: string; recordId: number }, void> ): Promise> { return await http.delete(`/admin/member/${p.params.memberId}/communication/${p.params.recordId}`); } }