浏览代码

Remove old handlers

Andrea Fazzi 6 年之前
父节点
当前提交
9f8f7548f2
共有 6 个文件被更改,包括 57 次插入595 次删除
  1. 57 25
      handlers/handlers.go
  2. 0 113
      handlers/school.go
  3. 0 202
      handlers/subjects.go
  4. 0 67
      handlers/teachers.go
  5. 0 102
      handlers/teachers_classes.go
  6. 0 86
      handlers/teachers_subjects.go

+ 57 - 25
handlers/handlers.go

@@ -66,31 +66,6 @@ func Handlers() *mux.Router {
 		generateHandler(r, model)
 	}
 
-	// // Subjects
-
-	// r.Handle("/subjects", jwtMiddleware.Handler(recoverHandler(subjectsHandler())))
-	// r.Handle("/subjects/add", jwtMiddleware.Handler(recoverHandler(subjectsAddHandler()))).Methods("GET", "POST")
-	// r.Handle("/subjects/{id}", jwtMiddleware.Handler(recoverHandler(subjectsShowHandler()))).Methods("GET")
-	// r.Handle("/subjects/{id}/update", jwtMiddleware.Handler(recoverHandler(subjectsUpdateHandler()))).Methods("GET", "POST")
-	// r.Handle("/subjects/{id}/delete", jwtMiddleware.Handler(recoverHandler(subjectsDeleteHandler()))).Methods("DELETE")
-	// r.Handle("/subjects/import", jwtMiddleware.Handler(recoverHandler(subjectsImportHandler()))).Methods("POST")
-
-	// // Activities
-
-	// r.Handle("/activities", jwtMiddleware.Handler(recoverHandler(activitiesHandler())))
-	// r.Handle("/activities/add", jwtMiddleware.Handler(recoverHandler(activitiesAddHandler()))).Methods("GET", "POST")
-	// r.Handle("/activities/{id}/update", jwtMiddleware.Handler(recoverHandler(activitiesUpdateHandler()))).Methods("GET", "POST")
-	// r.Handle("/activities/{id}/delete", jwtMiddleware.Handler(recoverHandler(activitiesDeleteHandler()))).Methods("DELETE")
-
-	// // Classes
-
-	// r.Handle("/classes", jwtMiddleware.Handler(recoverHandler(classesHandler())))
-	// r.Handle("/classes/add", jwtMiddleware.Handler(recoverHandler(classesAddHandler()))).Methods("GET", "POST")
-	// r.Handle("/classes/{id}", jwtMiddleware.Handler(recoverHandler(classesShowHandler()))).Methods("GET")
-	// r.Handle("/classes/{id}/update", jwtMiddleware.Handler(recoverHandler(classesUpdateHandler()))).Methods("GET", "POST")
-	// r.Handle("/classes/{id}/delete", jwtMiddleware.Handler(recoverHandler(classesDeleteHandler()))).Methods("DELETE")
-	// r.Handle("/classes/import", jwtMiddleware.Handler(recoverHandler(classesImportHandler()))).Methods("POST")
-
 	// Static file server
 
 	r.PathPrefix("/").Handler(http.FileServer(http.Dir("./dist/")))
@@ -139,3 +114,60 @@ func recoverHandler(next http.Handler) http.Handler {
 	}
 	return http.HandlerFunc(fn)
 }
+
+func generalHandler(base, path string) http.Handler {
+	fn := func(w http.ResponseWriter, r *http.Request) {
+		var (
+			ok     bool
+			getFn  orm.GetFn
+			postFn orm.PostFn
+		)
+		if r.Method == "GET" {
+			getFn, ok = orm.Get[path]
+		} else {
+			postFn, ok = orm.Post[path]
+		}
+		if !ok {
+			renderer.Render[r.URL.Query()["format"][0]](w, r, fmt.Errorf("Can't find ORM function for path %s!", path))
+		} else {
+			if r.Method == "GET" {
+				data, err := getFn(mux.Vars(r))
+				if err != nil {
+					renderer.Render[r.URL.Query()["format"][0]](w, r, err)
+				} else {
+					renderer.Render[r.URL.Query()["format"][0]](w, r, data, r.URL.Query())
+				}
+			} else {
+				data, err := postFn(mux.Vars(r), r)
+				if err != nil {
+					renderer.Render["html"](w, r, err)
+				} else {
+					if mux.Vars(r)["id"] != "" {
+						http.Redirect(w, r,
+							fmt.Sprintf(
+								"/%s/%s?format=html&tpl_layout=base&tpl_content=%s_show",
+								base,
+								mux.Vars(r)["id"],
+								base,
+							),
+							http.StatusSeeOther,
+						)
+					} else {
+						http.Redirect(w, r,
+							fmt.Sprintf(
+								"/%s/%d?format=html&tpl_layout=base&tpl_content=%s_show",
+								base,
+								data.GetID(),
+								base,
+							),
+							http.StatusSeeOther,
+						)
+					}
+
+				}
+			}
+		}
+	}
+
+	return http.HandlerFunc(fn)
+}

