package structs

import "sort"

func severityLess(s1, s2 Severity) bool {
	switch s1 {
	case AlertSeverityCritical:
		return s2 != AlertSeverityCritical
	case AlertSeverityMajor:
		return s2 != AlertSeverityCritical && s2 != AlertSeverityMajor
	case AlertSeverityWarning:
		return s2 == AlertSeverityWarning
	default:
		return false
	}
}

func SortUserAlertsByActiveAtDesc(alerts []*UserAlertInfo) {
	sort.Slice(alerts, func(i, j int) bool {
		return alerts[i].ActiveAt > alerts[j].ActiveAt
	})
}

func SortUserAlertsBySeverityAndActiveAt(alerts []*UserAlertInfo) {
	sort.SliceStable(alerts, func(i, j int) bool {
		if alerts[i].Severity != alerts[j].Severity {
			return severityLess(alerts[i].Severity, alerts[j].Severity)
		}
		return alerts[i].ActiveAt > alerts[j].ActiveAt
	})
}
