diff --git a/backend/src/main/java/de/szut/casino/deposit/TransactionEntity.java b/backend/src/main/java/de/szut/casino/deposit/TransactionEntity.java index c98d1cd..e3fc412 100644 --- a/backend/src/main/java/de/szut/casino/deposit/TransactionEntity.java +++ b/backend/src/main/java/de/szut/casino/deposit/TransactionEntity.java @@ -6,7 +6,6 @@ import lombok.Getter; import lombok.Setter; import java.math.BigDecimal; -import java.util.Date; @Setter @Getter @@ -27,7 +26,4 @@ public class TransactionEntity { @Enumerated(EnumType.STRING) private TransactionStatus status = TransactionStatus.PROCESSING; - - @Column(name = "created_at") - private Date createdAt = new Date(); } diff --git a/backend/src/main/java/de/szut/casino/deposit/TransactionRepository.java b/backend/src/main/java/de/szut/casino/deposit/TransactionRepository.java index 5a16f0d..94b9b6b 100644 --- a/backend/src/main/java/de/szut/casino/deposit/TransactionRepository.java +++ b/backend/src/main/java/de/szut/casino/deposit/TransactionRepository.java @@ -5,20 +5,10 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Service; -import java.util.List; import java.util.Optional; @Service public interface TransactionRepository extends JpaRepository { @Query("SELECT t FROM TransactionEntity t WHERE t.sessionId = ?1") Optional findOneBySessionID(String sessionId); - - @Query("SELECT t FROM TransactionEntity t WHERE t.user = ?1") - List findAllByUserId(UserEntity id); - - @Query("SELECT t FROM TransactionEntity t WHERE t.user = ?1 ORDER BY t.createdAt DESC LIMIT ?2 OFFSET ?3") - List findByUserIdWithLimit(UserEntity userEntity, Integer limit, Integer offset); - - @Query("SELECT COUNT(t) > ?2 + ?3 FROM TransactionEntity t WHERE t.user = ?1") - Boolean hasMore(UserEntity userEntity, Integer limit, Integer offset); } diff --git a/backend/src/main/java/de/szut/casino/user/UserController.java b/backend/src/main/java/de/szut/casino/user/UserController.java index 031d56a..5daf7ef 100644 --- a/backend/src/main/java/de/szut/casino/user/UserController.java +++ b/backend/src/main/java/de/szut/casino/user/UserController.java @@ -4,7 +4,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RestController; + import de.szut.casino.user.dto.CreateUserDto; import de.szut.casino.user.dto.GetUserDto; import jakarta.validation.Valid; diff --git a/backend/src/main/java/de/szut/casino/user/transaction/GetTransactionService.java b/backend/src/main/java/de/szut/casino/user/transaction/GetTransactionService.java deleted file mode 100644 index 831c438..0000000 --- a/backend/src/main/java/de/szut/casino/user/transaction/GetTransactionService.java +++ /dev/null @@ -1,45 +0,0 @@ -package de.szut.casino.user.transaction; - -import de.szut.casino.deposit.TransactionEntity; -import de.szut.casino.deposit.TransactionRepository; -import de.szut.casino.user.UserEntity; -import de.szut.casino.user.UserService; -import de.szut.casino.user.transaction.dto.GetTransactionDto; -import de.szut.casino.user.transaction.dto.UserTransactionsDto; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Optional; - -@Service -public class GetTransactionService { - - @Autowired - private UserService userService; - - @Autowired - private TransactionRepository transactionRepository; - - public UserTransactionsDto getUserTransactionsDto(String authToken, Integer limit, Integer offset) { - Optional user = this.userService.getCurrentUser(authToken); - if (user.isPresent()) { - List transactionEntities = this.transactionRepository.findByUserIdWithLimit(user.get(), limit, offset); - Boolean hasMore = this.transactionRepository.hasMore(user.get(), limit, offset); - - return new UserTransactionsDto(mapTransactionsToDtos(transactionEntities), hasMore); - } - - return new UserTransactionsDto(List.of(), false); - } - - public List mapTransactionsToDtos(List transactions) { - return transactions.stream() - .map(transaction -> new GetTransactionDto( - transaction.getAmount(), - transaction.getStatus(), - transaction.getCreatedAt()) - ).toList(); - } -} - diff --git a/backend/src/main/java/de/szut/casino/user/transaction/TransactionController.java b/backend/src/main/java/de/szut/casino/user/transaction/TransactionController.java deleted file mode 100644 index 61805b0..0000000 --- a/backend/src/main/java/de/szut/casino/user/transaction/TransactionController.java +++ /dev/null @@ -1,32 +0,0 @@ -package de.szut.casino.user.transaction; - -import de.szut.casino.deposit.TransactionEntity; -import de.szut.casino.user.transaction.dto.GetTransactionDto; -import de.szut.casino.user.transaction.dto.UserTransactionsDto; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -@RestController -public class TransactionController { - - @Autowired - private GetTransactionService transactionService; - - @GetMapping("/user/transactions") - public ResponseEntity getUserTransactions( - @RequestHeader("Authorization") String authToken, - @RequestParam(value = "limit", required = false) Integer limit, - @RequestParam(value = "offset", required = false) Integer offset - ) { - UserTransactionsDto transactionEntities = this.transactionService.getUserTransactionsDto(authToken, limit, offset); - - return ResponseEntity.ok(transactionEntities); - } -} - diff --git a/backend/src/main/java/de/szut/casino/user/transaction/dto/GetTransactionDto.java b/backend/src/main/java/de/szut/casino/user/transaction/dto/GetTransactionDto.java deleted file mode 100644 index f37fbf4..0000000 --- a/backend/src/main/java/de/szut/casino/user/transaction/dto/GetTransactionDto.java +++ /dev/null @@ -1,16 +0,0 @@ -package de.szut.casino.user.transaction.dto; - -import de.szut.casino.deposit.TransactionStatus; -import lombok.AllArgsConstructor; -import lombok.NoArgsConstructor; - -import java.util.Date; - -@AllArgsConstructor -@NoArgsConstructor -public class GetTransactionDto { - public double amount = 0; - public TransactionStatus status = TransactionStatus.PROCESSING; - public Date createdAt = new Date(); -} - diff --git a/backend/src/main/java/de/szut/casino/user/transaction/dto/UserTransactionsDto.java b/backend/src/main/java/de/szut/casino/user/transaction/dto/UserTransactionsDto.java deleted file mode 100644 index 54e116b..0000000 --- a/backend/src/main/java/de/szut/casino/user/transaction/dto/UserTransactionsDto.java +++ /dev/null @@ -1,12 +0,0 @@ -package de.szut.casino.user.transaction.dto; - -import lombok.AllArgsConstructor; - -import java.util.List; - -@AllArgsConstructor -public class UserTransactionsDto { - public List transactions; - public Boolean hasMore; -} - diff --git a/frontend/src/app/feature/home/home.component.html b/frontend/src/app/feature/home/home.component.html index e03bed8..b1bfd9b 100644 --- a/frontend/src/app/feature/home/home.component.html +++ b/frontend/src/app/feature/home/home.component.html @@ -81,16 +81,9 @@ [isOpen]="isDepositModalOpen" (closeModalEmitter)="closeDepositModal()" > - - @@ -107,13 +100,11 @@
-

