45 lines
1.3 KiB
Go
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
|
|
}
|
|
}
|