Explorar el Código

Work in progress

Andrea Fazzi hace 6 años
padre
commit
302798089f

+ 0 - 30
main.go

@@ -20,29 +20,6 @@ const (
 	RetryTimeInterval = 2
 	RetryTimeInterval = 2
 )
 )
 
 
-func regenerateRelations(db *gorm.DB) error {
-	var activities []orm.Activity
-
-	if err := db.Find(&activities).Error; err != nil {
-		return err
-	}
-
-	defer func() {
-		if err := recover(); err != nil {
-			log.Print(err)
-		}
-	}()
-
-	for _, a := range activities {
-		err := db.Save(&a).Error
-		if err != nil {
-			panic(err)
-		}
-	}
-
-	return nil
-}
-
 func main() {
 func main() {
 
 
 	var (
 	var (
@@ -85,13 +62,6 @@ func main() {
 		orm.AutoMigrate()
 		orm.AutoMigrate()
 	}
 	}
 
 
-	if config.Config.Orm.Regenerate {
-		log.Print("Regenerate relations...")
-		if err := regenerateRelations(db); err != nil {
-			panic(err)
-		}
-	}
-
 	log.Println("karmen is listening to port 3000...")
 	log.Println("karmen is listening to port 3000...")
 	if err := http.ListenAndServe(":3000", handlers.LoggingHandler(os.Stdout, api.Handlers())); err != nil {
 	if err := http.ListenAndServe(":3000", handlers.LoggingHandler(os.Stdout, api.Handlers())); err != nil {
 		panic(err)
 		panic(err)

+ 57 - 0
orm/activity.go

@@ -1,6 +1,8 @@
 package orm
 package orm
 
 
 import (
 import (
+	"fmt"
+	"log"
 	"net/http"
 	"net/http"
 
 
 	"github.com/jinzhu/gorm"
 	"github.com/jinzhu/gorm"
@@ -21,6 +23,16 @@ type Activity struct {
 	prevTeacherID uint
 	prevTeacherID uint
 }
 }
 
 
+type ActivityForUpdate struct {
+	Activity        Activity
+	AllClasses      []*Class
+	AllSubjects     []*Subject
+	AllTeachers     []*Teacher
+	SelectedTeacher map[uint]string
+	SelectedSubject map[uint]string
+	SelectedClass   map[uint]string
+}
+
 func (a *Activity) GetID() uint { return a.ID }
 func (a *Activity) GetID() uint { return a.ID }
 
 
 func GetActivity(args map[string]string) (interface{}, error) {
 func GetActivity(args map[string]string) (interface{}, error) {
@@ -42,6 +54,38 @@ func GetActivityAll(args map[string]string) (interface{}, error) {
 	return &activity, nil
 	return &activity, nil
 }
 }
 
 
+func GetActivityForUpdate(args map[string]string) (interface{}, error) {
+	var data ActivityForUpdate
+
+	id := args["id"]
+
+	if err := DB().Preload("Teacher").Preload("Subject").Preload("Class").First(&data.Activity, id).Error; err != nil {
+		return nil, err
+	}
+
+	if err := DB().Find(&data.AllClasses).Error; err != nil {
+		return nil, err
+	}
+
+	if err := DB().Find(&data.AllSubjects).Error; err != nil {
+		return nil, err
+	}
+
+	if err := DB().Find(&data.AllTeachers).Error; err != nil {
+		return nil, err
+	}
+
+	data.SelectedTeacher = make(map[uint]string)
+	data.SelectedTeacher[data.Activity.TeacherID] = "selected"
+
+	data.SelectedClass = make(map[uint]string)
+	data.SelectedClass[data.Activity.ClassID] = "selected"
+
+	data.SelectedSubject = make(map[uint]string)
+	data.SelectedSubject[data.Activity.SubjectID] = "selected"
+	return data, nil
+}
+
 func GetActivitiesAll(args map[string]string) (interface{}, error) {
 func GetActivitiesAll(args map[string]string) (interface{}, error) {
 	var activities []*Activity
 	var activities []*Activity
 	if err := DB().Preload("Teacher").Preload("Subject").Preload("Class").Order("name").Find(&activities).Error; err != nil {
 	if err := DB().Preload("Teacher").Preload("Subject").Preload("Class").Order("name").Find(&activities).Error; err != nil {
@@ -111,3 +155,16 @@ func DeleteActivity(activity *Activity) error {
 	}
 	}
 	return nil
 	return nil
 }
 }
+
+func (a *Activity) AfterSave(tx *gorm.DB) error {
+	var act Activity
+	if err := DB().Preload("Teacher").Preload("Subject").Preload("Class").First(&act, a.ID).Error; err != nil {
+		return err
+	}
+
+	log.Println(a.ID)
+	if err := tx.Model(a).Update("name", fmt.Sprintf("%s %s %dh", act.Class.Name, act.Subject.Name, act.Hours)).Error; err != nil {
+		return err
+	}
+	return nil
+}

+ 5 - 5
orm/orm.go

@@ -99,21 +99,25 @@ var (
 	currDB *gorm.DB
 	currDB *gorm.DB
 
 
 	Get map[string]GetFn = map[string]GetFn{
 	Get map[string]GetFn = map[string]GetFn{
+		// Teacher
 		"/teachers":             GetTeachersAll,
 		"/teachers":             GetTeachersAll,
 		"/teachers/{id}":        GetTeacherAll,
 		"/teachers/{id}":        GetTeacherAll,
 		"/teachers/{id}/update": GetTeacher,
 		"/teachers/{id}/update": GetTeacher,
 		"/teachers/add/":        GetNothing,
 		"/teachers/add/":        GetNothing,
 
 
+		// Activity
 		"/activities":             GetActivitiesAll,
 		"/activities":             GetActivitiesAll,
 		"/activities/{id}":        GetActivityAll,
 		"/activities/{id}":        GetActivityAll,
-		"/activities/{id}/update": GetActivity,
+		"/activities/{id}/update": GetActivityForUpdate,
 		"/activities/add/":        GetNothing,
 		"/activities/add/":        GetNothing,
 	}
 	}
 
 
 	Post map[string]PostFn = map[string]PostFn{
 	Post map[string]PostFn = map[string]PostFn{
+		// Teacher
 		"/teachers/{id}/update": UpdateTeacher,
 		"/teachers/{id}/update": UpdateTeacher,
 		"/teachers/add/":        AddTeacher,
 		"/teachers/add/":        AddTeacher,
 
 
+		// Activity
 		"/activities/{id}/update": UpdateActivity,
 		"/activities/{id}/update": UpdateActivity,
 		"/activities/add/":        AddActivity,
 		"/activities/add/":        AddActivity,
 	}
 	}
@@ -292,10 +296,6 @@ func Reset() {
 		&Director{},
 		&Director{},
 		&Issue{},
 		&Issue{},
 	)
 	)
-
-	currDB.Exec("TRUNCATE teacher_subjects;")
-	// 	currDB.Exec("TRUNCATE teacher_classes;")
-	currDB.Exec("TRUNCATE department_teachers;")
 }
 }
 
 
 func AutoMigrate() {
 func AutoMigrate() {

+ 52 - 389
orm/orm_test.go

@@ -45,30 +45,58 @@ func (t *testSuite) TestDB() {
 }
 }
 
 
 func (t *testSuite) TestGetActivityAll() {
 func (t *testSuite) TestGetActivityAll() {
-	activity, err := GetActivityAll("1")
+	activity, err := GetActivityAll(map[string]string{"id": "1"})
 	t.Nil(err)
 	t.Nil(err)
 	if !t.Failed() {
 	if !t.Failed() {
-		t.Equal("Amilcare", activity.Teacher.Name)
+		t.Equal("Amilcare", activity.(*Activity).Teacher.Name)
 	}
 	}
 
 
 }
 }
 
 
+func (t *testSuite) TestGetActivityForUpdate() {
+	data, err := GetActivityForUpdate(map[string]string{"id": "1"})
+	t.Nil(err)
+	if !t.Failed() {
+		t.Equal("Amilcare", data.(ActivityForUpdate).Activity.Teacher.Name)
+		t.Equal("1 A", data.(ActivityForUpdate).AllClasses[0].Name)
+		t.Equal("ITALIANO", data.(ActivityForUpdate).AllSubjects[1].Name)
+		t.Equal("Costanza", data.(ActivityForUpdate).AllTeachers[2].Name)
+	}
+
+}
+
+func (t *testSuite) TestSaveActivity() {
+	activity, err := GetActivity(map[string]string{"id": "1"})
+	t.Nil(err)
+
+	t.Equal("1 A MATEMATICA 2h", activity.(*Activity).Name)
+
+	activity.(*Activity).SubjectID = 2
+	_, err = SaveActivity(activity)
+	t.Nil(err)
+
+	if !t.Failed() {
+		activity, _ = GetActivity(map[string]string{"id": "1"})
+		t.Equal("Roberto", activity.(*Activity).Name)
+	}
+}
+
 func (t *testSuite) TestGetTeacher() {
 func (t *testSuite) TestGetTeacher() {
-	teacher, err := GetTeacher("1")
+	teacher, err := GetTeacher(map[string]string{"id": "1"})
 	t.Nil(err)
 	t.Nil(err)
 	if !t.Failed() {
 	if !t.Failed() {
-		t.Equal("Amilcare", teacher.Name)
-		t.Equal("AGOSTINO", teacher.Surname)
+		t.Equal("Amilcare", teacher.(*Teacher).Name)
+		t.Equal("AGOSTINO", teacher.(*Teacher).Surname)
 	}
 	}
 
 
 }
 }
 
 
 func (t *testSuite) TestGetTeachers() {
 func (t *testSuite) TestGetTeachers() {
-	teachers, err := GetTeachers()
+	teachers, err := GetTeachers(map[string]string{})
 	t.Nil(err)
 	t.Nil(err)
-	t.Equal(9, len(teachers))
+	t.Equal(9, len(teachers.([]*Teacher)))
 
 
-	teacher := teachers[0]
+	teacher := teachers.([]*Teacher)[0]
 	classes, err := teacher.GetClasses()
 	classes, err := teacher.GetClasses()
 	t.Nil(err)
 	t.Nil(err)
 	t.Equal(1, len(classes))
 	t.Equal(1, len(classes))
@@ -79,22 +107,22 @@ func (t *testSuite) TestGetTeachers() {
 }
 }
 
 
 func (t *testSuite) TestGetTeachersAll() {
 func (t *testSuite) TestGetTeachersAll() {
-	teachers, err := GetTeachersAll()
+	teachers, err := GetTeachersAll(map[string]string{})
 	t.Nil(err)
 	t.Nil(err)
-	t.Equal(9, len(teachers))
+	t.Equal(9, len(teachers.([]*Teacher)))
 
 
-	t.Equal("1 A", teachers[0].Classes[0].Name)
-	t.Equal("MATEMATICA", teachers[0].Subjects[0].Name)
+	t.Equal("1 A", teachers.([]*Teacher)[0].Classes[0].Name)
+	t.Equal("MATEMATICA", teachers.([]*Teacher)[0].Subjects[0].Name)
 }
 }
 
 
 func (t *testSuite) TestGetTeacherActivitiesByClass() {
 func (t *testSuite) TestGetTeacherActivitiesByClass() {
-	teacher, err := GetTeacher("1")
+	teacher, err := GetTeacher(map[string]string{"id": "1"})
 	t.Nil(err)
 	t.Nil(err)
 	if !t.Failed() {
 	if !t.Failed() {
-		_, err := teacher.GetActivitiesByClass("1")
+		_, err := teacher.(*Teacher).GetActivitiesByClass("1")
 		t.Nil(err)
 		t.Nil(err)
 		if !t.Failed() {
 		if !t.Failed() {
-			t.True(len(teacher.Activities) > 0)
+			t.True(len(teacher.(*Teacher).Activities) > 0)
 		}
 		}
 	}
 	}
 
 
@@ -147,16 +175,16 @@ func (t *testSuite) TestGetClass() {
 }
 }
 
 
 func (t *testSuite) TestSaveTeacher() {
 func (t *testSuite) TestSaveTeacher() {
-	teacher, err := GetTeacher("1")
+	teacher, err := GetTeacher(map[string]string{"id": "1"})
 	t.Nil(err)
 	t.Nil(err)
 
 
-	teacher.Name = "Roberto"
+	teacher.(*Teacher).Name = "Roberto"
 	_, err = SaveTeacher(teacher)
 	_, err = SaveTeacher(teacher)
 	t.Nil(err)
 	t.Nil(err)
 
 
 	if !t.Failed() {
 	if !t.Failed() {
-		teacher, _ = GetTeacher("1")
-		t.Equal("Roberto", teacher.Name)
+		teacher, _ = GetTeacher(map[string]string{"id": "1"})
+		t.Equal("Roberto", teacher.(*Teacher).Name)
 	}
 	}
 }
 }
 
 
@@ -169,376 +197,11 @@ func (t *testSuite) TestCreateDeleteTeacher() {
 	t.Nil(err)
 	t.Nil(err)
 
 
 	if !t.Failed() {
 	if !t.Failed() {
-		teacher, _ = GetTeacher("10")
-		t.Equal("Giovanni", teacher.Name)
-		err := DeleteTeacher(teacher)
+		teacherFromDb, _ := GetTeacher(map[string]string{"id": "10"})
+		t.Equal("Giovanni", teacherFromDb.(*Teacher).Name)
+		err := DeleteTeacher(teacherFromDb.(*Teacher))
 		t.Nil(err)
 		t.Nil(err)
-		teachers, _ := GetTeachers()
-		t.Equal(9, len(teachers))
+		teachers, _ := GetTeachers(map[string]string{})
+		t.Equal(9, len(teachers.([]*Teacher)))
 	}
 	}
 }
 }
-
-// func (t *testSuite) Before() {
-// 	var activities []Activity
-// 	if err := DB().Find(&activities).Error; err != nil {
-// 		panic(err)
-// 	}
-// 	for _, a := range activities {
-// 		DB().Unscoped().Delete(&a)
-// 	}
-
-// 	if err := DB().Exec("ALTER TABLE activities AUTO_INCREMENT = 1").Error; err != nil {
-// 		panic(err)
-// 	}
-// }
-
-// func (t *testSuite) TestCredential() {
-// 	var teacher Teacher
-
-// 	teacher.Name = "John"
-// 	teacher.Surname = "Doe"
-
-// 	if err := DB().Create(&teacher).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	if err := DB().Find(&teacher).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	t.Equal(teacher.Username, "john.doe")
-// 	t.Equal(teacher.Email, "john.doe@foo.org")
-// 	t.Equal(teacher.Password, "RKDb/GzQw8jzfAFwiAjclA81oBtzYWx0")
-// }
-
-// func (t *testSuite) TestCreateUpdateActivity() {
-// 	var (
-// 		class   Class
-// 		subject Subject
-// 	)
-
-// 	activity := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
-
-// 	// Activity 1
-// 	if err := DB().Create(&activity).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	// Marco Rossi
-// 	teacher := Teacher{}
-// 	if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	// 1A
-// 	if err := DB().Find(&class, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	// Italiano
-// 	if err := DB().Find(&subject, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	t.Equal(5, teacher.CurrHours)
-// 	t.Equal("1A", teacher.Classes[0].Name)
-// 	t.Equal("Italiano", teacher.Subjects[0].Name)
-
-// 	// Add another activity and check for teacher's hours, subjects and classes
-
-// 	// Subject: "Latino"
-// 	// Class: "1B"
-// 	activity = Activity{Hours: 3, TeacherID: 1, ClassID: 2, SubjectID: 2}
-
-// 	// Activity 2
-// 	if err := DB().Create(&activity).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	// Marco Rossi
-// 	teacher = Teacher{}
-// 	if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	t.Equal(8, teacher.CurrHours)
-// 	t.Equal("1A", teacher.Classes[0].Name)
-// 	t.Equal("1B", teacher.Classes[1].Name)
-// 	t.Equal("Italiano", teacher.Subjects[0].Name)
-// 	t.Equal("Latino", teacher.Subjects[1].Name)
-
-// 	// Add an activity without teacher
-
-// 	// Subject: "Latino"
-// 	// Class: "2A"
-// 	activity = Activity{Hours: 3, TeacherID: 0, ClassID: 3, SubjectID: 2}
-
-// 	// Activity 3
-// 	if err := DB().Create(&activity).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	// Test update activty
-
-// 	activity = Activity{}
-// 	if err := DB().Find(&activity, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-// 	activity.Hours = 4
-
-// 	if err := DB().Save(&activity).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	// Marco Rossi
-// 	teacher = Teacher{}
-// 	if err := DB().Find(&teacher, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	t.Equal(7, teacher.CurrHours)
-
-// 	// Delete an activity and check for the right number of hours and associations
-
-// 	if err := DB().Delete(&activity).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	// Marco Rossi
-// 	teacher = Teacher{}
-// 	if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	t.Equal(3, teacher.CurrHours)
-// 	t.Equal(1, len(teacher.Classes))
-// 	t.Equal(1, len(teacher.Subjects))
-// 	t.Equal("1B", teacher.Classes[0].Name)
-// 	t.Equal("Latino", teacher.Subjects[0].Name)
-
-// 	// Remove teacher from activity and check for consistency
-
-// 	activity = Activity{}
-// 	teacher = Teacher{}
-// 	if err := DB().Find(&activity, 2).Error; err != nil {
-// 		panic(err)
-// 	}
-// 	activity.TeacherID = 0
-
-// 	if err := DB().Save(&activity).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	// Marco Rossi
-// 	if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	t.Equal(0, teacher.CurrHours)
-// 	t.Equal(0, len(teacher.Classes))
-// 	t.Equal(0, len(teacher.Subjects))
-
-// 	// Change teacher in activity and check for consistency
-
-// 	// Subject: "Latino"
-// 	// Class: "1B"
-// 	activity = Activity{Hours: 3, TeacherID: 1, ClassID: 2, SubjectID: 2}
-
-// 	// Activity 3
-// 	if err := DB().Create(&activity).Error; err != nil {
-// 		panic(err)
-// 	}
-// 	activity.TeacherID = 2
-
-// 	if err := DB().Save(&activity).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	// Marco Rossi
-// 	teacher = Teacher{}
-// 	if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	t.Equal(0, teacher.CurrHours)
-// 	t.Equal(0, len(teacher.Classes))
-// 	t.Equal(0, len(teacher.Subjects))
-
-// }
-
-// func (t *testSuite) TestClassTeachers() {
-// 	var class Class
-
-// 	activity_1 := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
-
-// 	if err := DB().Create(&activity_1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	activity_2 := Activity{Hours: 3, TeacherID: 1, ClassID: 2, SubjectID: 2}
-
-// 	if err := DB().Create(&activity_2).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	if err := DB().Preload("Teachers").First(&class, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	subjects := class.Teachers[0].GetSubjectsByClassID(class.ID)
-// 	t.Equal(1, len(subjects))
-// 	t.Equal("Italiano", subjects[0].Name)
-
-// }
-
-// func (t *testSuite) TestCoordinatorMinuter() {
-// 	var (
-// 		class     Class
-// 		teacher_1 Teacher
-// 		teacher_2 Teacher
-// 	)
-
-// 	activity_1 := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
-
-// 	if err := DB().Create(&activity_1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	activity_2 := Activity{Hours: 5, TeacherID: 2, ClassID: 1, SubjectID: 1}
-
-// 	if err := DB().Create(&activity_2).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	if err := DB().First(&class, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	class.CoordinatorID = 1
-// 	class.MinuterID = 2
-
-// 	if err := DB().Save(&class).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	if err := DB().Find(&teacher_1, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	if err := DB().Find(&teacher_2, 2).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	classes_1 := teacher_1.IsCoordinator()
-// 	t.Equal(1, len(classes_1))
-
-// 	if len(classes_1) > 0 {
-// 		t.Equal("1A", classes_1[0].Name)
-// 	}
-
-// 	classes_2 := teacher_2.IsMinuter()
-// 	t.Equal(1, len(classes_2))
-
-// 	if len(classes_2) > 0 {
-// 		t.Equal("1A", classes_2[0].Name)
-// 	}
-
-// }
-
-// func (t *testSuite) TestTeacherHasClass() {
-// 	activity := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
-
-// 	// Activity 1
-// 	if err := DB().Create(&activity).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	// Marco Rossi
-// 	teacher := Teacher{}
-// 	if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	t.True(teacher.HasClass("1A"))
-// }
-
-// func (t *testSuite) TestTeacherHasSubject() {
-// 	activity := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
-
-// 	// Activity 1
-// 	if err := DB().Create(&activity).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	// Marco Rossi
-// 	teacher := Teacher{}
-// 	if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	t.True(teacher.HasSubject("Italiano"))
-// }
-
-// func (t *testSuite) TestTeacherHasSubjectInClass() {
-// 	activity := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
-
-// 	// Activity 1
-// 	if err := DB().Create(&activity).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	// Marco Rossi
-// 	teacher := Teacher{}
-// 	if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	t.True(teacher.HasSubjectInClass("Italiano", "1A"))
-// }
-
-// func (t *testSuite) TestTeacherIsCoordinatorInClass() {
-// 	activity := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
-
-// 	// Activity 1
-// 	if err := DB().Create(&activity).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	var class Class
-
-// 	if err := DB().First(&class, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	class.CoordinatorID = 1
-
-// 	// Marco Rossi
-// 	teacher := Teacher{}
-// 	if err := DB().Preload("Classes").Find(&teacher, 1).Error; err != nil {
-// 		panic(err)
-// 	}
-
-// 	t.True(teacher.IsCoordinatorInClass("1A"))
-// }
-
-// func (t *testSuite) TestTeacherIssues() {
-// 	// activity_1 := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
-// 	// activity_2 := Activity{Hours: 10, TeacherID: 1, ClassID: 2, SubjectID: 1}
-
-// 	// if err := DB().Create(&activity_1).Error; err != nil {
-// 	// 	panic(err)
-// 	// }
-
-// 	// if err := DB().Create(&activity_2).Error; err != nil {
-// 	// 	panic(err)
-// 	// }
-
-// 	// // Marco Rossi
-// 	// teacher := Teacher{}
-// 	// if err := DB().Preload("Issues").Find(&teacher, 1).Error; err != nil {
-// 	// 	panic(err)
-// 	// }
-
-// 	// t.Equal(1, len(teacher.Issues))
-// 	// t.Equal(IssueTeacherHours, teacher.Issues[0].Type)
-// }

+ 1 - 1
templates/activities.html.tpl

@@ -26,7 +26,7 @@
   {{else}}
   {{else}}
   <div class="list-group" id="myUL">
   <div class="list-group" id="myUL">
     {{range $activity := .Data}}
     {{range $activity := .Data}}
-    <a class="list-group-item clearfix" href="/activities/{{$activity.ID}}/update{{queryString "base" "activities_show"}}">
+    <a class="list-group-item clearfix" href="/activities/{{$activity.ID}}{{queryString "base" "activities_show"}}">
       <span class="glyphicon glyphicon-briefcase"></span>
       <span class="glyphicon glyphicon-briefcase"></span>
       {{$activity.Subject.Name}}
       {{$activity.Subject.Name}}
       <div class="text-right">
       <div class="text-right">

+ 24 - 24
templates/activities_add_update.html.tpl

@@ -2,27 +2,27 @@
 
 
 <div class="container">
 <div class="container">
 
 
-  {{if .Update}}
+  {{if .Options.Get "update"}}
   <ol class="breadcrumb">
   <ol class="breadcrumb">
-    <li><a href="/activities">Attività</a></li>
+    <li><a href="/activities{{queryString "base" "activities"}}">Attività</a></li>
     <li class="active"><a href="#">Aggiorna l'attività</a></li>
     <li class="active"><a href="#">Aggiorna l'attività</a></li>
   </ol>  
   </ol>  
   {{else}}  
   {{else}}  
   <ol class="breadcrumb">
   <ol class="breadcrumb">
-    <li><a href="/activities">Attività</a></li>
+    <li><a href="/activities{{queryString "base" "activities"}}">Attività</a></li>
     <li class="active"><a href="#">Aggiungi</a></li>
     <li class="active"><a href="#">Aggiungi</a></li>
   </ol>
   </ol>
   {{end}}
   {{end}}
 
 
-  {{if .Update}}
+  {{if .Options.Get "update"}}
   <div class="karmen-info-header">
   <div class="karmen-info-header">
     <div class="row">
     <div class="row">
       <div class="col-md-8">
       <div class="col-md-8">
 	<h1>Aggiorna l'attività</h1>
 	<h1>Aggiorna l'attività</h1>
       </div>
       </div>
       <div class="col-md-4">
       <div class="col-md-4">
-	<a href="/activities/{{.Activity.ID}}/delete"
-	   data-url="/activities/{{.Activity.ID}}/delete"
+	<a href="/activities/{{.Data.Activity.ID}}/delete"
+	   data-url="/activities/{{.Data.Activity.ID}}/delete"
 	   class="btn btn-danger karmen-ajax-delete pull-right">
 	   class="btn btn-danger karmen-ajax-delete pull-right">
 	  <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
 	  <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
 	  Elimina
 	  Elimina
@@ -35,17 +35,17 @@
   <h1 class="karmen-info-header">Crea una nuova attività</h1>
   <h1 class="karmen-info-header">Crea una nuova attività</h1>
   {{end}}
   {{end}}
   
   
-  <form id="form_activities_add_update" action="{{.SubmitUrl}}" method="POST" role="form" data-toggle="validator">
+  <form id="form_activities_add_update" action="/activities/{{.Data.Activity.ID}}/update" method="POST" role="form" data-toggle="validator">
 
 
     <div class="form-group">
     <div class="form-group">
       <label class="control-label" for="subject_id">Materia</label>
       <label class="control-label" for="subject_id">Materia</label>
       <select name="subject_id" class="form-control selectpicker" id="subject_id" placeholder="Materia" data-live-search="true" form="form_activities_add_update" title="Seleziona il nome della materia" data-dropup-auto="false" required>
       <select name="subject_id" class="form-control selectpicker" id="subject_id" placeholder="Materia" data-live-search="true" form="form_activities_add_update" title="Seleziona il nome della materia" data-dropup-auto="false" required>
 	<option value="0"></option>
 	<option value="0"></option>
-  	{{range $subject := .AllSubjects}}
-	{{if $.Update}}
+  	{{range $subject := .Data.AllSubjects}}
+	{{if $.Options.Get "update"}}
   	<option
   	<option
 	   value="{{$subject.ID}}"
 	   value="{{$subject.ID}}"
-	   {{index $.SelectedSubject $subject.ID}}>{{$subject.Name}}
+	   {{index $.Data.SelectedSubject $subject.ID}}>{{$subject.Name}}
 	</option>
 	</option>
 	{{else}}
 	{{else}}
   	<option value="{{$subject.ID}}">{{$subject.Name}}</option>
   	<option value="{{$subject.ID}}">{{$subject.Name}}</option>
@@ -58,11 +58,11 @@
       <label class="control-label" for="class_id">Classe</label>
       <label class="control-label" for="class_id">Classe</label>
       <select name="class_id" class="form-control selectpicker" id="class_id" placeholder="Materia" data-live-search="true" form="form_activities_add_update" title="Seleziona il nome della materia" data-dropup-auto="false" required>
       <select name="class_id" class="form-control selectpicker" id="class_id" placeholder="Materia" data-live-search="true" form="form_activities_add_update" title="Seleziona il nome della materia" data-dropup-auto="false" required>
 	<option value="0"></option>
 	<option value="0"></option>
-  	{{range $class := .AllClasses}}
-	{{if $.Update}}
+  	{{range $class := .Data.AllClasses}}
+	{{if $.Options.Get "update"}}
   	<option
   	<option
 	   value="{{$class.ID}}"
 	   value="{{$class.ID}}"
-	   {{index $.SelectedClass $class.ID}}>{{$class.Name}}
+	   {{index $.Data.SelectedClass $class.ID}}>{{$class.Name}}
 	</option>
 	</option>
 	{{else}}
 	{{else}}
   	<option value="{{$class.ID}}">{{$class.Name}}</option>
   	<option value="{{$class.ID}}">{{$class.Name}}</option>
@@ -71,20 +71,15 @@
       </select>
       </select>
     </div>
     </div>
 
 
-    <div class="form-group">
-      <label class="control-label" for="hours">Numero di ore</label>
-      <input class="form-control" min="0" type="number" name="hours" id="hours" {{if .Update}}value="{{.Activity.Hours}}"{{end}} required>
-    </div>
-
     <div class="form-group">
     <div class="form-group">
       <label class="control-label" for="teacher_id">Docente</label>
       <label class="control-label" for="teacher_id">Docente</label>
       <select name="teacher_id" class="form-control selectpicker" id="teacher_id" placeholder="Docente" data-live-search="true" form="form_activities_add_update" title="Seleziona il nome del docente" data-dropup-auto="false">
       <select name="teacher_id" class="form-control selectpicker" id="teacher_id" placeholder="Docente" data-live-search="true" form="form_activities_add_update" title="Seleziona il nome del docente" data-dropup-auto="false">
 	<option value="0"></option>
 	<option value="0"></option>
-  	{{range $teacher := .AllTeachers}}
-	{{if $.Update}}
+  	{{range $teacher := .Data.AllTeachers}}
+	{{if $.Options.Get "update"}}
   	<option
   	<option
 	   value="{{$teacher.ID}}"
 	   value="{{$teacher.ID}}"
-	   {{index $.SelectedTeacher $teacher.ID}}>{{$teacher.Name}} {{$teacher.Surname}}
+	   {{index $.Data.SelectedTeacher $teacher.ID}}>{{$teacher.Name}} {{$teacher.Surname}}
 	</option>
 	</option>
 	{{else}}
 	{{else}}
   	<option value="{{$teacher.ID}}">{{$teacher.Name}} {{$teacher.Surname}}</option>
   	<option value="{{$teacher.ID}}">{{$teacher.Name}} {{$teacher.Surname}}</option>
@@ -92,13 +87,18 @@
   	{{end}}
   	{{end}}
       </select>
       </select>
     </div>
     </div>
+    
+    <div class="form-group">
+      <label class="control-label" for="hours">Numero di ore</label>
+      <input class="form-control" min="0" type="number" name="hours" id="hours" {{if .Options.Get "update"}}value="{{.Data.Activity.Hours}}"{{end}} required>
+    </div>
 
 
     <div class="form-group">
     <div class="form-group">
       <button type="submit" class="btn btn-primary">Salva</button>
       <button type="submit" class="btn btn-primary">Salva</button>
-      {{if .Update}}
-      <a href="/activities" class="btn btn-default">Annulla</a>
+      {{if .Options.Get "update"}}
+      <a href="/activities{{queryString "base" "activities"}}" class="btn btn-default">Annulla</a>
       {{else}}
       {{else}}
-      <a href="/activities" class="btn btn-default">Annulla</a>
+      <a href="/activities{{queryString "base" "activities"}}" class="btn btn-default">Annulla</a>
       {{end}}
       {{end}}
     </div>
     </div>
     
     

+ 1 - 1
templates/activities_show.html.tpl

@@ -81,7 +81,7 @@
       <div class="list-group" id="classes_list_group">
       <div class="list-group" id="classes_list_group">
 	<a href="/activities/{{.Data.Teacher.ID}}/update{{queryString "base" "teachers_add_update"}}" class="list-group-item clearfix">
 	<a href="/activities/{{.Data.Teacher.ID}}/update{{queryString "base" "teachers_add_update"}}" class="list-group-item clearfix">
 	  <span class="glyphicon glyphicon-briefcase"></span>
 	  <span class="glyphicon glyphicon-briefcase"></span>
-	  {{.Teacher.Surname}} {{.Teacher.Name}}
+	  {{.Data.Teacher.Surname}} {{.Data.Teacher.Name}}
 	</a>
 	</a>
       </div>
       </div>