outgoing letter is read

This commit is contained in:
efrilm
2025-10-08 11:52:11 +07:00
parent d8942fa918
commit e7455f107a
5 changed files with 80 additions and 4 deletions
+25 -1
View File
@@ -212,6 +212,7 @@ func (s *LetterOutgoingServiceImpl) ListOutgoingLetters(ctx context.Context, req
ReceiverInstitutionID: req.ReceiverInstitutionID,
PriorityID: req.PriorityID,
UserID: &userID,
IsRead: req.IsRead,
}
if departmentID != uuid.Nil {
@@ -250,6 +251,12 @@ func (s *LetterOutgoingServiceImpl) ListOutgoingLetters(ctx context.Context, req
filter.IsArchived = req.IsArchived
}
if filter.IsRead != nil {
filter.IsRead = req.IsRead
}
fmt.Printf("[DEBUG] filter: %v\n", filter)
// Get raw letters data
letters, total, err := s.processor.ListOutgoingLetters(ctx, filter, req.Limit, offset)
if err != nil {
@@ -293,6 +300,7 @@ func (s *LetterOutgoingServiceImpl) ListOutgoingLetters(ctx context.Context, req
result := batchResult{}
errChan := make(chan error, 4)
// Load attachments
go func() {
@@ -346,7 +354,23 @@ func (s *LetterOutgoingServiceImpl) ListOutgoingLetters(ctx context.Context, req
}
}
items[i] = transformLetterToResponse(&letter)
isRead := false
recipientByUser := make(map[uuid.UUID]*entities.LetterOutgoingRecipient)
recipientByUser, err = s.processor.GetBatchOutgoingRecipientsByUser(ctx, letterIDs, userID)
if err != nil {
// Handle error
return nil, err
}
// Ambil isRead dari recipientByUser berdasarkan letter.ID
if recipient, exists := recipientByUser[letter.ID]; exists && recipient != nil {
isRead = recipient.ReadAt != nil
}
response := transformLetterToResponse(&letter)
response.IsRead = isRead
items[i] = response
}
return &contract.ListOutgoingLettersResponse{