|
@@ -18,14 +18,14 @@ import (
|
|
|
|
|
|
var (
|
|
|
selectUniqueTeacherClasses = `
|
|
|
-SELECT name FROM (SELECT activities.id,classes.name FROM activities
|
|
|
+SELECT DISTINCT classes.* FROM activities
|
|
|
INNER JOIN classes on classes.id=activities.class_id
|
|
|
-WHERE teacher_id=?) as grouped GROUP BY name`
|
|
|
+WHERE teacher_id=?`
|
|
|
|
|
|
selectUniqueTeacherSubjects = `
|
|
|
-SELECT name FROM (SELECT activities.id,subjects.name FROM activities
|
|
|
+SELECT DISTINCT subjects.* FROM activities
|
|
|
INNER JOIN subjects on subjects.id=activities.subject_id
|
|
|
-WHERE activities.teacher_id=?) as grouped GROUP BY name`
|
|
|
+WHERE activities.teacher_id=?`
|
|
|
)
|
|
|
|
|
|
func teachersHandler() http.Handler {
|
|
@@ -50,33 +50,31 @@ func teachersHandler() http.Handler {
|
|
|
|
|
|
func teacherShowHandler() http.Handler {
|
|
|
fn := func(w http.ResponseWriter, r *http.Request) {
|
|
|
- var data struct {
|
|
|
- Teacher orm.Teacher
|
|
|
- Subjects []orm.Subject
|
|
|
- Classes []orm.Class
|
|
|
- Activities []orm.Activity
|
|
|
- }
|
|
|
- if err := orm.DB().First(&data.Teacher, mux.Vars(r)["id"]).Error; err != nil {
|
|
|
- panic(err)
|
|
|
- }
|
|
|
+ var teacher orm.Teacher
|
|
|
|
|
|
- if err := orm.DB().Model(&data.Teacher).Related(&data.Subjects, "Subjects").Error; err != nil {
|
|
|
+ if err := orm.DB().First(&teacher, mux.Vars(r)["id"]).Error; err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
|
|
|
- if err := orm.DB().Model(&data.Teacher).Related(&data.Classes, "Classes").Error; err != nil {
|
|
|
- panic(err)
|
|
|
- }
|
|
|
- sort.Slice(data.Classes, func(i, j int) bool {
|
|
|
- return strings.ToLower(data.Classes[i].Name) < strings.ToLower(data.Classes[j].Name)
|
|
|
+ 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)
|
|
|
})
|
|
|
- if err := orm.DB().Model(&data.Teacher).Related(&data.Activities, "Activities").Error; err != nil {
|
|
|
- panic(err)
|
|
|
- }
|
|
|
- sort.Slice(data.Activities, func(i, j int) bool {
|
|
|
- return data.Activities[i].Hours > data.Activities[j].Hours
|
|
|
+
|
|
|
+ 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)
|
|
|
})
|
|
|
- if err := renderer.Render(w, "base", "teachers_show", data); err != nil {
|
|
|
+
|
|
|
+ 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)
|
|
|
}
|
|
|
}
|