package api import ( "database/sql" "encoding/json" "fmt" "net/http" "faculty_media_report/dbi" ) type Reports struct { Activities []dbi.Activity `json:"activities"` Appearances []dbi.Appearance `json:"appearances"` Scholarship []dbi.Scholarship `json:"scholarship"` } func ReportActivity(w http.ResponseWriter, conn *sql.Conn, req jsonRPCRequest, user dbi.User) { var reports Reports if err := json.Unmarshal(req.Params, &reports); err != nil { jsonRPCErr(w, -32602, "Invalid params", req.ID) return } for i := range reports.Activities { reports.Activities[i].Username = user.Username if reports.Activities[i].Status == "" { reports.Activities[i].Status = "reported" } if err := dbi.CreateActivity(conn, &reports.Activities[i]); err != nil { err_msg := fmt.Sprintf("error saving Activity entry %s\n", err) jsonRPCErr(w, -32603, err_msg, req.ID) return } } for i := range reports.Appearances { reports.Appearances[i].Username = user.Username if reports.Appearances[i].Status == "" { reports.Appearances[i].Status = "reported" } if err := dbi.CreateAppearance(conn, &reports.Appearances[i]); err != nil { err_msg := fmt.Sprintf("error saving Appearance entry %s\n", err) jsonRPCErr(w, -32603, err_msg, req.ID) return } } for i := range reports.Scholarship { reports.Scholarship[i].Username = user.Username if reports.Scholarship[i].Status == "" { reports.Scholarship[i].Status = "reported" } if err := dbi.CreateScholarship(conn, &reports.Scholarship[i]); err != nil { err_msg := fmt.Sprintf("error saving Scholarship entry %s\n", err) jsonRPCErr(w, -32603, err_msg, req.ID) return } } writeJSONRPC(w, jsonRPCResponse{ Jsonrpc: "2.0", Result: true, ID: req.ID, }) }