initial commit
This commit is contained in:
73
handler/bookings.go
Normal file
73
handler/bookings.go
Normal file
@@ -0,0 +1,73 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"git.coopgo.io/coopgo-platform/solidarity-transport/types"
|
||||
"github.com/google/uuid"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
func (h Handler) BookDriverJourney(passengerid string, driverid string, journeyid string) error {
|
||||
journey, err := h.Storage.GetDriverJourney(journeyid)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("could not find driver journey")
|
||||
return err
|
||||
}
|
||||
|
||||
if journey.DriverId != driverid {
|
||||
return errors.New("not authorized : journey id driver and driverid mismatch")
|
||||
}
|
||||
|
||||
booking := types.Booking{
|
||||
Id: uuid.NewString(),
|
||||
GroupId: uuid.NewString(),
|
||||
Status: "WAITING_CONFIRMATION",
|
||||
PassengerId: passengerid,
|
||||
DriverId: driverid,
|
||||
Journey: journey,
|
||||
}
|
||||
|
||||
if err := h.Storage.CreateBooking(booking); err != nil {
|
||||
log.Error().Err(err).Msg("error creating booking")
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h Handler) GetBookings(startdate time.Time, enddate time.Time) ([]*types.Booking, error) {
|
||||
res := []*types.Booking{}
|
||||
|
||||
bookings, err := h.Storage.GetAllBookings()
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("error retrieving bookings")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, b := range bookings {
|
||||
if b.Journey.DriverDepartureDate.After(startdate) && b.Journey.DriverDepartureDate.Before(enddate) {
|
||||
res = append(res, b)
|
||||
}
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (h Handler) GetBooking(id string) (*types.Booking, error) {
|
||||
booking, err := h.Storage.GetBooking(id)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("could not get booking")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return booking, nil
|
||||
}
|
||||
|
||||
func (h Handler) UpdateBookingStatus(bookingid string, newStatus string) error {
|
||||
if err := h.Storage.UpdateBookingStatus(bookingid, newStatus); err != nil {
|
||||
log.Error().Err(err).Msg("could not update booking")
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user