dashboard.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package api
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. "gogs.carducci-dante.gov.it/karmen/core/orm"
  7. )
  8. func dashboardHandler() http.Handler {
  9. fn := func(w http.ResponseWriter, r *http.Request) {
  10. var (
  11. teachers []orm.Teacher
  12. classes []orm.Class
  13. subjects []orm.Subject
  14. activities []orm.Activity
  15. data struct {
  16. NumOfTeachers int
  17. NumOfSubjects int
  18. NumOfClasses int
  19. NumOfActivities int
  20. Issues []orm.Issue
  21. }
  22. )
  23. if err := orm.DB().Preload("Teacher").Find(&data.Issues).Error; err != nil {
  24. panic(err)
  25. }
  26. if err := orm.DB().Find(&teachers).Error; err != nil {
  27. panic(err)
  28. }
  29. if err := orm.DB().Find(&classes).Error; err != nil {
  30. panic(err)
  31. }
  32. if err := orm.DB().Find(&activities).Error; err != nil {
  33. panic(err)
  34. }
  35. if err := orm.DB().Find(&subjects).Error; err != nil {
  36. panic(err)
  37. }
  38. data.NumOfTeachers = len(teachers)
  39. data.NumOfActivities = len(activities)
  40. data.NumOfSubjects = len(subjects)
  41. data.NumOfClasses = len(classes)
  42. if r.URL.Query().Get("reload_issues") == "true" {
  43. log.Println("Reloading issues...")
  44. for _, teacher := range teachers {
  45. teacher.CalcHours(orm.DB())
  46. orm.DB().Where("teacher_id = ?", teacher.ID).Delete(&orm.Issue{})
  47. teacher.CheckForIssues(orm.DB())
  48. }
  49. http.Redirect(w, r, fmt.Sprintf("/"), http.StatusSeeOther)
  50. }
  51. // if err := renderer.Render(w, "base", "dashboard", data); err != nil {
  52. // panic(err)
  53. // }
  54. }
  55. return http.HandlerFunc(fn)
  56. }