From 9685b6166dc438d534103394543c4038687c8560 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Wed, 26 Mar 2025 11:50:54 +0100 Subject: [PATCH] change: types and search options --- src/requests/admin/memberRequests.ts | 15 ++++++++++++--- src/requests/admin/queryRequests.ts | 13 ++++++++++--- src/types/admin/permissionTypes.ts | 10 +++++++--- src/viewmodels/admin/newsletter.models.ts | 4 ++-- src/viewmodels/admin/protocol.models.ts | 8 ++++++++ src/viewmodels/admin/query.models.ts | 2 +- 6 files changed, 40 insertions(+), 12 deletions(-) diff --git a/src/requests/admin/memberRequests.ts b/src/requests/admin/memberRequests.ts index 35f4aae..5a10f7a 100644 --- a/src/requests/admin/memberRequests.ts +++ b/src/requests/admin/memberRequests.ts @@ -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; + getAllMembers: RequestDefinition; getMemberById: RequestDefinition<{ id: string }, void, MemberViewModel>; getMemberStatisticsById: RequestDefinition<{ id: string }, void, MemberStatisticsViewModel>; createMember: RequestDefinition; @@ -58,8 +66,9 @@ interface IMemberRequests { @ImplementsRequestInterface() export default abstract class MemberRequests { - static async getAllMembers({ http }: BaseClient): Promise> { - return await http.get("/admin/member"); + static async getAllMembers({ http }: BaseClient, p: RequestData): Promise> { + 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> { return await http.get(`/admin/member/${p.params.id}`); diff --git a/src/requests/admin/queryRequests.ts b/src/requests/admin/queryRequests.ts index aedc357..21da6d1 100644 --- a/src/requests/admin/queryRequests.ts +++ b/src/requests/admin/queryRequests.ts @@ -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; 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; + executeQuery: RequestDefinition; } @ImplementsRequestInterface() @@ -34,8 +40,9 @@ export default abstract class QueryDataRequests { static async executeQuery( { http }: BaseClient, - p: RequestData + p: RequestData ): Promise> { - 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); } } diff --git a/src/types/admin/permissionTypes.ts b/src/types/admin/permissionTypes.ts index 59b8737..e9ed138 100644 --- a/src/types/admin/permissionTypes.ts +++ b/src/types/admin/permissionTypes.ts @@ -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 = [ "newsletter", "newsletter_config", "protocol", + "listprint", "qualification", "award", "executive_position", @@ -63,10 +66,11 @@ export const permissionModules: Array = [ "query_store", "template", "template_usage", + "backup", ]; export const permissionTypes: Array = ["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"], }; diff --git a/src/viewmodels/admin/newsletter.models.ts b/src/viewmodels/admin/newsletter.models.ts index 85df5fe..56f8a3b 100644 --- a/src/viewmodels/admin/newsletter.models.ts +++ b/src/viewmodels/admin/newsletter.models.ts @@ -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 */ diff --git a/src/viewmodels/admin/protocol.models.ts b/src/viewmodels/admin/protocol.models.ts index aa6e87c..162088d 100644 --- a/src/viewmodels/admin/protocol.models.ts +++ b/src/viewmodels/admin/protocol.models.ts @@ -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 */ diff --git a/src/viewmodels/admin/query.models.ts b/src/viewmodels/admin/query.models.ts index ac1895d..b362cc5 100644 --- a/src/viewmodels/admin/query.models.ts +++ b/src/viewmodels/admin/query.models.ts @@ -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; }