| 
					
				 | 
			
			
				@@ -3,6 +3,7 @@ package orm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"fmt" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"net/http" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"strconv" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"time" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"github.com/jinzhu/gorm" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -18,7 +19,10 @@ type Teacher struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	Subjects    []*Subject 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	Activities  []*Activity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	Departments []*Department 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	Hours       int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	SubjectsByClass map[uint][]*Subject `gorm:"-"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Hours int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var ( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -113,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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -246,7 +262,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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 |