|
@@ -1,9 +1,10 @@
|
|
|
package orm
|
|
|
|
|
|
import (
|
|
|
- "errors"
|
|
|
+ "net/http"
|
|
|
|
|
|
"github.com/jinzhu/gorm"
|
|
|
+ "gogs.carducci-dante.gov.it/karmen/core/renderer"
|
|
|
)
|
|
|
|
|
|
var (
|
|
@@ -28,22 +29,45 @@ type Class struct {
|
|
|
Students []*Student
|
|
|
}
|
|
|
|
|
|
-func GetClasses() ([]*Class, error) {
|
|
|
- var classes []*Class
|
|
|
- if err := DB().Order("name").Find(&classes).Error; err != nil {
|
|
|
+func (t *Class) GetID() uint { return t.ID }
|
|
|
+
|
|
|
+func GetClass(args map[string]string) (interface{}, error) {
|
|
|
+ var class Class
|
|
|
+ if err := DB().First(&class, args["id"]).Error; err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
- return classes, nil
|
|
|
+ return &class, nil
|
|
|
}
|
|
|
|
|
|
-func (c *Class) GetTeachers() ([]*Teacher, error) {
|
|
|
- if err := DB().Raw(selectUniqueClassTeachers, c.ID).Scan(&c.Teachers).Error; err != nil {
|
|
|
+func GetClassAll(args map[string]string) (interface{}, error) {
|
|
|
+ var class Class
|
|
|
+
|
|
|
+ id := args["id"]
|
|
|
+
|
|
|
+ if err := DB().First(&class, id).Error; err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
- return c.Teachers, nil
|
|
|
+
|
|
|
+ if err := DB().Raw(selectUniqueClassTeachers, id).Scan(&class.Teachers).Error; err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ if err := DB().Preload("Class").Preload("Subject").Preload("Class").Where("class_id=?", id).Find(&class.Activities).Error; err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ return &class, nil
|
|
|
}
|
|
|
|
|
|
-func GetClassesAll() ([]*Class, error) {
|
|
|
+func GetClasses(args map[string]string) (interface{}, error) {
|
|
|
+ var classes []*Class
|
|
|
+ if err := DB().Order("name").Find(&classes).Error; err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ return classes, nil
|
|
|
+}
|
|
|
+
|
|
|
+func GetClassesAll(args map[string]string) (interface{}, error) {
|
|
|
var classes []*Class
|
|
|
if err := DB().Order("name").Find(&classes).Error; err != nil {
|
|
|
return nil, err
|
|
@@ -51,52 +75,144 @@ func GetClassesAll() ([]*Class, error) {
|
|
|
for _, class := range classes {
|
|
|
class.GetTeachers()
|
|
|
}
|
|
|
+
|
|
|
return classes, nil
|
|
|
}
|
|
|
|
|
|
-func GetClass(id string) (*Class, error) {
|
|
|
- var class Class
|
|
|
-
|
|
|
- if err := DB().First(&class, id).Error; err != nil {
|
|
|
+func SaveClass(class interface{}) (interface{}, error) {
|
|
|
+ if err := DB().Save(class).Error; err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
+ return class, nil
|
|
|
+}
|
|
|
|
|
|
- if err := DB().Raw(selectUniqueClassTeachers, id).Scan(&class.Teachers).Error; err != nil {
|
|
|
+func UpdateClass(args map[string]string, r *http.Request) (IDer, error) {
|
|
|
+ class, err := GetClass(args)
|
|
|
+ if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
- if err := DB().Preload("Teacher").Preload("Class").Preload("Subject").Where("class_id=?", id).Find(&class.Activities).Error; err != nil {
|
|
|
+ err = renderer.Decode(class, r)
|
|
|
+ if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
-
|
|
|
- if class.CoordinatorID != 0 {
|
|
|
- if !DB().First(&class.Coordinator, class.CoordinatorID).RecordNotFound() {
|
|
|
- if err := DB().First(&class.Coordinator, class.CoordinatorID).Error; err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- }
|
|
|
+ _, err = SaveClass(class)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
}
|
|
|
-
|
|
|
- if class.MinuterID != 0 {
|
|
|
- if !DB().First(&class.Minuter, class.MinuterID).RecordNotFound() {
|
|
|
- if err := DB().First(&class.Minuter, class.MinuterID).Error; err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- }
|
|
|
+ class, err = GetClass(args)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
}
|
|
|
-
|
|
|
- return &class, nil
|
|
|
+ return class.(*Class), nil
|
|
|
}
|
|
|
|
|
|
-func (t *Class) Create(db *gorm.DB, record map[string]interface{}) error {
|
|
|
- result := new(Class)
|
|
|
+func AddClass(args map[string]string, r *http.Request) (IDer, error) {
|
|
|
+ class := new(Class)
|
|
|
+ err := renderer.Decode(class, r)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ class, err = CreateClass(class)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ return class, nil
|
|
|
+}
|
|
|
|
|
|
- if name := record["name"]; name == nil {
|
|
|
- return errors.New("Error in creating class: field name is empty")
|
|
|
- } else {
|
|
|
- result.Name = name.(string)
|
|
|
+func CreateClass(class *Class) (*Class, error) {
|
|
|
+ if err := DB().Create(class).Error; err != nil {
|
|
|
+ return nil, err
|
|
|
}
|
|
|
+ return class, nil
|
|
|
+}
|
|
|
|
|
|
- db.Create(result)
|
|
|
+func DeleteClass(args map[string]string, r *http.Request) (IDer, error) {
|
|
|
+ class, err := GetClass(args)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ if err := DB().Unscoped().Delete(class.(*Class)).Error; err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ return class.(*Class), nil
|
|
|
+}
|
|
|
|
|
|
- return nil
|
|
|
+func (c *Class) GetTeachers() ([]*Teacher, error) {
|
|
|
+ if err := DB().Raw(selectUniqueClassTeachers, c.ID).Scan(&c.Teachers).Error; err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ return c.Teachers, nil
|
|
|
}
|
|
|
+
|
|
|
+// func GetClasses() ([]*Class, error) {
|
|
|
+// var classes []*Class
|
|
|
+// if err := DB().Order("name").Find(&classes).Error; err != nil {
|
|
|
+// return nil, err
|
|
|
+// }
|
|
|
+// return classes, nil
|
|
|
+// }
|
|
|
+
|
|
|
+// func (c *Class) GetTeachers() ([]*Teacher, error) {
|
|
|
+// if err := DB().Raw(selectUniqueClassTeachers, c.ID).Scan(&c.Teachers).Error; err != nil {
|
|
|
+// return nil, err
|
|
|
+// }
|
|
|
+// return c.Teachers, nil
|
|
|
+// }
|
|
|
+
|
|
|
+// func GetClassesAll() ([]*Class, error) {
|
|
|
+// var classes []*Class
|
|
|
+// if err := DB().Order("name").Find(&classes).Error; err != nil {
|
|
|
+// return nil, err
|
|
|
+// }
|
|
|
+// for _, class := range classes {
|
|
|
+// class.GetTeachers()
|
|
|
+// }
|
|
|
+// return classes, nil
|
|
|
+// }
|
|
|
+
|
|
|
+// func GetClass(id string) (*Class, error) {
|
|
|
+// var class Class
|
|
|
+
|
|
|
+// if err := DB().First(&class, id).Error; err != nil {
|
|
|
+// return nil, err
|
|
|
+// }
|
|
|
+
|
|
|
+// if err := DB().Raw(selectUniqueClassTeachers, id).Scan(&class.Teachers).Error; err != nil {
|
|
|
+// return nil, err
|
|
|
+// }
|
|
|
+// if err := DB().Preload("Teacher").Preload("Class").Preload("Subject").Where("class_id=?", id).Find(&class.Activities).Error; err != nil {
|
|
|
+// return nil, err
|
|
|
+// }
|
|
|
+
|
|
|
+// if class.CoordinatorID != 0 {
|
|
|
+// if !DB().First(&class.Coordinator, class.CoordinatorID).RecordNotFound() {
|
|
|
+// if err := DB().First(&class.Coordinator, class.CoordinatorID).Error; err != nil {
|
|
|
+// return nil, err
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// if class.MinuterID != 0 {
|
|
|
+// if !DB().First(&class.Minuter, class.MinuterID).RecordNotFound() {
|
|
|
+// if err := DB().First(&class.Minuter, class.MinuterID).Error; err != nil {
|
|
|
+// return nil, err
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// return &class, nil
|
|
|
+// }
|
|
|
+
|
|
|
+// func (t *Class) Create(db *gorm.DB, record map[string]interface{}) error {
|
|
|
+// result := new(Class)
|
|
|
+
|
|
|
+// if name := record["name"]; name == nil {
|
|
|
+// return errors.New("Error in creating class: field name is empty")
|
|
|
+// } else {
|
|
|
+// result.Name = name.(string)
|
|
|
+// }
|
|
|
+
|
|
|
+// db.Create(result)
|
|
|
+
|
|
|
+// return nil
|
|
|
+// }
|