full form parsing
This commit is contained in:
parent
0570e47be9
commit
475d79f16e
5 changed files with 68 additions and 19 deletions
33
handler.go
33
handler.go
|
|
@ -57,28 +57,49 @@ func (h *handler) addOrder(w http.ResponseWriter, r *http.Request) {
|
|||
fmt.Println("can't parse order id: ", err)
|
||||
return
|
||||
}
|
||||
n.Name = r.FormValue("name")
|
||||
n.Surname = r.FormValue("surname")
|
||||
n.Phone = r.FormValue("phone")
|
||||
n.Location = r.FormValue("location")
|
||||
|
||||
n.Name = strings.TrimSpace(r.FormValue("name"))
|
||||
|
||||
n.Surname = strings.TrimSpace(r.FormValue("surname"))
|
||||
|
||||
n.Phone = strings.TrimSpace(r.FormValue("phone"))
|
||||
|
||||
n.Location = strings.TrimSpace(r.FormValue("location"))
|
||||
|
||||
n.Date, err = time.Parse("2006-01-02", r.FormValue("date"))
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
fmt.Println("can't parse order date: ", err)
|
||||
return
|
||||
}
|
||||
|
||||
n.Paid, err = strconv.Atoi(r.FormValue("paid"))
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
fmt.Println("can't parse order paid: ", err)
|
||||
return
|
||||
}
|
||||
n.Cakes = make([]cake, 0)
|
||||
|
||||
h.s.saveOrder(n)
|
||||
n.Accepted = time.Now()
|
||||
|
||||
n.Cakes = make([]cake, 0)
|
||||
for _, e := range h.s.getCakes() {
|
||||
value := r.FormValue(fmt.Sprintf("cake[%d]", e.ID))
|
||||
if value == "" {
|
||||
continue
|
||||
}
|
||||
amount, err := strconv.Atoi(value)
|
||||
e.Amount = amount
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
n.Cakes = append(n.Cakes, e)
|
||||
}
|
||||
|
||||
fmt.Println("parsed order: ", n)
|
||||
|
||||
h.s.saveOrder(n)
|
||||
|
||||
w.Header().Set("content-type", "text/html")
|
||||
w.WriteHeader(http.StatusAccepted)
|
||||
w.Write([]byte("accepted <a href='/'>back</a>"))
|
||||
|
|
|
|||
34
index.html
34
index.html
|
|
@ -5,11 +5,35 @@
|
|||
<a href="order">New</a>
|
||||
</nav>
|
||||
<main>
|
||||
<ul>
|
||||
<table>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Name</th>
|
||||
<th>Surname</th>
|
||||
<th>Phone</th>
|
||||
<th>Location</th>
|
||||
<th>Date</th>
|
||||
<th>Accepted</th>
|
||||
<th>Paid</th>
|
||||
<th>Cakes</th>
|
||||
</tr>
|
||||
{{range .}}
|
||||
<li id="order[{{.ID}}]">
|
||||
<a href="/order/{{.ID}}">{{.Name}} {{.Surname}}</a>
|
||||
</li>
|
||||
<tr>
|
||||
<th><a href="/order/{{.ID}}">edit</a></th>
|
||||
<th>{{.Name}}</th>
|
||||
<th>{{.Surname}}</th>
|
||||
<th>{{.Phone}}</th>
|
||||
<th>{{.Location}}</th>
|
||||
<th>{{.Date.Format "2006-01-02"}}</th>
|
||||
<th>{{.Accepted.Format "2006-01-02"}}</th>
|
||||
<th>{{.Paid}}</th>
|
||||
<th>
|
||||
{{range .Cakes}}
|
||||
{{.Name}}
|
||||
{{.Amount}}
|
||||
{{end}}
|
||||
</th>
|
||||
</tr>
|
||||
{{end}}
|
||||
</ul>
|
||||
</table>
|
||||
</main>
|
||||
13
main.go
13
main.go
|
|
@ -18,12 +18,15 @@ func main() {
|
|||
h.tmpl = templates
|
||||
h.s = NewStore()
|
||||
|
||||
h.s.saveCake(cake{"Sernik", -1, 120, 0})
|
||||
h.s.saveCake(cake{"Malinowa chmurka", -1, 120, 0})
|
||||
h.s.saveCake(cake{"Sernik ulubiony", -1, 65, 0})
|
||||
h.s.saveCake(cake{"Malinowa chmurka", -1, 150, 0})
|
||||
h.s.saveCake(cake{"Mako sernik", -1, 150, 0})
|
||||
h.s.saveCake(cake{"Rolada makowa", -1, 80, 0})
|
||||
h.s.saveCake(cake{"Wieniec bezowy", -1, 120, 0})
|
||||
|
||||
h.s.saveOrder(order{-1, "Albert", "Camus", "123456789", "Kartuzy", time.Now().AddDate(0, 0, 7), 0, nil})
|
||||
h.s.saveOrder(order{-1, "George", "Orwell", "", "Kartuzy", time.Now().AddDate(0, 1, 0), 0, nil})
|
||||
h.s.saveOrder(order{-1, "Karl", "Marx", "0700", "Somonino", time.Now(), 0, nil})
|
||||
h.s.saveOrder(order{-1, "Albert", "Camus", "123456789", "Kartuzy", time.Now().AddDate(0, 0, 7), time.Now(), 0, nil})
|
||||
h.s.saveOrder(order{-1, "George", "Orwell", "", "Kartuzy", time.Now().AddDate(0, 1, 0), time.Now(), 0, nil})
|
||||
h.s.saveOrder(order{-1, "Karl", "Marx", "0700", "Somonino", time.Now(), time.Now(), 0, nil})
|
||||
|
||||
http.HandleFunc("GET /order/", logger(h.form))
|
||||
http.HandleFunc("GET /", logger(h.index))
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ import (
|
|||
func logger(in http.HandlerFunc) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
start := time.Now()
|
||||
log := fmt.Sprint(r.Method, " ", r.URL.String())
|
||||
//log := fmt.Sprint(r.Method, " ", r.URL.String())
|
||||
fmt.Println(r.Method, r.URL.String())
|
||||
in(w, r)
|
||||
log += fmt.Sprint(" ", time.Since(start))
|
||||
fmt.Println(log)
|
||||
fmt.Println(r.Method, "finished in", time.Since(start))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
model.go
1
model.go
|
|
@ -16,6 +16,7 @@ type order struct {
|
|||
Phone string
|
||||
Location string
|
||||
Date time.Time
|
||||
Accepted time.Time
|
||||
Paid int // increments of 0.01
|
||||
Cakes []cake
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue