Эх сурвалжийг харах

Merge branch 'master' of https://gogs.carducci-dante.gov.it/karmen/core

Andrea Fazzi 6 жил өмнө
parent
commit
c6532aa292
2 өөрчлөгдсөн 22 нэмэгдсэн , 13 устгасан
  1. 4 2
      orm/orm_test.go
  2. 18 11
      orm/teacher.go

+ 4 - 2
orm/orm_test.go

@@ -167,13 +167,15 @@ func (t *testSuite) TestGetTeachersAll() {
 	t.Equal(11, len(teachers.([]*Teacher)))
 
 	t.Equal("1 A", teachers.([]*Teacher)[0].Classes[0].Name)
-	t.Equal("MATEMATICA", teachers.([]*Teacher)[0].Subjects[0].Name)
-}
+	t.Equal("SCIENZE", teachers.([]*Teacher)[0].Subjects[0].Name)
+
 
 func (t *testSuite) TestGetTeachersFast() {
 	teachers, err := GetTeachersFast(map[string]string{})
 	t.Nil(err)
 	t.Equal(11, len(teachers.([]*Teacher)))
+
+	t.Equal(1, len(teachers.([]*Teacher)[0].SubjectsByClass[1]))
 }
 
 func (t *testSuite) TestGetTeacherActByClass() {

+ 18 - 11
orm/teacher.go

@@ -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
 	}