mirror of
https://github.com/Team254/cheesy-arena-lite.git
synced 2026-03-09 13:46:44 -04:00
75 lines
2.2 KiB
Go
75 lines
2.2 KiB
Go
|
|
// Copyright 2014 Team 254. All Rights Reserved.
|
||
|
|
// Author: pat@patfairbank.com (Patrick Fairbank)
|
||
|
|
//
|
||
|
|
// Web handlers for generating CSV and PDF reports.
|
||
|
|
|
||
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"code.google.com/p/gofpdf"
|
||
|
|
"fmt"
|
||
|
|
"net/http"
|
||
|
|
"strconv"
|
||
|
|
"text/template"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TeamsCsvReportHandler(w http.ResponseWriter, r *http.Request) {
|
||
|
|
teams, err := db.GetAllTeams()
|
||
|
|
if err != nil {
|
||
|
|
handleWebErr(w, err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
w.Header().Set("Content-Type", "text/plain")
|
||
|
|
template, err := template.ParseFiles("templates/teams.csv")
|
||
|
|
if err != nil {
|
||
|
|
handleWebErr(w, err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
err = template.Execute(w, teams)
|
||
|
|
if err != nil {
|
||
|
|
handleWebErr(w, err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TeamsPdfReportHandler(w http.ResponseWriter, r *http.Request) {
|
||
|
|
teams, err := db.GetAllTeams()
|
||
|
|
if err != nil {
|
||
|
|
handleWebErr(w, err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
eventSettings, err := db.GetEventSettings()
|
||
|
|
if err != nil {
|
||
|
|
handleWebErr(w, err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
colWidths := map[string]float64{"Id": 12, "Name": 80, "Location": 80, "RookieYear": 23}
|
||
|
|
rowHeight := 6.5
|
||
|
|
|
||
|
|
pdf := gofpdf.New("P", "mm", "Letter", "font")
|
||
|
|
pdf.AddPage()
|
||
|
|
pdf.SetFont("Arial", "B", 10)
|
||
|
|
pdf.SetFillColor(220, 220, 220)
|
||
|
|
pdf.CellFormat(195, rowHeight, "Team List - "+eventSettings.Name, "", 1, "C", false, 0, "")
|
||
|
|
pdf.CellFormat(colWidths["Id"], rowHeight, "Team", "1", 0, "C", true, 0, "")
|
||
|
|
pdf.CellFormat(colWidths["Name"], rowHeight, "Name", "1", 0, "C", true, 0, "")
|
||
|
|
pdf.CellFormat(colWidths["Location"], rowHeight, "Location", "1", 0, "C", true, 0, "")
|
||
|
|
pdf.CellFormat(colWidths["RookieYear"], rowHeight, "Rookie Year", "1", 1, "C", true, 0, "")
|
||
|
|
pdf.SetFont("Arial", "", 10)
|
||
|
|
for _, team := range teams {
|
||
|
|
pdf.CellFormat(colWidths["Id"], rowHeight, strconv.Itoa(team.Id), "1", 0, "L", false, 0, "")
|
||
|
|
pdf.CellFormat(colWidths["Name"], rowHeight, team.Nickname, "1", 0, "L", false, 0, "")
|
||
|
|
location := fmt.Sprintf("%s, %s, %s", team.City, team.StateProv, team.Country)
|
||
|
|
pdf.CellFormat(colWidths["Location"], rowHeight, location, "1", 0, "L", false, 0, "")
|
||
|
|
pdf.CellFormat(colWidths["RookieYear"], rowHeight, strconv.Itoa(team.RookieYear), "1", 1, "L", false, 0, "")
|
||
|
|
}
|
||
|
|
w.Header().Set("Content-Type", "application/pdf")
|
||
|
|
err = pdf.Output(w)
|
||
|
|
if err != nil {
|
||
|
|
handleWebErr(w, err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
}
|