|
@@ -5,13 +5,13 @@ import (
|
|
|
"fmt"
|
|
|
"html/template"
|
|
|
"io/ioutil"
|
|
|
+ "log"
|
|
|
"net/http"
|
|
|
- "sort"
|
|
|
- "strings"
|
|
|
|
|
|
"github.com/gorilla/mux"
|
|
|
"github.com/gorilla/schema"
|
|
|
"gogs.carducci-dante.gov.it/karmen/core/orm"
|
|
|
+ "gogs.carducci-dante.gov.it/karmen/core/renderer"
|
|
|
"gogs.carducci-dante.gov.it/karmen/datasource/edt"
|
|
|
)
|
|
|
|
|
@@ -29,53 +29,24 @@ WHERE activities.teacher_id=?`
|
|
|
|
|
|
func teachersHandler() http.Handler {
|
|
|
fn := func(w http.ResponseWriter, r *http.Request) {
|
|
|
- var teachers []*orm.Teacher
|
|
|
- if err := orm.DB().Find(&teachers).Error; err != nil {
|
|
|
- panic(err)
|
|
|
- }
|
|
|
- for _, teacher := range teachers {
|
|
|
- orm.DB().Raw(selectUniqueTeacherClasses, teacher.ID).Scan(&teacher.Classes)
|
|
|
- orm.DB().Raw(selectUniqueTeacherSubjects, teacher.ID).Scan(&teacher.Subjects)
|
|
|
+ teachers, err := orm.GetTeachersAll()
|
|
|
+ if err != nil {
|
|
|
+ renderer.Render[r.URL.Query()["format"][0]](w, r, err)
|
|
|
+ } else {
|
|
|
+ renderer.Render[r.URL.Query()["format"][0]](w, r, teachers, r.URL.Query())
|
|
|
}
|
|
|
- sort.Slice(teachers, func(i, j int) bool {
|
|
|
- return strings.ToLower(teachers[i].Surname) < strings.ToLower(teachers[j].Surname)
|
|
|
- })
|
|
|
- // if err := renderer.Render(w, "base", "teachers", teachers); err != nil {
|
|
|
- // panic(err)
|
|
|
- // }
|
|
|
}
|
|
|
return http.HandlerFunc(fn)
|
|
|
}
|
|
|
|
|
|
func teacherShowHandler() http.Handler {
|
|
|
fn := func(w http.ResponseWriter, r *http.Request) {
|
|
|
- var teacher orm.Teacher
|
|
|
-
|
|
|
- if err := orm.DB().First(&teacher, mux.Vars(r)["id"]).Error; err != nil {
|
|
|
- panic(err)
|
|
|
+ teacher, err := orm.GetTeacher(mux.Vars(r)["id"])
|
|
|
+ if err != nil {
|
|
|
+ renderer.Render[r.URL.Query()["format"][0]](w, r, err)
|
|
|
+ } else {
|
|
|
+ renderer.Render[r.URL.Query()["format"][0]](w, r, teacher, r.URL.Query())
|
|
|
}
|
|
|
-
|
|
|
- orm.DB().Raw(selectUniqueTeacherClasses, mux.Vars(r)["id"]).Scan(&teacher.Classes)
|
|
|
-
|
|
|
- sort.Slice(teacher.Classes, func(i, j int) bool {
|
|
|
- return strings.ToLower(teacher.Classes[i].Name) < strings.ToLower(teacher.Classes[j].Name)
|
|
|
- })
|
|
|
-
|
|
|
- orm.DB().Raw(selectUniqueTeacherSubjects, mux.Vars(r)["id"]).Scan(&teacher.Subjects)
|
|
|
-
|
|
|
- sort.Slice(teacher.Subjects, func(i, j int) bool {
|
|
|
- return strings.ToLower(teacher.Subjects[i].Name) < strings.ToLower(teacher.Subjects[j].Name)
|
|
|
- })
|
|
|
-
|
|
|
- orm.DB().Table("activities").Select("*").Where("teacher_id = ?", mux.Vars(r)["id"]).Scan(&teacher.Activities)
|
|
|
-
|
|
|
- sort.Slice(teacher.Activities, func(i, j int) bool {
|
|
|
- return teacher.Activities[i].Hours < teacher.Activities[j].Hours
|
|
|
- })
|
|
|
-
|
|
|
- // if err := renderer.Render(w, "base", "teachers_show", teacher); err != nil {
|
|
|
- // panic(err)
|
|
|
- // }
|
|
|
}
|
|
|
return http.HandlerFunc(fn)
|
|
|
}
|
|
@@ -146,20 +117,13 @@ func teachersDeleteHandler() http.Handler {
|
|
|
func teacherUpdateHandler() http.Handler {
|
|
|
fn := func(w http.ResponseWriter, r *http.Request) {
|
|
|
if r.Method == "GET" {
|
|
|
- var data struct {
|
|
|
- Update bool
|
|
|
- SubmitUrl template.URL
|
|
|
- Teacher orm.Teacher
|
|
|
+ teacher, err := orm.GetTeacher(mux.Vars(r)["id"])
|
|
|
+ if err != nil {
|
|
|
+ renderer.Render[r.URL.Query()["format"][0]](w, r, err)
|
|
|
+ } else {
|
|
|
+ log.Println(r.URL.Query())
|
|
|
+ renderer.Render[r.URL.Query()["format"][0]](w, r, teacher, r.URL.Query())
|
|
|
}
|
|
|
-
|
|
|
- if err := orm.DB().First(&data.Teacher, mux.Vars(r)["id"]).Error; err != nil {
|
|
|
- panic(err)
|
|
|
- }
|
|
|
- data.Update = true
|
|
|
- data.SubmitUrl = template.URL(fmt.Sprintf("/teachers/%d/update", data.Teacher.ID))
|
|
|
- // if err := renderer.Render(w, "base", "teachers_add_update", data); err != nil {
|
|
|
- // panic(err)
|
|
|
- // }
|
|
|
} else if r.Method == "POST" {
|
|
|
var (
|
|
|
teacher orm.Teacher
|
|
@@ -197,7 +161,7 @@ func teacherUpdateHandler() http.Handler {
|
|
|
panic(err)
|
|
|
}
|
|
|
|
|
|
- http.Redirect(w, r, fmt.Sprintf("/teachers/%d", teacher.ID), http.StatusSeeOther)
|
|
|
+ http.Redirect(w, r, fmt.Sprintf("/teachers/%d?format=html&tpl_layout=base&tpl_content=teachers_show", teacher.ID), http.StatusSeeOther)
|
|
|
}
|
|
|
|
|
|
}
|