70 lines
2.0 KiB
Go
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
|
|
}
|
|
}
|
|
}
|