package ktmtrainbot import ( "errors" "log" "time" "git.samuelpua.com/telboon/ktm-train-bot/backend/internal/user" "github.com/google/uuid" ) func (env *Env) createBooking( user *user.User, travelDate time.Time, timeCode string, name string, gender string, passport string, passportExpiry time.Time, contact string, ) (*Booking, error) { var newBooking Booking newBooking.User = *user newBooking.TravelDate = travelDate newBooking.TimeCode = timeCode newBooking.Name = name newBooking.Gender = gender newBooking.Passport = passport newBooking.PassportExpiry = passportExpiry newBooking.Status = "pending" err := env.DB.Create(&newBooking).Error if err != nil { log.Println(err) return nil, errors.New("failed create new booking") } return &newBooking, nil } func (env *Env) getAllBooking(user *user.User) ([]Booking, error) { var booking []Booking err := env.DB.Where("user_id = ?", user.ID).Order("court_weekday asc").Find(&booking).Error if err != nil { log.Println(err) return nil, errors.New("failed get booking") } return booking, nil } func (env *Env) deleteBooking( user *user.User, bookingIDStr string, ) (*Booking, error) { var newBooking Booking bookingID, err := uuid.Parse(bookingIDStr) if err != nil { log.Println(err) return nil, errors.New("invalid uuid") } err = env.DB.Where(&Booking{ID: bookingID}).Where("user_id = ?", user.ID).First(&newBooking).Error if err != nil { log.Println(err) return nil, errors.New("failed retrieve booking") } err = env.DB.Delete(&newBooking).Error if err != nil { log.Println(err) return nil, errors.New("failed to delete booking") } return &newBooking, nil }