package entity

type Gender uint

const (
	MaleGender Gender = iota + 1
	FemaleGender
)

var GenderStrings = map[Gender]string{
	MaleGender:   "male",
	FemaleGender: "female",
}

func (s Gender) String() string {
	return GenderStrings[s]
}

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

	return statusStrings
}

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

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

	return Gender(0)
}