package service

import (
	"context"
)

// SystemSettings 系统设置
type SystemSettings struct {
	System   SystemInfo   `json:"system"`
	Security SecurityInfo `json:"security"`
	Features FeaturesInfo `json:"features"`
}

// SystemInfo 系统信息
type SystemInfo struct {
	Name        string `json:"name"`
	Version     string `json:"version"`
	Environment string `json:"environment"`
	Description string `json:"description"`
}

// SecurityInfo 安全设置
type SecurityInfo struct {
	PasswordMinLength        int  `json:"password_min_length"`
	PasswordRequireUppercase bool `json:"password_require_uppercase"`
	PasswordRequireLowercase bool `json:"password_require_lowercase"`
	PasswordRequireNumbers   bool `json:"password_require_numbers"`
	PasswordRequireSymbols   bool `json:"password_require_symbols"`
	PasswordHistory          int  `json:"password_history"`
	TOTPEnabled              bool `json:"totp_enabled"`
	LoginFailLock            bool `json:"login_fail_lock"`
	LoginFailThreshold       int  `json:"login_fail_threshold"`
	LoginFailDuration        int  `json:"login_fail_duration"`   // 分钟
	SessionTimeout           int  `json:"session_timeout"`       // 秒
	DeviceTrustDuration      int  `json:"device_trust_duration"` // 秒
}

// FeaturesInfo 功能开关
type FeaturesInfo struct {
	EmailVerification   bool     `json:"email_verification"`
	PhoneVerification   bool     `json:"phone_verification"`
	OAuthProviders      []string `json:"oauth_providers"`
	SSOEnabled          bool     `json:"sso_enabled"`
	OperationLogEnabled bool     `json:"operation_log_enabled"`
	LoginLogEnabled     bool     `json:"login_log_enabled"`
	DataExportEnabled   bool     `json:"data_export_enabled"`
	DataImportEnabled   bool     `json:"data_import_enabled"`
}

// SettingsService 系统设置服务
type SettingsService struct{}

// NewSettingsService 创建系统设置服务
func NewSettingsService() *SettingsService {
	return &SettingsService{}
}

// GetSettings 获取系统设置
func (s *SettingsService) GetSettings(ctx context.Context) (*SystemSettings, error) {
	return &SystemSettings{
		System: SystemInfo{
			Name:        "用户管理系统",
			Version:     "1.0.0",
			Environment: "Production",
			Description: "基于 Go + React 的现代化用户管理系统",
		},
		Security: SecurityInfo{
			PasswordMinLength:        8,
			PasswordRequireUppercase: true,
			PasswordRequireLowercase: true,
			PasswordRequireNumbers:   true,
			PasswordRequireSymbols:   true,
			PasswordHistory:          5,
			TOTPEnabled:              true,
			LoginFailLock:            true,
			LoginFailThreshold:       5,
			LoginFailDuration:        30,
			SessionTimeout:           86400,   // 1天
			DeviceTrustDuration:      2592000, // 30天
		},
		Features: FeaturesInfo{
			EmailVerification:   true,
			PhoneVerification:   false,
			OAuthProviders:      []string{"GitHub", "Google"},
			SSOEnabled:          false,
			OperationLogEnabled: true,
			LoginLogEnabled:     true,
			DataExportEnabled:   true,
			DataImportEnabled:   true,
		},
	}, nil
}
