diff --git a/address_utils/address_utils.go b/address_utils/address_utils.go index b90563d946ed467dffef1b931563f8140c647c3c..fe88590f2fa3e7597985a5c1a2d5b386ce3c90eb 100644 --- a/address_utils/address_utils.go +++ b/address_utils/address_utils.go @@ -74,6 +74,7 @@ var Provinces = map[string]Province{ Names: []string{ "NT", "NL", + "ZN", "KwaZulu-Natal", "KwaZulu Natal", "iKwaZulu-Natal", @@ -240,7 +241,9 @@ func CleanZone(countryToClean, zoneToClean *string) (newCountry, newZone *string for provinceCode, province := range Provinces { for _, name := range province.Names { - zone = string_utils.ReplaceCaseInsensitive(zone, name, provinceCode) + if zone == name { + zone = string_utils.ReplaceCaseInsensitive(zone, name, provinceCode) + } } } diff --git a/bob_box_utils/bob_box_utils.go b/bob_box_utils/bob_box_utils.go new file mode 100644 index 0000000000000000000000000000000000000000..1fb51b9241839102854e91981ea581cf5ae7ca4c --- /dev/null +++ b/bob_box_utils/bob_box_utils.go @@ -0,0 +1,39 @@ +package bob_box_utils + +import "sort" + +type ParcelDimensions struct { + Height float64 `json:"height"` + Width float64 `json:"width"` + Length float64 `json:"length"` +} + +// GetStackedParcelDimensions sorts the parcels so and stacks them +func GetStackedParcelDimensions(parcels []ParcelDimensions) ParcelDimensions { + var totalParcelHeight, maxParcelWidth, maxParcelLength float64 + // Stack the parcels + for _, parcel := range parcels { + parcelHeight, parcelWidth, parcelLength := SortDimensionsInIncreasingOrder(parcel.Height, parcel.Width, parcel.Length) + + // To stack, sum all the heights + totalParcelHeight += parcelHeight + + // Get the max width + if parcelWidth > maxParcelWidth { + maxParcelWidth = parcelWidth + } + + //Get the max length + if parcelLength > maxParcelLength { + maxParcelLength = parcelLength + } + } + return ParcelDimensions{totalParcelHeight, maxParcelWidth, maxParcelLength} +} + +// SortDimensionsInIncreasingOrder sorts the given dimensions in increasing order +func SortDimensionsInIncreasingOrder(dim1, dim2, dim3 float64) (float64, float64, float64) { + dims := []float64{dim1, dim2, dim3} + sort.Float64s(dims) + return dims[0], dims[1], dims[2] +}