diff --git a/internal/repository/letter_outgoing_repository.go b/internal/repository/letter_outgoing_repository.go index 8ace4d1..f59db71 100644 --- a/internal/repository/letter_outgoing_repository.go +++ b/internal/repository/letter_outgoing_repository.go @@ -138,9 +138,6 @@ func (r *LetterOutgoingRepository) List(ctx context.Context, filter ListOutgoing } } - if filter.Status != nil { - query = query.Where("letters_outgoing.status = ?", *filter.Status) - } if filter.Query != nil { q := "%" + *filter.Query + "%" query = query.Where("subject ILIKE ? OR reference_number ILIKE ? OR letter_number ILIKE ?", q, q, q) @@ -155,6 +152,7 @@ func (r *LetterOutgoingRepository) List(ctx context.Context, filter ListOutgoing fmt.Printf("[DEBUG] filter.UserID: %v\n", filter.UserID) fmt.Printf("[DEBUG] filter.isRead: %v\n", filter.IsRead) + fmt.Printf("[DEBUG] filter.status: %v\n", *filter.Status) // Tambahkan filter IsRead if filter.IsRead != nil { @@ -165,6 +163,14 @@ func (r *LetterOutgoingRepository) List(ctx context.Context, filter ListOutgoing } } + } + + if filter.Status != nil { + query = query.Joins("LEFT JOIN letter_outgoing_approvals ON letter_outgoing_approvals.letter_id = letters_outgoing.id") + query = query.Where("letter_outgoing_approvals.approver_id = ?", *filter.UserID) + + query = query.Where("letter_outgoing_approvals.status = ?", *filter.Status) + query = query.Distinct() }