package entity

type AdminStatus uint

const (
	AdminActiveStatus AdminStatus = iota + 1
	AdminInactiveStatus
)

var AdminStatusStrings = map[AdminStatus]string{
	AdminActiveStatus:   "active",
	AdminInactiveStatus: "inactive",
}

func (s AdminStatus) String() string {
	return AdminStatusStrings[s]
}

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

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

	return statusStrings
}

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

	return AdminStatus(0)
}
