From 4fed3dba9e73542707a95f9cdddce3c1fa8708db Mon Sep 17 00:00:00 2001 From: Dmitrii Cravcenco Date: Mon, 23 Oct 2023 18:52:38 +0300 Subject: [PATCH] Change getting expenses/incomes logic --- .../controller/ExpenseController.java | 24 +++++++++++++++---- .../controller/IncomeController.java | 24 +++++++++++++++---- .../service/ExpenseService.java | 15 ++++++------ .../service/IncomeService.java | 15 ++++++------ 4 files changed, 52 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java index e7f000f..e652add 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java +++ b/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java @@ -8,6 +8,9 @@ import com.faf223.expensetrackerfaf.service.ExpenseService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; @@ -54,11 +57,22 @@ public class ExpenseController { } } - @GetMapping("/{userUuid}") - public ResponseEntity> getExpensesByUser(@PathVariable String userUuid) { - List expenses = expenseService.getExpensesByUserId(userUuid).stream().map(expenseMapper::toDto).collect(Collectors.toList()); - if (!expenses.isEmpty()) return ResponseEntity.ok(expenses); - else return ResponseEntity.notFound().build(); + @GetMapping("/personal-expenses") + public ResponseEntity> getExpensesByUser() { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + if (authentication != null && authentication.getPrincipal() instanceof UserDetails userDetails) { + + String email = userDetails.getUsername(); + List expenses = expenseService.getExpensesByEmail(email).stream().map(expenseMapper::toDto).collect(Collectors.toList()); + + if (!expenses.isEmpty()) { + return ResponseEntity.ok(expenses); + } + } + + return ResponseEntity.notFound().build(); } } diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java index 6811d10..f076b79 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java +++ b/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java @@ -8,6 +8,9 @@ import com.faf223.expensetrackerfaf.service.IncomeService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; @@ -54,11 +57,22 @@ public class IncomeController { } } - @GetMapping("/{userUuid}") - public ResponseEntity> getIncomesByUser(@PathVariable String userUuid) { - List incomes = incomeService.getIncomesByUserId(userUuid).stream().map(incomeMapper::toDto).collect(Collectors.toList()); - if (!incomes.isEmpty()) return ResponseEntity.ok(incomes); - else return ResponseEntity.notFound().build(); + @GetMapping("/personal-incomes") + public ResponseEntity> getIncomesByUser() { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + if (authentication != null && authentication.getPrincipal() instanceof UserDetails userDetails) { + + String email = userDetails.getUsername(); + List expenses = incomeService.getIncomesByEmail(email).stream().map(incomeMapper::toDto).collect(Collectors.toList()); + + if (!expenses.isEmpty()) { + return ResponseEntity.ok(expenses); + } + } + + return ResponseEntity.notFound().build(); } } diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java b/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java index 0683998..1bea04a 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java +++ b/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java @@ -1,11 +1,10 @@ package com.faf223.expensetrackerfaf.service; +import com.faf223.expensetrackerfaf.model.Credential; import com.faf223.expensetrackerfaf.model.Expense; -import com.faf223.expensetrackerfaf.model.User; +import com.faf223.expensetrackerfaf.repository.CredentialRepository; import com.faf223.expensetrackerfaf.repository.ExpenseRepository; -import com.faf223.expensetrackerfaf.repository.UserRepository; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -17,17 +16,17 @@ import java.util.Optional; public class ExpenseService { private final ExpenseRepository expenseRepository; - private final UserRepository userRepository; + private final CredentialRepository credentialRepository; public void createOrUpdateExpense(Expense expense) { expenseRepository.save(expense); } - public List getExpensesByUserId(String userUuid) { + public List getExpensesByEmail(String email) { - Optional user = userRepository.getUserByUserUuid(userUuid); - if (user.isPresent()) { - return expenseRepository.findByUser(user.get()); + Optional credential = credentialRepository.findByEmail(email); + if (credential.isPresent()) { + return expenseRepository.findByUser(credential.get().getUser()); } return new ArrayList<>(); diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java b/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java index 63e1bab..16946a9 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java +++ b/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java @@ -1,11 +1,10 @@ package com.faf223.expensetrackerfaf.service; +import com.faf223.expensetrackerfaf.model.Credential; import com.faf223.expensetrackerfaf.model.Income; -import com.faf223.expensetrackerfaf.model.User; +import com.faf223.expensetrackerfaf.repository.CredentialRepository; import com.faf223.expensetrackerfaf.repository.IncomeRepository; -import com.faf223.expensetrackerfaf.repository.UserRepository; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -17,7 +16,7 @@ import java.util.Optional; public class IncomeService { private final IncomeRepository incomeRepository; - private final UserRepository userRepository; + private final CredentialRepository credentialRepository; public void createOrUpdateIncome(Income income) { incomeRepository.save(income); @@ -27,11 +26,11 @@ public class IncomeService { return incomeRepository.findAll(); } - public List getIncomesByUserId(String userUuid) { + public List getIncomesByEmail(String email) { - Optional user = userRepository.getUserByUserUuid(userUuid); - if (user.isPresent()) { - return incomeRepository.findByUser(user.get()); + Optional credential = credentialRepository.findByEmail(email); + if (credential.isPresent()) { + return incomeRepository.findByUser(credential.get().getUser()); } return new ArrayList<>();