cml04-falcon-ui/handlers/index.go
2024-10-23 10:06:35 +02:00

70 lines
2.0 KiB
Go

package handlers
import (
"net/http"
"text/template"
"time"
"git.espin.casa/albert/cml04-falcon-ui/helper"
"git.espin.casa/albert/cml04-falcon-ui/storage"
"git.espin.casa/albert/cml04-falcon-ui/types"
"github.com/julienschmidt/httprouter"
)
func IndexHandler(storage storage.Storager) httprouter.Handle {
type PageView struct {
Stats *types.Stats
BundlesATA12 []types.BundleData
BundlesATA345 []types.BundleData
BarcodesATA12 []types.Barcode
BarcodesATA345 []types.Barcode
}
return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
// get current shift dates
dates, err := helper.GetShiftDates(time.Now())
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// get ata12 shift bundles
bundles12, err := storage.ShiftListBundle(r.Context(), dates[0], dates[1], types.ATA12)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// get ata345 shift bundles
bundles345, err := storage.ShiftListBundle(r.Context(), dates[0], dates[1], types.ATA345)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// get ata12 shift barcodes
barcodesATA12, err := storage.ShiftListBarcode(r.Context(), dates[0], dates[1], types.ATA12)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// get ata345 shift barcodes
barcodesATA345, err := storage.ShiftListBarcode(r.Context(), dates[0], dates[1], types.ATA345)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// create view
view := &PageView{
Stats: &types.Stats{},
BundlesATA12: bundles12,
BundlesATA345: bundles345,
BarcodesATA12: barcodesATA12,
BarcodesATA345: barcodesATA345,
}
t, _ := template.ParseFiles("templates/base.html", "templates/index.html")
err = t.Execute(w, view)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
}