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"` }