Change the transactionList query so we can get only creation and get the list for specific users.

This commit is contained in:
elweyn 2021-12-20 15:15:51 +01:00
parent 9bc13c39a6
commit 75cbea2321
9 changed files with 131 additions and 50 deletions

View File

@ -5,55 +5,40 @@
</div>
</template>
<script>
import { transactionList } from '../graphql/transactionList'
export default {
name: 'CreationTransactionList',
props: {
userId: { type: Number, required: true },
},
data() {
return {
items: [
{
gdd: 700,
date: '16.11.2021',
memo: 'klaljk jakldasjd lajlaldjalajsd aasj asdl jaljaldj aa jda l jdla jda',
moderator: 'Moderator Eins',
},
{
gdd: 800,
date: '23.10.2021',
memo: 'jij ijdas ijad sa jsd a ijaojodjajd jiaojdja dij aij doa aojd ao jd',
moderator: 'Moderator Eins',
},
{
gdd: 1000,
date: '13.09.2021',
memo: 'asdd d adad adsdadda dsdadadasds asdadada da dadadad adadada d',
moderator: 'Moderator Eins',
},
{
gdd: 400,
date: '03.07.2021',
memo: 'casc acas ac acacacs cac acacac acc acac ca cacac',
moderator: 'Moderator Zwei',
},
{
gdd: 210,
date: '04.06.2021',
memo: 'asc dfdvdvdf vfvd vdfvdff vdvdfvd vff dvfd vdfv dfv dfvdf vdfvdfv',
moderator: 'Moderator Eins',
},
{
gdd: 890,
date: '07.05.2021',
memo: 'reett ttertt etet et et ertetetet et ert et ertertertet',
moderator: 'Moderator Eins',
},
{
gdd: 380,
date: '22.04.2021',
memo: 'bnnbnbbncvbcv bcbcbc bcb cbc bcb cvb cbccvvbcvb bvbcbcbcbc bcb cb',
moderator: 'Moderator Zwei',
},
],
items: [],
}
},
methods: {
getTransactions() {
this.$apollo
.query({
query: transactionList,
variables: {
currentPage: 1,
pageSize: 25,
order: 'DESC',
onlyCreations: true,
userId: parseInt(this.userId),
},
})
.then((result) => {
this.items = result.data.transactionList.transactions
})
.catch((error) => {
console.log('Something went wrong', error)
})
},
},
created() {
this.getTransactions()
},
}
</script>

View File

@ -125,7 +125,10 @@
:dateLastSend="$moment().subtract(1, 'month').format('dddd, DD.MMMM.YYYY HH:mm'),"
/>
<creation-transaction-list-formular v-if="showCreationTransactionListFormular" />
<creation-transaction-list-formular
v-if="showCreationTransactionListFormular"
:userId="row.item.userId"
/>
<b-button size="sm" @click="row.toggleDetails">
<b-icon

View File

@ -3,6 +3,7 @@ import gql from 'graphql-tag'
export const searchUsers = gql`
query ($searchText: String!) {
searchUsers(searchText: $searchText) {
userId
firstName
lastName
email

View File

@ -0,0 +1,44 @@
import gql from 'graphql-tag'
export const transactionList = gql`
query (
$currentPage: Int = 1
$pageSize: Int = 25
$order: Order = DESC
$onlyCreations: Boolean = false
$userId: Int = null
) {
transactionList(
currentPage: $currentPage
pageSize: $pageSize
order: $order
onlyCreations: $onlyCreations
userId: $userId
) {
gdtSum
count
balance
decay
decayDate
transactions {
type
balance
decayStart
decayEnd
decayDuration
memo
transactionId
name
email
date
decay {
balance
decayStart
decayEnd
decayDuration
decayStartBlock
}
}
}
}
`

View File

@ -11,4 +11,10 @@ export default class Paginated {
@Field(() => Order, { nullable: true })
order?: Order
@Field(() => Boolean, { nullable: true })
onlyCreations?: boolean
@Field(() => Int, { nullable: true })
userId?: number
}

View File

@ -2,6 +2,9 @@ import { ObjectType, Field } from 'type-graphql'
@ObjectType()
export class UserAdmin {
@Field(() => Number)
userId: number
@Field(() => String)
email: string

View File

@ -29,6 +29,7 @@ export class AdminResolver {
const adminUsers = await Promise.all(
users.map(async (user) => {
const adminUser = new UserAdmin()
adminUser.userId = user.id
adminUser.firstName = user.firstName
adminUser.lastName = user.lastName
adminUser.email = user.email

View File

@ -340,6 +340,7 @@ async function listTransactions(
pageSize: number,
order: Order,
user: dbUser,
onlyCreations: boolean,
): Promise<TransactionList> {
let limit = pageSize
let offset = 0
@ -379,6 +380,14 @@ async function listTransactions(
const transactionList = new TransactionList()
transactionList.count = userTransactionsCount
if (onlyCreations) {
console.log('before filtering', transactions)
transactions = transactions.filter((transaction) => {
console.log('In filter', transaction)
return transaction.type === 'creation'
})
console.log('after filtering', transactions)
}
transactionList.transactions = transactions
return transactionList
}
@ -469,14 +478,33 @@ export class TransactionResolver {
@Authorized([RIGHTS.TRANSACTION_LIST])
@Query(() => TransactionList)
async transactionList(
@Args() { currentPage = 1, pageSize = 25, order = Order.DESC }: Paginated,
@Args()
{
currentPage = 1,
pageSize = 25,
order = Order.DESC,
onlyCreations = false,
userId,
}: Paginated,
@Ctx() context: any,
): Promise<TransactionList> {
// load user
const userRepository = getCustomRepository(UserRepository)
const userEntity = await userRepository.findByPubkeyHex(context.pubKey)
let userEntity: dbUser | undefined
if (userId) {
console.log('Find by id, ', userId)
userEntity = await userRepository.findOneOrFail({ id: userId })
} else {
userEntity = await userRepository.findByPubkeyHex(context.pubKey)
}
const transactions = await listTransactions(currentPage, pageSize, order, userEntity)
const transactions = await listTransactions(
currentPage,
pageSize,
order,
userEntity,
onlyCreations,
)
// get gdt sum
const resultGDTSum = await apiPost(`${CONFIG.GDT_API_URL}/GdtEntries/sumPerEmailApi`, {

View File

@ -47,8 +47,18 @@ export const logout = gql`
`
export const transactionsQuery = gql`
query($currentPage: Int = 1, $pageSize: Int = 25, $order: Order = DESC) {
transactionList(currentPage: $currentPage, pageSize: $pageSize, order: $order) {
query(
$currentPage: Int = 1
$pageSize: Int = 25
$order: Order = DESC
$onlyCreations: Boolean = false
) {
transactionList(
currentPage: $currentPage
pageSize: $pageSize
order: $order
onlyCreations: $onlyCreations
) {
gdtSum
count
balance