studyplan.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package api
  2. import (
  3. "../settings"
  4. "encoding/json"
  5. "fmt"
  6. "net/http"
  7. "strconv"
  8. )
  9. var studyplan []Studyplan
  10. func StudyplanRoute(w http.ResponseWriter, r *http.Request) {
  11. showAPIRequest(r)
  12. w.Header().Set("Content-Type", "application/json")
  13. if r.Method == "POST" {
  14. CreateStudyPlan(w, r)
  15. return
  16. }
  17. if r.Method == "UPDATE" || r.Method == "PATCH" {
  18. UpdateStudyPlan(w, r)
  19. return
  20. }
  21. path := replacePath(r.URL.Path, "/api/studyplan/")
  22. if path == "" {
  23. GetStudyPlan(w, r)
  24. return
  25. }
  26. num, err := strconv.Atoi(path)
  27. if err != nil {
  28. json.NewEncoder(w).Encode(struct{ Error string }{Error: "strconv error"})
  29. fmt.Println(err)
  30. return
  31. }
  32. settings.DB.Find(&studyplan)
  33. if num < 0 || num > len(studyplan)+1 {
  34. json.NewEncoder(w).Encode(struct{ Error string }{Error: "strconv error"})
  35. fmt.Println(err)
  36. return
  37. }
  38. if r.Method == "GET" {
  39. GetStudyPlanById(w, r, num)
  40. return
  41. }
  42. json.NewEncoder(w).Encode(struct{ Error string }{Error: "This method is not supported"})
  43. }
  44. func UpdateStudyPlan(w http.ResponseWriter, r *http.Request) {
  45. var StudyPlan Studyplan
  46. var StudyplanToUpdate Studyplan
  47. err := json.NewDecoder(r.Body).Decode(&StudyPlan)
  48. if err != nil {
  49. showError(r, err)
  50. json.NewEncoder(w).Encode(struct{ Error string }{Error: "error update StudyPlan"})
  51. return
  52. }
  53. settings.DB.First(&StudyplanToUpdate, StudyPlan.ID)
  54. settings.DB.Model(&StudyplanToUpdate).Updates(StudyPlan)
  55. json.NewEncoder(w).Encode(struct{ Result string }{Result: "updated StudyPlan"})
  56. return
  57. }
  58. func CreateStudyPlan(w http.ResponseWriter, r *http.Request) {
  59. var newStudyPlan Studyplan
  60. err := json.NewDecoder(r.Body).Decode(&newStudyPlan)
  61. if err != nil {
  62. json.NewEncoder(w).Encode(struct{ Error string }{Error: "error add new StudyPlan"})
  63. fmt.Println(err)
  64. return
  65. }
  66. settings.DB.Create(&newStudyPlan)
  67. json.NewEncoder(w).Encode(struct{ Result string }{Result: "added new StudyPlan"})
  68. return
  69. }
  70. func GetStudyPlanById(w http.ResponseWriter, r *http.Request, num int) {
  71. var StudyPlan Studyplan
  72. settings.DB.Where("id = ?", num).First(&StudyPlan)
  73. json.NewEncoder(w).Encode(StudyPlan)
  74. return
  75. }
  76. func GetStudyPlan(w http.ResponseWriter, r *http.Request) {
  77. showAPIRequest(r)
  78. w.Header().Set("Content-Type", "application/json")
  79. if r.Method == "GET" {
  80. var StudyPlan []Studyplan
  81. settings.DB.Find(&StudyPlan)
  82. json.NewEncoder(w).Encode(StudyPlan)
  83. }
  84. return
  85. }
  86. type Hours struct{
  87. IDSubject uint
  88. Variative uint
  89. }
  90. // func HourseComparison(w http.ResponseWriter, r *http.Request, num int){
  91. // var exampleprogram Exampleprogram
  92. // var subplan []Subjectofplan
  93. // var group Group
  94. // var opop []Subjectofexample
  95. // var hoursdifferense HourseComparison
  96. // var hoursDifference Hours
  97. // settings.DB.Where("groupnumber = ?", num).First(&group)
  98. // groupid := group.ID
  99. // var studyplan Studyplan
  100. // settings.DB.Where("id_group = ?", groupid).First(&studyplan)
  101. // studyplanid := studyplan.ID
  102. // // Находит нужный subjectplan по номеру группы
  103. // settings.DB.Where("id_plan = ?", studyplanid).Find(&subplan)
  104. // //Находит нужный subjectofexample по номеру группы
  105. // exampleprogramid := settings.DB.Where("id_specialty = ?", studyplan.IDSpecialty).First(&exampleprogram)
  106. // settings.DB.Where("id_exampleprogram = ?", exampleprogramid).Find(&opop)
  107. // for _, subjectPlan := range subplan{
  108. // for _, subjectOpop := range opop{
  109. // var hd Hours
  110. // if subjectPlan.ID == subjectOpop.ID{
  111. // hd.IDSubject = subjectPlan.IDSubject
  112. // hd.Variative = subjectPlan.Hoursquantitytotal - subjectOpop.Totalhours
  113. // hoursDifference = append(hoursDifference, hd)
  114. // }
  115. // }
  116. // }
  117. // json.NewEncoder(w).Encode(hoursDifference)
  118. // // hl := subplan.Hoursquantitytotal - opop.Totalhours
  119. // // if hl >= 0 {
  120. // // hoursdifferense.Hoursleft = hl
  121. // // json.NewEncoder(w).Encode(Hoursleft)
  122. // // } else {
  123. // // json.NewEncoder(w).Encode(struct{ Result string }{Result: fmt.Sprintf("hours differense = %d",hl) })
  124. // // }
  125. // return
  126. // }