Add PostgreSQL database option and more booking flow functionalities
This commit is contained in:
@@ -3,11 +3,12 @@ package proto
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.coopgo.io/coopgo-platform/carpool-service/internal"
|
||||
"git.coopgo.io/coopgo-platform/carpool-service/interoperability/ocss"
|
||||
"google.golang.org/protobuf/types/known/timestamppb"
|
||||
)
|
||||
|
||||
func (j *CarpoolServiceDriverJourney) ToOCSS() ocss.DriverJourney {
|
||||
|
||||
var departureToPickupWalkingDuration *time.Duration
|
||||
if j.DepartureToPickupWalkingDuration != nil {
|
||||
dtpw := time.Duration(*j.DepartureToPickupWalkingDuration)
|
||||
@@ -39,9 +40,9 @@ func (j *CarpoolServiceDriverJourney) ToOCSS() ocss.DriverJourney {
|
||||
}
|
||||
}
|
||||
|
||||
var driverDepartureDate *ocss.JSONTime
|
||||
var driverDepartureDate *ocss.OCSSTime
|
||||
if j.DriverDepartureDate != nil {
|
||||
ddd := ocss.JSONTime(j.DriverDepartureDate.AsTime())
|
||||
ddd := ocss.OCSSTime(j.DriverDepartureDate.AsTime())
|
||||
driverDepartureDate = &ddd
|
||||
}
|
||||
|
||||
@@ -108,7 +109,8 @@ func (j *CarpoolServiceDriverJourney) ToOCSS() ocss.DriverJourney {
|
||||
},
|
||||
},
|
||||
JourneySchedule: ocss.JourneySchedule{
|
||||
PassengerPickupDate: ocss.JSONTime(j.PassengerPickupDate.AsTime()),
|
||||
ID: &j.Id,
|
||||
PassengerPickupDate: ocss.OCSSTime(j.PassengerPickupDate.AsTime()),
|
||||
DriverDepartureDate: driverDepartureDate,
|
||||
WebUrl: j.WebUrl,
|
||||
Type: j.Type.ToOCSS(),
|
||||
@@ -131,9 +133,9 @@ func (j *CarpoolServicePassengerJourney) ToOCSS() ocss.PassengerJourney {
|
||||
}
|
||||
}
|
||||
|
||||
var driverDepartureDate *ocss.JSONTime
|
||||
var driverDepartureDate *ocss.OCSSTime
|
||||
if j.DriverDepartureDate != nil {
|
||||
ddd := ocss.JSONTime(j.DriverDepartureDate.AsTime())
|
||||
ddd := ocss.OCSSTime(j.DriverDepartureDate.AsTime())
|
||||
driverDepartureDate = &ddd
|
||||
}
|
||||
|
||||
@@ -171,7 +173,8 @@ func (j *CarpoolServicePassengerJourney) ToOCSS() ocss.PassengerJourney {
|
||||
},
|
||||
},
|
||||
JourneySchedule: ocss.JourneySchedule{
|
||||
PassengerPickupDate: ocss.JSONTime(j.PassengerPickupDate.AsTime()),
|
||||
ID: &j.Id,
|
||||
PassengerPickupDate: ocss.OCSSTime(j.PassengerPickupDate.AsTime()),
|
||||
DriverDepartureDate: driverDepartureDate,
|
||||
WebUrl: j.WebUrl,
|
||||
Type: j.Type.ToOCSS(),
|
||||
@@ -180,6 +183,218 @@ func (j *CarpoolServicePassengerJourney) ToOCSS() ocss.PassengerJourney {
|
||||
}
|
||||
}
|
||||
|
||||
func (b *CarpoolServiceBooking) ToOCSS() ocss.Booking {
|
||||
var duration *time.Duration
|
||||
if b.Duration != nil {
|
||||
d := time.Duration(*b.Duration) * time.Second
|
||||
duration = &d
|
||||
}
|
||||
|
||||
pt := ocss.Free
|
||||
am := 0.0
|
||||
cu := "EUR"
|
||||
price := ocss.Price{
|
||||
Type: &pt,
|
||||
Amount: &am,
|
||||
Currency: &cu,
|
||||
}
|
||||
if b.Price != nil {
|
||||
pricetype := ocss.Unknown
|
||||
if *b.Price.Type == CarpoolServicePriceType_FREE {
|
||||
pricetype = ocss.Free
|
||||
} else if *b.Price.Type == CarpoolServicePriceType_PAYING {
|
||||
pricetype = ocss.Paying
|
||||
}
|
||||
price = ocss.Price{
|
||||
Type: &pricetype,
|
||||
Amount: b.Price.Amount,
|
||||
Currency: b.Price.Currency,
|
||||
}
|
||||
}
|
||||
|
||||
status := ocss.BookingInitiated
|
||||
if b.Status == CarpoolServiceBookingStatus_WAITING_DRIVER_CONFIRMATION {
|
||||
status = ocss.BookingWaitingDriverConfirmation
|
||||
} else if b.Status == CarpoolServiceBookingStatus_WAITING_PASSENGER_CONFIRMATION {
|
||||
status = ocss.BookingWaitingPassengerConfirmation
|
||||
} else if b.Status == CarpoolServiceBookingStatus_CONFIRMED {
|
||||
status = ocss.BookingConfirmed
|
||||
} else if b.Status == CarpoolServiceBookingStatus_COMPLETED_PENDING_VALIDATION {
|
||||
status = ocss.BookingCompletedPendingValidation
|
||||
} else if b.Status == CarpoolServiceBookingStatus_VALIDATED {
|
||||
status = ocss.BookingValidated
|
||||
} else if b.Status == CarpoolServiceBookingStatus_CANCELLED {
|
||||
status = ocss.BookingCancelled
|
||||
}
|
||||
|
||||
return ocss.Booking{
|
||||
ID: b.Id,
|
||||
Driver: ocss.User{
|
||||
ID: b.Driver.Id,
|
||||
Operator: b.Driver.Operator,
|
||||
Alias: b.Driver.Alias,
|
||||
FirstName: b.Driver.FirstName,
|
||||
LastName: b.Driver.LastName,
|
||||
Grade: b.Driver.Grade,
|
||||
Picture: b.Driver.Picture,
|
||||
Gender: GenderToOCSS(b.Driver.Gender),
|
||||
VerifiedIdentity: b.Driver.VerifiedIdentity,
|
||||
},
|
||||
Passenger: ocss.User{
|
||||
ID: b.Passenger.Id,
|
||||
Operator: b.Passenger.Operator,
|
||||
Alias: b.Passenger.Alias,
|
||||
FirstName: b.Passenger.FirstName,
|
||||
LastName: b.Passenger.LastName,
|
||||
Grade: b.Passenger.Grade,
|
||||
Picture: b.Passenger.Picture,
|
||||
Gender: GenderToOCSS(b.Passenger.Gender),
|
||||
VerifiedIdentity: b.Passenger.VerifiedIdentity,
|
||||
},
|
||||
PassengerPickupDate: ocss.OCSSTime(b.PassengerPickupDate.AsTime()),
|
||||
PassengerPickupLat: b.PassengerPickupLat,
|
||||
PassengerPickupLng: b.PassengerPickupLng,
|
||||
PassengerDropLat: b.PassengerDropLat,
|
||||
PassengerDropLng: b.PassengerDropLng,
|
||||
PassengerPickupAddress: b.PassengerPickupAddress,
|
||||
PassengerDropAddress: b.PassengerDropAddress,
|
||||
Distance: b.Distance,
|
||||
Duration: duration,
|
||||
WebUrl: b.WebUrl,
|
||||
Price: price,
|
||||
Status: status,
|
||||
DriverJourneyID: b.DriverJourneyId,
|
||||
PassengerJourneyID: b.PassengerJourneyId,
|
||||
}
|
||||
}
|
||||
|
||||
func BookingFromOCSS(b ocss.Booking) *CarpoolServiceBooking {
|
||||
passengerPickupDate := b.PassengerPickupDate.ToTime()
|
||||
status := CarpoolServiceBookingStatus_INITIATED
|
||||
if b.Status == ocss.BookingWaitingDriverConfirmation {
|
||||
status = CarpoolServiceBookingStatus_WAITING_DRIVER_CONFIRMATION
|
||||
} else if b.Status == ocss.BookingWaitingPassengerConfirmation {
|
||||
status = CarpoolServiceBookingStatus_WAITING_PASSENGER_CONFIRMATION
|
||||
} else if b.Status == ocss.BookingConfirmed {
|
||||
status = CarpoolServiceBookingStatus_CONFIRMED
|
||||
} else if b.Status == ocss.BookingCompletedPendingValidation {
|
||||
status = CarpoolServiceBookingStatus_COMPLETED_PENDING_VALIDATION
|
||||
} else if b.Status == ocss.BookingValidated {
|
||||
status = CarpoolServiceBookingStatus_VALIDATED
|
||||
} else if b.Status == ocss.BookingCancelled {
|
||||
status = CarpoolServiceBookingStatus_CANCELLED
|
||||
}
|
||||
|
||||
var duration *int64
|
||||
if b.Duration != nil {
|
||||
d := int64(b.Duration.Seconds())
|
||||
duration = &d
|
||||
}
|
||||
|
||||
var pricetype *CarpoolServicePriceType
|
||||
if b.Price.Type != nil {
|
||||
if *b.Price.Type == ocss.Free {
|
||||
pt := CarpoolServicePriceType_FREE
|
||||
pricetype = &pt
|
||||
} else if *b.Price.Type == ocss.Paying {
|
||||
pt := CarpoolServicePriceType_PAYING
|
||||
pricetype = &pt
|
||||
} else if *b.Price.Type == ocss.Unknown {
|
||||
pt := CarpoolServicePriceType_UNKNOWN
|
||||
pricetype = &pt
|
||||
}
|
||||
}
|
||||
price := CarpoolServicePrice{
|
||||
Amount: b.Price.Amount,
|
||||
Currency: b.Price.Currency,
|
||||
Type: pricetype,
|
||||
}
|
||||
|
||||
return &CarpoolServiceBooking{
|
||||
Id: b.ID,
|
||||
Driver: &CarpoolServiceUser{
|
||||
Id: b.Driver.ID,
|
||||
Operator: b.Driver.Operator,
|
||||
Alias: b.Driver.Alias,
|
||||
FirstName: b.Driver.FirstName,
|
||||
LastName: b.Driver.LastName,
|
||||
Grade: b.Driver.Grade,
|
||||
Picture: b.Driver.Picture,
|
||||
Gender: b.Driver.Gender.ToString(),
|
||||
VerifiedIdentity: b.Driver.VerifiedIdentity,
|
||||
},
|
||||
Passenger: &CarpoolServiceUser{
|
||||
Id: b.Passenger.ID,
|
||||
Operator: b.Passenger.Operator,
|
||||
Alias: b.Passenger.Alias,
|
||||
FirstName: b.Passenger.FirstName,
|
||||
LastName: b.Passenger.LastName,
|
||||
Grade: b.Passenger.Grade,
|
||||
Picture: b.Passenger.Picture,
|
||||
Gender: b.Passenger.Gender.ToString(),
|
||||
VerifiedIdentity: b.Passenger.VerifiedIdentity,
|
||||
},
|
||||
PassengerPickupDate: timestamppb.New(*passengerPickupDate),
|
||||
PassengerPickupLat: b.PassengerPickupLat,
|
||||
PassengerPickupLng: b.PassengerPickupLng,
|
||||
PassengerDropLat: b.PassengerDropLat,
|
||||
PassengerDropLng: b.PassengerDropLng,
|
||||
PassengerPickupAddress: b.PassengerPickupAddress,
|
||||
PassengerDropAddress: b.PassengerDropAddress,
|
||||
Status: status,
|
||||
Distance: b.Distance,
|
||||
Duration: duration,
|
||||
WebUrl: b.WebUrl,
|
||||
Price: &price,
|
||||
DriverJourneyId: b.DriverJourneyID,
|
||||
PassengerJourneyId: b.PassengerJourneyID,
|
||||
}
|
||||
}
|
||||
|
||||
func BookingFromInternal(b internal.Booking) *CarpoolServiceBooking {
|
||||
booking := BookingFromOCSS(b.Booking)
|
||||
|
||||
if b.DriverRoute != nil {
|
||||
serializedDriverRoute, err := b.DriverRoute.MarshalJSON()
|
||||
if err == nil {
|
||||
booking.DriverRoute = &CarpoolFeatureCollection{
|
||||
Serialized: string(serializedDriverRoute),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if b.PassengerRoute != nil {
|
||||
serializedPassengerRoute, err := b.PassengerRoute.MarshalJSON()
|
||||
if err == nil {
|
||||
booking.PassengerRoute = &CarpoolFeatureCollection{
|
||||
Serialized: string(serializedPassengerRoute),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return booking
|
||||
}
|
||||
|
||||
func (s CarpoolServiceBookingStatus) ToOCSS() ocss.BookingStatus {
|
||||
if s == CarpoolServiceBookingStatus_INITIATED {
|
||||
return ocss.BookingInitiated
|
||||
} else if s == CarpoolServiceBookingStatus_WAITING_DRIVER_CONFIRMATION {
|
||||
return ocss.BookingWaitingDriverConfirmation
|
||||
} else if s == CarpoolServiceBookingStatus_WAITING_PASSENGER_CONFIRMATION {
|
||||
return ocss.BookingWaitingPassengerConfirmation
|
||||
} else if s == CarpoolServiceBookingStatus_CONFIRMED {
|
||||
return ocss.BookingConfirmed
|
||||
} else if s == CarpoolServiceBookingStatus_COMPLETED_PENDING_VALIDATION {
|
||||
return ocss.BookingCompletedPendingValidation
|
||||
} else if s == CarpoolServiceBookingStatus_VALIDATED {
|
||||
return ocss.BookingValidated
|
||||
} else if s == CarpoolServiceBookingStatus_CANCELLED {
|
||||
return ocss.BookingCancelled
|
||||
}
|
||||
|
||||
return ocss.BookingInitiated
|
||||
}
|
||||
|
||||
func (t CarpoolServiceJourneyType) ToOCSS() ocss.JourneyScheduleType {
|
||||
if t == CarpoolServiceJourneyType_DYNAMIC {
|
||||
return ocss.Dynamic
|
||||
|
||||
Reference in New Issue
Block a user