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 @@ -45,9 +45,9 @@ public List<MemberExpenseResponse> findAllByExpenseId(

public MembersExpenseResponse findMemberExpenseDetailsBySettlementId(Long settlementId, Long userId) {
Settlement settlement = settlementReader.read(settlementId);
Map<Long, PaymentRequestSummaryResponse> paymentRequestByMemberId = settlement.isWriter(userId)
? paymentRequestReader.findLatestRequestByMemberId(settlementId)
: Map.of();
boolean isManager = settlement.isWriter(userId);
Map<Long, PaymentRequestSummaryResponse> paymentRequestByMemberId =
paymentRequestReader.findLatestRequestByMemberId(settlementId);

List<Member> members = memberReader.findAllBySettlementId(settlementId);

Expand All @@ -67,7 +67,8 @@ public MembersExpenseResponse findMemberExpenseDetailsBySettlementId(Long settle
key -> findMemberExpenseDetailByAppointmentMember(appointmentMemberById.get(key),
memberExpenses.get(key),
expenses,
paymentRequestByMemberId)
paymentRequestByMemberId,
isManager)
)
.filter(Objects::nonNull)
.toList();
Expand All @@ -85,18 +86,18 @@ private Map<Long, Member> convertAppointmentMembersToMap(List<Member> members) {

private MemberExpenseItemResponse findMemberExpenseDetailByAppointmentMember(
Member member, List<MemberExpense> memberExpenses, List<Expense> expenses,
Map<Long, PaymentRequestSummaryResponse> paymentRequestByMemberId) {
Map<Long, PaymentRequestSummaryResponse> paymentRequestByMemberId, boolean isManager) {

PaymentRequestSummaryResponse paymentRequest = paymentRequestByMemberId.get(member.getId());

if (memberExpenses == null) {
return MemberExpenseItemResponse.of(member, 0L, new ArrayList<>(), paymentRequest);
return MemberExpenseItemResponse.of(member, 0L, new ArrayList<>(), paymentRequest, isManager);
}

List<MemberExpenseDetailResponse> memberExpenseDetails = mapToMemberExpenseDetails(memberExpenses, expenses);
Long totalAmount = calculateTotalAmount(memberExpenses);

return MemberExpenseItemResponse.of(member, totalAmount, memberExpenseDetails, paymentRequest);
return MemberExpenseItemResponse.of(member, totalAmount, memberExpenseDetails, paymentRequest, isManager);
}

private Long calculateTotalAmount(List<MemberExpense> memberExpenses) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public record MemberExpenseItemResponse(
List<MemberExpenseDetailResponse> expenses
) {
public static MemberExpenseItemResponse of(Member member, Long totalAmount,
List<MemberExpenseDetailResponse> expenses, PaymentRequestSummaryResponse paymentRequest) {
List<MemberExpenseDetailResponse> expenses, PaymentRequestSummaryResponse paymentRequest, boolean isManager) {
return MemberExpenseItemResponse.builder()
.id(member.getId())
.role(member.getRole())
Expand All @@ -33,7 +33,7 @@ public static MemberExpenseItemResponse of(Member member, Long totalAmount,
.profile(member.getProfileUrl())
.isPaid(member.isPaid())
.paidAt(member.getPaidAt())
.paymentRequestId(paymentRequest == null ? null : paymentRequest.id())
.paymentRequestId(paymentRequest == null || !isManager ? null : paymentRequest.id())
.paymentRequestStatus(paymentRequest == null ? null : paymentRequest.status())
.paymentRequestStatusLabel(paymentRequest == null ? null : paymentRequest.statusLabel())
.expenses(expenses).build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,8 @@ void findMemberExpenseDetailsBySettlementId_Success_WhenNotManager() {

when(member.getId()).thenReturn(1L);
when(settlementReader.read(groupId)).thenReturn(mockSettlement);
when(paymentRequestReader.findLatestRequestByMemberId(groupId))
.thenReturn(Map.of(1L, new PaymentRequestSummaryResponse(100L, PaymentRequestStatus.PENDING, "확인중")));
when(memberReader.findAllBySettlementId(eq(groupId))).thenReturn(List.of(member));
when(memberExpenseReader.findAllByAppointMemberIds(List.of(1L))).thenReturn(List.of());
when(expenseReader.findAllBySettlementId(groupId)).thenReturn(List.of());
Expand All @@ -178,11 +180,11 @@ void findMemberExpenseDetailsBySettlementId_Success_WhenNotManager() {
assertThat(response).isNotNull();
assertThat(response.memberExpenses()).hasSize(1);
assertThat(response.memberExpenses().get(0).paymentRequestId()).isNull();
assertThat(response.memberExpenses().get(0).paymentRequestStatus()).isNull();
assertThat(response.memberExpenses().get(0).paymentRequestStatusLabel()).isNull();
assertThat(response.memberExpenses().get(0).paymentRequestStatus()).isEqualTo(PaymentRequestStatus.PENDING);
assertThat(response.memberExpenses().get(0).paymentRequestStatusLabel()).isEqualTo("확인중");

verify(settlementReader, times(1)).read(groupId);
verify(paymentRequestReader, never()).findLatestRequestByMemberId(anyLong());
verify(paymentRequestReader, times(1)).findLatestRequestByMemberId(groupId);
verify(memberReader, times(1)).findAllBySettlementId(groupId);
}

Expand Down
Loading