Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,574 changes: 1,574 additions & 0 deletions TechDocs/game_scheduling_feature.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion controller/BootstrapController.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ func BootstrapSchedulingData(w http.ResponseWriter, r *http.Request) {
username := vars["username"]
collegeID := vars["collegeID"]
seasonID := vars["seasonID"]
data := managers.GetCollegePollsBootstrap(username, collegeID, seasonID)
data := managers.GetSchedulePageBootstrap(username, collegeID, seasonID)
bootstrapData, err := easyjson.Marshal(data)
if err != nil {
log.Printf("Failed to encode JSON response: %v", err)
Expand Down
136 changes: 136 additions & 0 deletions controller/SchedulerController.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
package controller

import (
"encoding/json"
"net/http"

"github.com/CalebRose/SimFBA/managers"
"github.com/CalebRose/SimFBA/structs"
"github.com/gorilla/mux"
)

func TestCFBScheduler(w http.ResponseWriter, r *http.Request) {
managers.BaseGenerateCFBSchedule(true)
json.NewEncoder(w).Encode(true)
}

// CreateCFBGameRequest accepts a CFBGameRequest body and persists it.
func CreateCFBGameRequest(w http.ResponseWriter, r *http.Request) {
var request structs.CFBGameRequest
if err := json.NewDecoder(r.Body).Decode(&request); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
managers.CreateCFBGameRequest(request)
json.NewEncoder(w).Encode(true)
}

// AcceptCFBGameRequest marks the request as accepted.
func AcceptCFBGameRequest(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
requestID := vars["requestID"]
if len(requestID) == 0 {
panic("User did not provide a requestID")
}
managers.AcceptCFBGameRequest(requestID)
json.NewEncoder(w).Encode(true)
}

// RejectCFBGameRequest deletes the request.
func RejectCFBGameRequest(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
requestID := vars["requestID"]
if len(requestID) == 0 {
panic("User did not provide a requestID")
}
managers.RejectCFBGameRequest(requestID)
json.NewEncoder(w).Encode(true)
}

// ProcessCFBGameRequest converts an accepted request into a CollegeGame record.
func ProcessCFBGameRequest(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
requestID := vars["requestID"]
if len(requestID) == 0 {
panic("User did not provide a requestID")
}
managers.ProcessCFBGameRequest(requestID)
json.NewEncoder(w).Encode(true)
}

// VetoCFBGameRequest deletes the request via admin veto.
func VetoCFBGameRequest(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
requestID := vars["requestID"]
if len(requestID) == 0 {
panic("User did not provide a requestID")
}
managers.VetoCFBGameRequest(requestID)
json.NewEncoder(w).Encode(true)
}

// CreateNFLGameRequest accepts an NFLGameRequest body and persists it.
func CreateNFLGameRequest(w http.ResponseWriter, r *http.Request) {
var request structs.NFLGameRequest
if err := json.NewDecoder(r.Body).Decode(&request); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
managers.CreateNFLGameRequest(request)
json.NewEncoder(w).Encode(true)
}

// AcceptNFLGameRequest marks the NFL request as accepted.
func AcceptNFLGameRequest(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
requestID := vars["requestID"]
if len(requestID) == 0 {
panic("User did not provide a requestID")
}
managers.AcceptNFLGameRequest(requestID)
json.NewEncoder(w).Encode(true)
}

// RejectNFLGameRequest deletes the NFL request.
func RejectNFLGameRequest(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
requestID := vars["requestID"]
if len(requestID) == 0 {
panic("User did not provide a requestID")
}
managers.RejectNFLGameRequest(requestID)
json.NewEncoder(w).Encode(true)
}

// ProcessNFLGameRequest converts an accepted NFL request into an NFLGame record.
func ProcessNFLGameRequest(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
requestID := vars["requestID"]
if len(requestID) == 0 {
panic("User did not provide a requestID")
}
managers.ProcessNFLGameRequest(requestID)
json.NewEncoder(w).Encode(true)
}

// VetoNFLGameRequest deletes the NFL request via admin veto.
func VetoNFLGameRequest(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
requestID := vars["requestID"]
if len(requestID) == 0 {
panic("User did not provide a requestID")
}
managers.VetoNFLGameRequest(requestID)
json.NewEncoder(w).Encode(true)
}

// SwapCFBHomeAndAwayTeams accepts a gameID and swaps the home and away teams for that game.
func SwapCFBHomeAndAwayTeams(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
gameID := vars["gameID"]
if len(gameID) == 0 {
panic("User did not provide a gameID")
}
managers.SwapCFBGameHomeAndAwayTeams(gameID)
json.NewEncoder(w).Encode(true)
}
271 changes: 271 additions & 0 deletions data/2027/college_teams_csv.csv

Large diffs are not rendered by default.

Loading
Loading