Add localization, change filterState from string to array of string.

This commit is contained in:
elweyn 2023-01-24 11:33:29 +01:00
parent 574906eb76
commit f4c743f7b4
3 changed files with 43 additions and 6 deletions

View File

@ -1,4 +1,5 @@
import Decimal from 'decimal.js-light' import Decimal from 'decimal.js-light'
import i18n from 'i18n'
import { Arg, Args, Authorized, Ctx, Int, Mutation, Query, Resolver } from 'type-graphql' import { Arg, Args, Authorized, Ctx, Int, Mutation, Query, Resolver } from 'type-graphql'
import { FindOperator, IsNull, In, getConnection, Equal } from '@dbTools/typeorm' import { FindOperator, IsNull, In, getConnection, Equal } from '@dbTools/typeorm'
@ -179,18 +180,43 @@ export class ContributionResolver {
async listAllContributions( async listAllContributions(
@Args() @Args()
{ currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated,
@Arg('filterState', () => String, { nullable: true }) @Arg('filterState', () => [String], { nullable: true })
filterState: string | null, filterStates: string[] | null,
@Ctx() context: Context,
): Promise<ContributionListResult> { ): Promise<ContributionListResult> {
const where: { const where: {
contributionStatus?: FindOperator<string> | null contributionStatus?: FindOperator<string> | null
} = {} } = {}
const typeStatus = Object.values(ContributionStatus) const typeStatus = Object.values(ContributionStatus)
if (filterState !== null) { const filterStateArray = []
const user = getUser(context)
i18n.setLocale(user.language)
if (filterStates !== null) {
// Asked ChatGBT for explanation => filterState converted to ContributionStatus // Asked ChatGBT for explanation => filterState converted to ContributionStatus
const contributionStatus = ContributionStatus[filterState as keyof typeof ContributionStatus] const length = filterStates.length
if (typeStatus.includes(contributionStatus)) { let i = 0
where.contributionStatus = Equal(filterState) for (i; i < length; i++) {
const filterState = filterStates[i].toUpperCase()
logger.info('filterState', filterState)
const contributionStatus =
ContributionStatus[filterState as keyof typeof ContributionStatus]
logger.info('contributionStatus', contributionStatus)
if (!typeStatus.includes(contributionStatus)) {
logger.error(
`${i18n.__('error.contributions.wrongFilterState', {
contributionState: filterStates[i],
})}`,
)
throw new Error(
`${i18n.__('error.contributions.wrongFilterState', {
contributionState: filterStates[i],
})}`,
)
}
filterStateArray.push(contributionStatus)
}
if (filterStateArray.length > 0) {
where.contributionStatus = In(filterStateArray)
} }
} }

View File

@ -55,6 +55,11 @@
"subject": "Gradido: {senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet" "subject": "Gradido: {senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet"
} }
}, },
"error": {
"contributions": {
"wrongFilterState": "Nicht definierter Status wurde gesendet: {contributionState}"
}
},
"general": { "general": {
"decimalSeparator": ",", "decimalSeparator": ",",
"imprint": "Gradido-Akademie\nInstitut für Wirtschaftsbionik\nPfarrweg 2\n74653 Künzelsau\nDeutschland", "imprint": "Gradido-Akademie\nInstitut für Wirtschaftsbionik\nPfarrweg 2\n74653 Künzelsau\nDeutschland",

View File

@ -1,4 +1,5 @@
{ {
"contributions": {},
"emails": { "emails": {
"addedContributionMessage": { "addedContributionMessage": {
"commonGoodContributionMessage": "you have received a message from {senderFirstName} {senderLastName} regarding your common good contribution “{contributionMemo}”.", "commonGoodContributionMessage": "you have received a message from {senderFirstName} {senderLastName} regarding your common good contribution “{contributionMemo}”.",
@ -55,6 +56,11 @@
"subject": "Gradido: {senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido" "subject": "Gradido: {senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido"
} }
}, },
"error": {
"contributions": {
"wrongFilterState": "Send a state that isn't defined: {contributionState}"
}
},
"general": { "general": {
"decimalSeparator": ".", "decimalSeparator": ".",
"imprint": "Gradido-Akademie\nInstitut für Wirtschaftsbionik\nPfarrweg 2\n74653 Künzelsau\nDeutschland", "imprint": "Gradido-Akademie\nInstitut für Wirtschaftsbionik\nPfarrweg 2\n74653 Künzelsau\nDeutschland",