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,96 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"fotbal-club/internal/models"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type SetupService struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewSetupService(db *gorm.DB) *SetupService {
|
||||
return &SetupService{db: db}
|
||||
}
|
||||
|
||||
// GetSetupStatus returns the current setup status
|
||||
func (s *SetupService) GetSetupStatus() (*models.SetupInfo, error) {
|
||||
var setupInfo models.SetupInfo
|
||||
if err := s.db.FirstOrCreate(&setupInfo, models.SetupInfo{Model: gorm.Model{ID: 1}}).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &setupInfo, nil
|
||||
}
|
||||
|
||||
// MarkSMTPConfigured marks the SMTP configuration as completed
|
||||
func (s *SetupService) MarkSMTPConfigured() error {
|
||||
return s.db.Model(&models.SetupInfo{}).Where("id = ?", 1).Updates(map[string]interface{}{
|
||||
"smtp_configured": true,
|
||||
"updated_at": time.Now(),
|
||||
}).Error
|
||||
}
|
||||
|
||||
// SaveClubInfo saves the club information from FACR
|
||||
func (s *SetupService) SaveClubInfo(clubInfo *models.ClubInfo) error {
|
||||
// Start a transaction
|
||||
tx := s.db.Begin()
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
tx.Rollback()
|
||||
}
|
||||
}()
|
||||
|
||||
// Update setup info
|
||||
if err := tx.Model(&models.SetupInfo{}).Where("id = ?", 1).Updates(map[string]interface{}{
|
||||
"club_imported": true,
|
||||
"updated_at": time.Now(),
|
||||
}).Error; err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
}
|
||||
|
||||
// Save club info
|
||||
clubInfo.SetupInfoID = 1
|
||||
if err := tx.Create(clubInfo).Error; err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
}
|
||||
|
||||
return tx.Commit().Error
|
||||
}
|
||||
|
||||
// CompleteSetup marks the setup as completed
|
||||
func (s *SetupService) CompleteSetup() error {
|
||||
now := time.Now()
|
||||
return s.db.Model(&models.SetupInfo{}).Where("id = ?", 1).Updates(map[string]interface{}{
|
||||
"status": models.SetupStatusCompleted,
|
||||
"completed_at": now,
|
||||
"updated_at": now,
|
||||
}).Error
|
||||
}
|
||||
|
||||
// SkipSetup marks the setup as skipped
|
||||
func (s *SetupService) SkipSetup() error {
|
||||
now := time.Now()
|
||||
return s.db.Model(&models.SetupInfo{}).Where("id = ?", 1).Updates(map[string]interface{}{
|
||||
"status": models.SetupStatusSkipped,
|
||||
"skipped_at": now,
|
||||
"updated_at": now,
|
||||
}).Error
|
||||
}
|
||||
|
||||
// GetClubInfo returns the club information if it exists
|
||||
func (s *SetupService) GetClubInfo() (*models.ClubInfo, error) {
|
||||
var clubInfo models.ClubInfo
|
||||
if err := s.db.Where("setup_info_id = ?", 1).First(&clubInfo).Error; err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return &clubInfo, nil
|
||||
}
|
||||
Reference in New Issue
Block a user