forked from steger/pr3-ws202526
40 lines
848 B
Go
40 lines
848 B
Go
package airport
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type Aircraft struct {
|
|
Flight Flight
|
|
Passengers []Passenger
|
|
Baggage []Baggage
|
|
}
|
|
|
|
var _ BaggageProcessor = &Aircraft{}
|
|
|
|
func NewAircraft(flight Flight) Aircraft {
|
|
return Aircraft{flight, []Passenger{}, []Baggage{}}
|
|
}
|
|
|
|
func (ac *Aircraft) ProcessBaggage(fn FlightNumber, b Baggage) error {
|
|
if fn != ac.Flight.Id {
|
|
return fmt.Errorf("wrong flight %s", fn)
|
|
}
|
|
ac.Baggage = append(ac.Baggage, b)
|
|
fmt.Printf("loaded baggage %v onto flight %v\n", b, fn)
|
|
return nil
|
|
}
|
|
|
|
func (ac *Aircraft) Process(p Passenger) error {
|
|
if p.BoardingPass.FlightNumber != ac.Flight.Id {
|
|
return fmt.Errorf("%s is unauthorized to enter aircraft", p.Name)
|
|
}
|
|
ac.Passengers = append(ac.Passengers, p)
|
|
return nil
|
|
}
|
|
|
|
func (ac *Aircraft) Start(gate *Gate, rwy *Runway) {
|
|
gate.ProcessAircraft(ac)
|
|
rwy.ProcessAircraft(*ac)
|
|
}
|