59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
package routing
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"lishwist/db"
|
|
"lishwist/env"
|
|
"lishwist/error"
|
|
"lishwist/templates"
|
|
)
|
|
|
|
type HomeProps struct {
|
|
Username string
|
|
Gifts []db.Gift
|
|
Todo []db.Gift
|
|
Reference string
|
|
HostUrl string
|
|
Groups []db.Group
|
|
}
|
|
|
|
func (ctx *Context) Home(w http.ResponseWriter, r *http.Request) {
|
|
user := ctx.ExpectUser(r)
|
|
gifts, err := user.GetGifts()
|
|
if err != nil {
|
|
error.Page(w, "An error occurred while fetching your wishlist :(", http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
todo, err := user.GetTodo()
|
|
if err != nil {
|
|
error.Page(w, "An error occurred while fetching your wishlist :(", http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
groups, err := user.GetGroups()
|
|
if err != nil {
|
|
error.Page(w, "An error occurred while fetching your wishlist :(", http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
p := HomeProps{Username: user.Name, Gifts: gifts, Todo: todo, Reference: user.Reference, HostUrl: env.HostUrl.String(), Groups: groups}
|
|
templates.Execute(w, "home.gotmpl", p)
|
|
}
|
|
|
|
func (ctx *Context) HomePost(w http.ResponseWriter, r *http.Request) {
|
|
if err := r.ParseForm(); err != nil {
|
|
http.Error(w, "Couldn't parse form", http.StatusBadRequest)
|
|
return
|
|
}
|
|
switch r.Form.Get("intent") {
|
|
case "add_idea":
|
|
ctx.WishlistAdd(w, r)
|
|
return
|
|
case "delete_idea":
|
|
ctx.WishlistDelete(w, r)
|
|
return
|
|
default:
|
|
ctx.TodoUpdate(w, r)
|
|
return
|
|
}
|
|
}
|