diff --git a/handlers/ticket_handler.go b/handlers/ticket_handler.go index fbb2794..db447cb 100644 --- a/handlers/ticket_handler.go +++ b/handlers/ticket_handler.go @@ -270,27 +270,32 @@ func GetMyTickets(db *sql.DB) http.HandlerFunc { return helpers.AuthMiddleware(func(w http.ResponseWriter, r *http.Request) { userID, ok := helpers.GetCurrentUserID(r) if !ok { + log.Println("π« Not logged in, redirecting") http.Redirect(w, r, "/login", http.StatusSeeOther) return } + log.Printf("π€ Fetching tickets for user ID: %d\n", userID) + rows, err := db.Query(` SELECT id, game_type, draw_date, ball1, ball2, ball3, ball4, ball5, ball6, bonus1, bonus2, purchase_method, purchase_date, image_path FROM my_tickets - WHERE user_id = ? + WHERE userId = ? ORDER BY draw_date DESC, created_at DESC `, userID) + if err != nil { - log.Println("β Failed to load user tickets:", err) - http.Error(w, "Error loading tickets", http.StatusInternalServerError) + log.Println("β Query failed:", err) + http.Error(w, "Could not load tickets", http.StatusInternalServerError) return } defer rows.Close() var tickets []models.MyTicket + for rows.Next() { var t models.MyTicket err := rows.Scan( @@ -299,11 +304,15 @@ func GetMyTickets(db *sql.DB) http.HandlerFunc { &t.Bonus1, &t.Bonus2, &t.PurchaseMethod, &t.PurchaseDate, &t.ImagePath, ) - if err == nil { - tickets = append(tickets, t) + if err != nil { + log.Println("β οΈ Failed to scan ticket row:", err) + continue } + tickets = append(tickets, t) } + log.Printf("π Loaded %d tickets\n", len(tickets)) + context := helpers.TemplateContext(w, r) context["Tickets"] = tickets @@ -311,6 +320,11 @@ func GetMyTickets(db *sql.DB) http.HandlerFunc { "templates/layout.html", "templates/account/tickets/my_tickets.html", )) - tmpl.ExecuteTemplate(w, "layout", context) + + err = tmpl.ExecuteTemplate(w, "layout", context) + if err != nil { + log.Println("β Template error:", err) + http.Error(w, "Error rendering page", http.StatusInternalServerError) + } }) } diff --git a/helpers/template.go b/helpers/template.go index 81e2311..a6b2817 100644 --- a/helpers/template.go +++ b/helpers/template.go @@ -23,6 +23,12 @@ func TemplateFuncs() template.FuncMap { } return b }, + "intVal": func(p *int) int { + if p == nil { + return 0 + } + return *p + }, } } diff --git a/models/myticket.go b/models/myticket.go index 4f67040..455a730 100644 --- a/models/myticket.go +++ b/models/myticket.go @@ -1,15 +1,19 @@ package models type MyTicket struct { - Id int - GameType string - DrawDate string - Ball1 int - Ball2 int - Ball3 int - Ball4 int - Ball5 int - Bonus1 *int - Bonus2 *int - Duplicate bool + Id int + GameType string + DrawDate string + Ball1 int + Ball2 int + Ball3 int + Ball4 int + Ball5 int + Ball6 int + Bonus1 *int + Bonus2 *int + PurchaseMethod string + PurchaseDate string + ImagePath string + Duplicate bool } diff --git a/templates/account/tickets/my_tickets.html b/templates/account/tickets/my_tickets.html new file mode 100644 index 0000000..3e1d7ad --- /dev/null +++ b/templates/account/tickets/my_tickets.html @@ -0,0 +1,53 @@ +{{ define "content" }} ++ Add Ticket +
You havenβt logged any tickets yet.
+{{ else }} +| Game | +Draw Date | +Numbers | +Bonus | +Purchased | +Via | +Image | +
|---|---|---|---|---|---|---|
| {{ .GameType }} | +{{ .DrawDate }} | ++ {{ .Ball1 }} {{ .Ball2 }} {{ .Ball3 }} {{ .Ball4 }} {{ .Ball5 }} + {{ if ne .Ball6 0 }} {{ .Ball6 }} {{ end }} + | ++ {{ if eq .GameType "Lotto" }} + β + {{ else if gt (intVal .Bonus2) 0 }} + {{ if gt (intVal .Bonus1) 0 }}{{ intVal .Bonus1 }}, {{ end }} + {{ intVal .Bonus2 }} + {{ else if gt (intVal .Bonus1) 0 }} + {{ intVal .Bonus1 }} + {{ else }} + β + {{ end }} + | +{{ .PurchaseDate }} | +{{ .PurchaseMethod }} | ++ {{ if .ImagePath }} + View + {{ else }}β{{ end }} + | +