classroom.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package api
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "net/http"
  6. "strconv"
  7. "strings"
  8. "../settings"
  9. )
  10. // var Classrooms = []Classroom
  11. func CreateClassroom(w http.ResponseWriter, r *http.Request) {
  12. showAPIRequest(r)
  13. var newClassroom Classroom
  14. err := json.NewDecoder(r.Body).Decode(&newClassroom)
  15. if err != nil {
  16. json.NewEncoder(w).Encode(struct{ Error string }{Error: "error add new classroom"})
  17. showError(r, err)
  18. return
  19. }
  20. settings.DB.Create(&newClassroom)
  21. fmt.Println(newClassroom)
  22. json.NewEncoder(w).Encode(struct{ Result string }{Result: "added new classroom"})
  23. return
  24. }
  25. func GetBuilding(w http.ResponseWriter, r *http.Request) {
  26. showAPIRequest(r)
  27. w.Header().Set("Content-Type", "application/json")
  28. path := r.URL.Path
  29. path = strings.Replace(path, "/api/building/", "", 1)
  30. if path == "" {
  31. var buildings []Building
  32. settings.DB.Find(&buildings)
  33. json.NewEncoder(w).Encode(buildings)
  34. return
  35. }
  36. var building Building
  37. settings.DB.Where("id = ?", path).First(&building)
  38. json.NewEncoder(w).Encode(building)
  39. }
  40. func ClassroomByNumber(w http.ResponseWriter, r *http.Request) {
  41. w.Header().Set("Content-Type", "application/json")
  42. showAPIRequest(r)
  43. if r.Method == "GET" {
  44. var classroom Classroom
  45. path := r.URL.Path
  46. path = strings.Replace(path, "/api/classroom/name/", "", 1)
  47. settings.DB.Where("name = ?", path).First(&classroom)
  48. json.NewEncoder(w).Encode(classroom)
  49. return
  50. }
  51. }
  52. func UpdateClassroom(w http.ResponseWriter, r *http.Request) {
  53. showAPIRequest(r)
  54. var newClassroom Classroom
  55. err := json.NewDecoder(r.Body).Decode(&newClassroom)
  56. if err != nil {
  57. json.NewEncoder(w).Encode(struct{ Error string }{Error: "error update Classroom"})
  58. fmt.Println(err)
  59. return
  60. }
  61. json.NewEncoder(w).Encode(struct{ Result string }{Result: "Successfully updated Classroom"})
  62. return
  63. }
  64. func ClassroomRoute(w http.ResponseWriter, r *http.Request) {
  65. showAPIRequest(r)
  66. w.Header().Set("Content-Type", "application/json")
  67. if r.Method == "POST" {
  68. CreateClassroom(w, r)
  69. return
  70. }
  71. if r.Method == "UPDATE" || r.Method == "PATCH" {
  72. UpdateClassroom(w, r)
  73. return
  74. }
  75. if replacePath(r.URL.Path, "/api/classroom/") == "" {
  76. GetClassrooms(w, r)
  77. return
  78. }
  79. if r.Method == "GET" {
  80. if replacePath(r.URL.Path, "/api/classroom/") == "" {
  81. GetClassrooms(w, r)
  82. return
  83. }
  84. GetClassroom(w, r)
  85. return
  86. }
  87. json.NewEncoder(w).Encode(struct{ Error string }{Error: "This method is not supported"})
  88. }
  89. func GetClassroom(w http.ResponseWriter, r *http.Request) {
  90. path := replacePath(r.URL.Path, "/api/classroom/")
  91. num, err := strconv.Atoi(path)
  92. if err != nil {
  93. json.NewEncoder(w).Encode(struct{ Error string }{Error: "strconv error"})
  94. showError(r, err)
  95. return
  96. }
  97. var room Classroom
  98. settings.DB.Where("id = ?", num).First(&room)
  99. json.NewEncoder(w).Encode(room)
  100. }
  101. func GetClassrooms(w http.ResponseWriter, r *http.Request) {
  102. if r.Method == "GET" {
  103. var classrooms []Classroom
  104. settings.DB.Find(&classrooms)
  105. json.NewEncoder(w).Encode(classrooms)
  106. return
  107. }
  108. }
  109. func GetClassroomByComputer(w http.ResponseWriter, r *http.Request) {
  110. showAPIRequest(r)
  111. w.Header().Set("Content-Type", "application/json")
  112. if r.Method == "GET" {
  113. path := r.URL.Path
  114. path = strings.Replace(path, "/api/classroom/", "", 1)
  115. if path == "computer" {
  116. var Classrooms []Classroom
  117. settings.DB.Where("iscomputer = ?", true).Find(&Classrooms)
  118. json.NewEncoder(w).Encode(Classrooms)
  119. return
  120. }
  121. if path == "lecture" {
  122. var Classrooms []Classroom
  123. settings.DB.Where("iscomputer = ?", false).Find(&Classrooms)
  124. json.NewEncoder(w).Encode(Classrooms)
  125. return
  126. }
  127. }
  128. }