You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

82 lines
1.6 KiB

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
}