|
@@ -17,28 +17,23 @@ type Teacher struct {
|
|
|
Activities []*Activity
|
|
|
Departments []*Department
|
|
|
Hours int
|
|
|
- CurrHours int
|
|
|
}
|
|
|
|
|
|
var (
|
|
|
- selectDistinctTeachers = `
|
|
|
-SELECT teachers.* FROM activities
|
|
|
-INNER JOIN teachers ON activities.teacher_id=teachers.id
|
|
|
-`
|
|
|
selectUniqueTeacherClasses = `
|
|
|
SELECT DISTINCT classes.* FROM activities
|
|
|
INNER JOIN classes on classes.id=activities.class_id
|
|
|
-WHERE teacher_id=?`
|
|
|
+WHERE (teacher_id=? OR supply_teacher_id=?)`
|
|
|
|
|
|
selectUniqueTeacherSubjects = `
|
|
|
SELECT DISTINCT subjects.* FROM activities
|
|
|
INNER JOIN subjects on subjects.id=activities.subject_id
|
|
|
-WHERE activities.teacher_id=?`
|
|
|
+WHERE (teacher_id=? OR supply_teacher_id=?)`
|
|
|
|
|
|
selectUniqueTeacherStudents = `
|
|
|
SELECT DISTINCT students.* FROM activities
|
|
|
INNER JOIN students on students.id=activities.student_id
|
|
|
-WHERE activities.teacher_id=?`
|
|
|
+WHERE (teacher_id=? OR supply_teacher_id=?)`
|
|
|
)
|
|
|
|
|
|
func (t *Teacher) GetID() uint { return t.ID }
|
|
@@ -60,19 +55,19 @@ func GetTeacherAll(args map[string]string) (interface{}, error) {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
- if err := DB().Raw(selectUniqueTeacherClasses, id).Scan(&teacher.Classes).Error; err != nil {
|
|
|
+ if err := DB().Raw(selectUniqueTeacherClasses, id, id).Scan(&teacher.Classes).Error; err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
- if err := DB().Raw(selectUniqueTeacherSubjects, id).Scan(&teacher.Subjects).Error; err != nil {
|
|
|
+ if err := DB().Raw(selectUniqueTeacherSubjects, id, id).Scan(&teacher.Subjects).Error; err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
- if err := DB().Raw(selectUniqueTeacherStudents, id).Scan(&teacher.Students).Error; err != nil {
|
|
|
+ if err := DB().Raw(selectUniqueTeacherStudents, id, 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 {
|
|
|
+ if err := DB().Preload("SupplyTeacher").Preload("Teacher").Preload("Subject").Preload("Student").Preload("Class").Where("teacher_id=? OR supply_teacher_id=?", id, id).Find(&teacher.Activities).Error; err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
@@ -192,35 +187,35 @@ func DeleteTeacher(args map[string]string, r *http.Request) (IDer, error) {
|
|
|
}
|
|
|
|
|
|
func (t *Teacher) GetClasses() ([]*Class, error) {
|
|
|
- if err := DB().Raw(selectUniqueTeacherClasses, t.ID).Scan(&t.Classes).Error; err != nil {
|
|
|
+ if err := DB().Raw(selectUniqueTeacherClasses, t.ID, t.ID).Scan(&t.Classes).Error; err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
return t.Classes, nil
|
|
|
}
|
|
|
|
|
|
func (t *Teacher) GetSubjects() ([]*Subject, error) {
|
|
|
- if err := DB().Raw(selectUniqueTeacherSubjects, t.ID).Scan(&t.Subjects).Error; err != nil {
|
|
|
+ if err := DB().Raw(selectUniqueTeacherSubjects, t.ID, t.ID).Scan(&t.Subjects).Error; err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
return t.Subjects, nil
|
|
|
}
|
|
|
|
|
|
func (t *Teacher) GetStudents() ([]*Student, error) {
|
|
|
- if err := DB().Raw(selectUniqueTeacherStudents, t.ID).Scan(&t.Students).Error; err != nil {
|
|
|
+ if err := DB().Raw(selectUniqueTeacherStudents, t.ID, 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 {
|
|
|
+ if err := DB().Preload("SupplyTeacher").Preload("Teacher").Preload("Subject").Preload("Class").Where("teacher_id=? OR supply_teacher_id=?", t.ID, t.ID).Find(&t.Activities).Error; err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
return t.Activities, nil
|
|
|
}
|
|
|
|
|
|
func (t *Teacher) GetActivitiesByClass(id string) ([]*Activity, error) {
|
|
|
- if err := DB().Preload("Teacher").Where("class_id=? AND teacher_id=?", id, t.ID).Find(&t.Activities).Error; err != nil {
|
|
|
+ if err := DB().Preload("Teacher").Where("class_id=? AND (teacher_id=? or supply_teacher_id=?)", id, t.ID, t.ID).Find(&t.Activities).Error; err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
return t.Activities, nil
|