123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- package api
- import (
- "encoding/json"
- "fmt"
- "net/http"
- "strconv"
- "strings"
- "../settings"
- )
- // var Classrooms = []Classroom
- func CreateClassroom(w http.ResponseWriter, r *http.Request) {
- showAPIRequest(r)
- var newClassroom Classroom
- err := json.NewDecoder(r.Body).Decode(&newClassroom)
- if err != nil {
- json.NewEncoder(w).Encode(struct{ Error string }{Error: "error add new classroom"})
- showError(r, err)
- return
- }
- settings.DB.Create(&newClassroom)
- fmt.Println(newClassroom)
- json.NewEncoder(w).Encode(struct{ Result string }{Result: "added new classroom"})
- return
- }
- func GetBuilding(w http.ResponseWriter, r *http.Request) {
- showAPIRequest(r)
- w.Header().Set("Content-Type", "application/json")
- path := r.URL.Path
- path = strings.Replace(path, "/api/building/", "", 1)
- if path == "" {
- var buildings []Building
- settings.DB.Find(&buildings)
- json.NewEncoder(w).Encode(buildings)
- return
- }
- var building Building
- settings.DB.Where("id = ?", path).First(&building)
- json.NewEncoder(w).Encode(building)
- }
- func ClassroomByNumber(w http.ResponseWriter, r *http.Request) {
- w.Header().Set("Content-Type", "application/json")
- showAPIRequest(r)
- if r.Method == "GET" {
- var classroom Classroom
- path := r.URL.Path
- path = strings.Replace(path, "/api/classroom/name/", "", 1)
- settings.DB.Where("name = ?", path).First(&classroom)
- json.NewEncoder(w).Encode(classroom)
- return
- }
- }
- func UpdateClassroom(w http.ResponseWriter, r *http.Request) {
- showAPIRequest(r)
- var newClassroom Classroom
- err := json.NewDecoder(r.Body).Decode(&newClassroom)
- if err != nil {
- json.NewEncoder(w).Encode(struct{ Error string }{Error: "error update Classroom"})
- fmt.Println(err)
- return
- }
- json.NewEncoder(w).Encode(struct{ Result string }{Result: "Successfully updated Classroom"})
- return
- }
- func ClassroomRoute(w http.ResponseWriter, r *http.Request) {
- showAPIRequest(r)
- w.Header().Set("Content-Type", "application/json")
- if r.Method == "POST" {
- CreateClassroom(w, r)
- return
- }
- if r.Method == "UPDATE" || r.Method == "PATCH" {
- UpdateClassroom(w, r)
- return
- }
- if replacePath(r.URL.Path, "/api/classroom/") == "" {
- GetClassrooms(w, r)
- return
- }
- if r.Method == "GET" {
- if replacePath(r.URL.Path, "/api/classroom/") == "" {
- GetClassrooms(w, r)
- return
- }
- GetClassroom(w, r)
- return
- }
- json.NewEncoder(w).Encode(struct{ Error string }{Error: "This method is not supported"})
- }
- func GetClassroom(w http.ResponseWriter, r *http.Request) {
- path := replacePath(r.URL.Path, "/api/classroom/")
- num, err := strconv.Atoi(path)
- if err != nil {
- json.NewEncoder(w).Encode(struct{ Error string }{Error: "strconv error"})
- showError(r, err)
- return
- }
- var room Classroom
- settings.DB.Where("id = ?", num).First(&room)
- json.NewEncoder(w).Encode(room)
- }
- func GetClassrooms(w http.ResponseWriter, r *http.Request) {
- if r.Method == "GET" {
- var classrooms []Classroom
- settings.DB.Find(&classrooms)
- json.NewEncoder(w).Encode(classrooms)
- return
- }
- }
- func GetClassroomByComputer(w http.ResponseWriter, r *http.Request) {
- showAPIRequest(r)
- w.Header().Set("Content-Type", "application/json")
- if r.Method == "GET" {
- path := r.URL.Path
- path = strings.Replace(path, "/api/classroom/", "", 1)
- if path == "computer" {
- var Classrooms []Classroom
- settings.DB.Where("iscomputer = ?", true).Find(&Classrooms)
- json.NewEncoder(w).Encode(Classrooms)
- return
- }
- if path == "lecture" {
- var Classrooms []Classroom
- settings.DB.Where("iscomputer = ?", false).Find(&Classrooms)
- json.NewEncoder(w).Encode(Classrooms)
- return
- }
- }
- }
|