12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package api
- import (
- "fmt"
- "log"
- "net/http"
- "gogs.carducci-dante.gov.it/karmen/core/renderer"
- "gogs.carducci-dante.gov.it/karmen/orm"
- )
- func dashboardHandler() http.Handler {
- fn := func(w http.ResponseWriter, r *http.Request) {
- var (
- teachers []orm.Teacher
- classes []orm.Class
- subjects []orm.Subject
- activities []orm.Activity
- data struct {
- NumOfTeachers int
- NumOfSubjects int
- NumOfClasses int
- NumOfActivities int
- Issues []orm.Issue
- }
- )
- if err := orm.DB().Preload("Teacher").Find(&data.Issues).Error; err != nil {
- panic(err)
- }
- if err := orm.DB().Find(&teachers).Error; err != nil {
- panic(err)
- }
- if err := orm.DB().Find(&classes).Error; err != nil {
- panic(err)
- }
- if err := orm.DB().Find(&activities).Error; err != nil {
- panic(err)
- }
- if err := orm.DB().Find(&subjects).Error; err != nil {
- panic(err)
- }
- data.NumOfTeachers = len(teachers)
- data.NumOfActivities = len(activities)
- data.NumOfSubjects = len(subjects)
- data.NumOfClasses = len(classes)
- if r.URL.Query().Get("reload_issues") == "true" {
- log.Println("Reloading issues...")
- for _, teacher := range teachers {
- teacher.CalcHours(orm.DB())
- orm.DB().Where("teacher_id = ?", teacher.ID).Delete(&orm.Issue{})
- teacher.CheckForIssues(orm.DB())
- }
- http.Redirect(w, r, fmt.Sprintf("/"), http.StatusSeeOther)
- }
- if err := renderer.Render(w, "base", "dashboard", data); err != nil {
- panic(err)
- }
- }
- return http.HandlerFunc(fn)
- }
|