outgoing letter is read
This commit is contained in:
@@ -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{
|
||||
|
||||
Reference in New Issue
Block a user