Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SPSH-1024 #226

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 19 additions & 8 deletions src/api-client/generated/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3293,12 +3293,15 @@ export const DbiamPersonenuebersichtApiAxiosParamCreator = function (configurati
return {
/**
*
* @param {Array<string>} personIds An array of IDs for the persons.
* @param {number} [offset] The offset of the paginated list.
* @param {number} [limit] The requested limit for the page size.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
dBiamPersonenuebersichtControllerFindPersonenuebersichten: async (offset?: number, limit?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
dBiamPersonenuebersichtControllerFindPersonenuebersichten: async (personIds: Array<string>, offset?: number, limit?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
// verify required parameter 'personIds' is not null or undefined
assertParamExists('dBiamPersonenuebersichtControllerFindPersonenuebersichten', 'personIds', personIds)
const localVarPath = `/api/dbiam/personenuebersicht`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
Expand Down Expand Up @@ -3327,6 +3330,10 @@ export const DbiamPersonenuebersichtApiAxiosParamCreator = function (configurati
localVarQueryParameter['limit'] = limit;
}

if (personIds) {
localVarQueryParameter['personIds'] = personIds;
}



setSearchParams(localVarUrlObj, localVarQueryParameter);
Expand Down Expand Up @@ -3391,13 +3398,14 @@ export const DbiamPersonenuebersichtApiFp = function(configuration?: Configurati
return {
/**
*
* @param {Array<string>} personIds An array of IDs for the persons.
* @param {number} [offset] The offset of the paginated list.
* @param {number} [limit] The requested limit for the page size.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async dBiamPersonenuebersichtControllerFindPersonenuebersichten(offset?: number, limit?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DBiamPersonenuebersichtControllerFindPersonenuebersichten200Response>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.dBiamPersonenuebersichtControllerFindPersonenuebersichten(offset, limit, options);
async dBiamPersonenuebersichtControllerFindPersonenuebersichten(personIds: Array<string>, offset?: number, limit?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DBiamPersonenuebersichtControllerFindPersonenuebersichten200Response>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.dBiamPersonenuebersichtControllerFindPersonenuebersichten(personIds, offset, limit, options);
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
/**
Expand All @@ -3422,13 +3430,14 @@ export const DbiamPersonenuebersichtApiFactory = function (configuration?: Confi
return {
/**
*
* @param {Array<string>} personIds An array of IDs for the persons.
* @param {number} [offset] The offset of the paginated list.
* @param {number} [limit] The requested limit for the page size.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
dBiamPersonenuebersichtControllerFindPersonenuebersichten(offset?: number, limit?: number, options?: any): AxiosPromise<DBiamPersonenuebersichtControllerFindPersonenuebersichten200Response> {
return localVarFp.dBiamPersonenuebersichtControllerFindPersonenuebersichten(offset, limit, options).then((request) => request(axios, basePath));
dBiamPersonenuebersichtControllerFindPersonenuebersichten(personIds: Array<string>, offset?: number, limit?: number, options?: any): AxiosPromise<DBiamPersonenuebersichtControllerFindPersonenuebersichten200Response> {
return localVarFp.dBiamPersonenuebersichtControllerFindPersonenuebersichten(personIds, offset, limit, options).then((request) => request(axios, basePath));
},
/**
*
Expand All @@ -3450,13 +3459,14 @@ export const DbiamPersonenuebersichtApiFactory = function (configuration?: Confi
export interface DbiamPersonenuebersichtApiInterface {
/**
*
* @param {Array<string>} personIds An array of IDs for the persons.
* @param {number} [offset] The offset of the paginated list.
* @param {number} [limit] The requested limit for the page size.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DbiamPersonenuebersichtApiInterface
*/
dBiamPersonenuebersichtControllerFindPersonenuebersichten(offset?: number, limit?: number, options?: AxiosRequestConfig): AxiosPromise<DBiamPersonenuebersichtControllerFindPersonenuebersichten200Response>;
dBiamPersonenuebersichtControllerFindPersonenuebersichten(personIds: Array<string>, offset?: number, limit?: number, options?: AxiosRequestConfig): AxiosPromise<DBiamPersonenuebersichtControllerFindPersonenuebersichten200Response>;

/**
*
Expand All @@ -3478,14 +3488,15 @@ export interface DbiamPersonenuebersichtApiInterface {
export class DbiamPersonenuebersichtApi extends BaseAPI implements DbiamPersonenuebersichtApiInterface {
/**
*
* @param {Array<string>} personIds An array of IDs for the persons.
* @param {number} [offset] The offset of the paginated list.
* @param {number} [limit] The requested limit for the page size.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DbiamPersonenuebersichtApi
*/
public dBiamPersonenuebersichtControllerFindPersonenuebersichten(offset?: number, limit?: number, options?: AxiosRequestConfig) {
return DbiamPersonenuebersichtApiFp(this.configuration).dBiamPersonenuebersichtControllerFindPersonenuebersichten(offset, limit, options).then((request) => request(this.axios, this.basePath));
public dBiamPersonenuebersichtControllerFindPersonenuebersichten(personIds: Array<string>, offset?: number, limit?: number, options?: AxiosRequestConfig) {
return DbiamPersonenuebersichtApiFp(this.configuration).dBiamPersonenuebersichtControllerFindPersonenuebersichten(personIds, offset, limit, options).then((request) => request(this.axios, this.basePath));
}

/**
Expand Down
5,396 changes: 5,395 additions & 1 deletion src/api-client/openapispec.json

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions src/stores/PersonenkontextStore.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -596,7 +596,7 @@ describe('PersonenkontextStore', () => {
],
};
mockadapter.onGet('/api/dbiam/personenuebersicht').replyOnce(200, mockResponse);
const getAllPersonenuebersichtenPromise: Promise<void> = personenkontextStore.getAllPersonenuebersichten();
const getAllPersonenuebersichtenPromise: Promise<void> = personenkontextStore.getAllPersonenuebersichten([]);
expect(personenkontextStore.loading).toBe(true);
await getAllPersonenuebersichtenPromise;
expect(personenkontextStore.allUebersichten).toEqual(mockResponse);
Expand All @@ -605,7 +605,7 @@ describe('PersonenkontextStore', () => {

it('should handle string error', async () => {
mockadapter.onGet('/api/dbiam/personenuebersicht').replyOnce(500, 'some error');
const getAllPersonenuebersichtenPromise: Promise<void> = personenkontextStore.getAllPersonenuebersichten();
const getAllPersonenuebersichtenPromise: Promise<void> = personenkontextStore.getAllPersonenuebersichten([]);
expect(personenkontextStore.loading).toBe(true);
await getAllPersonenuebersichtenPromise;
expect(personenkontextStore.errorCode).toEqual('UNSPECIFIED_ERROR');
Expand All @@ -614,7 +614,7 @@ describe('PersonenkontextStore', () => {

it('should handle error code', async () => {
mockadapter.onGet('/api/dbiam/personenuebersicht').replyOnce(500, { code: 'some mock server error' });
const getAllPersonenuebersichtenPromise: Promise<void> = personenkontextStore.getAllPersonenuebersichten();
const getAllPersonenuebersichtenPromise: Promise<void> = personenkontextStore.getAllPersonenuebersichten([]);
expect(personenkontextStore.loading).toBe(true);
await getAllPersonenuebersichtenPromise;
expect(personenkontextStore.errorCode).toEqual('some mock server error');
Expand Down
6 changes: 3 additions & 3 deletions src/stores/PersonenkontextStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ type PersonenkontextActions = {
personenKontextTyp: PersonenKontextTyp,
) => Promise<DBiamPersonenkontextResponse>;
getPersonenuebersichtById: (personId: string) => Promise<void>;
getAllPersonenuebersichten: () => Promise<void>;
getAllPersonenuebersichten: (personIds: string[]) => Promise<void>;
createPersonWithKontext: (params: DbiamCreatePersonWithContextBodyParams) => Promise<PersonendatensatzResponse>;
};

Expand Down Expand Up @@ -322,11 +322,11 @@ export const usePersonenkontextStore: StoreDefinition<
this.loading = false;
}
},
async getAllPersonenuebersichten(): Promise<void> {
async getAllPersonenuebersichten(personIds: string[]): Promise<void> {
this.loading = true;
try {
const { data }: { data: DBiamPersonenuebersichtControllerFindPersonenuebersichten200Response } =
await personenuebersichtApi.dBiamPersonenuebersichtControllerFindPersonenuebersichten();
await personenuebersichtApi.dBiamPersonenuebersichtControllerFindPersonenuebersichten(personIds);
this.allUebersichten = data;
} catch (error: unknown) {
this.errorCode = 'UNSPECIFIED_ERROR';
Expand Down
19 changes: 14 additions & 5 deletions src/views/admin/PersonManagementView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -110,31 +110,37 @@

const statuses: Array<string> = ['Aktiv', 'Inaktiv'];

function getPaginatedPersonen(page: number): void {
async function getPaginatedPersonen(page: number): Promise<void> {
searchFilterStore.personenPage = page;
personStore.getAllPersons({
await personStore.getAllPersons({
offset: (searchFilterStore.personenPage - 1) * searchFilterStore.personenPerPage,
limit: searchFilterStore.personenPerPage,
organisationIDs: searchFilterStore.selectedSchulen || selectedSchulen.value,
rolleIDs: searchFilterStore.selectedRollen || selectedRollen.value,
searchFilter: searchFilterStore.searchFilter || searchFilter.value,
});
await personenkontextStore.getAllPersonenuebersichten(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Noch besser wäre, im Store zu kapseln, das zwei Aufrufe nötig sind.
personenkontextStore.getAllPersonenuebersichten(filterObject) und innerhalb des Stores werden die zwei Endpunkte getriggert. Das reduziert nebenbei die Code-Duplication in der Component.

personStore.allPersons.map((person: Personendatensatz) => person.person.id),
);
}

function getPaginatedPersonenWithLimit(limit: number): void {
async function getPaginatedPersonenWithLimit(limit: number): Promise<void> {
/* reset page to 1 if entries are equal to or less than selected limit */
if (personStore.totalPersons <= limit) {
searchFilterStore.personenPage = 1;
}

searchFilterStore.personenPerPage = limit;
personStore.getAllPersons({
await personStore.getAllPersons({
offset: (searchFilterStore.personenPage - 1) * searchFilterStore.personenPerPage,
limit: searchFilterStore.personenPerPage,
organisationIDs: searchFilterStore.selectedSchulen || selectedSchulen.value,
rolleIDs: searchFilterStore.selectedRollen || selectedRollen.value,
searchFilter: searchFilterStore.searchFilter || searchFilter.value,
});
await personenkontextStore.getAllPersonenuebersichten(
personStore.allPersons.map((person: Personendatensatz) => person.person.id),
);
}

function autoSelectSchule(): void {
Expand Down Expand Up @@ -300,7 +306,10 @@
includeTyp: OrganisationsTyp.Klasse,
systemrechte: ['KLASSEN_VERWALTEN'],
});
await personenkontextStore.getAllPersonenuebersichten();
await getPaginatedPersonen(searchFilterStore.personenPage);
await personenkontextStore.getAllPersonenuebersichten(
personStore.allPersons.map((person: Personendatensatz) => person.person.id),
);
await personenkontextStore.getPersonenkontextRolleWithFilter('');

autoSelectSchule();
Expand Down
Loading