summaryrefslogtreecommitdiff
path: root/shrine/repositories/letter.go
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-03-13 18:25:44 +0530
committerBobby <[email protected]>2026-03-13 18:25:44 +0530
commit344d02a7feddefb5c08f88dbe5f3a3f7e7da385f (patch)
tree94deed23d82d7f868721cc00b5550f5c27e8b8f7 /shrine/repositories/letter.go
parent9f808807a557fc10a38a44cb52be6bfcdfda68b2 (diff)
downloadpagoda-main.tar.xz
pagoda-main.zip
feat: add letters feature with detail view and listingHEADmain
- Introduced new routes for letters and their details. - Created pages for displaying letter details and listing letters. - Added new types for letters, including participants, messages, and attachments. - Implemented API calls for fetching letters and managing messages (reply, edit, delete). - Enhanced stats to include unread letters and pending districts for staff users. - Updated styles for letters and their components. - Added privacy settings for letters (public and friends). - Modified user model to include letter privacy settings. - Improved error handling and user feedback in the UI.
Diffstat (limited to 'shrine/repositories/letter.go')
-rw-r--r--shrine/repositories/letter.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/shrine/repositories/letter.go b/shrine/repositories/letter.go
index b9c81aa..a52f5bc 100644
--- a/shrine/repositories/letter.go
+++ b/shrine/repositories/letter.go
@@ -118,6 +118,17 @@ func GetLetterMessages(letterID uint, p meta.Pagination) ([]models.LetterMessage
return messages, total
}
+func CountUnreadLetters(userID uint) int64 {
+ var count int64
+ database.DB.Model(&models.LetterParticipant{}).
+ Joins("JOIN letters ON letters.id = letter_participants.letter_id").
+ Joins("JOIN letter_messages ON letter_messages.letter_id = letters.id AND letter_messages.deleted_at IS NULL").
+ Where("letter_participants.user_id = ? AND (letter_participants.last_read_at IS NULL OR letter_messages.created_at > letter_participants.last_read_at)", userID).
+ Distinct("letter_participants.letter_id").
+ Count(&count)
+ return count
+}
+
func ListLettersForUser(userID uint, p meta.Pagination) ([]models.Letter, int64) {
var letters []models.Letter
var total int64