diff options
Diffstat (limited to 'pkg/adapters/json/model.go')
| -rw-r--r-- | pkg/adapters/json/model.go | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/pkg/adapters/json/model.go b/pkg/adapters/json/model.go index 2cc5d8e..86d7321 100644 --- a/pkg/adapters/json/model.go +++ b/pkg/adapters/json/model.go @@ -2,10 +2,13 @@ package json import ( "strconv" + "strings" "time" "unicode" "airlines/pkg/model" + + "airlines/pkg/airports" ) func sOrEmpty(p *string) string { @@ -34,9 +37,9 @@ func onlyDigits(s string) string { func (jp JsonProfile) ToUser() (*model.User, error) { return &model.User{ - Name: sOrEmpty(jp.RealName.FirstName), - Surname: sOrEmpty(jp.RealName.LastName), - Nick: sOrEmpty(&jp.NickName), + Name: strings.ToUpper(sOrEmpty(jp.RealName.FirstName)), + Surname: strings.ToUpper(sOrEmpty(jp.RealName.LastName)), + Nick: strings.ToUpper(sOrEmpty(&jp.NickName)), Fathersname: "", Sex: jp.Sex, Birthday: model.SentinelBirthday(), @@ -44,16 +47,27 @@ func (jp JsonProfile) ToUser() (*model.User, error) { } func (jf JsonFlight) ToFlight() (*model.Flight, error) { - return &model.Flight{ - Number: jf.Flight, - From: jf.Departure.Airport, - FromCity: jf.Departure.City, - FromCountry: jf.Departure.Country, - To: jf.Arrival.Airport, - ToCity: jf.Arrival.City, - ToCountry: jf.Arrival.Country, - Date: jf.Date.ToDateUTC(), - }, nil + // lookup IATA codes for lat lon + f := &model.Flight{ + Number: jf.Flight, + From: strings.ToUpper(jf.Departure.Airport), + To: strings.ToUpper(jf.Arrival.Airport), + Date: jf.Date.ToDateUTC(), + } + + ap, _ := airports.LookupIATA(f.From) + f.FromCoords.Lat = ap.Latitude + f.FromCoords.Long = ap.Longitude + + loc := model.TzFromAirportRecord(ap) + departLocal := time.Date(f.Date.Year(), f.Date.Month(), f.Date.Day(), 0, 0, 0, 0, loc) + f.Date = departLocal.UTC() + + ap, _ = airports.LookupIATA(jf.Arrival.Airport) + f.ToCoords.Lat = ap.Latitude + f.ToCoords.Long = ap.Longitude + + return f, nil } func (jc JsonCard) ToCard() (*model.Card, error) { |
