Files
go-sjles-pta-vote/server/services/putmembers.go

45 lines
822 B
Go

package services
import (
"encoding/csv"
"fmt"
"strings"
"github.com/pkg/errors"
)
type Member struct {
Name string
Email string
}
func ParseMembersFromBytes(year int, fileBytes []byte) ([]Member, error) {
reader := csv.NewReader(strings.NewReader(string(fileBytes)))
records, err := reader.ReadAll()
if err != nil {
return nil, errors.Wrap(err, "failed to read CSV from bytes")
}
var members []Member
for i, record := range records {
if i == 0 {
continue // Skip the first line (column headers)
}
if len(record) < 4 {
continue
}
firstName := record[1]
lastName := record[2]
email := record[3]
members = append(members, Member{
Name: fmt.Sprintf("%s %s", firstName, lastName),
Email: email,
})
}
if len(members) == 0 {
members = []Member{}
}
return members, nil
}