Skip to content

Commit

Permalink
Merge pull request #29 from TravelMate-KU/test
Browse files Browse the repository at this point in the history
refactor: DTO 추가, DTO <-> Entity 변환 디자인 패턴 변경
  • Loading branch information
david-parkk authored Apr 1, 2024
2 parents 9d28791 + 785eec3 commit 77889ef
Show file tree
Hide file tree
Showing 21 changed files with 225 additions and 170 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package konkuk.travelmate.controller;

import konkuk.travelmate.form.response.VolunteerMatchingResponse;
import konkuk.travelmate.dto.response.GetVolunteerMatchingResponse;
import konkuk.travelmate.service.MatchingService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -27,7 +27,7 @@ private String showMatchResults(@AuthenticationPrincipal OAuth2User user, Model

log.info("[MatchingController.showMatchResults]");
String email = Objects.requireNonNull(user.getAttribute("email")).toString();
List<VolunteerMatchingResponse> matchings = matchingService.getMatchResults(email);
List<GetVolunteerMatchingResponse> matchings = matchingService.getMatchResults(email);
model.addAttribute("matchings", matchings);

return "volunteer_matching_result";
Expand Down
44 changes: 10 additions & 34 deletions src/main/java/konkuk/travelmate/controller/RequestController.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
package konkuk.travelmate.controller;

import konkuk.travelmate.domain.TravelType;
import konkuk.travelmate.form.request.RequestsRequest;
import konkuk.travelmate.form.response.RequestsResponse;
import konkuk.travelmate.dto.request.GetRequestsRequest;
import konkuk.travelmate.dto.request.PostRequestRequest;
import konkuk.travelmate.dto.response.GetRequestsResponse;
import konkuk.travelmate.service.RequestService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
Expand All @@ -30,19 +25,11 @@ public class RequestController {
private final RequestService requestService;

@PostMapping("/users/{userId}/courses/{courseId}/request")
public String requestMatching(@PathVariable Long userId, @PathVariable Long courseId,
@RequestParam TravelType type,
@RequestParam("startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
@RequestParam("startTime") @DateTimeFormat(pattern = "HH:mm") LocalTime startTime,
@RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate,
@RequestParam("endTime") @DateTimeFormat(pattern = "HH:mm") LocalTime endTime) {
public String requestMatching(@PathVariable Long userId, @PathVariable Long courseId, PostRequestRequest request) {

log.info("[RequestController.requestMatching]");

Timestamp startDateTime = Timestamp.valueOf(LocalDateTime.of(startDate, startTime));
Timestamp endDateTime = Timestamp.valueOf(LocalDateTime.of(endDate, endTime));

requestService.requestMatching(userId, courseId, new RequestsRequest(type, startDateTime, endDateTime));
requestService.requestMatching(userId, courseId, request);

return "redirect:/users/{userId}/courses";

Expand All @@ -52,24 +39,17 @@ public String requestMatching(@PathVariable Long userId, @PathVariable Long cour
* 봉사자 -> 장애인 조회
*/
@GetMapping("/requests")
public String showRequests(@RequestParam(value = "walk", required = false) Integer walk,
@RequestParam(value = "see", required = false) Integer see,
@RequestParam(value = "talk", required = false) Integer talk,
@RequestParam(value = "listen", required = false) Integer listen,
@RequestParam(value = "iq", required = false) Integer iq,
@RequestParam(value = "depression", required = false) Integer depression,
@RequestParam(value = "bipolar_disorder", required = false) Integer bipolarDisorder,
Model model) {
public String showRequests(GetRequestsRequest request, Model model) {

log.info("[RequestController.showRequests]");

List<RequestsResponse> requestsResponses = new ArrayList<>();
List<GetRequestsResponse> getRequestsResponses = new ArrayList<>();

if(isSearchButtonClicked(walk, see, talk, listen, iq, depression, bipolarDisorder)) {
requestsResponses = requestService.showRequests(walk, see, talk, listen, iq, depression, bipolarDisorder);
if(request.isNotNull()) {
getRequestsResponses = requestService.showRequests(request);
}

model.addAttribute("requests", requestsResponses);
model.addAttribute("requests", getRequestsResponses);

return "volunteer_matching";
}
Expand All @@ -90,8 +70,4 @@ public String acceptDisabledRequest(@PathVariable Long requestId, @Authenticatio
return "redirect:/matchings";
}

private boolean isSearchButtonClicked(Integer walk, Integer see, Integer talk, Integer listen, Integer iq, Integer depression, Integer bipolarDisorder) {
return walk != null && see != null && talk != null && listen != null && iq != null && depression != null && bipolarDisorder != null;
}

}
14 changes: 9 additions & 5 deletions src/main/java/konkuk/travelmate/domain/Course.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
package konkuk.travelmate.domain;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.*;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Course {

@Id
Expand All @@ -29,4 +25,12 @@ public class Course {
@JoinColumn(name = "h_id")
private Health health;

@Builder
private Course(String name, String region, String description, String imageUrl, Health health) {
this.name = name;
this.region = region;
this.description = description;
this.imageUrl = imageUrl;
this.health = health;
}
}
35 changes: 26 additions & 9 deletions src/main/java/konkuk/travelmate/domain/Health.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,54 @@
import jakarta.persistence.*;
import lombok.*;

import java.util.Map;

import static java.lang.Integer.parseInt;

@Entity
@Getter
@RequiredArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Health {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "h_id")
private Long healthId;

@NonNull
private Integer walk;

@NonNull
private Integer see;

@NonNull
private Integer talk;

@NonNull
private Integer listen;

@NonNull
private Integer depression;

@NonNull
private Integer bipolarDisorder;

@NonNull
private Integer iq;

@Builder
private Health(Integer walk, Integer see, Integer talk, Integer listen, Integer depression, Integer bipolarDisorder, Integer iq) {
this.walk = walk;
this.see = see;
this.talk = talk;
this.listen = listen;
this.depression = depression;
this.bipolarDisorder = bipolarDisorder;
this.iq = iq;
}

public static Health of(Map<String, String> signupMap) {
return Health.builder()
.walk(parseInt(signupMap.get("walk")))
.see(parseInt(signupMap.get("see")))
.talk(parseInt(signupMap.get("talk")))
.listen(parseInt(signupMap.get("listen")))
.depression(parseInt(signupMap.get("depression")))
.bipolarDisorder(parseInt(signupMap.get("bipolarDisorder")))
.iq(parseInt(signupMap.get("iq")))
.build();
}
}
7 changes: 5 additions & 2 deletions src/main/java/konkuk/travelmate/domain/Matching.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Matching {

@Id
Expand All @@ -27,9 +26,13 @@ public class Matching {
@JoinColumn(name = "r_id")
private Request request;

public Matching(Integer rating, User volunteer, Request request) {
private Matching(Integer rating, User volunteer, Request request) {
this.rating = rating;
this.volunteer = volunteer;
this.request = request;
}

public static Matching createNullRatingMatching(User volunteer, Request request) {
return new Matching(null, volunteer, request);
}
}
9 changes: 3 additions & 6 deletions src/main/java/konkuk/travelmate/domain/Request.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package konkuk.travelmate.domain;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.*;

import java.sql.Timestamp;

Expand All @@ -13,7 +10,6 @@
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Request {

@Id
Expand All @@ -37,7 +33,8 @@ public class Request {
@JoinColumn(name = "c_id")
private Course course;

public Request(TravelType type, RequestState state, Timestamp startTime, Timestamp endTime, User disabled, Course course) {
@Builder
private Request(TravelType type, RequestState state, Timestamp startTime, Timestamp endTime, User disabled, Course course) {
this.type = type;
this.state = state;
this.startTime = startTime;
Expand Down
19 changes: 13 additions & 6 deletions src/main/java/konkuk/travelmate/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,29 @@
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "u_id")
private Long userId;

@NonNull
private String name;

private String email;

@NonNull
private String password;

@NonNull
private String phoneNum;

@NonNull
private Role role;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "h_id")
private Health health;

public User(@NonNull String name, @NonNull String email, @NonNull String password, @NonNull String phoneNum, @NonNull Role role, Health health) {
@Builder
private User(String name, String email, String password, String phoneNum, Role role, Health health) {
this.name = name;
this.email = email;
this.password = password;
Expand All @@ -41,6 +37,17 @@ public User(@NonNull String name, @NonNull String email, @NonNull String passwor
this.health = health;
}

public static User of(String name, String email, String string, String phoneNum, Role role, Health health) {
return User.builder()
.name(name)
.email(email)
.password(builder().password)
.phoneNum(phoneNum)
.role(role)
.health(health)
.build();
}


public void setHealth(Health health){
this.health=health;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package konkuk.travelmate.dto.request;


public record GetRequestsRequest(Integer walk, Integer see, Integer talk, Integer listen, Integer iq, Integer depression, Integer bipolarDisorder) {

public boolean isNotNull() {
return walk != null && see != null && talk != null && listen != null && iq != null && depression != null && bipolarDisorder != null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package konkuk.travelmate.dto.request;

import konkuk.travelmate.domain.*;

import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

import static konkuk.travelmate.domain.RequestState.*;

public record PostRequestRequest(TravelType type, LocalDate startDate, LocalTime startTime, LocalDate endDate, LocalTime endTime) {

public Request toEntity(User disabled, Course course) {
return Request.builder()
.type(type())
.state(PENDING)
.startTime(Timestamp.valueOf(LocalDateTime.of(startDate, startTime)))
.endTime(Timestamp.valueOf(LocalDateTime.of(endDate, endTime)))
.disabled(disabled)
.course(course)
.build();
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package konkuk.travelmate.dto.response;

import konkuk.travelmate.domain.TravelType;

import java.sql.Timestamp;

public record GetRequestsResponse(Long requestId, String disabledName, TravelType requestsType, String courseName,
Timestamp startTime, Timestamp endTime) {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package konkuk.travelmate.dto.response;

import konkuk.travelmate.domain.RequestState;
import konkuk.travelmate.domain.TravelType;

import java.sql.Timestamp;

public record GetVolunteerMatchingResponse(String disabledName, Timestamp startTime, Timestamp endTime, TravelType type,
RequestState state, String disabledPhoneName, String disabledEmail) {
}
19 changes: 0 additions & 19 deletions src/main/java/konkuk/travelmate/form/request/RequestsRequest.java

This file was deleted.

This file was deleted.

Loading

0 comments on commit 77889ef

Please sign in to comment.