+ 0 - 113
handlers/school.go

@@ -1,113 +0,0 @@
-package api
-
-import (
-	"net/http"
-
-	"github.com/gorilla/mux"
-	"github.com/gorilla/schema"
-	"gogs.carducci-dante.gov.it/karmen/core/orm"
-)
-
-func schoolShowHandler() 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 {
-				School          orm.School
-				NumOfTeachers   int
-				NumOfSubjects   int
-				NumOfClasses    int
-				NumOfActivities int
-				Issues          []orm.Issue
-			}
-		)
-
-		if !orm.DB().First(&data.School, mux.Vars(r)["id"]).RecordNotFound() {
-			if err := orm.DB().First(&data.School, mux.Vars(r)["id"]).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 err := renderer.Render(w, "base", "school_show", data); err != nil {
-		// 	panic(err)
-		// }
-	}
-	return http.HandlerFunc(fn)
-}
-
-func saveSchool(r *http.Request, school *orm.School) {
-	if err := r.ParseForm(); err != nil {
-		panic(err)
-	}
-
-	decoder := schema.NewDecoder()
-	if err := decoder.Decode(school, r.PostForm); err != nil {
-		panic(err)
-	}
-
-	if err := orm.DB().Save(school).Error; err != nil {
-		panic(err)
-	}
-
-}
-
-func schoolUpdateHandler() http.Handler {
-	fn := func(w http.ResponseWriter, r *http.Request) {
-		if r.Method == "GET" {
-			var data struct {
-				Update bool
-				School orm.School
-			}
-
-			if !orm.DB().First(&data.School, mux.Vars(r)["id"]).RecordNotFound() {
-				if err := orm.DB().First(&data.School, mux.Vars(r)["id"]).Error; err != nil {
-					panic(err)
-				}
-			}
-
-			data.Update = true
-
-			// if err := renderer.Render(w, "base", "school_update", data); err != nil {
-			// 	panic(err)
-			// }
-		} else if r.Method == "POST" {
-			var school orm.School
-
-			if !orm.DB().First(&school, mux.Vars(r)["id"]).RecordNotFound() {
-				if err := orm.DB().First(&school, mux.Vars(r)["id"]).Error; err != nil {
-					panic(err)
-				}
-			}
-
-			saveSchool(r, &school)
-
-			http.Redirect(w, r, "/school/1", http.StatusSeeOther)
-		}
-
-	}
-	return http.HandlerFunc(fn)
-}

+ 0 - 202
handlers/subjects.go

