From 48c0b687d6be249025dc512c12038b7c5fca33a4 Mon Sep 17 00:00:00 2001 From: ogerly Date: Fri, 26 Nov 2021 15:05:49 +0100 Subject: [PATCH] Query changed to Type PendingCreation, changed the login user search to state user search, adding parameters to PendingCreation object, changed frontend to map the query informations. --- admin/src/graphql/getPendingCreations.js | 1 + admin/src/pages/CreationConfirm.vue | 98 +++---------------- backend/src/graphql/model/PendingCreation.ts | 3 + backend/src/graphql/resolver/AdminResolver.ts | 24 ++--- backend/src/typeorm/repository/User.ts | 13 +++ 5 files changed, 43 insertions(+), 96 deletions(-) diff --git a/admin/src/graphql/getPendingCreations.js b/admin/src/graphql/getPendingCreations.js index c387c368e..f359c79db 100644 --- a/admin/src/graphql/getPendingCreations.js +++ b/admin/src/graphql/getPendingCreations.js @@ -10,6 +10,7 @@ export const getPendingCreations = gql` note date moderator + creation } } ` diff --git a/admin/src/pages/CreationConfirm.vue b/admin/src/pages/CreationConfirm.vue index 5e5078283..660436d6c 100644 --- a/admin/src/pages/CreationConfirm.vue +++ b/admin/src/pages/CreationConfirm.vue @@ -31,98 +31,25 @@ export default { { key: 'firstName', label: 'Vorname' }, { key: 'lastName', label: 'Nachname' }, { - key: 'creation_gdd', + key: 'amount', label: 'Schöpfung', formatter: (value) => { return value + ' GDD' }, }, - { key: 'text', label: 'Text' }, + { key: 'note', label: 'Text' }, { - key: 'creation_date', + key: 'date', label: 'Datum', formatter: (value) => { - return value.long + return this.$moment(value).format('ll') }, }, - { key: 'creation_moderator', label: 'Moderator' }, + { key: 'moderator', label: 'Moderator' }, { key: 'edit_creation', label: 'ändern' }, { key: 'confirm', label: 'speichern' }, ], - confirmResult: [ - { - id: 1, - email: 'dickerson@web.de', - firstName: 'Dickerson', - lastName: 'Macdonald', - creation: '[450,200,700]', - creation_gdd: '1000', - text: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam ', - - creation_date: { - short: 'November', - long: '22/11/2021', - }, - creation_moderator: 'Manuela Gast', - }, - { - id: 2, - email: 'larsen@woob.de', - firstName: 'Larsen', - lastName: 'Shaw', - creation: '[300,200,1000]', - creation_gdd: '1000', - text: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam ', - - creation_date: { - short: 'November', - long: '03/11/2021', - }, - creation_moderator: 'Manuela Gast', - }, - { - id: 3, - email: 'geneva@tete.de', - firstName: 'Geneva', - lastName: 'Wilson', - creation: '[350,200,900]', - creation_gdd: '1000', - text: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam', - creation_date: { - short: 'September', - long: '27/09/2021', - }, - creation_moderator: 'Manuela Gast', - }, - { - id: 4, - email: 'viewrter@asdfvb.com', - firstName: 'Soledare', - lastName: 'Takker', - creation: '[100,400,800]', - creation_gdd: '500', - text: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo ', - creation_date: { - short: 'Oktober', - long: '12/10/2021', - }, - creation_moderator: 'Evelyn Roller', - }, - { - id: 5, - email: 'dickerson@web.de', - firstName: 'Dickerson', - lastName: 'Macdonald', - creation: '[100,400,800]', - creation_gdd: '200', - text: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At', - creation_date: { - short: 'September', - long: '05/09/2021', - }, - creation_moderator: 'Manuela Gast', - }, - ], + confirmResult: [], } }, @@ -141,20 +68,21 @@ export default { this.$store.commit('openCreationsMinus', 1) } }, - getPendingCreations() { + async getPendingCreations() { this.$apollo .query({ query: getPendingCreations, }) .then((result) => { - console.log('getPendingCreations.Result', result) + this.confirmResult = result.data.getPendingCreations + }) + .catch((error) => { + this.$toasted.error(error.message) }) - .catch() }, }, - created() { - this.getPendingCreations() - this.$store.commit('resetOpenCreations') + async created() { + await this.getPendingCreations() this.$store.commit('openCreationsPlus', Object.keys(this.confirmResult).length) }, } diff --git a/backend/src/graphql/model/PendingCreation.ts b/backend/src/graphql/model/PendingCreation.ts index 56bbe6d27..aa12bd94b 100644 --- a/backend/src/graphql/model/PendingCreation.ts +++ b/backend/src/graphql/model/PendingCreation.ts @@ -28,4 +28,7 @@ export class PendingCreation { @Field(() => Number) moderator: number + + @Field(() => [Number]) + creation: number[] } diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 8dd0293ce..3c960b0fa 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -16,19 +16,19 @@ export class AdminResolver { @Authorized([RIGHTS.SEARCH_USERS]) @Query(() => [UserAdmin]) async searchUsers(@Arg('searchText') searchText: string): Promise { - const loginUserRepository = getCustomRepository(LoginUserRepository) - const loginUsers = await loginUserRepository.findBySearchCriteria(searchText) - const users = await Promise.all( - loginUsers.map(async (loginUser) => { - const user = new UserAdmin() - user.firstName = loginUser.firstName - user.lastName = loginUser.lastName - user.email = loginUser.email - user.creation = await getUserCreations(loginUser.id) - return user + const userRepository = getCustomRepository(UserRepository) + const users = await userRepository.findBySearchCriteria(searchText) + const adminUsers = await Promise.all( + users.map(async (user) => { + const adminUser = new UserAdmin() + adminUser.firstName = user.firstName + adminUser.lastName = user.lastName + adminUser.email = user.email + adminUser.creation = await getUserCreations(user.id) + return adminUser }), ) - return users + return adminUsers } @Query(() => [Number]) @@ -38,6 +38,7 @@ export class AdminResolver { const userRepository = getCustomRepository(UserRepository) const user = await userRepository.findByEmail(email) + console.log('User', user) const creations = await getUserCreations(user.id) const creationDateObj = new Date(creationDate) if (isCreationValid(creations, amount, creationDateObj)) { @@ -70,6 +71,7 @@ export class AdminResolver { firstName: user.firstName, lastName: user.lastName, email: user.email, + creation: await getUserCreations(user.id), } return newPendingCreation diff --git a/backend/src/typeorm/repository/User.ts b/backend/src/typeorm/repository/User.ts index e127c179c..cf67c837b 100644 --- a/backend/src/typeorm/repository/User.ts +++ b/backend/src/typeorm/repository/User.ts @@ -30,4 +30,17 @@ export class UserRepository extends Repository { }) return usersIndiced } + + async findBySearchCriteria(searchCriteria: string): Promise { + return await this.createQueryBuilder('user') + .where( + 'user.firstName like :name or user.lastName like :lastName or user.email like :email', + { + name: `%${searchCriteria}%`, + lastName: `%${searchCriteria}%`, + email: `%${searchCriteria}%`, + }, + ) + .getMany() + } }