From ab02f8e635587d57d1b58eba47f7df573d812a62 Mon Sep 17 00:00:00 2001 From: Muyao CHEN Date: Wed, 10 Jul 2024 12:35:16 +0200 Subject: [PATCH] Connecting handlers to new database functions --- internal/handlers/handlers.go | 45 +++++++++++++++++++++++++++++++-- templates/choose-room.page.tmpl | 17 +++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 templates/choose-room.page.tmpl diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go index 23fd440..bb52d6c 100644 --- a/internal/handlers/handlers.go +++ b/internal/handlers/handlers.go @@ -2,7 +2,6 @@ package handlers import ( "encoding/json" - "fmt" "go-udemy-web-1/internal/config" "go-udemy-web-1/internal/driver" "go-udemy-web-1/internal/forms" @@ -190,7 +189,49 @@ func (m *Repository) Availability(w http.ResponseWriter, r *http.Request) { func (m *Repository) PostAvailability(w http.ResponseWriter, r *http.Request) { start := r.Form.Get("start") end := r.Form.Get("end") - fmt.Fprintf(w, "Posted to search availability from %s to %s", start, end) + + layout := "2006-01-02" + startDate, err := time.Parse(layout, start) + if err != nil { + helpers.ServerError(w, err) + return + } + endDate, err := time.Parse(layout, end) + if err != nil { + helpers.ServerError(w, err) + return + } + + rooms, err := m.DB.SearchAvailabilityForAllRooms(startDate, endDate) + if err != nil { + helpers.ServerError(w, err) + return + } + + for _, i := range rooms { + m.App.InfoLog.Println("ROOM:", i.ID, i.RoomName) + } + + if len(rooms) == 0 { + // No availability + m.App.InfoLog.Println("No availability") + m.App.Session.Put(r.Context(), "error", "No availability") + http.Redirect(w, r, "/search-availability", http.StatusSeeOther) + } + + data := make(map[string]interface{}) + data["rooms"] = rooms + + res := models.Reservation{ + StartDate: startDate, + EndDate: endDate, + } + + m.App.Session.Put(r.Context(), "reservation", res) + + render.Template(w, r, "choose-room.page.tmpl", &models.TemplateData{ + Data: data, + }) } type responseJSON struct { diff --git a/templates/choose-room.page.tmpl b/templates/choose-room.page.tmpl new file mode 100644 index 0000000..4673df4 --- /dev/null +++ b/templates/choose-room.page.tmpl @@ -0,0 +1,17 @@ +{{template "base" .}} +{{define "content"}} +
+
+
+

Choose a Room

+ + {{$rooms := index .Data "rooms"}} + + {{range $rooms}} + {{.RoomName}}
+ {{end}} +
+
+
+{{end}} +