Files
sendico/api/payments/storage/model/report_visibility.go
2026-02-18 20:38:08 +01:00

45 lines
1.3 KiB
Go

package model
import "strings"
// ReportVisibility controls which audience should see a step in reports/timelines.
type ReportVisibility string
const (
ReportVisibilityUnspecified ReportVisibility = ""
ReportVisibilityHidden ReportVisibility = "hidden"
ReportVisibilityUser ReportVisibility = "user"
ReportVisibilityBackoffice ReportVisibility = "backoffice"
ReportVisibilityAudit ReportVisibility = "audit"
)
// NormalizeReportVisibility trims and lowercases the visibility value.
func NormalizeReportVisibility(value ReportVisibility) ReportVisibility {
return ReportVisibility(strings.ToLower(strings.TrimSpace(string(value))))
}
// IsValidReportVisibility reports whether the value is a supported enum variant.
func IsValidReportVisibility(value ReportVisibility) bool {
switch NormalizeReportVisibility(value) {
case ReportVisibilityUnspecified,
ReportVisibilityHidden,
ReportVisibilityUser,
ReportVisibilityBackoffice,
ReportVisibilityAudit:
return true
default:
return false
}
}
// IsUserVisible returns true when the step should be shown to end users.
// Unspecified is treated as user-visible for backward compatibility.
func (value ReportVisibility) IsUserVisible() bool {
switch NormalizeReportVisibility(value) {
case ReportVisibilityUnspecified, ReportVisibilityUser:
return true
default:
return false
}
}