50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
package handlers
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/web_server/response"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
func (h *Handler) GetAllLeagues(c *fiber.Ctx) error {
|
|
leagues, err := h.leagueSvc.GetAllLeagues(c.Context())
|
|
if err != nil {
|
|
return response.WriteJSON(c, fiber.StatusInternalServerError, "Failed to get leagues", err, nil)
|
|
}
|
|
|
|
return response.WriteJSON(c, fiber.StatusOK, "All leagues retrived", leagues, nil)
|
|
}
|
|
|
|
type SetLeagueActiveReq struct {
|
|
IsActive bool `json:"is_active"`
|
|
}
|
|
|
|
func (h *Handler) SetLeagueActive(c *fiber.Ctx) error {
|
|
leagueIdStr := c.Params("id")
|
|
if leagueIdStr == "" {
|
|
response.WriteJSON(c, fiber.StatusBadRequest, "Missing league id", nil, nil)
|
|
}
|
|
leagueId, err := strconv.Atoi(leagueIdStr)
|
|
if err != nil {
|
|
response.WriteJSON(c, fiber.StatusBadRequest, "invalid league id", nil, nil)
|
|
}
|
|
|
|
var req SetLeagueActiveReq
|
|
if err := c.BodyParser(&req); err != nil {
|
|
h.logger.Error("SetLeagueReq failed", "error", err)
|
|
return response.WriteJSON(c, fiber.StatusBadRequest, "Failed to parse request", err, nil)
|
|
}
|
|
|
|
valErrs, ok := h.validator.Validate(c, req)
|
|
if !ok {
|
|
return response.WriteJSON(c, fiber.StatusBadRequest, "Invalid request", valErrs, nil)
|
|
}
|
|
|
|
if err := h.leagueSvc.SetLeagueActive(c.Context(), int64(leagueId), req.IsActive); err != nil {
|
|
response.WriteJSON(c, fiber.StatusInternalServerError, "Failed to update league", err, nil)
|
|
}
|
|
|
|
return response.WriteJSON(c, fiber.StatusOK, "League updated successfully", nil, nil)
|
|
}
|