package dateinterval

import (
	"math"
	"time"

	"github.com/pingcap/dbaas/billing2/forms"
)

func getComparableUnixTimeStamp(i forms.DateInterval) (int64, int64) {
	var start, end int64
	if i.StartDate != nil {
		start = i.StartDate.Unix()
	}
	if i.EndDate != nil {
		end = i.EndDate.Unix()
	} else {
		end = math.MaxInt64
	}
	return start, end
}

func IsDisjoint(a, b forms.DateInterval) bool {
	x1, y1 := getComparableUnixTimeStamp(a)
	x2, y2 := getComparableUnixTimeStamp(b)
	if x1 == x2 {
		return true
	}
	if x1 < x2 {
		return x2 < y1
	}
	return x1 < y2
}

func IsWithin(t time.Time, i forms.DateInterval) bool {
	x, y := getComparableUnixTimeStamp(i)
	z := t.Unix()
	return x <= z && z < y
}
