Browse Source

Update teacher group associations each time a group is fetch

Andrea Fazzi 5 năm trước cách đây
mục cha
commit
c2f63cb445
2 tập tin đã thay đổi với 34 bổ sung5 xóa
  1. 29 0
      orm/group.go
  2. 5 5
      templates/groups_add_update.html.tpl

+ 29 - 0
orm/group.go

@@ -42,10 +42,21 @@ func GetGroups(args map[string]string) (interface{}, error) {
 
 func GetGroupsAll(args map[string]string) (interface{}, error) {
 	var groups []*Group
+
 	if err := DB().Preload("Teachers").Order("name").Find(&groups).Error; err != nil {
 		return nil, err
 	}
 
+	for _, group := range groups {
+		if group.Query != "" {
+			err := group.updateTeachersAssociation()
+			if err != nil {
+				return nil, err
+			}
+		}
+
+	}
+
 	return groups, nil
 }
 
@@ -58,6 +69,13 @@ func GetGroupAll(args map[string]string) (interface{}, error) {
 		return nil, err
 	}
 
+	if group.Query != "" {
+		err := group.updateTeachersAssociation()
+		if err != nil {
+			return nil, err
+		}
+	}
+
 	return group, nil
 }
 
@@ -197,6 +215,17 @@ func (group *Group) RestAPIPath() string {
 	return "groupes"
 }
 
+func (group *Group) updateTeachersAssociation() error {
+	teachers, err := group.executeTeacherQuery()
+	if err != nil {
+		return err
+	}
+	if err := DB().Model(group).Association("Teachers").Replace(teachers).Error; err != nil {
+		return err
+	}
+	return nil
+}
+
 func (group *Group) executeTeacherQuery() ([]*Teacher, error) {
 	var (
 		result      []*Teacher

+ 5 - 5
templates/groups_add_update.html.tpl

@@ -42,6 +42,11 @@
         <input type="text" name="Name" class="form-control" id="group_name" placeholder="Nome" {{if .Options.Get "update"}} value="{{.Data.Group.Name}}" {{end}} required>
       </div>
 
+      <div class="form-group has-feedback">
+        <label class="control-label" for="group_query">Stringa di popolamento</label>
+        <input type="text" name="Query" class="form-control" id="group_query" placeholder="surname:*" {{if .Options.Get "update"}} value="{{.Data.Group.Query}}" {{end}}>
+      </div>
+
       <div class="form-group">
         <label class="control-label" for="teacher_id">Docenti</label>
         <select name="teacher_ids" class="form-control selectpicker" id="teacher_ids" placeholder="Docenti" data-live-search="true" form="form_groups_add_update" title="Seleziona i nomi dei docenti" data-dropup-auto="false" multiple>
@@ -59,11 +64,6 @@
         </select>
       </div>
 
-      <div class="form-group has-feedback">
-        <label class="control-label" for="group_query">Stringa di popolamento</label>
-        <input type="text" name="Query" class="form-control" id="group_query" placeholder="surname:*" {{if .Options.Get "update"}} value="{{.Data.Group.Query}}" {{end}}>
-      </div>
-
       <div class="form-group">
         <button type="submit" class="btn btn-primary">Salva</button>
         {{if .Options.Get "update"}}