Compare commits
3 Commits
Author | SHA1 | Date |
---|---|---|
Luca | 8bbec0cb64 | |
Luca | 1ff0f6e073 | |
Luca | a61e057cfb |
|
@ -23,6 +23,8 @@ const (
|
||||||
var adverbs = []string{" Außerdem ", " Zusätzlich ", " Weiterhin ", " Des Weiteren "}
|
var adverbs = []string{" Außerdem ", " Zusätzlich ", " Weiterhin ", " Des Weiteren "}
|
||||||
|
|
||||||
type categoryBin struct {
|
type categoryBin struct {
|
||||||
|
Cents uint64
|
||||||
|
Euros uint64
|
||||||
NumFree uint
|
NumFree uint
|
||||||
NumPaid uint
|
NumPaid uint
|
||||||
}
|
}
|
||||||
|
@ -77,7 +79,6 @@ func (s Server) orderPlaced(w http.ResponseWriter, r *http.Request) {
|
||||||
Item uint
|
Item uint
|
||||||
Price string
|
Price string
|
||||||
}
|
}
|
||||||
Total string
|
|
||||||
}{}
|
}{}
|
||||||
|
|
||||||
err = decoder.Decode(&order)
|
err = decoder.Decode(&order)
|
||||||
|
@ -111,6 +112,12 @@ func (s Server) orderPlaced(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
category := categories[name]
|
category := categories[name]
|
||||||
if euros > 0 || cents > 0 {
|
if euros > 0 || cents > 0 {
|
||||||
|
category.Cents += cents
|
||||||
|
if carry := category.Cents / 100; carry > 0 {
|
||||||
|
category.Cents -= carry * 100
|
||||||
|
category.Euros += carry
|
||||||
|
}
|
||||||
|
category.Euros += euros
|
||||||
category.NumPaid++
|
category.NumPaid++
|
||||||
} else {
|
} else {
|
||||||
category.NumFree++
|
category.NumFree++
|
||||||
|
@ -154,15 +161,15 @@ func (s Server) orderPlaced(w http.ResponseWriter, r *http.Request) {
|
||||||
preposition = `aus der Kategorie "`
|
preposition = `aus der Kategorie "`
|
||||||
quote = `" `
|
quote = `" `
|
||||||
}
|
}
|
||||||
if totalEuros, totalCents, err := parsePrice(order.Total); err == nil && (totalEuros > 0 || totalCents > 0) {
|
if bin.Euros > 0 || bin.Cents > 0 {
|
||||||
var adverb, fraction string
|
var adverb, fraction string
|
||||||
if bin.NumPaid > 1 {
|
if bin.NumPaid > 1 {
|
||||||
adverb = "insgesamt "
|
adverb = "insgesamt "
|
||||||
}
|
}
|
||||||
if totalCents > 0 {
|
if bin.Cents > 0 {
|
||||||
fraction = fmt.Sprintf(",%02d", totalCents)
|
fraction = fmt.Sprintf(",%02d", bin.Cents)
|
||||||
}
|
}
|
||||||
total = fmt.Sprint("für ", adverb, totalEuros, fraction, " Euro ")
|
total = fmt.Sprint("für ", adverb, bin.Euros, fraction, " Euro ")
|
||||||
}
|
}
|
||||||
|
|
||||||
body.WriteString(fmt.Sprint(adverb, verb, free, conjunction, paid, noun, preposition, category, quote, total, "bestellt."))
|
body.WriteString(fmt.Sprint(adverb, verb, free, conjunction, paid, noun, preposition, category, quote, total, "bestellt."))
|
||||||
|
@ -215,9 +222,7 @@ func (s Server) fetchCategory(organizer, event string, item uint) string {
|
||||||
|
|
||||||
decoder = json.NewDecoder(resp.Body)
|
decoder = json.NewDecoder(resp.Body)
|
||||||
itemCategory := struct{
|
itemCategory := struct{
|
||||||
Name struct{
|
InternalName string `json:"internal_name"`
|
||||||
German string `json:"de-informal"`
|
|
||||||
}
|
|
||||||
}{}
|
}{}
|
||||||
|
|
||||||
err = decoder.Decode(&itemCategory)
|
err = decoder.Decode(&itemCategory)
|
||||||
|
@ -225,7 +230,7 @@ func (s Server) fetchCategory(organizer, event string, item uint) string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
return itemCategory.Name.German
|
return itemCategory.InternalName
|
||||||
}
|
}
|
||||||
|
|
||||||
func parsePrice(price string) (euros uint64, cents uint64, err error) {
|
func parsePrice(price string) (euros uint64, cents uint64, err error) {
|
||||||
|
|
Loading…
Reference in New Issue