package entity

type ReferTimeStatus uint

const (
	ReferTimeActiveStatus ReferTimeStatus = iota + 1
	ReferTimeInactiveStatus
)

var ReferTimeStatusStrings = map[ReferTimeStatus]string{
	ReferTimeActiveStatus:   "active",
	ReferTimeInactiveStatus: "inactive",
}

func (s ReferTimeStatus) String() string {
	return ReferTimeStatusStrings[s]
}

func (s ReferTimeStatus) IsValid() bool {
	return s > 0 && int(s) <= len(ReferTimeStatusStrings)
}

// AllReferTimeStatus returns a slice containing all string values of ReferTimeStatus.
func AllReferTimeStatus() []string {
	statusStrings := make([]string, len(ReferTimeStatusStrings))
	for status, str := range ReferTimeStatusStrings {
		statusStrings[int(status)-1] = str
	}

	return statusStrings
}

// MapToReferTimeStatus converts a string to the corresponding ReferTimeStatus value.
func MapToReferTimeStatus(statusStr string) ReferTimeStatus {
	for status, str := range ReferTimeStatusStrings {
		if str == statusStr {
			return status
		}
	}

	return ReferTimeStatus(0)
}