diff --git a/admin/src/graphql/searchUsers.js b/admin/src/graphql/searchUsers.js index ddf759031..fc9ac5148 100644 --- a/admin/src/graphql/searchUsers.js +++ b/admin/src/graphql/searchUsers.js @@ -12,7 +12,7 @@ export const searchUsers = gql` searchText: $searchText currentPage: $currentPage pageSize: $pageSize - filterByActivated: $filterByActivated + filterByActivated: $filterByActivated # Wolle: put in 'filters' object? filterByDeleted: $filterByDeleted ) { userCount diff --git a/admin/src/pages/UserSearch.spec.js b/admin/src/pages/UserSearch.spec.js index 2eb24f84b..079058479 100644 --- a/admin/src/pages/UserSearch.spec.js +++ b/admin/src/pages/UserSearch.spec.js @@ -82,7 +82,7 @@ describe('UserSearch', () => { searchText: '', currentPage: 1, pageSize: 25, - filterByActivated: null, + filterByActivated: null, // Wolle: put in 'filters' object? filterByDeleted: null, }, }), @@ -101,7 +101,7 @@ describe('UserSearch', () => { searchText: '', currentPage: 1, pageSize: 25, - filterByActivated: false, + filterByActivated: false, // Wolle: put in 'filters' object? filterByDeleted: null, }, }), @@ -121,7 +121,7 @@ describe('UserSearch', () => { searchText: '', currentPage: 1, pageSize: 25, - filterByActivated: null, + filterByActivated: null, // Wolle: put in 'filters' object? filterByDeleted: true, }, }), @@ -141,7 +141,7 @@ describe('UserSearch', () => { searchText: '', currentPage: 2, pageSize: 25, - filterByActivated: null, + filterByActivated: null, // Wolle: put in 'filters' object? filterByDeleted: null, }, }), @@ -161,7 +161,7 @@ describe('UserSearch', () => { searchText: 'search string', currentPage: 1, pageSize: 25, - filterByActivated: null, + filterByActivated: null, // Wolle: put in 'filters' object? filterByDeleted: null, }, }), @@ -178,7 +178,7 @@ describe('UserSearch', () => { searchText: '', currentPage: 1, pageSize: 25, - filterByActivated: null, + filterByActivated: null, // Wolle: put in 'filters' object? filterByDeleted: null, }, }), diff --git a/admin/src/pages/UserSearch.vue b/admin/src/pages/UserSearch.vue index f8ceac36c..82eebc0b8 100644 --- a/admin/src/pages/UserSearch.vue +++ b/admin/src/pages/UserSearch.vue @@ -97,7 +97,7 @@ export default { searchText: this.criteria, currentPage: this.currentPage, pageSize: this.perPage, - filterByActivated: this.filterByActivated, + filterByActivated: this.filterByActivated, // Wolle: put in 'filters' object? filterByDeleted: this.filterByDeleted, }, fetchPolicy: 'no-cache', diff --git a/backend/src/graphql/arg/SearchUsersArgs.ts b/backend/src/graphql/arg/SearchUsersArgs.ts index b47f39d56..7826f26fd 100644 --- a/backend/src/graphql/arg/SearchUsersArgs.ts +++ b/backend/src/graphql/arg/SearchUsersArgs.ts @@ -1,4 +1,5 @@ -import { ArgsType, Field, Int } from 'type-graphql' +import { Args, ArgsType, Field, Int } from 'type-graphql' +import SearchUsersFilters from '@arg/SearchUsersFilters' @ArgsType() export default class SearchUsersArgs { @@ -11,9 +12,13 @@ export default class SearchUsersArgs { @Field(() => Int, { nullable: true }) pageSize?: number - @Field(() => Boolean, { nullable: true }) - filterByActivated?: boolean | null + // Wolle: @Field(() => Boolean, { nullable: true }) + // filterByActivated?: boolean | null - @Field(() => Boolean, { nullable: true }) - filterByDeleted?: boolean | null + // Wolle: @Field(() => Boolean, { nullable: true }) + // filterByDeleted?: boolean | null + + // Wolle: shall this be nullable? + @Field() + filters: SearchUsersFilters } diff --git a/backend/src/graphql/arg/SearchUsersFilters.ts b/backend/src/graphql/arg/SearchUsersFilters.ts new file mode 100644 index 000000000..55a09304c --- /dev/null +++ b/backend/src/graphql/arg/SearchUsersFilters.ts @@ -0,0 +1,13 @@ +// Wolle: import { ArgsType, Field, InputType } from 'type-graphql' +import { Field, InputType, ObjectType } from 'type-graphql' + +@ObjectType() +@InputType('SearchUsersFiltersInput') +// Wolle: @ArgsType() +export default class SearchUsersFilters { + @Field(() => Boolean, { nullable: true, defaultValue: null }) + filterByActivated?: boolean | null + + @Field(() => Boolean, { nullable: true, defaultValue: null }) + filterByDeleted?: boolean | null +} diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index d0dc3f442..0f46729c4 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -56,19 +56,27 @@ export class AdminResolver { searchText, currentPage = 1, pageSize = 25, - filterByActivated = null, - filterByDeleted = null, + // Wolle: filters = { + // filterByActivated: null, + // filterByDeleted: null, + // }, + filters = { + filterByActivated: null, + filterByDeleted: null, + }, }: SearchUsersArgs, ): Promise { + // Wolle + console.log('filters: ', filters) const userRepository = getCustomRepository(UserRepository) const filterCriteria: ObjectLiteral[] = [] - if (filterByActivated !== null) { - filterCriteria.push({ emailChecked: filterByActivated }) + if (filters.filterByActivated !== null) { + filterCriteria.push({ emailChecked: filters.filterByActivated }) } - if (filterByDeleted !== null) { - filterCriteria.push({ deletedAt: filterByDeleted ? Not(IsNull()) : IsNull() }) + if (filters.filterByDeleted !== null) { + filterCriteria.push({ deletedAt: filters.filterByDeleted ? Not(IsNull()) : IsNull() }) } const userFields = ['id', 'firstName', 'lastName', 'email', 'emailChecked', 'deletedAt'] diff --git a/backend/src/seeds/graphql/mutations.ts b/backend/src/seeds/graphql/mutations.ts index d3026dbdd..f6c6b1fae 100644 --- a/backend/src/seeds/graphql/mutations.ts +++ b/backend/src/seeds/graphql/mutations.ts @@ -107,6 +107,39 @@ export const unDeleteUser = gql` } ` +export const searchUsers = gql` + query ( + $searchText: String! + $currentPage: Int + $pageSize: Int + # Wolle $filterByActivated: Boolean + # $filterByDeleted: Boolean + $filters: SearchUsersFiltersInput! + ) { + searchUsers( + searchText: $searchText + currentPage: $currentPage + pageSize: $pageSize + # Wolle filterByActivated: $filterByActivated # Wolle: put in 'filters' object? + # filterByDeleted: $filterByDeleted + filters: $filters + ) { + userCount + userList { + userId + firstName + lastName + email + creation + emailChecked + hasElopage + emailConfirmationSend + deletedAt + } + } + } +` + export const createPendingCreations = gql` mutation ($pendingCreations: [CreatePendingCreationArgs!]!) { createPendingCreations(pendingCreations: $pendingCreations) {