activity.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. package orm
  2. import (
  3. "net/http"
  4. "github.com/jinzhu/gorm"
  5. "gogs.carducci-dante.gov.it/karmen/core/renderer"
  6. )
  7. type Activity struct {
  8. gorm.Model
  9. Name string
  10. Class *Class
  11. Teacher *Teacher
  12. SupplyTeacher *Teacher
  13. Subject *Subject
  14. Student *Student
  15. GroupActivity bool
  16. GroupActivityHours int `schema:"group_activity_hours"`
  17. ClassID uint `schema:"class_id"`
  18. TeacherID uint `schema:"teacher_id"`
  19. SupplyTeacherID uint `schema:"supply_teacher_id"`
  20. SubjectID uint `schema:"subject_id"`
  21. StudentID uint `schema:"student_id"`
  22. Hours int
  23. prevTeacherID uint
  24. }
  25. type ActivityForUpdate struct {
  26. Activity Activity
  27. AllClasses []*Class
  28. AllSubjects []*Subject
  29. AllTeachers []*Teacher
  30. AllStudents []*Student
  31. SelectedStudent map[uint]string
  32. SelectedTeacher map[uint]string
  33. SelectedSupplyTeacher map[uint]string
  34. SelectedSubject map[uint]string
  35. SelectedClass map[uint]string
  36. }
  37. type ActivityForAdd struct {
  38. AllClasses []*Class
  39. AllSubjects []*Subject
  40. AllTeachers []*Teacher
  41. AllStudents []*Student
  42. }
  43. func (a *Activity) GetID() uint { return a.ID }
  44. func GetActivity(args map[string]string) (interface{}, error) {
  45. var activity Activity
  46. if err := DB().First(&activity, args["id"]).Error; err != nil {
  47. return nil, err
  48. }
  49. return &activity, nil
  50. }
  51. func GetActivityAll(args map[string]string) (interface{}, error) {
  52. var activity Activity
  53. id := args["id"]
  54. if err := DB().Preload("Student").Preload("Teacher").Preload("Subject").Preload("Class").First(&activity, id).Error; err != nil {
  55. return nil, err
  56. }
  57. return &activity, nil
  58. }
  59. func GetActivityForUpdate(args map[string]string) (interface{}, error) {
  60. var data ActivityForUpdate
  61. id := args["id"]
  62. if err := DB().Preload("SupplyTeacher").Preload("Teacher").Preload("Subject").Preload("Class").First(&data.Activity, id).Error; err != nil {
  63. return nil, err
  64. }
  65. if err := DB().Find(&data.AllClasses).Error; err != nil {
  66. return nil, err
  67. }
  68. if err := DB().Find(&data.AllSubjects).Error; err != nil {
  69. return nil, err
  70. }
  71. if err := DB().Find(&data.AllTeachers).Error; err != nil {
  72. return nil, err
  73. }
  74. if err := DB().Find(&data.AllStudents).Error; err != nil {
  75. return nil, err
  76. }
  77. data.SelectedTeacher = make(map[uint]string)
  78. data.SelectedTeacher[data.Activity.TeacherID] = "selected"
  79. data.SelectedSupplyTeacher = make(map[uint]string)
  80. data.SelectedSupplyTeacher[data.Activity.SupplyTeacherID] = "selected"
  81. data.SelectedStudent = make(map[uint]string)
  82. data.SelectedStudent[data.Activity.StudentID] = "selected"
  83. data.SelectedClass = make(map[uint]string)
  84. data.SelectedClass[data.Activity.ClassID] = "selected"
  85. data.SelectedSubject = make(map[uint]string)
  86. data.SelectedSubject[data.Activity.SubjectID] = "selected"
  87. return data, nil
  88. }
  89. func GetActivityForAdd(args map[string]string) (interface{}, error) {
  90. var data ActivityForAdd
  91. if err := DB().Find(&data.AllClasses).Error; err != nil {
  92. return nil, err
  93. }
  94. if err := DB().Find(&data.AllSubjects).Error; err != nil {
  95. return nil, err
  96. }
  97. if err := DB().Find(&data.AllTeachers).Error; err != nil {
  98. return nil, err
  99. }
  100. if err := DB().Find(&data.AllStudents).Error; err != nil {
  101. return nil, err
  102. }
  103. return data, nil
  104. }
  105. func GetActivitiesAll(args map[string]string) (interface{}, error) {
  106. var activities []*Activity
  107. if err := DB().Preload("Teacher").Preload("Subject").Preload("Class").Order("name").Find(&activities).Error; err != nil {
  108. return nil, err
  109. }
  110. return activities, nil
  111. }
  112. func GetActivities(args map[string]string) (interface{}, error) {
  113. var activities []*Activity
  114. if err := DB().Order("surname,name").Find(&activities).Error; err != nil {
  115. return nil, err
  116. }
  117. return activities, nil
  118. }
  119. func SaveActivity(activity interface{}) (interface{}, error) {
  120. if err := DB().Save(activity).Error; err != nil {
  121. return nil, err
  122. }
  123. return activity, nil
  124. }
  125. func UpdateActivity(args map[string]string, r *http.Request) (IDer, error) {
  126. activity, err := GetActivity(args)
  127. if err != nil {
  128. return nil, err
  129. }
  130. err = renderer.Decode(activity, r)
  131. if err != nil {
  132. return nil, err
  133. }
  134. _, err = SaveActivity(activity)
  135. if err != nil {
  136. return nil, err
  137. }
  138. activity, err = GetActivity(args)
  139. if err != nil {
  140. return nil, err
  141. }
  142. return activity.(*Activity), nil
  143. }
  144. func AddActivity(args map[string]string, r *http.Request) (IDer, error) {
  145. activity := new(Activity)
  146. err := renderer.Decode(activity, r)
  147. if err != nil {
  148. return nil, err
  149. }
  150. activity, err = CreateActivity(activity)
  151. if err != nil {
  152. return nil, err
  153. }
  154. return activity, nil
  155. }
  156. func CreateActivity(activity *Activity) (*Activity, error) {
  157. if err := DB().Create(activity).Error; err != nil {
  158. return nil, err
  159. }
  160. return activity, nil
  161. }
  162. func DeleteActivity(args map[string]string, r *http.Request) (IDer, error) {
  163. activity, err := GetActivity(args)
  164. if err != nil {
  165. return nil, err
  166. }
  167. if err := DB().Unscoped().Delete(activity.(*Activity)).Error; err != nil {
  168. return nil, err
  169. }
  170. return activity.(*Activity), nil
  171. }