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 }