solidarity-service/interoperability/solidarity-api/server/openapi/api_passenger_trip_request_...

81 lines
3.3 KiB
Go
Raw Normal View History

2023-10-20 11:41:39 +00:00
/*
* Solidarity Mobility API
*
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* API version: 1.0.0
* Generated by: OpenAPI Generator (https://openapi-generator.tech)
*/
package openapi
import (
"context"
"errors"
"github.com/paulmach/orb"
"github.com/paulmach/orb/geojson"
"github.com/spf13/viper"
"net/http"
"solidarity-service/handler"
"solidarity-service/internal"
"solidarity-service/storage"
)
// PassengerTripRequestAPIService is a service that implements the logic for the PassengerTripRequestAPIServicer
// This service should implement the business logic for every endpoint for the PassengerTripRequestAPI API.
// Include any external packages or services that will be required by this service.
type PassengerTripRequestAPIService struct {
config *viper.Viper
handler *handler.SolidarityServiceHandler
storage storage.Storage
}
// NewPassengerTripRequestAPIService creates a default api service
func NewPassengerTripRequestAPIService(config *viper.Viper, handler *handler.SolidarityServiceHandler, storage storage.Storage) PassengerTripRequestAPIServicer {
return &PassengerTripRequestAPIService{
config: config,
handler: handler,
storage: storage,
}
}
// PassengerPost - Create a Passenger Trip Request
func (s *PassengerTripRequestAPIService) PassengerPost(ctx context.Context, passengerTripRequest PassengerTripRequest) (ImplResponse, error) {
passenger := internal.Passenger{}
passenger.Passenger_departure_address = &geojson.Feature{
Type: "Feature",
Geometry: orb.Geometry(orb.Point{passengerTripRequest.DepartureLatitude, passengerTripRequest.DepartureLongitude}),
Properties: geojson.Properties{
"name": passengerTripRequest.DepartureAddress,
},
}
passenger.Passenger_destination_address = &geojson.Feature{
Type: "Feature",
Geometry: orb.Geometry(orb.Point{passengerTripRequest.DestinationLatitude, passengerTripRequest.DestinationLongitude}),
Properties: geojson.Properties{
"name": passengerTripRequest.DestinationAddress,
},
}
passenger.Passenger_pickup_date = int64(passengerTripRequest.DepartureDate)
passenger.Passenger.ID = passengerTripRequest.User.Id
passenger.Passenger.Operator = passengerTripRequest.User.Operator
passenger.Passenger.Alias = passengerTripRequest.User.Alias
passenger.Passenger.FirstName = passengerTripRequest.User.FirstName
passenger.Passenger.LastName = passengerTripRequest.User.LastName
passenger.Passenger.Picture = passengerTripRequest.User.Picture
passenger.Passenger.Grade = int64(passengerTripRequest.User.Grade)
passenger.Passenger.Gender = passengerTripRequest.User.Gender
passenger.Passenger.VerifiedIdentity = passengerTripRequest.User.VerifiedIdentity
passenger.Preferences.Animals = passengerTripRequest.Preferences.Animals
passenger.Preferences.Luggage_size = int64(passengerTripRequest.Preferences.LuggageSize)
passenger.Preferences.Smoking = passengerTripRequest.Preferences.Smoking
passenger.Preferences.Is_talker = passengerTripRequest.Preferences.IsTalker
passenger.Preferences.Music = passengerTripRequest.Preferences.Music
err := s.storage.CreatePassenger(passenger)
if err != nil {
return Response(http.StatusInternalServerError, nil), errors.New("DriverPunctualAvailabilitiesPost internal server error")
} else {
return Response(201, "Trip request created"), nil
}
}