92 lines
2.3 KiB
Go
92 lines
2.3 KiB
Go
package controllers
|
|
|
|
import (
|
|
"InfantrySkillCalculator/models"
|
|
"errors"
|
|
"github.com/gin-gonic/gin"
|
|
"net/http"
|
|
"session"
|
|
)
|
|
|
|
type UpdateSettingsInput struct {
|
|
ActiveGameID uint `json:"active_game_id"`
|
|
SquadColors bool `json:"squad_colors"`
|
|
CalcMedian bool `json:"calc_median"`
|
|
UseCache bool `json:"use_cache"`
|
|
}
|
|
|
|
// GetSettings GET /settings
|
|
func GetSettings(c *gin.Context) {
|
|
var settings models.UserSettings
|
|
|
|
username, ok := session.GetUsername(c)
|
|
if !ok {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "Not logged in!"})
|
|
return
|
|
}
|
|
|
|
if err := models.DB.Where("username = ?", username).First(&settings).Error; err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "No settings available!"})
|
|
return
|
|
}
|
|
|
|
sanitizedSettings := map[string]interface{}{
|
|
"active_game_id": settings.ActiveGameID,
|
|
"squad_colors": settings.SquadColors,
|
|
"calc_median": settings.CalcMedian,
|
|
"use_cache": settings.UseCache,
|
|
}
|
|
|
|
c.JSON(http.StatusOK, sanitizedSettings)
|
|
}
|
|
|
|
func GetActiveGame(c *gin.Context) (models.Game, error) {
|
|
var settings models.UserSettings
|
|
var game models.Game
|
|
username, ok := session.GetUsername(c)
|
|
|
|
if !ok {
|
|
err := errors.New("not logged in")
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
return models.Game{}, err
|
|
}
|
|
|
|
if err := models.DB.Where("username = ?", username).First(&settings).Error; err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "No settings available!"})
|
|
return models.Game{}, err
|
|
}
|
|
|
|
if err := models.DB.Where("id = ?", settings.ActiveGameID).First(&game).Error; err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "No active game available!"})
|
|
return models.Game{}, err
|
|
}
|
|
|
|
return game, nil
|
|
}
|
|
|
|
// UpdateSettings PATCH /settings
|
|
func UpdateSettings(c *gin.Context) {
|
|
var settings models.UserSettings
|
|
|
|
username, ok := session.GetUsername(c)
|
|
if !ok {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "Not logged in!"})
|
|
return
|
|
}
|
|
|
|
if err := models.DB.Where("username = ?", username).First(&settings).Error; err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "No settings available!"})
|
|
return
|
|
}
|
|
|
|
var input UpdateSettingsInput
|
|
if err := c.ShouldBindJSON(&input); err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
|
|
models.DB.Model(&settings).Updates(input)
|
|
|
|
c.JSON(http.StatusOK, nil)
|
|
}
|