37 lines
991 B
Go
37 lines
991 B
Go
package endpoints
|
|
|
|
import (
|
|
"arbeitszeitmessung/helper"
|
|
"arbeitszeitmessung/models"
|
|
"arbeitszeitmessung/templates"
|
|
"log"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
func PDFHandler(w http.ResponseWriter, r *http.Request) {
|
|
helper.RequiresLogin(Session, w, r)
|
|
startDate, err := parseTimestamp(r, "start", time.Now().Format("2006-01-02"))
|
|
if err != nil {
|
|
log.Println("Error parsing 'start_date' time", err)
|
|
http.Error(w, "Timestamp 'start_date' cannot be parsed!", http.StatusBadRequest)
|
|
return
|
|
}
|
|
if startDate.Day() > 1 {
|
|
startDate = startDate.AddDate(0, 0, -(startDate.Day() - 1))
|
|
}
|
|
endDate := startDate.AddDate(0, 1, -1)
|
|
|
|
user, err := models.GetUserFromSession(Session, r.Context())
|
|
if err != nil {
|
|
log.Println("Error getting user!")
|
|
}
|
|
|
|
//TODO: only accepted weeks
|
|
|
|
weeks := models.GetWorkDays(user, startDate, endDate)
|
|
|
|
// log.Printf("Using Dates: %s - %s\n", startDate.String(), endDate.String())
|
|
templates.PDFReportEmploye(user, weeks, startDate, endDate).Render(r.Context(), w)
|
|
}
|