diff --git a/utils/verifyPrivilege.go b/utils/verifyPrivilege.go new file mode 100644 index 0000000..32b3968 --- /dev/null +++ b/utils/verifyPrivilege.go @@ -0,0 +1,43 @@ +package utils + +import ( + "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" + "time" +) + +func VerifyUserPrivileges(currentPrivileges []model.ShortPrivilege) bool { + if HasQuizCntPrivilege(currentPrivileges) { + return true + } + + if HasUnlimitedPrivilege(currentPrivileges) { + return true + } + + return false +} + +func HasQuizCntPrivilege(privileges []model.ShortPrivilege) bool { + for _, privilege := range privileges { + if privilege.PrivilegeID == "quizCnt" && privilege.Amount > 0 { + return true + } + } + return false +} + +func HasUnlimitedPrivilege(privileges []model.ShortPrivilege) bool { + for _, privilege := range privileges { + if privilege.PrivilegeID == "quizUnlimTime" { + return IsPrivilegeExpired(privilege) + } + } + return false +} + +func IsPrivilegeExpired(privilege model.ShortPrivilege) bool { + expirationTime := privilege.CreatedAt.Add(time.Duration(privilege.Amount) * 24 * time.Hour) + + currentTime := time.Now() + return currentTime.Before(expirationTime) +}