func assembleEvents(c *cargo.Cargo, r cargo.HandlingEventRepository) []Event { h := r.QueryHandlingHistory(c.TrackingID) var events []Event for _, e := range h.HandlingEvents { var description string switch e.Activity.Type { case cargo.NotHandled: description = "Cargo has not yet been received." case cargo.Receive: description = fmt.Sprintf("Received in %s, at %s", e.Activity.Location, time.Now().Format(time.RFC3339)) case cargo.Load: description = fmt.Sprintf("Loaded onto voyage %s in %s, at %s.", e.Activity.VoyageNumber, e.Activity.Location, time.Now().Format(time.RFC3339)) case cargo.Unload: description = fmt.Sprintf("Unloaded off voyage %s in %s, at %s.", e.Activity.VoyageNumber, e.Activity.Location, time.Now().Format(time.RFC3339)) case cargo.Claim: description = fmt.Sprintf("Claimed in %s, at %s.", e.Activity.Location, time.Now().Format(time.RFC3339)) case cargo.Customs: description = fmt.Sprintf("Cleared customs in %s, at %s.", e.Activity.Location, time.Now().Format(time.RFC3339)) default: description = "[Unknown status]" } events = append(events, Event{ Description: description, Expected: c.Itinerary.IsExpected(e), }) } return events }
func storeEvent(repository cargo.HandlingEventRepository, trackingID cargo.TrackingID, voyage voyage.Number, activityType cargo.HandlingEventType, location location.UNLocode) { repository.Store(cargo.HandlingEvent{ TrackingID: trackingID, Activity: cargo.HandlingActivity{VoyageNumber: voyage, Type: activityType, Location: location}, }) }