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
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
|
|
}
|