Code owners
Assign users and groups as approvers for specific file changes. Learn more.
gdd_service.go 2.64 KiB
package services
import (
"dawn-weather/common"
"dawn-weather/models"
"dawn-weather/models/enums"
"dawn-weather/persistence"
"dawn-weather/persistence/entities"
"dawn-weather/utils"
"time"
)
func GetFullYearGddValues(ctx common.DawnCtx, request models.GddRequest) models.GddResponse {
product := enums.GetProductFromString(request.Product)
var gdds entities.Gdd
if request.Year == time.Now().Year() {
gdds = persistence.CurrentGddFindFirstByYearAndLocation(ctx, request.BuildLocation())
gdds2 := persistence.CfsFindAllByLocation(request.BuildLocation())
gdds.MaxTemps = append(gdds.MaxTemps, gdds2.MaxTemps...)
gdds.MinTemps = append(gdds.MinTemps, gdds2.MinTemps...)
} else {
gdds = persistence.GddFindFirstByYearAndLocation(request.Year, request.BuildLocation())
}
returnGdds := models.GddResponse{
Product: product.Name,
ClosestLatitude: gdds.Location.Coordinates[1],
ClosestLongitude: gdds.Location.Coordinates[0],
GddValues: utils.CalculateGddValues(gdds.MinTemps, gdds.MaxTemps, product, request.Accumulate),
LastDate: gdds.LastDate.Time(),
}
return returnGdds
}
func GetGddValues(ctx common.DawnCtx, request models.GddRequest) models.GddResponse {
product := enums.GetProductFromString(request.Product)
var gdds entities.Gdd
if request.Year == time.Now().Year() {
gdds = persistence.CurrentGddFindFirstByYearAndLocation(ctx, request.BuildLocation())
} else {
gdds = persistence.GddFindFirstByYearAndLocation(request.Year, request.BuildLocation())
}
returnGdds := models.GddResponse{
Product: product.Name,
ClosestLatitude: gdds.Location.Coordinates[1],
ClosestLongitude: gdds.Location.Coordinates[0],
GddValues: utils.CalculateGddValues(gdds.MinTemps, gdds.MaxTemps, product, request.Accumulate),
LastDate: gdds.LastDate.Time(),
}
return returnGdds
}
func GetNormalValues(request models.GddRequest) models.GddResponse {
product := enums.GetProductFromString(request.Product)
g := persistence.NormalsFindFirstByYearAndLocation(request.BuildLocation())
var returnGdds models.GddResponse
if product == enums.ProductType.CORN {
returnGdds = models.GddResponse{
Product: product.Name,
ClosestLatitude: g.Location.Coordinates[1],
ClosestLongitude: g.Location.Coordinates[0],
GddValues: utils.CalculateNormalGddValues(g.CornBase, product, request.Accumulate),
}
} else {
returnGdds = models.GddResponse{
Product: product.Name,
ClosestLatitude: g.Location.Coordinates[1],
ClosestLongitude: g.Location.Coordinates[0],
GddValues: utils.CalculateNormalGddValues(g.GddBase, product, request.Accumulate),
}
}
return returnGdds
}