Files
old-svijetlastrana/application/viewmodel/tnc.go
2018-04-25 13:16:36 +02:00

162 lines
6.6 KiB
Go

package viewmodel
import "time"
//WebhookResponse has the data and events from the webhook
type WebhookResponse struct {
EventID string `json:"event_id,omitempty"`
HREF string `json:"href,omitempty"`
OccurredAt string `json:"occurred_at,omitempty"`
EventType string `json:"event_type,omitempty"`
Event RideRequest `json:"event,omitempty"`
Ride Ride `json:"-"`
}
//RideRequest has the data to dispatch a ride
type RideRequest struct {
UserUUID string `json:"user_uuid,omitempty"`
Status string `json:"status,omitempty"`
RideID string `json:"ride_id,omitempty"`
RideType string `json:"ride_type,omitempty"`
Origin Location `json:"origin,omitempty"`
Location Location `json:"location,omitempty"`
Destination Location `json:"destination,omitempty"`
Passenger UserLyft `json:"passenger,omitempty"`
Notes string `json:"external_note,omitempty"`
RouteURL string `json:"route_url,omitempty"`
ScheduledPickupRange interface{} `json:"scheduled_pickup_range,omitempty"`
PrimetimePercentage string `json:"primetime_percentage,omitempty"`
Pickup Location `json:"pickup,omitempty"`
DropOff Location `json:"dropoff,omitempty"`
Vehicle Vehicle `json:"vehicle,omitempty"`
Price Price `json:"price,omitempty"`
Driver UserLyft `json:"driver,omitempty"`
GeneratedAtMS *int64 `json:"generated_at_ms,omitempty"`
GeneratedAt *time.Time `json:"generated_at,omitempty"`
RequestAtMS *int64 `json:"requested_at_ms,omitempty"`
RequestAt *time.Time `json:"requested_at,omitempty"`
LineItems []Price `json:"line_items,omitempty"`
BeaconColor string `json:"beacon_color,omitempty"`
Charges []Charge `json:"charges,omitempty"`
VisitDate *time.Time `json:"visit_date,omitempty"`
VisitTime *time.Time `json:"visit_time,omitempty"`
PickupTime *time.Time `json:"pickup_time,omitempty"`
ReturnTime *time.Time `json:"return_time,omitempty"`
Distance float64 `json:"distance,omitempty"`
ETA int64 `json:"eta,omitempty"`
Duration int64 `json:"duration,omitempty"`
Visit Visit `json:"visit,omitempty"`
CreateUserUUID string `json:"created_user_uuid,omitempty"`
VisitExternalID string `json:"visit_external_id,omitempty"`
CanCancel []string `json:"can_cancel,omitempty"`
PricingDetailsURL string `json:"pricing_details_url,omitempty"`
RideProfile string `json:"ride_profile,omitempty"`
DistanceInMiles float64 `json:"distance_miles,omitempty"`
DurationInSeconds float64 `json:"duration_seconds,omitempty"`
CanceledBy string `json:"canceled_by,omitempty"`
TripType TripType `json:"trip_type,omitempty"`
Error string `json:"error,omitempty"`
ErrorDescription string `json:"error_description,omitempty"`
}
//Charge information
type Charge struct {
Currency string `json:"currency,omitempty"`
PaymentMethod string `json:"payment_method,omitempty"`
Amount int64 `json:"amount,omitempty"`
}
//Price information
type Price struct {
Currency string `json:"currency,omitempty"`
Amount float64 `json:"amount,omitempty"`
Description string `json:"description,omitempty"`
Type string `json:"type,omitempty"`
}
//Vehicle information
type Vehicle struct {
Color string `json:"color,omitempty"`
Make string `json:"make,omitempty"`
LicensePlate string `json:"license_plate,omitempty"`
ImageURL string `json:"image_url,omitempty"`
Year int64 `json:"year,omitempty"`
LicensePlateState string `json:"license_plate_state,omitempty"`
Model string `json:"model,omitempty"`
}
//Location has the coordinates from the user
type Location struct {
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Latitude float64 `json:"lat,omitempty"`
Longitude float64 `json:"lng,omitempty"`
Address string `json:"address,omitempty"`
ETASeconds *int64 `json:"eta_seconds,omitempty"`
TimeMS *int64 `json:"time_ms,omitempty"`
Time *time.Time `json:"time,omitempty"`
Bearing *float64 `json:"bearing,omitempty"`
}
//UserLyft has the personal information
type UserLyft struct {
UserID *string `json:"user_id,omitempty"`
Rating *string `json:"rating,omitempty"`
ImageURL *string `json:"image_url,omitempty"`
FirstName string `json:"first_name,omitempty"`
LastName string `json:"last_name,omitempty"`
PhoneNumber string `json:"phone_number,omitempty"`
}
// Ride entity data
type Ride struct {
UUID string `json:"ride_uuid,omitempty"`
InternalID string `json:"internal_id,omitempty"`
User User `json:"user,omitempty"`
Status RideStatus `json:"status,omitempty"`
Type RideType `json:"type,omitempty"`
Note string `json:"notes,omitempty"`
Passenger UserLyft `json:"passenger,omitempty"`
Driver UserLyft `json:"driver,omitempty"`
Vehicle Vehicle `json:"vehicle,omitempty"`
Route RideRoute `json:"route,omitempty"`
VisitDate *time.Time `json:"visit_date,omitempty"`
VisitTime *time.Time `json:"visit_time,omitempty"`
PickupTime *time.Time `json:"pickup_time,omitempty"`
Visit Visit `json:"visit,omitempty"`
CreatedUser User `json:"created_user,omitempty"`
CreateAt time.Time `json:"create_at,omitempty"`
UpdateAt time.Time `json:"update_at,omitempty"`
TripType TripType `json:"trip_type,omitempty"`
}
// RideStatus entity data
type RideStatus struct {
Key string `json:"key,omitempty"`
Value string `json:"value,omitempty"`
}
// TripType entity data
type TripType struct {
Key string `json:"key"`
Value string `json:"value"`
}
// RideType entity data
type RideType struct {
Key string `json:"key,omitempty"`
Value string `json:"value,omitempty"`
}
// RideRoute entity data
type RideRoute struct {
Origin Location `json:"origin,omitempty"`
Destination Location `json:"destination,omitempty"`
Location Location `json:"location,omitempty"`
RouteKML *string `json:"route_kml,omitempty"`
Distance float64 `json:"distance,omitempty"`
Duration int64 `json:"duration,omitempty"`
ETA int64 `json:"eta,omitempty"`
Bearing int64 `json:"bearing,omitempty"`
}