package fieldgroups import ( "fmt" "pdf-wizard/internal/models" ) // SingleSelectHandler handles groups of checkboxes where exactly one must be selected. type SingleSelectHandler struct{} func init() { Register(SingleSelectHandler{}) } func (SingleSelectHandler) Type() string { return "single_select" } func (SingleSelectHandler) Validate(fields []models.FormField, fieldValues map[int]string) error { count := 0 for _, f := range fields { if v, ok := fieldValues[f.ID]; ok && v == "1" { count++ if count > 1 { return fmt.Errorf("only one option may be selected in this group") } } } if count == 0 { return fmt.Errorf("exactly one option must be selected in this group") } return nil } func (SingleSelectHandler) ConvertToFillValues(fields []models.FormField, fieldValues map[int]string) map[int]string { result := make(map[int]string) for _, f := range fields { if v, ok := fieldValues[f.ID]; ok { result[f.ID] = v } else { result[f.ID] = "" } } return result }