add user role
This commit is contained in:
@@ -91,7 +91,6 @@ func (r *LetterIncomingRepository) List(ctx context.Context, filter ListIncoming
|
||||
needsGroupBy = true
|
||||
}
|
||||
|
||||
// Apply is_read filter if UserID is provided
|
||||
if filter.UserID != nil && filter.IsRead != nil {
|
||||
if !joinedRecipients {
|
||||
query = query.Joins("JOIN letter_incoming_recipients ON letter_incoming_recipients.letter_id = letters_incoming.id")
|
||||
@@ -107,25 +106,20 @@ func (r *LetterIncomingRepository) List(ctx context.Context, filter ListIncoming
|
||||
}
|
||||
}
|
||||
|
||||
// Apply is_dispositioned filter if DepartmentID is provided
|
||||
if filter.DepartmentID != nil && filter.IsDispositioned != nil {
|
||||
query = query.Joins("LEFT JOIN letter_incoming_dispositions_department lidd ON lidd.letter_incoming_id = letters_incoming.id AND lidd.department_id = ?", *filter.DepartmentID)
|
||||
|
||||
if *filter.IsDispositioned {
|
||||
// Has been dispositioned (status is not 'pending' or record exists with non-pending status)
|
||||
query = query.Where("lidd.id IS NOT NULL AND lidd.status != 'pending'")
|
||||
} else {
|
||||
// Not yet dispositioned (no record or status is 'pending')
|
||||
query = query.Where("lidd.id IS NULL OR lidd.status = 'pending'")
|
||||
}
|
||||
}
|
||||
|
||||
// Apply priority filter
|
||||
if len(filter.PriorityIDs) > 0 {
|
||||
query = query.Where("letters_incoming.priority_id IN ?", filter.PriorityIDs)
|
||||
}
|
||||
|
||||
// Apply is_archived filter based on recipient's is_archived field
|
||||
if filter.IsArchived != nil {
|
||||
if *filter.IsArchived {
|
||||
query = query.Where("letter_incoming_recipients.is_archived = ?", true)
|
||||
@@ -137,12 +131,12 @@ func (r *LetterIncomingRepository) List(ctx context.Context, filter ListIncoming
|
||||
if filter.Status != nil {
|
||||
query = query.Where("letters_incoming.status = ?", *filter.Status)
|
||||
}
|
||||
|
||||
if filter.Query != nil {
|
||||
q := "%" + *filter.Query + "%"
|
||||
query = query.Where("letters_incoming.subject ILIKE ? OR letters_incoming.reference_number ILIKE ?", q, q)
|
||||
}
|
||||
|
||||
// Use GROUP BY instead of DISTINCT to handle joins properly
|
||||
if needsGroupBy {
|
||||
query = query.Group("letters_incoming.id")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user