package xlsx import ( "fmt" "strings" "airlines/pkg/model" "airlines/pkg/names" "github.com/leonm1/airports-go" ) func (t Ticket) ToUser() (model.User, error) { fio, err := names.ParseLatinName(t.Passenger) if err != nil { return model.User{}, fmt.Errorf("%v %s", t.Sheet, err.Error()) } sex := names.GenderFromTitle(t.Title) u := model.User{ Nick: "", Name: fio.First, Surname: fio.Last, Fathersname: fio.Patronymic, Sex: sex, } return u, nil } func (t Ticket) ToCard() (model.Card, error) { prefix, number, bonus := parseCardLine(t.Card) if number == 0 && prefix == "" && bonus == "" { return model.Card{}, nil } return model.Card{ Prefix: prefix, Number: number, Bonusprogramm: "", }, nil } func (t Ticket) ToFlight() (model.Flight, error) { // Resolve IATA records fromIATA := strings.ToUpper(strings.TrimSpace(t.FromAirport)) toIATA := strings.ToUpper(strings.TrimSpace(t.ToAirport)) fromRec, _ := airports.LookupIATA(fromIATA) toRec, _ := airports.LookupIATA(toIATA) fromCity := firstNonEmpty(strings.TrimSpace(t.FromCity), fromRec.City) toCity := firstNonEmpty(strings.TrimSpace(t.ToCity), toRec.City) fromCountry := fromRec.Country toCountry := toRec.Country departUTC, _, err := t.DateTime() if err != nil { return model.Flight{}, err } return model.Flight{ Number: strings.TrimSpace(t.FlightNumber), From: fromIATA, FromCity: fromCity, FromCountry: fromCountry, To: toIATA, ToCity: toCity, ToCountry: toCountry, Date: departUTC, }, nil }