package webui
import (
"database/sql"
"html/template"
"net/http"
"sevenkeys/logic"
"strconv"
)
type BaseHandler struct {
db *sql.DB
}
func NewBaseHandler(db *sql.DB) *BaseHandler {
return &BaseHandler{
db: db,
}
}
func (h *BaseHandler) storageAreasHandler(w http.ResponseWriter, r *http.Request) {
storageAreas, err := logic.GetAllStorageAreas(h.db)
if err != nil {
return
}
const tmpl = `
Sevenkeys
{{range $val := .}}
{{$val.Name}} ({{$val.StorageType}})
{{end}}
`
t := template.Must(template.New("tmpl").Parse(tmpl))
t.Execute(w, storageAreas)
}
func (h *BaseHandler) storageHandler(w http.ResponseWriter, r *http.Request) {
storageAreaIdParam := r.PathValue("id")
storageAreaId, err := strconv.Atoi(storageAreaIdParam)
if err != nil {
return
}
productLocations, err := logic.GetAllProductsInStorageArea(h.db, storageAreaId)
if err != nil {
return
}
const tmpl = `
Sevenkeys
{{range $val := .}}
- {{$val}}
{{end}}
`
t := template.Must(template.New("tmpl").Parse(tmpl))
t.Execute(w, productLocations)
}
func Start(db *sql.DB) {
handlers := NewBaseHandler(db)
http.HandleFunc("/", handlers.storageAreasHandler)
http.HandleFunc("/storage/{id}", handlers.storageHandler)
http.ListenAndServe(":8080", nil)
}