@@ -1,202 +0,0 @@
-package api
-
-import (
-	"encoding/json"
-	"fmt"
-	"html/template"
-	"io/ioutil"
-	"net/http"
-
-	"github.com/gorilla/mux"
-	"github.com/gorilla/schema"
-
-	"gogs.carducci-dante.gov.it/karmen/core/orm"
-	"gogs.carducci-dante.gov.it/karmen/datasource/edt"
-)
-
-var (
-	selectUniqueSubjectTeachers = `
-SELECT DISTINCT teachers.* FROM activities 
-INNER JOIN subjects ON subjects.id=activities.subject_id 
-INNER JOIN teachers on teachers.id=activities.teacher_id
-WHERE subject_id=? GROUP BY activities.teacher_id ORDER BY teachers.Surname;
-`
-)
-
-func subjectsHandler() http.Handler {
-	fn := func(w http.ResponseWriter, r *http.Request) {
-		var subjects []*orm.Subject
-
-		if err := orm.DB().Order("name").Find(&subjects).Error; err != nil {
-			panic(err)
-		}
-
-		for _, subject := range subjects {
-			orm.DB().Raw(selectUniqueSubjectTeachers, subject.ID).Scan(&subject.Teachers)
-		}
-
-		// if err := renderer.Render(w, "base", "subjects", subjects); err != nil {
-		// 	panic(err)
-		// }
-	}
-	return http.HandlerFunc(fn)
-}
-
-func subjectsShowHandler() http.Handler {
-	fn := func(w http.ResponseWriter, r *http.Request) {
-		var subject orm.Subject
-
-		if err := orm.DB().First(&subject, mux.Vars(r)["id"]).Error; err != nil {
-			panic(err)
-		}
-
-		orm.DB().Raw(selectUniqueSubjectTeachers, mux.Vars(r)["id"]).Scan(&subject.Teachers)
-
-		// if err := renderer.Render(w, "base", "subjects_show", subject); err != nil {
-		// 	panic(err)
-		// }
-	}
-	return http.HandlerFunc(fn)
-}
-
-func subjectsAddHandler() http.Handler {
-	fn := func(w http.ResponseWriter, r *http.Request) {
-		if r.Method == "GET" {
-			var data struct {
-				Update    bool
-				SubmitUrl template.URL
-			}
-			data.SubmitUrl = template.URL(fmt.Sprintf("/subjects/add"))
-			// if err := renderer.Render(w, "base", "subjects_add_update", data); err != nil {
-			// 	panic(err)
-			// }
-		} else if r.Method == "POST" {
-			var subject orm.Subject
-			if err := r.ParseForm(); err != nil {
-				panic(err)
-			}
-
-			decoder := schema.NewDecoder()
-			if err := decoder.Decode(&subject, r.PostForm); err != nil {
-				panic(err)
-			}
-
-			orm.DB().NewRecord(subject)
-
-			if err := orm.DB().Create(&subject).Error; err != nil {
-				panic(err)
-			}
-
-			http.Redirect(w, r, fmt.Sprintf("/subjects/%d", subject.ID), http.StatusSeeOther)
-		}
-
-	}
-	return http.HandlerFunc(fn)
-}
-
-func subjectsDeleteHandler() http.Handler {
-	fn := func(w http.ResponseWriter, r *http.Request) {
-		var subject orm.Subject
-		if err := orm.DB().First(&subject, mux.Vars(r)["id"]).Error; err != nil {
-			panic(err)
-		}
-
-		if err := orm.DB().Delete(&subject).Error; err != nil {
-			panic(err)
-		}
-
-		var data struct {
-			RedirectUrl string `json:"redirect_url"`
-		}
-
-		data.RedirectUrl = "/subjects"
-
-		w.Header().Set("Content-Type", "application/json")
-		json.NewEncoder(w).Encode(data)
-	}
-	return http.HandlerFunc(fn)
-}
-
-func subjectsUpdateHandler() http.Handler {
-	fn := func(w http.ResponseWriter, r *http.Request) {
-		if r.Method == "GET" {
-			var data struct {
-				Update    bool
-				SubmitUrl template.URL
-				Subject   orm.Subject
-			}
-
-			if err := orm.DB().First(&data.Subject, mux.Vars(r)["id"]).Error; err != nil {
-				panic(err)
-			}
-			data.Update = true
-			data.SubmitUrl = template.URL(fmt.Sprintf("/subjects/%d/update", data.Subject.ID))
-			// if err := renderer.Render(w, "base", "subjects_add_update", data); err != nil {
-			// 	panic(err)
-			// }
-		} else if r.Method == "POST" {
-			var subject orm.Subject
-
-			if err := orm.DB().First(&subject, mux.Vars(r)["id"]).Error; err != nil {
-				panic(err)
-			}
-
-			if err := r.ParseForm(); err != nil {
-				panic(err)
-			}
-
-			decoder := schema.NewDecoder()
-			if err := decoder.Decode(&subject, r.PostForm); err != nil {
-				panic(err)
-			}
-
-			if err := orm.DB().Save(&subject).Error; err != nil {
-				panic(err)
-			}
-
-			var data struct {
-				Subjects []*orm.Subject
-			}
-
-			data.Subjects = make([]*orm.Subject, 0)
-			if err := orm.DB().Find(&data.Subjects).Error; err != nil {
-				panic(err)
-			}
-
-			// if err := renderer.Render(w, "base", "subjects", data); err != nil {
-			// 	panic(err)
-			// }
-		}
-
-	}
-	return http.HandlerFunc(fn)
-}
-
-func subjectsImportHandler() http.Handler {
-	fn := func(w http.ResponseWriter, r *http.Request) {
-		r.ParseMultipartForm(32 << 20)
-		file, _, err := r.FormFile("subjects_import")
-		if err != nil {
-			panic(err)
-		}
-		defer file.Close()
-		data, err := ioutil.ReadAll(file)
-		if err != nil {
-			panic(err)
-		}
-		if importer, err := edt.NewImporter(
-			string(data),
-			map[string]string{
-				"NOME": "name",
-			},
-		); err != nil {
-			panic(err)
-		} else {
-			if err := orm.Import(&orm.Subject{}, importer); err != nil {
-				panic(err)
-			}
-			http.Redirect(w, r, "/subjects", http.StatusSeeOther)
-		}
-	}
-	return http.HandlerFunc(fn)
-}

