func calculateCurrentVoyage(transportStatus TransportStatus, event HandlingEvent) voyage.Number { if transportStatus == OnboardCarrier && event.Activity.Type != NotHandled { return event.Activity.VoyageNumber } return voyage.Number("") }
func (s proxyService) FetchRoutesForSpecification(rs cargo.RouteSpecification) []cargo.Itinerary { response, err := s.FetchRoutesEndpoint(s.Context, fetchRoutesRequest{ From: string(rs.Origin), To: string(rs.Destination), }) if err != nil { return []cargo.Itinerary{} } resp := response.(fetchRoutesResponse) var itineraries []cargo.Itinerary for _, r := range resp.Paths { var legs []cargo.Leg for _, e := range r.Edges { legs = append(legs, cargo.Leg{ VoyageNumber: voyage.Number(e.Voyage), LoadLocation: location.UNLocode(e.Origin), UnloadLocation: location.UNLocode(e.Destination), LoadTime: e.Departure, UnloadTime: e.Arrival, }) } itineraries = append(itineraries, cargo.Itinerary{Legs: legs}) } return itineraries }
func decodeRegisterIncidentRequest(_ context.Context, r *http.Request) (interface{}, error) { var body struct { CompletionTime time.Time `json:"completion_time"` TrackingID string `json:"tracking_id"` VoyageNumber string `json:"voyage"` Location string `json:"location"` EventType string `json:"event_type"` } if err := json.NewDecoder(r.Body).Decode(&body); err != nil { return nil, err } return registerIncidentRequest{ CompletionTime: body.CompletionTime, ID: cargo.TrackingID(body.TrackingID), Voyage: voyage.Number(body.VoyageNumber), Location: location.UNLocode(body.Location), EventType: stringToEventType(body.EventType), }, nil }