111 lines
4.1 KiB
Go
111 lines
4.1 KiB
Go
package server
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/proto/gen"
|
|
"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/transformers"
|
|
"github.com/rs/zerolog/log"
|
|
"google.golang.org/grpc/codes"
|
|
"google.golang.org/grpc/status"
|
|
)
|
|
|
|
func (s SolidarityTransportServerImpl) BookDriverJourney(ctx context.Context, req *gen.BookDriverJourneyRequest) (*gen.BookDriverJourneyResponse, error) {
|
|
passengerId := req.PassengerId
|
|
driverId := req.DriverId
|
|
journeyId := req.DriverJourneyId
|
|
priceAmount := req.PriceAmount
|
|
priceCurrency := req.PriceCurrency
|
|
returnWaitingDuration := time.Duration(req.ReturnWaitingDuration)
|
|
data := req.Data.AsMap()
|
|
|
|
booking, err := s.Handler.BookDriverJourney(passengerId, driverId, journeyId, returnWaitingDuration, priceAmount, priceCurrency, data)
|
|
if err != nil {
|
|
log.Error().Err(err).Msg("issue in BookDriverJourney handler")
|
|
return nil, status.Errorf(codes.Internal, "could not create booking : %v", err)
|
|
}
|
|
bookingresp, err := transformers.BookingTypeToProto(booking)
|
|
if err != nil {
|
|
log.Error().Err(err).Msg("transformation error")
|
|
}
|
|
return &gen.BookDriverJourneyResponse{
|
|
Booking: bookingresp,
|
|
}, nil
|
|
}
|
|
|
|
func (s SolidarityTransportServerImpl) GetSolidarityTransportBookings(ctx context.Context, req *gen.GetSolidarityTransportBookingsRequest) (*gen.GetSolidarityTransportBookingsResponse, error) {
|
|
startdate := req.StartDate.AsTime()
|
|
enddate := req.EndDate.AsTime()
|
|
passengerid := req.Passengerid
|
|
driverid := req.Driverid
|
|
bookings, err := s.Handler.GetBookings(startdate, enddate, passengerid, driverid)
|
|
if err != nil {
|
|
log.Error().Err(err).Msg("issue in GetBookings handler")
|
|
return nil, status.Errorf(codes.NotFound, "could not get bookings : %v", err)
|
|
}
|
|
|
|
protobookings := []*gen.SolidarityTransportBooking{}
|
|
for _, b := range bookings {
|
|
protobooking, _ := transformers.BookingTypeToProto(b)
|
|
protobookings = append(protobookings, protobooking)
|
|
}
|
|
|
|
log.Debug().Any("bookings", protobookings).Msg("bookings")
|
|
|
|
return &gen.GetSolidarityTransportBookingsResponse{
|
|
Bookings: protobookings,
|
|
}, nil
|
|
}
|
|
|
|
func (s SolidarityTransportServerImpl) GetSolidarityTransportBooking(ctx context.Context, req *gen.GetSolidarityTransportBookingRequest) (*gen.GetSolidarityTransportBookingResponse, error) {
|
|
bookingid := req.Id
|
|
|
|
booking, err := s.Handler.GetBooking(bookingid)
|
|
if err != nil {
|
|
log.Error().Err(err).Msg("issue in GetBooking handler")
|
|
return nil, status.Errorf(codes.NotFound, "could not get booking : %v", err)
|
|
}
|
|
|
|
bookingproto, err := transformers.BookingTypeToProto(booking)
|
|
if err != nil {
|
|
log.Error().Err(err).Msg("issue in GetBooking handler")
|
|
return nil, status.Errorf(codes.NotFound, "transformer issue on booking : %v", err)
|
|
}
|
|
|
|
return &gen.GetSolidarityTransportBookingResponse{
|
|
Booking: bookingproto,
|
|
}, nil
|
|
}
|
|
|
|
func (s SolidarityTransportServerImpl) UpdateSolidarityTransportBooking(ctx context.Context, req *gen.UpdateSolidarityTransportBookingRequest) (*gen.UpdateSolidarityTransportBookingResponse, error) {
|
|
booking := req.Booking
|
|
b, err := transformers.BookingProtoToType(booking)
|
|
if err != nil || b == nil {
|
|
log.Error().Err(err).Msg("issue in UpdateBooking handler")
|
|
return nil, status.Errorf(codes.NotFound, "cannot update booking : %v", err)
|
|
}
|
|
|
|
err = s.Handler.UpdateBooking(*b)
|
|
if err != nil {
|
|
log.Error().Err(err).Msg("issue in UpdateBooking handler")
|
|
return nil, status.Errorf(codes.NotFound, "issue on update booking : %v", err)
|
|
}
|
|
|
|
return &gen.UpdateSolidarityTransportBookingResponse{}, nil
|
|
}
|
|
|
|
func (s SolidarityTransportServerImpl) UpdateSolidarityTransportBookingStatus(ctx context.Context, req *gen.UpdateSolidarityTransportBookingStatusRequest) (*gen.UpdateSolidarityTransportBookingStatusResponse, error) {
|
|
bookingid := req.BookingId
|
|
newStatus := req.NewStatus
|
|
reason := req.Reason
|
|
|
|
err := s.Handler.UpdateBookingStatus(bookingid, newStatus, reason)
|
|
if err != nil {
|
|
log.Error().Err(err).Msg("issue in UpdateBookingStatus handler")
|
|
return nil, status.Errorf(codes.NotFound, "transformer issue on booking : %v", err)
|
|
}
|
|
|
|
return &gen.UpdateSolidarityTransportBookingStatusResponse{}, nil
|
|
}
|