47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
import { ApiOperation, ApiTags } from '@nestjs/swagger';
|
|
import { Body, Controller, Get, Param, Patch, Post, Query } from '@nestjs/common';
|
|
import { BankingMatchingApplication } from './BankingMatchingApplication';
|
|
import { GetMatchedTransactionsFilter } from './types';
|
|
import { MatchBankTransactionDto } from './dtos/MatchBankTransaction.dto';
|
|
import { ApiCommonHeaders } from '@/common/decorators/ApiCommonHeaders';
|
|
|
|
@Controller('banking/matching')
|
|
@ApiTags('Banking Transactions Matching')
|
|
@ApiCommonHeaders()
|
|
export class BankingMatchingController {
|
|
constructor(
|
|
private readonly bankingMatchingApplication: BankingMatchingApplication,
|
|
) {}
|
|
|
|
@Get('matched')
|
|
@ApiOperation({ summary: 'Retrieves the matched transactions.' })
|
|
async getMatchedTransactions(
|
|
@Query('uncategorizedTransactionIds') uncategorizedTransactionIds: number[],
|
|
@Query() filter: GetMatchedTransactionsFilter,
|
|
) {
|
|
return this.bankingMatchingApplication.getMatchedTransactions(
|
|
uncategorizedTransactionIds,
|
|
filter,
|
|
);
|
|
}
|
|
|
|
@Post('/match')
|
|
@ApiOperation({ summary: 'Match the given uncategorized transaction.' })
|
|
async matchTransaction(@Body() matchedTransactions: MatchBankTransactionDto) {
|
|
return this.bankingMatchingApplication.matchTransaction(
|
|
matchedTransactions.uncategorizedTransactions,
|
|
matchedTransactions.matchedTransactions,
|
|
);
|
|
}
|
|
|
|
@Patch('/unmatch/:uncategorizedTransactionId')
|
|
@ApiOperation({ summary: 'Unmatch the given uncategorized transaction.' })
|
|
async unmatchMatchedTransaction(
|
|
@Param('uncategorizedTransactionId') uncategorizedTransactionId: number,
|
|
) {
|
|
return this.bankingMatchingApplication.unmatchMatchedTransaction(
|
|
uncategorizedTransactionId,
|
|
);
|
|
}
|
|
}
|