change: types and search options

This commit is contained in:
Julian Krauser 2025-03-26 11:50:54 +01:00
parent fd042cf18d
commit 9685b6166d
6 changed files with 40 additions and 12 deletions

View file

@ -16,8 +16,16 @@ import {
} from "../../viewmodels/admin/member.models";
import { BaseClient } from "../../clients/clientBase";
interface GetMemberParams {
offset?: number;
count?: number;
search?: string;
noLimit?: boolean;
ids?: string[];
}
interface IMemberRequests {
getAllMembers: RequestDefinition<void, void, MemberViewModel[]>;
getAllMembers: RequestDefinition<GetMemberParams, void, MemberViewModel[]>;
getMemberById: RequestDefinition<{ id: string }, void, MemberViewModel>;
getMemberStatisticsById: RequestDefinition<{ id: string }, void, MemberStatisticsViewModel>;
createMember: RequestDefinition<void, CreateMemberViewModel, string>;
@ -58,8 +66,9 @@ interface IMemberRequests {
@ImplementsRequestInterface<IMemberRequests>()
export default abstract class MemberRequests {
static async getAllMembers({ http }: BaseClient): Promise<AxiosResponse<MemberViewModel[], any>> {
return await http.get("/admin/member");
static async getAllMembers({ http }: BaseClient, p: RequestData<GetMemberParams, void>): Promise<AxiosResponse<MemberViewModel[], any>> {
const queryParams = new URLSearchParams(Object.fromEntries(Object.entries(p.params).filter(([_, v]) => v !== undefined))).toString();
return await http.get(`/admin/member?${queryParams}`);
}
static async getMemberById({ http }: BaseClient, p: RequestData<{ id: string }, void>): Promise<AxiosResponse<MemberViewModel, any>> {
return await http.get(`/admin/member/${p.params.id}`);

View file

@ -4,6 +4,12 @@ import { CreateQueryViewModel, QueryExecuteResult, QueryViewModel, UpdateQueryVi
import { DynamicQueryStructure } from "../../types/admin/dynamicQueries";
import { BaseClient } from "../../clients/clientBase";
interface GetQueryParams {
offset?: number;
count?: number;
noLimit?: boolean;
}
interface IQueryRequests {
getQueries: RequestDefinition<void, void, QueryViewModel[]>;
getQueryById: RequestDefinition<{ id: number }, void, QueryViewModel>;
@ -11,7 +17,7 @@ interface IQueryRequests {
updateQuery: RequestDefinition<{ id: number }, UpdateQueryViewModel, void>;
deleteQuery: RequestDefinition<{ id: number }, void, void>;
executeQuery: RequestDefinition<void, DynamicQueryStructure | string, QueryExecuteResult>;
executeQuery: RequestDefinition<GetQueryParams, DynamicQueryStructure | string, QueryExecuteResult>;
}
@ImplementsRequestInterface<IQueryRequests>()
@ -34,8 +40,9 @@ export default abstract class QueryDataRequests {
static async executeQuery(
{ http }: BaseClient,
p: RequestData<void, DynamicQueryStructure | string>
p: RequestData<GetQueryParams, DynamicQueryStructure | string | "member" | "memberByRunningMembership">
): Promise<AxiosResponse<QueryExecuteResult, any>> {
return await http.post(`/admin/query`, p.body);
const queryParams = new URLSearchParams(Object.fromEntries(Object.entries(p.params).filter(([_, v]) => v !== undefined))).toString();
return await http.post(`/admin/query?${queryParams}`, p.body);
}
}

View file

@ -6,6 +6,7 @@ export type PermissionModule =
| "newsletter"
| "newsletter_config"
| "protocol"
| "listprint"
| "qualification"
| "award"
| "executive_position"
@ -19,7 +20,8 @@ export type PermissionModule =
| "query"
| "query_store"
| "template"
| "template_usage";
| "template_usage"
| "backup";
export type PermissionType = "read" | "create" | "update" | "delete";
@ -49,6 +51,7 @@ export const permissionModules: Array<PermissionModule> = [
"newsletter",
"newsletter_config",
"protocol",
"listprint",
"qualification",
"award",
"executive_position",
@ -63,10 +66,11 @@ export const permissionModules: Array<PermissionModule> = [
"query_store",
"template",
"template_usage",
"backup",
];
export const permissionTypes: Array<PermissionType> = ["read", "create", "update", "delete"];
export const sectionsAndModules: SectionsAndModulesObject = {
club: ["member", "calendar", "newsletter", "protocol", "query"],
club: ["member", "calendar", "newsletter", "protocol", "query", "listprint"],
configuration: [
"qualification",
"award",
@ -80,5 +84,5 @@ export const sectionsAndModules: SectionsAndModulesObject = {
"template_usage",
"newsletter_config",
],
management: ["user", "role", "webapi"],
management: ["user", "role", "webapi", "backup"],
};

View file

@ -13,7 +13,7 @@ export interface NewsletterViewModel {
newsletterText: string;
newsletterSignatur: string;
isSent: boolean;
recipientsByQueryId?: number | null;
recipientsByQueryId?: string | null;
recipientsByQuery?: QueryViewModel | null;
}
export interface CreateNewsletterViewModel {
@ -25,7 +25,7 @@ export interface SyncNewsletterViewModel {
newsletterTitle: string;
newsletterText: string;
newsletterSignatur: string;
recipientsByQueryId?: number;
recipientsByQueryId?: string;
}
/** Newsletter Recipient Models */

View file

@ -24,12 +24,14 @@ export interface ProtocolAgendaViewModel {
id: number;
topic: string;
context: string;
sort: number;
protocolId: number;
}
export interface SyncProtocolAgendaViewModel {
id: number;
topic: string;
context: string;
sort: number;
}
/** Protocol Decision Models */
@ -37,12 +39,14 @@ export interface ProtocolDecisionViewModel {
id: number;
topic: string;
context: string;
sort: number;
protocolId: number;
}
export interface SyncProtocolDecisionViewModel {
id: number;
topic: string;
context: string;
sort: number;
}
/** Protocol Presence Models */
@ -50,6 +54,7 @@ export interface ProtocolPresenceViewModel {
memberId: string;
absent: boolean;
excused: boolean;
sort: number;
protocolId: number;
}
export interface SyncProtocolPresenceViewModel {
@ -57,6 +62,7 @@ export interface SyncProtocolPresenceViewModel {
memberId: string;
absent: boolean;
excused: boolean;
sort: number;
}>;
}
@ -68,6 +74,7 @@ export interface ProtocolVotingViewModel {
favour: number;
abstain: number;
against: number;
sort: number;
protocolId: number;
}
export interface SyncProtocolVotingViewModel {
@ -77,6 +84,7 @@ export interface SyncProtocolVotingViewModel {
favour: number;
abstain: number;
against: number;
sort: number;
}
/** Protocol Printout Models */

View file

@ -2,7 +2,7 @@ import { DynamicQueryStructure, FieldType } from "../../types/admin/dynamicQueri
/** Query Store Models */
export interface QueryViewModel {
id: number;
id: string;
title: string;
query: string | DynamicQueryStructure;
}