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> </div>
</template> </template>
<script> <script>
import { transactionList } from '../graphql/transactionList'
export default { export default {
name: 'CreationTransactionList', name: 'CreationTransactionList',
props: {
userId: { type: Number, required: true },
},
data() { data() {
return { return {
items: [ 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',
},
],
} }
}, },
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> </script>

View File

@ -125,7 +125,10 @@
:dateLastSend="$moment().subtract(1, 'month').format('dddd, DD.MMMM.YYYY HH:mm')," :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-button size="sm" @click="row.toggleDetails">
<b-icon <b-icon

View File

@ -3,6 +3,7 @@ import gql from 'graphql-tag'
export const searchUsers = gql` export const searchUsers = gql`
query ($searchText: String!) { query ($searchText: String!) {
searchUsers(searchText: $searchText) { searchUsers(searchText: $searchText) {
userId
firstName firstName
lastName lastName
email 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 }) @Field(() => Order, { nullable: true })
order?: Order 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() @ObjectType()
export class UserAdmin { export class UserAdmin {
@Field(() => Number)
userId: number
@Field(() => String) @Field(() => String)
email: string email: string

View File

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

View File

@ -340,6 +340,7 @@ async function listTransactions(
pageSize: number, pageSize: number,
order: Order, order: Order,
user: dbUser, user: dbUser,
onlyCreations: boolean,
): Promise<TransactionList> { ): Promise<TransactionList> {
let limit = pageSize let limit = pageSize
let offset = 0 let offset = 0
@ -379,6 +380,14 @@ async function listTransactions(
const transactionList = new TransactionList() const transactionList = new TransactionList()
transactionList.count = userTransactionsCount 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 transactionList.transactions = transactions
return transactionList return transactionList
} }
@ -469,14 +478,33 @@ export class TransactionResolver {
@Authorized([RIGHTS.TRANSACTION_LIST]) @Authorized([RIGHTS.TRANSACTION_LIST])
@Query(() => TransactionList) @Query(() => TransactionList)
async 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, @Ctx() context: any,
): Promise<TransactionList> { ): Promise<TransactionList> {
// load user // load user
const userRepository = getCustomRepository(UserRepository) 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 // get gdt sum
const resultGDTSum = await apiPost(`${CONFIG.GDT_API_URL}/GdtEntries/sumPerEmailApi`, { const resultGDTSum = await apiPost(`${CONFIG.GDT_API_URL}/GdtEntries/sumPerEmailApi`, {

View File

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