-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmember.go
57 lines (49 loc) · 1.5 KB
/
member.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package model
import (
"github.com/mvl-at/qbs"
"strconv"
"strings"
"time"
)
//Defines a member.
type Member struct {
Id int64 `json:"id"`
FirstName string `json:"firstName" roles:"member"`
LastName string `json:"lastName" roles:"member"`
Joined int `json:"joined" roles:"member"`
Picture string `json:"picture" roles:"member"`
Active bool `json:"active" roles:"member"`
Birthday time.Time `json:"birthday" roles:"member"`
LoginAllowed bool `json:"loginAllowed"`
Username string `json:"username"`
Password string `json:"-"`
Gender string `json:"gender" roles:"member"`
Instrument *Instrument `json:"instrument" roles:"member"`
InstrumentId int64 `qbs:"fk:Instrument" json:"instrumentId" roles:"member"`
}
//Validates all association pointers and assign its id fields to the one of Member.
func (m *Member) Validate(qbs *qbs.Qbs) error {
if m.Instrument != nil {
m.InstrumentId = m.Instrument.Id
}
if len(m.Username) == 0 {
m.Username = identifier(m)
}
if len(m.Picture) == 0 {
m.Picture = identifier(m)
}
return nil
}
//generates human readable identifier
func identifier(m *Member) string {
replacements := map[string]string{
"ä": "ae",
"ö": "oe",
"ü": "ue",
"ß": "s"}
identifier := strings.ToLower(strings.Join([]string{m.FirstName, m.LastName, strconv.Itoa(m.Joined)}, "-"))
for k, v := range replacements {
identifier = strings.Replace(identifier, k, v, -1)
}
return identifier
}