diff --git a/src/main/java/com/example/demo/app/domain/model/ProfileModel.java b/src/main/java/com/example/demo/app/domain/model/ProfileModel.java new file mode 100644 index 0000000..64ede94 --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/model/ProfileModel.java @@ -0,0 +1,18 @@ +package com.example.demo.app.domain.model; + +import java.time.LocalDate; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class ProfileModel { + private Long userId; + private String userName; + private String emailAddress; + private LocalDate brithDate; + private Integer saving; + private Integer annualIncome; + private Integer monthlyBudget; +} diff --git a/src/main/java/com/example/demo/app/domain/service/ProfileService.java b/src/main/java/com/example/demo/app/domain/service/ProfileService.java new file mode 100644 index 0000000..6dd2b8c --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/service/ProfileService.java @@ -0,0 +1,7 @@ +package com.example.demo.app.domain.service; + +import com.example.demo.app.domain.model.ProfileModel; + +public interface ProfileService { + ProfileModel findOne(Long userId); +} diff --git a/src/main/java/com/example/demo/app/domain/service/impl/ProfileServiceImpl.java b/src/main/java/com/example/demo/app/domain/service/impl/ProfileServiceImpl.java new file mode 100644 index 0000000..7df882c --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/service/impl/ProfileServiceImpl.java @@ -0,0 +1,34 @@ +package com.example.demo.app.domain.service.impl; + +import org.springframework.stereotype.Service; + +import com.example.demo.app.domain.model.ProfileModel; +import com.example.demo.app.domain.service.ProfileService; +import com.example.demo.app.infra.entity.UserEntity; +import com.example.demo.app.infra.repository.UserRepository; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class ProfileServiceImpl implements ProfileService{ + private final UserRepository userRepository; + + @Override + public ProfileModel findOne(Long userId) { + UserEntity userEntity = userRepository.findById(userId).orElse(null); + + if(userEntity == null) { + return null; + } + + return new ProfileModel( + userEntity.getUserId(), + userEntity.getUserName(), + userEntity.getMailAddress(), + userEntity.getBirthDate(), + userEntity.getSaving(), + userEntity.getAnnualIncome(), + userEntity.getMonthlyBudget()); + } +} diff --git a/src/main/java/com/example/demo/app/presentation/controller/ProfileController.java b/src/main/java/com/example/demo/app/presentation/controller/ProfileController.java new file mode 100644 index 0000000..f9a3f81 --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/controller/ProfileController.java @@ -0,0 +1,32 @@ +package com.example.demo.app.presentation.controller; + +import jakarta.servlet.http.HttpSession; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +import com.example.demo.app.domain.model.LoginModel; +import com.example.demo.app.domain.model.ProfileModel; +import com.example.demo.app.domain.service.ProfileService; +import com.example.demo.app.presentation.form.ProfileForm; + +import lombok.RequiredArgsConstructor; + +@Controller +@RequiredArgsConstructor +public class ProfileController { + private final ProfileService profileService; + + @GetMapping("/profile") + public String profile(Model model, HttpSession session) { + LoginModel loginUser = (LoginModel) session.getAttribute("loginUser"); + + ProfileModel profileModel = profileService.findOne(loginUser.getUserId()); + + ProfileForm profileForm = ProfileForm.convertForm(profileModel); + + model.addAttribute("profileForm", profileForm); + return "profile"; + } +} diff --git a/src/main/java/com/example/demo/app/presentation/controller/UserController.java b/src/main/java/com/example/demo/app/presentation/controller/UserController.java new file mode 100644 index 0000000..cfcaa0d --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/controller/UserController.java @@ -0,0 +1,55 @@ +package com.example.demo.app.presentation.controller; + +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.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; + +import com.example.demo.app.presentation.form.UserForm; + +import lombok.RequiredArgsConstructor; + +@Controller +@RequiredArgsConstructor +public class UserController { + + @GetMapping("/user/register") + public String showRegister(Model model, HttpSession session) { + UserForm userForm = (UserForm) session.getAttribute("userForm"); + + if(userForm == null) { + userForm = new UserForm(); + } + + model.addAttribute("userForm", userForm); + return "user_register"; + } + + @PostMapping("/user/register/confirm") + public String confirmRegister( + @ModelAttribute UserForm userForm, + HttpSession session) { + + session.setAttribute("userForm", userForm); + + return "user_register_confirm"; + } + + @PostMapping("/user/register/complete") + public String completeRegister(HttpSession session) { + + UserForm userForm = + (UserForm) session.getAttribute("userForm"); + + // DBへの登録処理 + + session.removeAttribute("userForm"); + + return "redirect:/login"; + } + + +} diff --git a/src/main/java/com/example/demo/app/presentation/form/ProfileForm.java b/src/main/java/com/example/demo/app/presentation/form/ProfileForm.java new file mode 100644 index 0000000..2cdfc20 --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/form/ProfileForm.java @@ -0,0 +1,33 @@ +package com.example.demo.app.presentation.form; + +import java.time.LocalDate; + +import com.example.demo.app.domain.model.ProfileModel; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ProfileForm { + private Long userId; + private String userName; + private String emailAddress; + private LocalDate brithDate; + private Integer saving; + private Integer annualIncome; + private Integer monthlyBudget; + + public static ProfileForm convertForm(ProfileModel profileModel) { + return new ProfileForm( + profileModel.getUserId(), + profileModel.getUserName(), + profileModel.getEmailAddress(), + profileModel.getBrithDate(), + profileModel.getSaving(), + profileModel.getAnnualIncome(), + profileModel.getMonthlyBudget()); + } +} diff --git a/src/main/resources/templates/Authentication.html b/src/main/resources/templates/authentication.html similarity index 100% rename from src/main/resources/templates/Authentication.html rename to src/main/resources/templates/authentication.html diff --git a/src/main/resources/templates/user_register.html b/src/main/resources/templates/user_register.html index 18d31ac..a9a38aa 100644 --- a/src/main/resources/templates/user_register.html +++ b/src/main/resources/templates/user_register.html @@ -98,28 +98,18 @@