43 lines
1.3 KiB
Go
43 lines
1.3 KiB
Go
|
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 longestTime < newS.Sub(*end).Seconds() {
|
||
|
longestTime = newS.Sub(*end).Seconds()
|
||
|
}
|
||
|
// get the nearest start from start var
|
||
|
}
|
||
|
return longestTime
|
||
|
}
|