diff --git a/src/main/java/com/example/demo/app/domain/service/TransactionService.java b/src/main/java/com/example/demo/app/domain/service/TransactionService.java index fe437f9..86b85d5 100644 --- a/src/main/java/com/example/demo/app/domain/service/TransactionService.java +++ b/src/main/java/com/example/demo/app/domain/service/TransactionService.java @@ -10,7 +10,7 @@ public interface TransactionService { public Map> findAllByDate(LocalDate startDate, LocalDate endDate, Long userId); - public TransactionModel findByUserId(TransactionModel transactionModel); + public List findByUserIdAndDate(LocalDate todayDate, Long userId); public int findTotalIncome(LocalDate startDate, LocalDate endDate, Long userId); diff --git a/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java b/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java index a4d1712..771d267 100644 --- a/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java +++ b/src/main/java/com/example/demo/app/domain/service/impl/TransactionServiceImpl.java @@ -46,15 +46,10 @@ public class TransactionServiceImpl implements TransactionService { } - public TransactionModel findByUserId(TransactionModel transactionModel) { + public List findByUserIdAndDate(LocalDate todayDate, Long userId) { - TransactionEntity transactionEntity = transactionRepository.findByUserId(transactionModel.getUserId()); + return TransactionModel.convertFrom(transactionRepository.findByUserIdAndDate(todayDate, userId)); - if (transactionEntity == null) { - return null; - } - - return TransactionModel.convertFrom(transactionEntity); } } diff --git a/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java b/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java index a65d524..933aa4f 100644 --- a/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java +++ b/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java @@ -5,14 +5,13 @@ import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; import com.example.demo.app.infra.entity.TransactionEntity; public interface TransactionRepository extends JpaRepository { - @Query("select t from TransactionEntity t where t.userEntity.userId = :userId") - public TransactionEntity findByUserId(@Param("userId") Long userId); + @Query("select t from TransactionEntity t where t.userEntity.userId = :userId and t.transactionDate = :transactionDate") + public List findByUserIdAndDate(LocalDate todayDate, Long userId); @Query("select t from TransactionEntity t where (t.transactionDate between :startDate and :endDate) and (t.userId = :userId) order by t.transactionDate asc") public List findAllByDateAndUserId(LocalDate startDate, LocalDate endDate, Long userId); diff --git a/src/main/java/com/example/demo/app/presentation/controller/TransactionController.java b/src/main/java/com/example/demo/app/presentation/controller/TransactionController.java index fca93d3..5e51565 100644 --- a/src/main/java/com/example/demo/app/presentation/controller/TransactionController.java +++ b/src/main/java/com/example/demo/app/presentation/controller/TransactionController.java @@ -1,17 +1,83 @@ package com.example.demo.app.presentation.controller; -import org.springframework.stereotype.Controller; +import java.time.LocalDate; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import jakarta.servlet.http.HttpSession; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import com.example.demo.app.domain.service.CategoryService; import com.example.demo.app.domain.service.TransactionService; +import com.example.demo.app.presentation.form.CategoryForm; +import com.example.demo.app.presentation.form.TransactionForm; import lombok.RequiredArgsConstructor; @Controller @RequiredArgsConstructor public class TransactionController { - + private final TransactionService transactionService; - - - + private final CategoryService categoryService; + + // 一覧画面 + + @GetMapping("/transaction/list") + public String transactionList(@RequestParam LocalDate startDate, @RequestParam LocalDate endDate, Model model, + HttpSession session) { + + LoginUser loginUser = (LoginUser) session.getAttribute("loginUser"); + + Map> transactionFormMap = new HashMap<>(); + + + transactionService.findAll(startDate, endDate, loginUser.getUserId).forEach((date, list) -> { + List transactionFormList = list.stream().map(transaction -> { + TransactionForm transactionForm = TransactionForm.convertFrom( + transaction, + CategoryForm.convertFrom(categoryService.findOne(transaction.getCategoryId())).getCategoryName(), + transactionService.findTotalexpense(startDate, endDate, loginUser.getUserId), + transactionService.findTotalIncome(startDate, endDate, loginUser.getUserId), + CategoryForm.convertFrom(categoryService.findOne(transaction.getCategoryId())).getTransactionType() + ); + return transactionForm; + }).collect(Collectors.toList()); + transactionFormMap.put(date, transactionFormList); + }); + + model.addAttribute("transactionFormMap", transactionFormMap); + + return "transactionList"; + } + + // 詳細画面 + @GetMapping() + public String findOne(@RequestParam LocalDate todayDate, Model model, HttpSession session) { + + LoginUser loginUser = (LoginUser) session.getAttribute("loginUser"); + + List transactionFormList = transactionService.findByUserIdAndDate(todayDate, ((LoginUser)session.getAttribute("loginUser")).getUserId).stream().map(transaction -> { + TransactionForm transactionForm = TransactionForm.convertFrom( + transaction, + CategoryForm.convertFrom(categoryService.findOne(transaction.getCategoryId())).getCategoryName(), + transactionService.findTotalexpense(todayDate, todayDate, loginUser.getUserId), + transactionService.findTotalIncome(todayDate, todayDate, loginUser.getUserId), + CategoryForm.convertFrom(categoryService.findOne(transaction.getCategoryId())).getTransactionType() + ); + return transactionForm; + }).collect(Collectors.toList()); + + + model.addAttribute("transactionFormList", transactionFormList); + + return ""; + } + }