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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
package json
import (
"strconv"
"time"
"unicode"
"airlines/pkg/model"
)
func sOrEmpty(p *string) string {
if p == nil {
return ""
}
return *p
}
func (d DateYMD) ToDateUTC() time.Time {
if !d.Valid {
return time.Time{}
}
return time.Date(d.Time.Year(), d.Time.Month(), d.Time.Day(), 0, 0, 0, 0, time.UTC)
}
func onlyDigits(s string) string {
out := make([]rune, 0, len(s))
for _, r := range s {
if unicode.IsDigit(r) {
out = append(out, r)
}
}
return string(out)
}
func (jp JsonProfile) ToUser() *model.User {
return &model.User{
Name: sOrEmpty(jp.RealName.FirstName),
Surname: sOrEmpty(jp.RealName.LastName),
Nick: sOrEmpty(&jp.NickName),
Fathersname: "",
Sex: jp.Sex,
Birthday: model.SentinelBirthday(),
}
}
func (jf JsonFlight) ToFlight() *model.Flight {
return &model.Flight{
Number: jf.Flight,
From: jf.Departure.Airport,
FromCity: jf.Departure.City,
FromCountry: jf.Departure.Country,
To: jf.Arrival.Airport,
ToCity: jf.Arrival.City,
ToCountry: jf.Arrival.Country,
Date: jf.Date.ToDateUTC(),
}
}
func (jc JsonCard) ToCard() (*model.Card, error) {
numStr := onlyDigits(string(jc.Number))
var num uint64
if numStr != "" {
v, err := strconv.ParseUint(numStr, 10, 64)
if err != nil {
return nil, err
}
num = v
}
return &model.Card{
Prefix: jc.Program,
Number: num,
Bonusprogramm: jc.Status,
}, nil
}
|