cargo

package
v0.0.0-...-d0adc60 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 14, 2024 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrUnknown = errors.New("unknown cargo")

Functions

This section is empty.

Types

type Cargo

type Cargo struct {
	TrackingID         TrackingID
	Origin             location.UNLocode
	RouteSpecification RouteSpecification
	Itinerary          Itinerary
	Delivery           Delivery
}

func New

func New(id TrackingID, rs RouteSpecification) *Cargo

func (*Cargo) AssignToRoute

func (c *Cargo) AssignToRoute(itinerary Itinerary)

func (*Cargo) DeriveDeliveryProgress

func (c *Cargo) DeriveDeliveryProgress(history HandlingHistory)

func (*Cargo) SpecifyNewRoute

func (c *Cargo) SpecifyNewRoute(rs RouteSpecification)

type Delivery

type Delivery struct {
	Itinerary               Itinerary
	RouteSpecification      RouteSpecification
	RoutingStatus           RoutingStatus
	TransportStatus         TransportStatus
	NextExpectedActivity    HandlingActivity
	LastEvent               HandlingEvent
	LastKnownLocation       location.UNLocode
	CurrentVoyage           voyage.Number
	ETA                     time.Time
	IsMisdirected           bool
	IsUnloadedAtDestination bool
}

func DeriveDeliveryFrom

func DeriveDeliveryFrom(rs RouteSpecification, itinerary Itinerary, history HandlingHistory) Delivery

func (Delivery) IsOnTrack

func (d Delivery) IsOnTrack() bool

func (Delivery) UpdateOnRouting

func (d Delivery) UpdateOnRouting(rs RouteSpecification, itinerary Itinerary) Delivery

type HandlingActivity

type HandlingActivity struct {
	Type         HandlingEventType
	Location     location.UNLocode
	VoyageNumber voyage.Number
}

type HandlingEvent

type HandlingEvent struct {
	TrackingID TrackingID
	Activity   HandlingActivity
}

type HandlingEventFactory

type HandlingEventFactory struct {
	CargoRepository    Repository
	VoyageRepository   voyage.Repository
	LocationRepository location.Repository
}

func (*HandlingEventFactory) CreateHandlingEvent

func (f *HandlingEventFactory) CreateHandlingEvent(registered time.Time, completed time.Time, id TrackingID,
	voyageNumber voyage.Number, unLocode location.UNLocode, eventType HandlingEventType) (HandlingEvent, error)

type HandlingEventRepository

type HandlingEventRepository interface {
	Store(e HandlingEvent)
	QueryHandlingHistory(TrackingID) HandlingHistory
}

type HandlingEventType

type HandlingEventType int
const (
	NotHandled HandlingEventType = iota
	Load
	Unload
	Receive
	Claim
	Customs
)

func (HandlingEventType) String

func (t HandlingEventType) String() string

type HandlingHistory

type HandlingHistory struct {
	HandlingEvents []HandlingEvent
}

func (HandlingHistory) MostRecentlyCompletedEvent

func (h HandlingHistory) MostRecentlyCompletedEvent() (HandlingEvent, error)

type Itinerary

type Itinerary struct {
	Legs []Leg `json:"legs"`
}

func (Itinerary) FinalArrivalLocation

func (i Itinerary) FinalArrivalLocation() location.UNLocode

func (Itinerary) FinalArrivalTime

func (i Itinerary) FinalArrivalTime() time.Time

func (Itinerary) InitialDepartureLocation

func (i Itinerary) InitialDepartureLocation() location.UNLocode

func (Itinerary) IsEmpty

func (i Itinerary) IsEmpty() bool

func (Itinerary) IsExpected

func (i Itinerary) IsExpected(event HandlingEvent) bool

type Leg

type Leg struct {
	VoyageNumber   voyage.Number     `json:"voyage_number"`
	LoadLocation   location.UNLocode `json:"from"`
	UnloadLocation location.UNLocode `json:"to"`
	LoadTime       time.Time         `json:"load_time"`
	UnloadTime     time.Time         `json:"unload_time"`
}

func NewLeg

func NewLeg(voyageNumber voyage.Number, loadLocation, unloadLocation location.UNLocode, loadTime, unloadTime time.Time) Leg

type Repository

type Repository interface {
	Store(cargo *Cargo) error
	Find(id TrackingID) (*Cargo, error)
	FindAll() []*Cargo
}

type RouteSpecification

type RouteSpecification struct {
	Origin          location.UNLocode
	Destination     location.UNLocode
	ArrivalDeadline time.Time
}

func (RouteSpecification) IsSatisfiedBy

func (s RouteSpecification) IsSatisfiedBy(itinerary Itinerary) bool

type RoutingStatus

type RoutingStatus int
const (
	NotRouted RoutingStatus = iota
	Misrouted
	Routed
)

func (RoutingStatus) String

func (s RoutingStatus) String() string

type TrackingID

type TrackingID string

func NextTrackingID

func NextTrackingID() TrackingID

type TransportStatus

type TransportStatus int
const (
	NotReceived TransportStatus = iota
	InPort
	OnboardCarrier
	Claimed
	Unknown
)

func (TransportStatus) String

func (s TransportStatus) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL