Skip to content

Commit

Permalink
feat: make PrayFacadeService
Browse files Browse the repository at this point in the history
  • Loading branch information
baebae02 committed Nov 14, 2023
1 parent 0bb5f7e commit a5be72d
Show file tree
Hide file tree
Showing 6 changed files with 113 additions and 94 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import com.uspray.uspray.DTO.pray.request.PrayRequestDto;
import com.uspray.uspray.exception.SuccessStatus;
import com.uspray.uspray.service.HistoryService;
import com.uspray.uspray.service.PrayService;
import com.uspray.uspray.service.PrayFacadeService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
Expand All @@ -30,10 +30,10 @@
@RequiredArgsConstructor
@SecurityRequirement(name = "JWT Auth")
public class HistoryController {

private final HistoryService historyService;
private final PrayService prayService;
private final PrayFacadeService prayFacadeService;

@GetMapping
public ApiResponseDto<HistoryListResponseDto> getHistoryList(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
Expand All @@ -43,7 +43,7 @@ public ApiResponseDto<HistoryListResponseDto> getHistoryList(
return ApiResponseDto.success(SuccessStatus.GET_HISTORY_LIST_SUCCESS,
historyService.getHistoryList(user.getUsername(), type, page, size));
}

// 이름, 내용, 카테고리에 해당되는 키워드 전부를 찾아서 검색
// 내가 쓴 기도제목, 공유받은 기도제목 체크박스 (최소 한 개 이상 선택)
// 날짜까지 (옵션)
Expand All @@ -61,21 +61,21 @@ public ApiResponseDto<HistoryListResponseDto> searchHistoryList(
historyService.searchHistoryList(user.getUsername(), keyword, isPersonal, isShared,
startDate, endDate, page, size));
}

@GetMapping("/detail/{historyId}")
public ApiResponseDto<HistoryDetailResponseDto> getHistoryDetail(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@PathVariable Long historyId) {
return ApiResponseDto.success(SuccessStatus.GET_HISTORY_DETAIL_SUCCESS,
historyService.getHistoryDetail(user.getUsername(), historyId));
}

@PostMapping("/pray/{historyId}")
public ApiResponseDto<HistoryListResponseDto> createPray(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@PathVariable Long historyId,
@RequestBody @Valid PrayRequestDto prayRequestDto) {
prayService.createPray(prayRequestDto, user.getUsername());
prayFacadeService.createPray(prayRequestDto, user.getUsername());
historyService.deleteHistory(historyId, user.getUsername());
return ApiResponseDto.success(SuccessStatus.CREATE_PRAY_SUCCESS,
historyService.getHistoryList(user.getUsername(), "PERSONAL", 0, 10));
Expand Down
26 changes: 13 additions & 13 deletions src/main/java/com/uspray/uspray/controller/PrayController.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import com.uspray.uspray.DTO.pray.request.PrayRequestDto;
import com.uspray.uspray.DTO.pray.request.PrayResponseDto;
import com.uspray.uspray.exception.SuccessStatus;
import com.uspray.uspray.service.HistoryService;
import com.uspray.uspray.service.PrayFacadeService;
import com.uspray.uspray.service.PrayService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
Expand Down Expand Up @@ -37,10 +37,10 @@
@RequiredArgsConstructor
@SecurityRequirement(name = "JWT Auth")
public class PrayController {

private final PrayService prayService;
private final HistoryService historyService;
private final PrayFacadeService prayFacadeService;

@Operation(summary = "기도제목 목록 조회")
@ApiResponse(
responseCode = "200",
Expand All @@ -54,7 +54,7 @@ public ApiResponseDto<List<PrayListResponseDto>> getPrayList(
return ApiResponseDto.success(SuccessStatus.GET_PRAY_LIST_SUCCESS,
prayService.getPrayList(user.getUsername(), prayType));
}

@GetMapping("/{prayId}")
@ApiResponse(
responseCode = "200",
Expand All @@ -68,7 +68,7 @@ public ApiResponseDto<PrayResponseDto> getPrayDetail(
return ApiResponseDto.success(SuccessStatus.GET_PRAY_SUCCESS,
prayService.getPrayDetail(prayId, user.getUsername()));
}

@PostMapping()
@ApiResponse(
responseCode = "201",
Expand All @@ -81,9 +81,9 @@ public ApiResponseDto<PrayResponseDto> createPray(
@Parameter(hidden = true) @AuthenticationPrincipal User user
) {
return ApiResponseDto.success(SuccessStatus.CREATE_PRAY_SUCCESS,
prayService.createPray(prayRequestDto, user.getUsername()));
prayFacadeService.createPray(prayRequestDto, user.getUsername()));
}

@DeleteMapping("/{prayId}")
@ApiResponse(responseCode = "204", description = "기도제목 삭제")
@Operation(summary = "기도제목 삭제")
Expand All @@ -94,7 +94,7 @@ public ApiResponseDto<PrayResponseDto> deletePray(
return ApiResponseDto.success(SuccessStatus.DELETE_PRAY_SUCCESS,
prayService.deletePray(prayId, user.getUsername()));
}

@PutMapping("/{prayId}")
@ApiResponse(
responseCode = "200",
Expand All @@ -107,9 +107,9 @@ public ApiResponseDto<PrayResponseDto> updatePray(
@Parameter(hidden = true) @AuthenticationPrincipal User user
) {
return ApiResponseDto.success(SuccessStatus.UPDATE_PRAY_SUCCESS,
prayService.updatePray(prayId, user.getUsername(), prayRequestDto));
prayFacadeService.updatePray(prayId, user.getUsername(), prayRequestDto));
}

@Operation(summary = "오늘 기도하기")
@ApiResponse(
responseCode = "200",
Expand All @@ -123,7 +123,7 @@ public ApiResponseDto<List<PrayListResponseDto>> todayPray(
return ApiResponseDto.success(SuccessStatus.INCREASE_PRAY_COUNT_SUCCESS,
prayService.todayPray(prayId, user.getUsername()));
}

@Operation(summary = "기도 완료하기")
@ApiResponse(
responseCode = "200",
Expand All @@ -134,7 +134,7 @@ public ApiResponseDto<List<PrayListResponseDto>> completePray(
@Parameter(description = "기도제목 ID", required = true) @PathVariable("prayId") Long prayId,
@Parameter(hidden = true) @AuthenticationPrincipal User user
) {
historyService.createHistory(user.getUsername(), prayId);
prayFacadeService.createHistory(user.getUsername(), prayId);
return ApiResponseDto.success(SuccessStatus.GET_PRAY_LIST_SUCCESS,
prayService.completePray(prayId, user.getUsername()));
}
Expand Down
39 changes: 7 additions & 32 deletions src/main/java/com/uspray/uspray/service/HistoryService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@
import com.uspray.uspray.Enums.PrayType;
import com.uspray.uspray.domain.History;
import com.uspray.uspray.domain.Member;
import com.uspray.uspray.domain.Pray;
import com.uspray.uspray.exception.ErrorStatus;
import com.uspray.uspray.exception.model.NotFoundException;
import com.uspray.uspray.infrastructure.HistoryRepository;
import com.uspray.uspray.infrastructure.MemberRepository;
import com.uspray.uspray.infrastructure.PrayRepository;
import java.time.LocalDate;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
Expand All @@ -25,15 +22,14 @@
@Service
@RequiredArgsConstructor
public class HistoryService {

private final HistoryRepository historyRepository;
private final MemberRepository memberRepository;
private final PrayRepository prayRepository;


@Transactional(readOnly = true)
public HistoryListResponseDto getHistoryList(String username, String type, int page, int size) {
// type은 대소문자 구분하지 않습니다

Pageable pageable = PageRequest.of(page, size, Sort.by("deadline").descending());
Member member = memberRepository.getMemberByUserId(username);
Page<HistoryResponseDto> historyList;
Expand All @@ -49,12 +45,12 @@ public HistoryListResponseDto getHistoryList(String username, String type, int p
return new HistoryListResponseDto(historyList.getContent(),
historyList.getTotalPages());
}

@Transactional(readOnly = true)
public HistoryListResponseDto searchHistoryList(String username, String keyword,
Boolean isPersonal, Boolean isShared, LocalDate startDate, LocalDate endDate, int page,
int size) {

// 전체 파라미터가 null 인 경우 예외처리
if (keyword == null && isPersonal == null && isShared == null && startDate == null
&& endDate == null) {
Expand All @@ -66,7 +62,7 @@ public HistoryListResponseDto searchHistoryList(String username, String keyword,
.map(HistoryResponseDto::of);
return new HistoryListResponseDto(historyList.getContent(), historyList.getTotalPages());
}

@Transactional(readOnly = true)
public HistoryDetailResponseDto getHistoryDetail(String username, Long historyId) {
Member member = memberRepository.getMemberByUserId(username);
Expand All @@ -77,28 +73,7 @@ public HistoryDetailResponseDto getHistoryDetail(String username, Long historyId
}
return HistoryDetailResponseDto.of(history);
}

@Transactional
public void convertPrayToHistory() {
List<Pray> prayList = prayRepository.findAllByDeadlineBefore(LocalDate.now());
for (Pray pray : prayList) {
History history = History.builder()
.pray(pray)
.build();
historyRepository.save(history);
prayRepository.delete(pray);
}
}

public void createHistory(String username, Long prayId) {
Pray pray = prayRepository.getPrayByIdAndMemberId(prayId, username);
pray.complete();
History history = History.builder()
.pray(pray)
.build();
historyRepository.save(history);
}


public void deleteHistory(Long historyId, String username) {
Member member = memberRepository.getMemberByUserId(username);
History history = historyRepository.findByIdAndMember(historyId, member);
Expand Down
71 changes: 71 additions & 0 deletions src/main/java/com/uspray/uspray/service/PrayFacadeService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package com.uspray.uspray.service;

import com.uspray.uspray.DTO.pray.request.PrayRequestDto;
import com.uspray.uspray.DTO.pray.request.PrayResponseDto;
import com.uspray.uspray.Enums.PrayType;
import com.uspray.uspray.domain.Category;
import com.uspray.uspray.domain.History;
import com.uspray.uspray.domain.Member;
import com.uspray.uspray.domain.Pray;
import com.uspray.uspray.infrastructure.CategoryRepository;
import com.uspray.uspray.infrastructure.HistoryRepository;
import com.uspray.uspray.infrastructure.MemberRepository;
import com.uspray.uspray.infrastructure.PrayRepository;
import java.time.LocalDate;
import java.util.List;
import javax.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class PrayFacadeService {

private final MemberRepository memberRepository;
private final PrayRepository prayRepository;
private final CategoryRepository categoryRepository;
private final HistoryRepository historyRepository;

@Transactional
public PrayResponseDto createPray(PrayRequestDto prayRequestDto, String username) {
Member member = memberRepository.getMemberByUserId(username);
Category category = categoryRepository.getCategoryByIdAndMember(
prayRequestDto.getCategoryId(),
member);
Pray pray = prayRequestDto.toEntity(member, category, PrayType.PERSONAL);
prayRepository.save(pray);
return PrayResponseDto.of(pray);
}

@Transactional
public PrayResponseDto updatePray(Long prayId, String username, PrayRequestDto prayRequestDto) {
Pray pray = prayRepository.getPrayByIdAndMemberId(prayId, username);
categoryRepository.getCategoryByIdAndMember(
prayRequestDto.getCategoryId(),
pray.getMember());
pray.update(prayRequestDto);
return PrayResponseDto.of(pray);
}

@Transactional
public void convertPrayToHistory() {
List<Pray> prayList = prayRepository.findAllByDeadlineBefore(LocalDate.now());
for (Pray pray : prayList) {
History history = History.builder()
.pray(pray)
.build();
historyRepository.save(history);
prayRepository.delete(pray);
}
}


public void createHistory(String username, Long prayId) {
Pray pray = prayRepository.getPrayByIdAndMemberId(prayId, username);
pray.complete();
History history = History.builder()
.pray(pray)
.build();
historyRepository.save(history);
}
}
Loading

0 comments on commit a5be72d

Please sign in to comment.