package entity

type KindBoxStatus uint

const (
	KindBoxPendingSendStatus KindBoxStatus = iota + 1
	KindBoxSentStatus
	KindBoxPendingReceivedStatus
	KindBoxReceivedStatus
	KindBoxEnumeratedStatus
)

var kindBoxStatusStrings = map[KindBoxStatus]string{
	KindBoxPendingSendStatus:     "pending-send",
	KindBoxSentStatus:            "sent",
	KindBoxPendingReceivedStatus: "pending-received",
	KindBoxReceivedStatus:        "received",
	KindBoxEnumeratedStatus:      "enumerated",
}

func (s KindBoxStatus) String() string {
	return kindBoxStatusStrings[s]
}

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

	return statusStrings
}

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

	return KindBoxStatus(0)
}