diff --git a/src/components/dashboard/UpcomingTransactions.vue b/src/components/dashboard/UpcomingTransactions.vue index 7ea6dbe..39f77ba 100644 --- a/src/components/dashboard/UpcomingTransactions.vue +++ b/src/components/dashboard/UpcomingTransactions.vue @@ -5,6 +5,17 @@ import dayjs from 'dayjs'; import { formatAmount } from '@/utils/utils'; import { Checkbox } from 'primevue'; import { Divider } from 'primevue'; +import { useRouter } from 'vue-router'; +import { UpdateTransactionDTO } from '@/models/transaction'; +import { useSpaceStore } from '@/stores/spaceStore'; +import { TransactionService } from '@/services/transactions-service'; +import { useToast } from 'primevue'; + +const toast = useToast() +const spaceStore = useSpaceStore() + +const router = useRouter() + const props = defineProps<{ transactions: Transaction[]; @@ -33,8 +44,27 @@ const getAmountColor = (type: string) => { return type === 'INCOME' ? '!text-green-600 !dark:text-green-400' : '!text-red-600 !dark:text-red-400'; }; -const setTxDone = (tx: Transaction) => { - emits("set-tx-done", tx) +const setTransactionDone = async (transaction: Transaction): Promise => { + const updateTransaction = { + type: transaction.type, + kind: transaction.kind, + categoryId: transaction.category.id, + comment: transaction.comment, + amount: transaction.amount, + fees: 0, + isDone: transaction.isDone, + date: new Date(transaction.date), + } as UpdateTransactionDTO + try { + await TransactionService.updateTransaction(spaceStore.selectedSpaceId as number, transaction.id, updateTransaction) + } catch (error) { + toast.add({ + severity: 'error', + summary: 'Failed to update transactions.', + detail: String(error), + life: 3000, + }) + } } @@ -51,7 +81,8 @@ const setTxDone = (tx: Transaction) => { Looks like you haven't plan any transactions yet. Try to create some.
+ class="flex flex-col w-full gap-0 pl-5 items-start justify-items-center font-bold " + @click="router.push(`/transactions/${transactions[key].id}/edit`)">