package server import ( "net/http" "time" "github.com/labstack/echo/v4" "github.com/labstack/gommon/log" "github.com/rjNemo/rentease/constants" "github.com/rjNemo/rentease/internal/views" ) func (s Server) handleHomePage() echo.HandlerFunc { return func(ctx echo.Context) error { component := views.Index() return s.renderTempl(ctx, http.StatusOK, component) } } func (s Server) handleNewBookingPage() echo.HandlerFunc { return func(c echo.Context) error { component := views.NewBooking(constants.Platforms) return s.renderTempl(c, http.StatusOK, component) } } func (s Server) handleCreateBooking() echo.HandlerFunc { return func(c echo.Context) error { type NewBooking struct { Name string `form:"name"` PhoneNumber string `form:"phone_number"` CustomerNumber string `form:"customer_number"` Email string `form:"email"` From time.Time `json:"from"` To time.Time `from:"to"` Platform string `form:"platform"` PlatformFees string `form:"platform_fees"` } nb := new(NewBooking) err := c.Bind(nb) if err != nil { log.Warn(err) return err } ts, err := parseTime(c.FormValue("from")) nb.From = ts ts, err = parseTime(c.FormValue("to")) nb.To = ts type Booking struct { Id int Name string `gorm:"column:customer_name"` PhoneNumber string CustomerNumber string `gorm:"column:customers"` Email string From time.Time To time.Time Platform string PlatformFees string } // create a booking object result := s.db.Create(&Booking{ Name: nb.Name, PhoneNumber: nb.PhoneNumber, CustomerNumber: nb.CustomerNumber, Email: nb.Email, From: nb.From, To: nb.To, Platform: nb.Platform, PlatformFees: nb.PlatformFees, }) log.Info(result.Error) log.Info(result.RowsAffected) // store it // redirect to the booking page return nil } } func parseTime(src string) (time.Time, error) { ts, err := time.Parse("2006-01-02", src) if err != nil { return time.Time{}, err } return ts, nil }