Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ public class MatchingController {

private final MatchingService matchingService;

// 매칭 요청 POST
// 매칭 요청
@PostMapping(value = "/request/{worker-id}/{senior-id}")
@Operation(summary = "매칭 요청")
@Operation(summary = "(관리자) 매칭 요청")
public ApiResponse<?> request(
@PathVariable("senior-id") String seniorId,
@PathVariable("worker-id") String workerId
Expand All @@ -33,7 +33,7 @@ public ApiResponse<?> request(

// 매칭 현황 조회
@GetMapping(value = "/statistics")
@Operation(summary = "매칭 현황 조회")
@Operation(summary = "(요양보호사) 매칭 현황 조회")
@ApiResponses(value = {
@io.swagger.v3.oas.annotations.responses.ApiResponse(
responseCode = "200",
Expand All @@ -46,7 +46,7 @@ public ApiResponse<?> get() {

// 관리자 쪽에서 요양보호사 매칭 현황 조회
@GetMapping(value = "/request/senior/list")
@Operation(summary = "어르신 매칭 요청 목록 조회")
@Operation(summary = "(요양보호사) 어르신 매칭 요청 목록 조회")
@ApiResponses(value = {
@io.swagger.v3.oas.annotations.responses.ApiResponse(
responseCode = "200",
Expand All @@ -57,9 +57,22 @@ public ApiResponse<?> getMatchingSeniorList() {
return ApiResponse.onSuccess(matchingService.getMatchingSeniorList());
}

// 수락/거절/조율요청에 따라 Matching 테이블 내 status 컬럼 수정
// 관리자 쪽에서 매칭중인 어르신 목록 조회
@GetMapping(value = "/senior/list")
@Operation(summary = "(관리자) 매칭중인 어르신 목록 조회")
@ApiResponses(value = {
@io.swagger.v3.oas.annotations.responses.ApiResponse(
responseCode = "200",
content = @Content(schema = @Schema(implementation = GetProgressMatchingSeniorList.class))
)
})
public ApiResponse<GetProgressMatchingSeniorList> getMatchingSeniors() {
return ApiResponse.onSuccess(matchingService.getMatchingSeniors());
}

// Matching 테이블 내 status 컬럼 수정
@PatchMapping(value = "/status/update")
@Operation(summary = "매칭 상태 수정")
@Operation(summary = "(요양보호사) 매칭 상태 수정")
public ApiResponse<?> update(@RequestBody PatchStatusRequest statusRequest) {
matchingService.matchingStatusPatch(statusRequest);
return ApiResponse.onSuccess();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package young.blaybus.domain.matching.controller.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.util.List;

@Getter
@Builder
@Setter
@ToString
@AllArgsConstructor
@Schema(description = "매칭중인 어르신 목록 조회 응답 객체")
public class GetProgressMatchingSeniorList {

@Schema(description = "매칭중인 어르신 목록")
private List<GetProgressMatchingSeniors> seniorList;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package young.blaybus.domain.matching.controller.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.ToString;

@Getter
@Builder
@ToString
@AllArgsConstructor
@Schema(description = "매칭 진행중인 어르신 조회 응답 객체")
public class GetProgressMatchingSeniors {

@Schema(description = "어르신 ID")
private String seniorId;

@Schema(description = "프로필 사진")
private String profileUrl;

@Schema(description = "성함")
private String name;

@Schema(description = "성별")
private String sex;

@Schema(description = "생년월일")
private String birthday;

@Schema(description = "주소")
private String address;
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,12 @@
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import young.blaybus.domain.certificate.Certificate;
import young.blaybus.domain.certificate.repository.CertificateRepository;
import young.blaybus.domain.certificate.request.CreateCertificateRequest;
import young.blaybus.domain.matching.Matching;
import young.blaybus.domain.matching.controller.request.PatchStatusRequest;
import young.blaybus.domain.matching.controller.response.*;
import young.blaybus.domain.matching.enums.MatchingStatus;
import young.blaybus.domain.matching.repository.MatchingRepository;
import young.blaybus.domain.member.Member;
import young.blaybus.domain.member.controller.response.GetMember;
import young.blaybus.domain.member.repository.MemberRepository;
import young.blaybus.domain.member.security.SecurityUtils;
import young.blaybus.domain.senior.Senior;
Expand All @@ -33,10 +29,9 @@ public class MatchingService {
private final MemberRepository memberRepository;
private final SeniorRepository seniorRepository;
private final MatchingRepository matchingRepository;
private final CertificateRepository certificateRepository;

// 매칭 요청
@Transactional(rollbackOn = Exception.class)
@Transactional
public void matchingRequest(String workerId, long seniorId) {
Member member = memberRepository.findById(workerId).orElse(null);
Senior senior = seniorRepository.findById(seniorId).orElse(null);
Expand All @@ -52,7 +47,7 @@ public void matchingRequest(String workerId, long seniorId) {
}

// 매칭 현황 조회 (특정)
@Transactional(rollbackOn = Exception.class)
@Transactional
public GetMatchingStatistics getMatching() {
String workerId = SecurityUtils.getCurrentMemberName();
Member member = memberRepository.findById(workerId).orElse(null);
Expand Down Expand Up @@ -85,7 +80,7 @@ public GetMatchingStatistics getMatching() {
}

// 매칭 현황 어르신 리스트 조회 -> 요양보호사 쪽에서 어르신 매칭 요청 조회
@Transactional(rollbackOn = Exception.class)
@Transactional
public List<GetMatchingSeniorListResponse> getMatchingSeniorList() {
String workerId = SecurityUtils.getCurrentMemberName();
List<Matching> matching = matchingRepository.findByMember_Id(workerId);
Expand Down Expand Up @@ -115,7 +110,7 @@ public List<GetMatchingSeniorListResponse> getMatchingSeniorList() {
}

// 매칭 상태 수정
@Transactional(rollbackOn = Exception.class)
@Transactional
public void matchingStatusPatch(PatchStatusRequest statusRequest) {
String workerId = SecurityUtils.getCurrentMemberName();
Matching matching = matchingRepository.findBySenior_IdAndMember_Id(Long.parseLong(statusRequest.seniorId()), workerId);
Expand All @@ -130,4 +125,38 @@ public void matchingStatusPatch(PatchStatusRequest statusRequest) {
matchingRepository.save(matchingUpdateObject);
}

// 매칭중인 어르신 목록 조회
@Transactional
public GetProgressMatchingSeniorList getMatchingSeniors() {
String adminId = SecurityUtils.getCurrentMemberName();
Member member = memberRepository.findById(adminId).orElse(null);

List<GetProgressMatchingSeniors> seniorsList = new ArrayList<>();
if (member != null) {
List<Senior> center = seniorRepository.findByCenterId(member.getCenter().getId());
center.forEach(s -> {
List<Matching> matching = matchingRepository.findBySenior_Id(s.getId());
matching.forEach(m -> {
if (m.getStatus().equals(MatchingStatus.PENDING)) {
seniorsList.add(
GetProgressMatchingSeniors.builder()
.seniorId(String.valueOf(s.getId()))
.profileUrl(s.getProfileUrl())
.name(s.getName())
.sex(s.getSex().name())
.birthday(s.getBirthday().format(DateTimeFormatter.ofPattern("yyyy/MM/dd")))
.address(s.getAddress())
.build()
);
}
});
});

}

return GetProgressMatchingSeniorList.builder()
.seniorList(seniorsList)
.build();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import org.springframework.data.jpa.repository.JpaRepository;
import young.blaybus.domain.senior.Senior;

public interface SeniorRepository extends JpaRepository<Senior, Long> {
import java.util.List;

public interface SeniorRepository extends JpaRepository<Senior, Long> {
List<Senior> findByCenterId(Long centerId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,7 @@ public void createSenior(CreateSeniorRequest request) {
.orElseThrow(() -> new GeneralException(ErrorStatus.UNAUTHORIZED));

String profileUrl = "https://theaverageagegottenyounger.s3.ap-northeast-2.amazonaws.com/blaybus-basic-profile-image.png";
boolean isProfileUrl = StringUtils.hasText(request.profileUrl());
if (isProfileUrl) profileUrl = request.profileUrl();
if (StringUtils.hasText(request.profileUrl())) profileUrl = request.profileUrl();

Senior senior = Senior.builder()
.name(request.name())
Expand All @@ -61,8 +60,7 @@ public void updateSenior(Long seniorId, UpdateSeniorRequest request) {
.orElseThrow(() -> new GeneralException(ErrorStatus.KEY_NOT_EXIST, "존재하지 않는 어르신 ID입니다."));

String profileUrl = senior.getProfileUrl();
boolean isProfileUrl = StringUtils.hasText(request.profileUrl());
if (isProfileUrl) profileUrl = request.profileUrl();
if (StringUtils.hasText(request.profileUrl())) profileUrl = request.profileUrl();

senior.toBuilder()
.name(request.name())
Expand Down
Loading