Skip to content

Commit

Permalink
chore: 멤버 실행 목표 응답값 수정 (#163)
Browse files Browse the repository at this point in the history
* chore: 멤버 실행 목표 응답값 수정

* chore: 작성 시간 추가

* chore: 답변이 없을 시 처리
  • Loading branch information
clean2001 authored Aug 18, 2024
1 parent 3f91b7a commit f440286
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,12 @@
import org.layer.domain.actionItem.dto.ActionItemResponse;
import org.layer.domain.actionItem.dto.MemberActionItemResponse;
import org.layer.domain.actionItem.entity.ActionItem;
import org.layer.domain.actionItem.enums.ActionItemStatus;
import org.layer.domain.actionItem.exception.ActionItemException;
import org.layer.domain.actionItem.repository.ActionItemRepository;
import org.layer.domain.answer.entity.Answer;
import org.layer.domain.answer.enums.AnswerStatus;
import org.layer.domain.answer.repository.AnswerRepository;
import org.layer.domain.retrospect.entity.Retrospect;
import org.layer.domain.retrospect.repository.RetrospectRepository;
import org.layer.domain.space.entity.MemberSpaceRelation;
Expand All @@ -23,6 +27,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
Expand All @@ -40,6 +45,7 @@ public class ActionItemService {
private final RetrospectRepository retrospectRepository;
private final MemberSpaceRelationRepository memberSpaceRelationRepository;
private final SpaceRepository spaceRepository;
private final AnswerRepository answerRepository;

@Transactional
public void createActionItem(Long memberId, Long retrospectId, String content) {
Expand Down Expand Up @@ -150,6 +156,8 @@ public SpaceActionItemGetResponse getSpaceRecentActionItems(Long memberId, Long
}




//== 회원의 실행 목표 조회 ==//
public MemberActionItemGetResponse getMemberActionItemList(Long currentMemberId) {
// 멤버가 속한 스페이스 정보와 회고 모두 가져오기 (회고 데드라인 내림차순)
Expand All @@ -162,13 +170,32 @@ public MemberActionItemGetResponse getMemberActionItemList(Long currentMemberId)
// 실행 목표 모두 찾기
List<ActionItem> actionItemList = actionItemRepository.findAllByRetrospectIdIn(doneRetrospectIds);


Set<Long> spaceIdSet = new HashSet<>();
for(MemberActionItemResponse dto : dtoList) {
List<ActionItemResponse> actionItems = actionItemList.stream()
.filter(ai -> ai.getRetrospectId().equals(dto.getRetrospectId()))
.sorted(Comparator.comparingInt(ActionItem::getActionItemOrder)) // order 순으로 정렬
.map(ActionItemResponse::of).toList();

// 답변 찾기
List<Answer> answerList = answerRepository.findAllByRetrospectIdAndMemberIdAndAnswerStatus(dto.getRetrospectId(), currentMemberId, AnswerStatus.DONE);

// 상태 확인
ActionItemStatus status;
if(spaceIdSet.contains(dto.getSpaceId())) {
status = ActionItemStatus.DONE;
} else {
spaceIdSet.add(dto.getSpaceId());
status = ActionItemStatus.PROCEEDING;
}

dto.updateActionItemList(actionItems);
dto.updateStatus(status);

LocalDateTime answeredAt = answerList.isEmpty() ? null : answerList.get(0).getCreatedAt();
dto.updateAnsweredAt(answeredAt);

}

return new MemberActionItemGetResponse(dtoList);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
import jakarta.validation.constraints.NotNull;
import lombok.*;
import org.layer.domain.actionItem.entity.ActionItem;
import org.layer.domain.actionItem.enums.ActionItemStatus;
import org.layer.domain.retrospect.entity.Retrospect;
import org.layer.domain.space.entity.Space;

import java.time.LocalDateTime;
import java.util.List;

@Getter
Expand All @@ -24,22 +26,33 @@ public class MemberActionItemResponse {

@NotNull
String spaceName;
@NotNull
LocalDateTime answeredAt;
@NotNull
ActionItemStatus status;

@NotNull
List<ActionItemResponse> actionItemList;


public MemberActionItemResponse(Space space, Retrospect retrospect, List<ActionItem> actionItemList) {
public MemberActionItemResponse(Space space,
Retrospect retrospect,
List<ActionItem> actionItemList,
LocalDateTime answeredAt,
ActionItemStatus status) {
List<ActionItemResponse> actionItemResList = actionItemList.stream().map(ActionItemResponse::of).toList();

this.retrospectId = retrospect.getId();
this.retrospectTitle = retrospect.getTitle();
this.spaceId = space.getId();
this.spaceName = space.getName();
this.actionItemList = actionItemResList;
this.answeredAt = answeredAt;
this.status = status;
}

public MemberActionItemResponse(Space space, Retrospect retrospect) {
public MemberActionItemResponse(Space space,
Retrospect retrospect) {
this.retrospectId = retrospect.getId();
this.retrospectTitle = retrospect.getTitle();
this.spaceId = space.getId();
Expand All @@ -49,4 +62,12 @@ public MemberActionItemResponse(Space space, Retrospect retrospect) {
public void updateActionItemList(List<ActionItemResponse> actionItemList) {
this.actionItemList = actionItemList;
}

public void updateAnsweredAt(LocalDateTime answeredAt) {
this.answeredAt = answeredAt;
}

public void updateStatus(ActionItemStatus status) {
this.status = status;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.layer.domain.answer.enums.AnswerStatus;
import org.layer.domain.common.BaseTimeEntity;

@Getter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Answer {
public class Answer extends BaseTimeEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand Down

0 comments on commit f440286

Please sign in to comment.