|
@@ -3,6 +3,7 @@ package orm
|
|
|
import (
|
|
|
"fmt"
|
|
|
"net/http"
|
|
|
+ "strconv"
|
|
|
"time"
|
|
|
|
|
|
"github.com/jinzhu/gorm"
|
|
@@ -13,13 +14,15 @@ type Teacher struct {
|
|
|
gorm.Model
|
|
|
Credential
|
|
|
|
|
|
- Supply bool `gorm:"-"`
|
|
|
Classes []*Class
|
|
|
Students []*Student
|
|
|
Subjects []*Subject
|
|
|
Activities []*Activity
|
|
|
Departments []*Department
|
|
|
- Hours int
|
|
|
+
|
|
|
+ SubjectsByClass map[uint][]*Subject `gorm:"-"`
|
|
|
+
|
|
|
+ Hours int
|
|
|
}
|
|
|
|
|
|
var (
|
|
@@ -114,6 +117,18 @@ func GetTeachersAll(args map[string]string) (interface{}, error) {
|
|
|
for _, teacher := range teachers {
|
|
|
teacher.GetActivities()
|
|
|
}
|
|
|
+
|
|
|
+ for _, teacher := range teachers {
|
|
|
+ teacher.SubjectsByClass = make(map[uint][]*Subject)
|
|
|
+ for _, c := range teacher.Classes {
|
|
|
+ subjects, err := teacher.GetSubjectsByClassID(strconv.Itoa(int(c.ID)))
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ teacher.SubjectsByClass[c.ID] = subjects
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return teachers, nil
|
|
|
}
|
|
|
|
|
@@ -142,14 +157,6 @@ func GetTeachersFast(args map[string]string) (interface{}, error) {
|
|
|
return teachers, nil
|
|
|
}
|
|
|
|
|
|
-func GetSupplyTeachers() ([]*Teacher, error) {
|
|
|
- var teachers []*Teacher
|
|
|
- if err := DB().Raw(selectSupplyTeachers).Scan(&teachers).Error; err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- return teachers, nil
|
|
|
-}
|
|
|
-
|
|
|
func SaveTeacher(teacher interface{}) (interface{}, error) {
|
|
|
if err := DB().Omit("Classes", "Subjects", "Activities").Save(teacher).Error; err != nil {
|
|
|
return nil, err
|
|
@@ -265,7 +272,7 @@ func (t *Teacher) GetActivitiesByClass(id string) ([]*Activity, error) {
|
|
|
return t.Activities, nil
|
|
|
}
|
|
|
|
|
|
-func (t Teacher) GetSubjectsByClassID(id string) ([]*Subject, error) {
|
|
|
+func (t *Teacher) GetSubjectsByClassID(id string) ([]*Subject, error) {
|
|
|
if err := DB().Raw(selectUniqueTeacherSubjectsByClass, t.ID, t.ID, id).Scan(&t.Subjects).Error; err != nil {
|
|
|
return nil, err
|
|
|
}
|