Skip to content
Snippets Groups Projects
Commit 2078ad54 authored by Filip Kollár's avatar Filip Kollár
Browse files

fixed endpoint return value for listing transactions

parent 4eb1f530
No related branches found
No related tags found
1 merge request!37Etl from transaction service into analytics
......@@ -17,8 +17,8 @@ import java.time.LocalDate;
)
public interface TransactionClient {
@GetMapping(value = "/account/{accountId}/list")
public ResponseEntity<Page<TransactionDto>> listTransactions(
@PathVariable("accountNumber") String accountId,
ResponseEntity<Page<TransactionDto>> listTransactions(
@PathVariable("accountId") String accountId,
@RequestParam("pageNumber") int pageNumber,
@RequestParam("pageSize") int pageSize,
@RequestParam("date") LocalDate date);
......
......@@ -10,10 +10,11 @@ import java.math.BigDecimal;
@Getter
@Setter
public class TransactionDto {
String withdrawsFromAccountNumber;
@NotBlank
String withdrawsFromAccountId;
@NotBlank
String depositsToAccountNumber;
String depositsToAccountId;
@Min(0)
BigDecimal withdrawAmount;
......
......@@ -51,11 +51,11 @@ public class FactCreatorProcessor implements ItemProcessor<TempAccount, DailyTra
List<TransactionDto> transactions = fetchTransactions(tempAccount);
List<TransactionDto> withdrawalTransactions = transactions.stream()
.filter(transaction -> transaction.getWithdrawsFromAccountNumber().equals(tempAccount.getAccountNumber()))
.filter(transaction -> transaction.getWithdrawsFromAccountId().equals(tempAccount.getAccountNumber()))
.toList();
List<TransactionDto> depositTransactions = transactions.stream()
.filter(transaction -> transaction.getDepositsToAccountNumber().equals(tempAccount.getAccountNumber()))
.filter(transaction -> transaction.getDepositsToAccountId().equals(tempAccount.getAccountNumber()))
.toList();
int totalWithdrawalTransactions = withdrawalTransactions.size();
......
package cz.muni.fi.obs.api;
import cz.muni.fi.obs.data.dbo.TransactionDbo;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
public class TransactionDto {
@NotBlank
String withdrawsFromAccountId;
@NotBlank
String depositsToAccountId;
@Min(0)
BigDecimal withdrawAmount;
@Min(0)
BigDecimal depositAmount;
String note;
String variableSymbol;
public static TransactionDto fromDbo(TransactionDbo transactionDbo) {
TransactionDto transactionDto = new TransactionDto();
transactionDto.setNote(transactionDbo.getNote());
transactionDto.setDepositAmount(transactionDto.getDepositAmount());
transactionDto.setVariableSymbol(transactionDbo.getVariableSymbol());
transactionDto.setWithdrawAmount(transactionDbo.getWithdrawAmount());
transactionDto.setWithdrawsFromAccountId(transactionDbo.getWithdrawsFrom().getId());
transactionDto.setDepositsToAccountId(transactionDbo.getDepositsTo().getId());
return transactionDto;
}
}
package cz.muni.fi.obs.controller;
import cz.muni.fi.obs.api.TransactionCreateDto;
import cz.muni.fi.obs.api.TransactionDto;
import cz.muni.fi.obs.controller.pagination.PagedResponse;
import cz.muni.fi.obs.data.dbo.TransactionDbo;
import cz.muni.fi.obs.exceptions.ResourceNotFoundException;
......@@ -23,10 +24,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.Optional;
import static cz.muni.fi.obs.controller.TransactionController.TRANSACTION_PATH;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Optional;
......@@ -93,14 +90,14 @@ public class TransactionController {
@ApiResponse(responseCode = "404", description = "Transaction history not found")
}
)
@GetMapping(value = "/account/{accountNumber}/list", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Page<TransactionDbo>> listTransactions(
@PathVariable("accountNumber") String accountId,
@GetMapping(value = "/account/{accountId}/list", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Page<TransactionDto>> listTransactions(
@PathVariable("accountId") String accountId,
@RequestParam("pageNumber") int pageNumber,
@RequestParam("pageSize") int pageSize,
@RequestParam("date") LocalDate date) {
log.info("Listing transactions for: {} on date: ", accountId);
Page<TransactionDbo> page = facade.listTransactions(accountId, pageNumber, pageSize, date);
Page<TransactionDto> page = facade.listTransactions(accountId, pageNumber, pageSize, date);
return ResponseEntity.ok(page);
}
......
......@@ -2,6 +2,7 @@ package cz.muni.fi.obs.facade;
import cz.muni.fi.obs.api.AccountCreateDto;
import cz.muni.fi.obs.api.TransactionCreateDto;
import cz.muni.fi.obs.api.TransactionDto;
import cz.muni.fi.obs.data.dbo.AccountDbo;
import cz.muni.fi.obs.data.dbo.TransactionDbo;
import cz.muni.fi.obs.exceptions.ResourceNotFoundException;
......@@ -11,6 +12,7 @@ import cz.muni.fi.obs.service.TransactionService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Component;
......@@ -18,6 +20,7 @@ import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Slf4j
@Component
......@@ -78,8 +81,11 @@ public class TransactionManagementFacade {
return accountService.listAccounts(pageable);
}
public Page<TransactionDbo> listTransactions(String accountId, int pageNumber, int pageSize, LocalDate date) {
return transactionService.listByAccount(accountId, Pageable.ofSize(pageSize).withPage(pageNumber), date);
public Page<TransactionDto> listTransactions(String accountId, int pageNumber, int pageSize, LocalDate date) {
Page<TransactionDbo> transactionDbos = transactionService.listByAccount(accountId, Pageable.ofSize(pageSize).withPage(pageNumber), date);
return new PageImpl<>(transactionDbos.getContent().stream().map(TransactionDto::fromDbo).collect(Collectors.toList()),
Pageable.ofSize(pageSize).withPage(pageNumber),
transactionDbos.getTotalElements());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment