diff options
Diffstat (limited to 'shrine/services')
| -rw-r--r-- | shrine/services/letter.go | 3 | ||||
| -rw-r--r-- | shrine/services/stats.go | 14 | ||||
| -rw-r--r-- | shrine/services/warning.go | 2 |
3 files changed, 17 insertions, 2 deletions
diff --git a/shrine/services/letter.go b/shrine/services/letter.go index 20a4f93..c7ea741 100644 --- a/shrine/services/letter.go +++ b/shrine/services/letter.go @@ -75,6 +75,9 @@ func CreateLetter(userID uint, request letter.CreateRequest) (*common.MessageRes if recipient.ID == userID { continue } + if recipient.LetterPrivacy == enums.LetterPrivacyFriends { + return nil, fail(enums.BadRequest, fmt.Sprintf(messages.RecipientNotAcceptingLetters, username)) + } recipientIDs = append(recipientIDs, recipient.ID) } diff --git a/shrine/services/stats.go b/shrine/services/stats.go index 2e31c02..aa2eaab 100644 --- a/shrine/services/stats.go +++ b/shrine/services/stats.go @@ -1,15 +1,25 @@ package services import ( + "shrine/models" "shrine/repositories" "shrine/types/user" ) -func GetStats() user.StatsResponse { - return user.StatsResponse{ +func GetStats(citizen *models.User) user.StatsResponse { + response := user.StatsResponse{ Citizens: repositories.CountCitizens(), Online: repositories.CountOnline(), NewestCitizens: buildCitizenSummaries(repositories.NewestCitizens(5)), OnlineCitizens: buildCitizenSummaries(repositories.OnlineCitizens(10)), } + + if citizen != nil { + response.UnreadLetters = repositories.CountUnreadLetters(citizen.ID) + if citizen.IsStaff() { + response.PendingDistricts = repositories.CountPendingDistrictSites() + } + } + + return response }
\ No newline at end of file diff --git a/shrine/services/warning.go b/shrine/services/warning.go index 0b27591..553c7fb 100644 --- a/shrine/services/warning.go +++ b/shrine/services/warning.go @@ -10,6 +10,7 @@ import ( "shrine/types/hypertext" "shrine/types/warning" "shrine/utils/auth" + "shrine/utils/logger" "shrine/utils/meta" "shrine/utils/sanitize" "strings" @@ -32,6 +33,7 @@ func WarnUser(admin *models.User, target *models.User, request warning.WarnReque record, err := repositories.CreateWarning(admin.ID, target.ID, title, sanitizedMessage) if err != nil { + logger.Errorf("Warnings", messages.FailedCreateWarningDetailed, target.Username, err) return nil, fail(enums.Internal, messages.FailedCreateWarning) } |
