package handlers import ( "database/sql" "net/http" "synlotto-website/helpers" "synlotto-website/models" "synlotto-website/storage" "github.com/gorilla/csrf" ) type TemplateData map[string]interface{} func BuildTemplateContext(db *sql.DB, w http.ResponseWriter, r *http.Request) TemplateData { session, _ := helpers.GetSession(w, r) var flash string if f, ok := session.Values["flash"].(string); ok { flash = f delete(session.Values, "flash") session.Save(r, w) } var currentUser *models.User var isAdmin bool notificationCount := 0 notifications := []models.Notification{} messageCount := 0 messages := []models.Message{} switch v := session.Values["user_id"].(type) { case int: currentUser = models.GetUserByID(v) case int64: currentUser = models.GetUserByID(int(v)) } if currentUser != nil { isAdmin = currentUser.IsAdmin notificationCount = storage.GetNotificationCount(db, currentUser.Id) notifications = storage.GetRecentNotifications(db, currentUser.Id, 15) messageCount, _ = storage.GetMessageCount(db, currentUser.Id) messages = storage.GetRecentMessages(db, currentUser.Id, 15) } return TemplateData{ "CSRFField": csrf.TemplateField(r), "Flash": flash, "User": currentUser, "IsAdmin": isAdmin, "NotificationCount": notificationCount, "Notifications": notifications, "MessageCount": messageCount, "Messages": messages, } }