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 80735be..c75fc28 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 @@ -19,11 +19,15 @@ import org.springframework.web.bind.annotation.RequestParam; import com.example.demo.app.domain.model.LoginModel; import com.example.demo.app.domain.service.CategoryService; +import com.example.demo.app.domain.service.GoalService; import com.example.demo.app.domain.service.TransactionService; +import com.example.demo.app.domain.service.UserService; import com.example.demo.app.presentation.form.CategoryForm; import com.example.demo.app.presentation.form.Expense; +import com.example.demo.app.presentation.form.GoalForm; import com.example.demo.app.presentation.form.Income; import com.example.demo.app.presentation.form.TransactionForm; +import com.example.demo.app.presentation.form.UserForm; import lombok.RequiredArgsConstructor; @@ -33,6 +37,8 @@ public class TransactionController { private final TransactionService transactionService; private final CategoryService categoryService; + private final GoalService goalService; + private final UserService userService; // 一覧画面 @GetMapping("/transaction/list") @@ -222,50 +228,85 @@ public class TransactionController { @GetMapping("/menu") public String menu(HttpSession session, Model model, - @RequestParam(required = false, defaultValue = "0") String years, - @RequestParam(required = false, defaultValue = "0") String months) { + @RequestParam(required = false, defaultValue = "0") String years, + @RequestParam(required = false, defaultValue = "0") String months) { - LoginModel loginUser = (LoginModel) session.getAttribute("loginUser"); + LoginModel loginUser = (LoginModel) session.getAttribute("loginUser"); - LocalDate today = LocalDate.now(); + LocalDate today = LocalDate.now(); - int year = (years.equals("0")) ? today.getYear() : Integer.parseInt(years); - int month = (months.equals("0")) ? today.getMonthValue() : Integer.parseInt(months); + int year = (years.equals("0")) ? today.getYear() : Integer.parseInt(years); - System.out.println("year : " + year + "month : " + month); + int month = (months.equals("0")) ? today.getMonthValue() : Integer.parseInt(months); - YearMonth yearMonth = YearMonth.of(year, month); + YearMonth yearMonth = YearMonth.of(year, month); - int lastDay = yearMonth.lengthOfMonth(); + int lastDay = yearMonth.lengthOfMonth(); - int firstDayOfWeek = yearMonth.atDay(1).getDayOfWeek().getValue() % 7; + int firstDayOfWeek = yearMonth.atDay(1).getDayOfWeek().getValue() % 7; - model.addAttribute("year", year); - model.addAttribute("month", month); - model.addAttribute("day", today.getDayOfMonth()); + YearMonth previousYearMonth = yearMonth.minusMonths(1); - model.addAttribute("lastDay", lastDay); - model.addAttribute("firstDayOfWeek", firstDayOfWeek); + int previousYear = previousYearMonth.getYear(); + int previousMonth = previousYearMonth.getMonthValue(); - LocalDate startDate = LocalDate.now().withDayOfMonth(1); + YearMonth nextYearMonth = yearMonth.plusMonths(1); - LocalDate endDate = LocalDate.now().withDayOfMonth(LocalDate.now().lengthOfMonth()); + int nextYear = nextYearMonth.getYear(); + int nextMonth = nextYearMonth.getMonthValue(); - List incomeList = transactionService.findTotalIncomeList(startDate, endDate, loginUser.getUserId()); - List expenseList = transactionService.findTotalExpenseList(startDate, endDate, loginUser.getUserId()); - model.addAttribute("incomeList", incomeList); + model.addAttribute("year", year); + model.addAttribute("month", month); + model.addAttribute("day", today.getDayOfMonth()); - model.addAttribute("expenseList", expenseList); + model.addAttribute("lastDay", lastDay); + model.addAttribute("firstDayOfWeek", firstDayOfWeek); - int totalIncome = transactionService.findTotalIncome(startDate, endDate, loginUser.getUserId()); + model.addAttribute("previousYear", previousYear); + model.addAttribute("previousMonth", previousMonth); - int totalExpense = transactionService.findTotalExpense(startDate, endDate, loginUser.getUserId()); + model.addAttribute("nextYear", nextYear); + model.addAttribute("nextMonth", nextMonth); - model.addAttribute("totalIncome", totalIncome); - model.addAttribute("totalExpense", totalExpense); + LocalDate startDate = yearMonth.atDay(1); + LocalDate endDate = yearMonth.atEndOfMonth(); - return "menu"; + + List incomeList = transactionService.findTotalIncomeList(startDate, endDate, loginUser.getUserId()); + + List expenseList = transactionService.findTotalExpenseList(startDate, endDate, loginUser.getUserId()); + + model.addAttribute("incomeList", incomeList); + model.addAttribute("expenseList", expenseList); + + + int totalIncome = transactionService.findTotalIncome(startDate, endDate, loginUser.getUserId()); + + int totalExpense = transactionService.findTotalExpense(startDate, endDate, loginUser.getUserId()); + + + model.addAttribute("totalIncome", totalIncome); + model.addAttribute("totalExpense", totalExpense); + + + + GoalForm goalForm = GoalForm.convertFrom(goalService.getGoalByUserId(loginUser.getUserId())); + + UserForm userForm = UserForm.convertFrom(userService.findByUserId(loginUser.getUserId())); + + model.addAttribute("achievementRate", goalForm.getAchievementRate()); + + model.addAttribute("targetAmount", goalForm.getTargetAmount()); + + model.addAttribute("saving", userForm.getSaving()); + + model.addAttribute("deadline", goalForm.getDeadline()); + + + + return "menu"; } + } diff --git a/src/main/resources/static/css/menu.css b/src/main/resources/static/css/menu.css index 12d4ad2..f03042a 100644 --- a/src/main/resources/static/css/menu.css +++ b/src/main/resources/static/css/menu.css @@ -42,6 +42,22 @@ td:hover { background-color: bisque; } +.calendar-title { + display: flex; + justify-content: center; + align-items: center; + + gap: 30px; + + margin: 15px 10px; +} + +.calendar-date { + display: flex; + align-items: baseline; + gap: 10px; +} + .year { font-size: 20px; } @@ -51,8 +67,23 @@ td:hover { font-weight: bold; } -.calendar-title { - margin: 15px 10px; +.month-button { + display: flex; + justify-content: center; + align-items: center; + + width: 40px; + height: 40px; + + font-size: 28px; + text-decoration: none; + color: #333; + + border-radius: 50%; +} + +.month-button:hover { + background-color: #eee; } .date { diff --git a/src/main/resources/templates/menu.html b/src/main/resources/templates/menu.html index d7cd472..4afca1f 100644 --- a/src/main/resources/templates/menu.html +++ b/src/main/resources/templates/menu.html @@ -14,22 +14,30 @@ - +
- - + + ← + - - +
+ + +
+ + + → +
+ @@ -54,21 +62,25 @@
-
+
-
+
-
+
@@ -101,6 +113,30 @@
+
+ 目標貯金 + + 円 +
+
+ 貯金額 + + 円 +
+ +
+ +
+ 達成率 + + 円 +
+
+ 達成期限 + + 円 +
+