+ 0 - 67
handlers/teachers.go

@@ -1,67 +0,0 @@
-package api
-
-import (
-	"fmt"
-	"net/http"
-
-	"github.com/gorilla/mux"
-	"gogs.carducci-dante.gov.it/karmen/core/orm"
-	"gogs.carducci-dante.gov.it/karmen/core/renderer"
-)
-
-func generalHandler(base, path string) http.Handler {
-	fn := func(w http.ResponseWriter, r *http.Request) {
-		var (
-			ok     bool
-			getFn  orm.GetFn
-			postFn orm.PostFn
-		)
-		if r.Method == "GET" {
-			getFn, ok = orm.Get[path]
-		} else {
-			postFn, ok = orm.Post[path]
-		}
-		if !ok {
-			renderer.Render[r.URL.Query()["format"][0]](w, r, fmt.Errorf("Can't find ORM function for path %s!", path))
-		} else {
-			if r.Method == "GET" {
-				data, err := getFn(mux.Vars(r))
-				if err != nil {
-					renderer.Render[r.URL.Query()["format"][0]](w, r, err)
-				} else {
-					renderer.Render[r.URL.Query()["format"][0]](w, r, data, r.URL.Query())
-				}
-			} else {
-				data, err := postFn(mux.Vars(r), r)
-				if err != nil {
-					renderer.Render["html"](w, r, err)
-				} else {
-					if mux.Vars(r)["id"] != "" {
-						http.Redirect(w, r,
-							fmt.Sprintf(
-								"/%s/%s?format=html&tpl_layout=base&tpl_content=%s_show",
-								base,
-								mux.Vars(r)["id"],
-								base,
-							),
-							http.StatusSeeOther,
-						)
-					} else {
-						http.Redirect(w, r,
-							fmt.Sprintf(
-								"/%s/%d?format=html&tpl_layout=base&tpl_content=%s_show",
-								base,
-								data.GetID(),
-								base,
-							),
-							http.StatusSeeOther,
-						)
-					}
-
-				}
-			}
-		}
-	}
-
-	return http.HandlerFunc(fn)
-}

+ 0 - 102
handlers/teachers_classes.go