{{ transaction.status }}

-

- {{ transaction.createdAt | date: 'd.m.Y H:m' }} -

+

{{ transaction.type }}

+

{{ transaction.date }}

{{ transaction.amount | currency: 'EUR' }} diff --git a/frontend/src/app/feature/home/home.component.ts b/frontend/src/app/feature/home/home.component.ts index be84450..eb12454 100644 --- a/frontend/src/app/feature/home/home.component.ts +++ b/frontend/src/app/feature/home/home.component.ts @@ -1,36 +1,22 @@ -import { ChangeDetectionStrategy, Component, inject, OnInit } from '@angular/core'; -import { AsyncPipe, CurrencyPipe, DatePipe, NgFor } from '@angular/common'; +import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; +import { CurrencyPipe, NgFor } from '@angular/common'; import { DepositComponent } from '../deposit/deposit.component'; import { ActivatedRoute, Router } from '@angular/router'; import { ConfirmationComponent } from '@shared/components/confirmation/confirmation.component'; +import { Transaction } from 'app/model/Transaction'; import { NavbarComponent } from '@shared/components/navbar/navbar.component'; import { Game } from 'app/model/Game'; -import { Observable } from 'rxjs'; -import { TransactionService } from '@service/transaction.service'; -import format from 'ajv/dist/vocabularies/format'; -import { TransactionHistoryComponent } from '../transaction-history/transaction-history.component'; -import { TransactionData } from '../../model/TransactionData'; @Component({ selector: 'app-homepage', standalone: true, - imports: [ - NavbarComponent, - CurrencyPipe, - NgFor, - DepositComponent, - ConfirmationComponent, - AsyncPipe, - DatePipe, - TransactionHistoryComponent, - ], + imports: [NavbarComponent, CurrencyPipe, NgFor, DepositComponent, ConfirmationComponent], templateUrl: './home.component.html', changeDetection: ChangeDetectionStrategy.OnPush, }) export default class HomeComponent implements OnInit { isDepositModalOpen = false; isDepositSuccessful = false; - isTransactionModalOpen = false; constructor( public route: ActivatedRoute, @@ -88,13 +74,11 @@ export default class HomeComponent implements OnInit { allGames: Game[] = [...this.featuredGames]; - recentTransactionData: Observable = - inject(TransactionService).getUsersTransactions(5); + recentTransactions: Transaction[] = []; openDepositModal() { this.isDepositModalOpen = true; } - closeDepositModal() { this.isDepositModalOpen = false; } @@ -102,22 +86,11 @@ export default class HomeComponent implements OnInit { openDepositConfirmationModal() { this.isDepositSuccessful = true; } - - openTransactionModal() { - this.isTransactionModalOpen = true; - } - closeDepositConfirmationModal() { this.isDepositSuccessful = false; } - closeTransactionModal() { - this.isTransactionModalOpen = false; - } - navigateToGame(route: string) { this.router.navigate([route]); } - - protected readonly format = format; } diff --git a/frontend/src/app/feature/transaction-history/transaction-history.component.css b/frontend/src/app/feature/transaction-history/transaction-history.component.css deleted file mode 100644 index c68e294..0000000 --- a/frontend/src/app/feature/transaction-history/transaction-history.component.css +++ /dev/null @@ -1,8 +0,0 @@ -button[disabled] { - cursor: not-allowed; - background-color: #077b58; - box-shadow: none; -} -button[disabled]:hover { - background-color: #077b58; -} diff --git a/frontend/src/app/feature/transaction-history/transaction-history.component.html b/frontend/src/app/feature/transaction-history/transaction-history.component.html deleted file mode 100644 index 974964c..0000000 --- a/frontend/src/app/feature/transaction-history/transaction-history.component.html +++ /dev/null @@ -1,60 +0,0 @@ - diff --git a/frontend/src/app/feature/transaction-history/transaction-history.component.ts b/frontend/src/app/feature/transaction-history/transaction-history.component.ts deleted file mode 100644 index 0bef06d..0000000 --- a/frontend/src/app/feature/transaction-history/transaction-history.component.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { - ChangeDetectionStrategy, - Component, - EventEmitter, - inject, - Input, - Output, -} from '@angular/core'; -import { TransactionService } from '@service/transaction.service'; -import { Observable } from 'rxjs'; -import { AsyncPipe, CurrencyPipe, DatePipe, NgForOf, NgIf } from '@angular/common'; -import { AnimatedNumberComponent } from '@blackjack/components/animated-number/animated-number.component'; -import { TransactionData } from '../../model/TransactionData'; - -const PER_PAGE = 5; - -@Component({ - standalone: true, - selector: 'app-transaction-history', - imports: [NgForOf, AsyncPipe, CurrencyPipe, DatePipe, AnimatedNumberComponent, NgIf], - templateUrl: './transaction-history.component.html', - styleUrl: './transaction-history.component.css', - changeDetection: ChangeDetectionStrategy.OnPush, -}) -export class TransactionHistoryComponent { - @Input() - isOpen = false; - @Output() - closeEventEmitter = new EventEmitter(); - - protected offset = 0; - - private transactionService: TransactionService = inject(TransactionService); - transactionData$: Observable = this.loadTransactions(); - - closeDialog() { - this.isOpen = false; - this.closeEventEmitter.emit(); - } - - forward() { - this.offset++; - this.transactionData$ = this.loadTransactions(); - } - - back() { - this.offset--; - this.transactionData$ = this.loadTransactions(); - } - - loadTransactions() { - return this.transactionService.getUsersTransactions(PER_PAGE, this.offset * PER_PAGE); - } -} diff --git a/frontend/src/app/model/Transaction.ts b/frontend/src/app/model/Transaction.ts index 2a57559..21277b4 100644 --- a/frontend/src/app/model/Transaction.ts +++ b/frontend/src/app/model/Transaction.ts @@ -1,6 +1,6 @@ export interface Transaction { id: string; - status: string; + type: string; amount: number; - createdAt: string; + date: string; } diff --git a/frontend/src/app/model/TransactionData.ts b/frontend/src/app/model/TransactionData.ts deleted file mode 100644 index 2da39bb..0000000 --- a/frontend/src/app/model/TransactionData.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Transaction } from './Transaction'; - -export interface TransactionData { - transactions: Transaction[]; - hasMore: boolean; -} diff --git a/frontend/src/app/service/transaction.service.ts b/frontend/src/app/service/transaction.service.ts deleted file mode 100644 index 55aba0f..0000000 --- a/frontend/src/app/service/transaction.service.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { inject, Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import { TransactionData } from '../model/TransactionData'; - -@Injectable({ - providedIn: 'root', -}) -export class TransactionService { - private http: HttpClient = inject(HttpClient); - - public getUsersTransactions(limit: number | null = null, offset: number | null = null) { - const baseUrl = new URL(`${window.location.origin}/backend/user/transactions`); - - if (limit !== null) { - baseUrl.searchParams.append('limit', limit.toString()); - } - - if (offset !== null) { - baseUrl.searchParams.append('offset', offset.toString()); - } - - return this.http.get(`${baseUrl}`); - } -}