|
@@ -12,6 +12,7 @@ type Teacher struct {
|
|
|
gorm.Model
|
|
|
Credential
|
|
|
Classes []*Class
|
|
|
+ Students []*Student
|
|
|
Subjects []*Subject
|
|
|
Activities []*Activity
|
|
|
Departments []*Department
|
|
@@ -32,6 +33,11 @@ WHERE teacher_id=?`
|
|
|
selectUniqueTeacherSubjects = `
|
|
|
SELECT DISTINCT subjects.* FROM activities
|
|
|
INNER JOIN subjects on subjects.id=activities.subject_id
|
|
|
+WHERE activities.teacher_id=?`
|
|
|
+
|
|
|
+ selectUniqueTeacherStudents = `
|
|
|
+SELECT DISTINCT students.* FROM activities
|
|
|
+INNER JOIN students on students.id=activities.student_id
|
|
|
WHERE activities.teacher_id=?`
|
|
|
)
|
|
|
|
|
@@ -62,7 +68,11 @@ func GetTeacherAll(args map[string]string) (interface{}, error) {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
- if err := DB().Preload("Teacher").Preload("Subject").Preload("Class").Where("teacher_id=?", id).Find(&teacher.Activities).Error; err != nil {
|
|
|
+ if err := DB().Raw(selectUniqueTeacherStudents, id).Scan(&teacher.Students).Error; err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ if err := DB().Preload("Teacher").Preload("Subject").Preload("Student").Preload("Class").Where("teacher_id=?", id).Find(&teacher.Activities).Error; err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
@@ -88,6 +98,9 @@ func GetTeachersAll(args map[string]string) (interface{}, error) {
|
|
|
for _, teacher := range teachers {
|
|
|
teacher.GetSubjects()
|
|
|
}
|
|
|
+ for _, teacher := range teachers {
|
|
|
+ teacher.GetStudents()
|
|
|
+ }
|
|
|
for _, teacher := range teachers {
|
|
|
teacher.GetActivities()
|
|
|
}
|
|
@@ -171,6 +184,13 @@ func (t *Teacher) GetSubjects() ([]*Subject, error) {
|
|
|
return t.Subjects, nil
|
|
|
}
|
|
|
|
|
|
+func (t *Teacher) GetStudents() ([]*Student, error) {
|
|
|
+ if err := DB().Raw(selectUniqueTeacherStudents, t.ID).Scan(&t.Students).Error; err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ return t.Students, nil
|
|
|
+}
|
|
|
+
|
|
|
func (t *Teacher) GetActivities() ([]*Activity, error) {
|
|
|
if err := DB().Preload("Teacher").Preload("Subject").Preload("Class").Where("teacher_id=?", t.ID).Find(&t.Activities).Error; err != nil {
|
|
|
return nil, err
|