@@ -1,102 +0,0 @@
-package api
-
-import (
-	"encoding/json"
-	"net/http"
-
-	"github.com/gorilla/mux"
-	"gogs.carducci-dante.gov.it/karmen/core/orm"
-)
-
-func teacherClassesAdd() 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)
-		}
-
-		var selected_classes struct {
-			Ids []string `json:"ids"`
-		}
-
-		if err := json.NewDecoder(r.Body).Decode(&selected_classes); err != nil {
-			panic(err)
-		}
-
-		var data struct {
-			Classes []orm.Class `json:"elements"`
-			Name1   string      `json:"name1"`
-			Name2   string      `json:"name2"`
-			Id1     uint        `json:"id1"`
-			Id2     []uint      `json:"id2"`
-		}
-
-		data.Name1 = "teachers"
-		data.Name2 = "classes"
-		data.Id1 = teacher.ID
-
-		for _, classId := range selected_classes.Ids {
-			var class orm.Class
-			if err := orm.DB().First(&class, classId).Error; err != nil {
-				panic(err)
-			}
-
-			// Check if the association exists
-			var output []orm.Class
-
-			if err := orm.DB().Model(&teacher).Where("class_id = ? and teacher_id = ?", classId, teacher.ID).Related(&output, "Classes").Error; err != nil {
-				panic(err)
-			}
-			if len(output) == 0 {
-				if err := orm.DB().Model(&teacher).Association("Classes").Append(&class).Error; err != nil {
-					panic(err)
-				}
-				data.Classes = append(data.Classes, class)
-				data.Id2 = append(data.Id2, class.ID)
-			}
-		}
-
-		w.Header().Set("Content-Type", "application/json")
-		json.NewEncoder(w).Encode(data)
-
-	}
-	return http.HandlerFunc(fn)
-}
-
-func teachersClassesDelete() http.Handler {
-	fn := func(w http.ResponseWriter, r *http.Request) {
-		var (
-			teacher orm.Teacher
-			class   orm.Class
-		)
-
-		if err := orm.DB().Where("id = ?", mux.Vars(r)["id"]).Find(&teacher).Error; err != nil {
-			panic(err)
-		}
-
-		if err := orm.DB().Where("id = ?", mux.Vars(r)["class_id"]).Find(&class).Error; err != nil {
-			panic(err)
-		}
-
-		if err := orm.DB().Model(&teacher).Association("Classes").Delete(&class).Error; err != nil {
-			panic(err)
-		}
-
-		if teacher.ID == class.CoordinatorID {
-			class.CoordinatorID = 0
-			if err := orm.DB().Save(&class).Error; err != nil {
-				panic(err)
-			}
-
-		}
-
-		if teacher.ID == class.MinuterID {
-			class.MinuterID = 0
-			if err := orm.DB().Save(&class).Error; err != nil {
-				panic(err)
-			}
-		}
-
-	}
-	return http.HandlerFunc(fn)
-}

+ 0 - 86
handlers/teachers_subjects.go

@@ -1,86 +0,0 @@
-package api
-
-import (
-	"encoding/json"
-	"net/http"
-
-	"github.com/gorilla/mux"
-	"gogs.carducci-dante.gov.it/karmen/core/orm"
-)
-
-func teacherSubjectsAdd() 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)
-		}
-
-		var selected_subjects struct {
-			Ids []string `json:"ids"`
-		}
-
-		if err := json.NewDecoder(r.Body).Decode(&selected_subjects); err != nil {
-			panic(err)
-		}
-
-		var data struct {
-			Subjects []orm.Subject `json:"elements"`
-			Name1    string        `json:"name1"`
-			Name2    string        `json:"name2"`
-			Id1      uint          `json:"id1"`
-			Id2      []uint        `json:"id2"`
-		}
-
-		data.Name1 = "teachers"
-		data.Name2 = "subjects"
-		data.Id1 = teacher.ID
-
-		for _, subjectId := range selected_subjects.Ids {
-			var subject orm.Subject
-			if err := orm.DB().First(&subject, subjectId).Error; err != nil {
-				panic(err)
-			}
-
-			// Check if the association exists
-			var output []orm.Subject
-
-			if err := orm.DB().Model(&teacher).Where("subject_id = ? and teacher_id = ?", subjectId, teacher.ID).Related(&output, "Subjects").Error; err != nil {
-				panic(err)
-			}
-			if len(output) == 0 {
-				if err := orm.DB().Model(&teacher).Association("Subjects").Append(&subject).Error; err != nil {
-					panic(err)
-				}
-				data.Subjects = append(data.Subjects, subject)
-				data.Id2 = append(data.Id2, subject.ID)
-			}
-		}
-
-		w.Header().Set("Content-Type", "application/json")
-		json.NewEncoder(w).Encode(data)
-
-	}
-	return http.HandlerFunc(fn)
-}
-
-func teachersSubjectsDelete() http.Handler {
-	fn := func(w http.ResponseWriter, r *http.Request) {
-		var (
-			teacher orm.Teacher
-			subject orm.Subject
-		)
-
-		if err := orm.DB().Where("id = ?", mux.Vars(r)["id"]).Find(&teacher).Error; err != nil {
-			panic(err)
-		}
-
-		if err := orm.DB().Where("id = ?", mux.Vars(r)["subject_id"]).Find(&subject).Error; err != nil {
-			panic(err)
-		}
-
-		if err := orm.DB().Model(&teacher).Association("Subjects").Delete(&subject).Error; err != nil {
-			panic(err)
-		}
-	}
-	return http.HandlerFunc(fn)
-}