get all bookings

This commit is contained in:
2024-12-16 10:35:35 +01:00
parent b8e017b081
commit 7a3bbdae7a
14 changed files with 577 additions and 260 deletions

View File

@@ -592,6 +592,76 @@ func (s PostgresqlStorage) GetBooking(id string) (booking internal.Booking, err
return booking, nil
}
func (s PostgresqlStorage) GetAllBookingsSolidarity() (bookings []internal.Booking, err error) {
var departureAddress []byte
var destinationAddress []byte
var booking internal.Booking
rows, err := s.DbConnection.Query(fmt.Sprintf("SELECT booking_id , passenger_id , driver_id , booking_status , departure_address,destination_address,pickup_date,duration,distance FROM %s ", s.Tables["bookings"]))
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
if err := rows.Scan(
&booking.ID,
&booking.Passenger.ID,
&booking.Driver.ID,
&booking.Status,
&departureAddress,
&destinationAddress,
&booking.Pickup_date,
&booking.Duration,
&booking.Distance,
)
err != nil {
return nil, err
}
if err := json.Unmarshal(departureAddress, &booking.PassengerPickupAddress); err != nil {
return nil, err
}
if err != nil {
errMsg := "Postgresql Storage GetBooking Error getting booking"
log.Error().Err(err).Msg(errMsg)
return nil, errors.New(errMsg + err.Error())
}
booking.PassengerPickupAddress, err = geojson.UnmarshalFeature(departureAddress)
if err != nil {
errMsg := "Postgresql Storage GetBooking Error decoding Driver departure route into GeoJSON"
log.Error().Err(err).Msg(errMsg)
return nil, errors.New(errMsg + err.Error())
}
booking.PassengerDropAddress, err = geojson.UnmarshalFeature(destinationAddress)
if err != nil {
errMsg := "Postgresql Storage GetBooking Error decoding Driver destination route into GeoJSON"
log.Error().Err(err).Msg(errMsg)
return nil, errors.New(errMsg + err.Error())
}
passenger, err := s.GetPassenger(booking.Passenger.ID)
if err != nil {
errMsg := "Postgresql Storage GetBooking Error getting passenger"
log.Error().Err(err).Msg(errMsg)
return bookings, errors.New(errMsg + err.Error())
}
booking.Passenger = passenger.Passenger
driver, err := s.GetDriver(booking.Driver.ID)
if err != nil {
errMsg := "Postgresql Storage GetBooking Error getting driver"
log.Error().Err(err).Msg(errMsg)
return bookings, errors.New(errMsg + err.Error())
}
booking.Driver = driver.Driver
bookings = append(bookings, booking)
}
return bookings, nil
}
func (s PostgresqlStorage) UpdateBookingStatus(id string, status internal.BookingStatus) (err error) {
_, err = uuid.Parse(id)
if err != nil {

View File

@@ -17,6 +17,7 @@ type Storage interface {
CreateBooking(booking internal.BookingRequest) (err error)
UpdateBookingStatus(id string, status internal.BookingStatus) (err error)
FilterUserBookingsByStatus(user_type string, status internal.BookingStatus, user_id string) (bookings []internal.Booking, err error)
GetAllBookingsSolidarity() (passengers []internal.Booking, err error)
DriverJourneys(departure_route *geojson.Feature, departure_date int64) (drivers []internal.Driver, err error)
GetAllDriversByDate(date int64) (drivers []internal.Driver, err error)
GetAllDrivers() (drivers []internal.Driver, err error)