mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 02:32:57 +00:00
upload
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"fotbal-club/internal/models"
|
||||
"fotbal-club/internal/services"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type SetupController struct {
|
||||
setupService *services.SetupService
|
||||
}
|
||||
|
||||
func NewSetupController(db *gorm.DB) *SetupController {
|
||||
return &SetupController{
|
||||
setupService: services.NewSetupService(db),
|
||||
}
|
||||
}
|
||||
|
||||
type SetupStatusResponse struct {
|
||||
Status string `json:"status"`
|
||||
SMTPConfigured bool `json:"smtp_configured"`
|
||||
ClubImported bool `json:"club_imported"`
|
||||
}
|
||||
|
||||
type ClubInfoRequest struct {
|
||||
FACRClubID string `json:"facr_club_id" binding:"required"`
|
||||
Name string `json:"name" binding:"required"`
|
||||
ShortName string `json:"short_name"`
|
||||
LogoURL string `json:"logo_url"`
|
||||
PrimaryColor string `json:"primary_color"`
|
||||
SecondaryColor string `json:"secondary_color"`
|
||||
TextColor string `json:"text_color"`
|
||||
}
|
||||
|
||||
// GetSetupStatus returns the current setup status
|
||||
// @Summary Get setup status
|
||||
// @Description Returns the current setup status
|
||||
// @Tags setup
|
||||
// @Produce json
|
||||
// @Success 200 {object} SetupStatusResponse
|
||||
// @Router /api/v1/setup/status [get]
|
||||
func (sc *SetupController) GetSetupStatus(c *gin.Context) {
|
||||
setupInfo, err := sc.setupService.GetSetupStatus()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to get setup status"})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, SetupStatusResponse{
|
||||
Status: string(setupInfo.Status),
|
||||
SMTPConfigured: setupInfo.SMTPConfigured,
|
||||
ClubImported: setupInfo.ClubImported,
|
||||
})
|
||||
}
|
||||
|
||||
// SaveSMTPConfig marks SMTP as configured
|
||||
// @Summary Save SMTP configuration
|
||||
// @Description Marks SMTP configuration as completed
|
||||
// @Tags setup
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Success 200 {object} map[string]string
|
||||
// @Router /api/v1/setup/smtp [post]
|
||||
func (sc *SetupController) SaveSMTPConfig(c *gin.Context) {
|
||||
if err := sc.setupService.MarkSMTPConfigured(); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to save SMTP configuration"})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"message": "SMTP configuration saved successfully"})
|
||||
}
|
||||
|
||||
// SaveClubInfo saves club information from FACR
|
||||
// @Summary Save club information
|
||||
// @Description Saves club information imported from FACR
|
||||
// @Tags setup
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param clubInfo body ClubInfoRequest true "Club information"
|
||||
// @Success 200 {object} map[string]string
|
||||
// @Failure 400 {object} map[string]string
|
||||
// @Router /api/v1/setup/club [post]
|
||||
func (sc *SetupController) SaveClubInfo(c *gin.Context) {
|
||||
var req ClubInfoRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
clubInfo := &models.ClubInfo{
|
||||
FACRClubID: req.FACRClubID,
|
||||
Name: req.Name,
|
||||
ShortName: req.ShortName,
|
||||
LogoURL: req.LogoURL,
|
||||
PrimaryColor: req.PrimaryColor,
|
||||
SecondaryColor: req.SecondaryColor,
|
||||
TextColor: req.TextColor,
|
||||
}
|
||||
|
||||
if err := sc.setupService.SaveClubInfo(clubInfo); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to save club information"})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"message": "Club information saved successfully"})
|
||||
}
|
||||
|
||||
// CompleteSetup marks the setup as completed
|
||||
// @Summary Complete setup
|
||||
// @Description Marks the initial setup as completed
|
||||
// @Tags setup
|
||||
// @Produce json
|
||||
// @Success 200 {object} map[string]string
|
||||
// @Router /api/v1/setup/complete [post]
|
||||
func (sc *SetupController) CompleteSetup(c *gin.Context) {
|
||||
if err := sc.setupService.CompleteSetup(); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to complete setup"})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"message": "Setup completed successfully"})
|
||||
}
|
||||
|
||||
// SkipSetup marks the setup as skipped
|
||||
// @Summary Skip setup
|
||||
// @Description Skips the initial setup
|
||||
// @Tags setup
|
||||
// @Produce json
|
||||
// @Success 200 {object} map[string]string
|
||||
// @Router /api/v1/setup/skip [post]
|
||||
func (sc *SetupController) SkipSetup(c *gin.Context) {
|
||||
if err := sc.setupService.SkipSetup(); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to skip setup"})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"message": "Setup skipped"})
|
||||
}
|
||||
Reference in New Issue
Block a user