package common

import (
	"time"

	"cloud.o-forge.io/core/oc-lib/models/common/pricing"
	"cloud.o-forge.io/core/oc-lib/tools"
)

func GetPlannerNearestStart(start time.Time, planned map[tools.DataType][]pricing.PricedItemITF, request *tools.APIRequest) float64 {
	near := float64(10000000000)    // set a high value
	for _, items := range planned { // loop through the planned items
		for _, priced := range items { // loop through the priced items
			if priced.GetLocationStart() == nil { // if the start is nil,
				continue // skip the iteration
			}
			newS := priced.GetLocationStart()     // get the start
			if newS.Sub(start).Seconds() < near { // if the difference between the start and the new start is less than the nearest start
				near = newS.Sub(start).Seconds()
			}
		}
	}
	return near
}

func GetPlannerLongestTime(end *time.Time, planned map[tools.DataType][]pricing.PricedItemITF, request *tools.APIRequest) float64 {
	if end == nil {
		return -1
	}
	longestTime := float64(0)
	for _, priced := range planned[tools.PROCESSING_RESOURCE] {
		if priced.GetLocationEnd() == nil {
			continue
		}
		newS := priced.GetLocationEnd()
		if end == nil && longestTime < newS.Sub(*end).Seconds() {
			longestTime = newS.Sub(*end).Seconds()
		}
		// get the nearest start from start var
	}
	return longestTime
}