From 091963a50c3bb2926f559f01c49e8f5bd03d2bfd Mon Sep 17 00:00:00 2001 From: leshe4ka46 Date: Sun, 19 Oct 2025 13:08:03 +0300 Subject: xlsx --- pkg/adapters/xlsx/registry.go | 69 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 pkg/adapters/xlsx/registry.go (limited to 'pkg/adapters/xlsx/registry.go') diff --git a/pkg/adapters/xlsx/registry.go b/pkg/adapters/xlsx/registry.go new file mode 100644 index 0000000..46c395e --- /dev/null +++ b/pkg/adapters/xlsx/registry.go @@ -0,0 +1,69 @@ +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 +} -- cgit v1.2.3