This commit is contained in:
cangui 2025-05-11 19:42:49 +02:00
parent 31c91c51ea
commit 4ef3dcaf08

View File

@ -2,6 +2,7 @@ package renders
import ( import (
"cangui/whatsapp/backend/models" "cangui/whatsapp/backend/models"
"fmt"
"net/http" "net/http"
"strconv" "strconv"
"text/template" "text/template"
@ -538,13 +539,17 @@ func ClientConsumptionPage(db *gorm.DB) http.HandlerFunc {
http.Error(w, "Non authentifié", http.StatusUnauthorized) http.Error(w, "Non authentifié", http.StatusUnauthorized)
return return
} }
fmt.Println("🔐 SSOID reçu :", ssoid)
var currentUser models.User var currentUser models.User
if err := db.Where("sso_id = ?", ssoid).First(&currentUser).Error; err != nil { if err := db.Where("sso_id = ?", ssoid).First(&currentUser).Error; err != nil {
http.Error(w, "Utilisateur introuvable", http.StatusUnauthorized) http.Error(w, "Utilisateur introuvable", http.StatusUnauthorized)
fmt.Println("❌ Utilisateur introuvable en base pour ce SSOID")
return return
} }
fmt.Printf("👤 Utilisateur connecté : %s (ID %d - rôle %s)\n", currentUser.Email, currentUser.ID, currentUser.Role)
// Récupérer les filtres
period := r.URL.Query().Get("period") period := r.URL.Query().Get("period")
clientIDStr := r.URL.Query().Get("client") clientIDStr := r.URL.Query().Get("client")
var clientID uint var clientID uint
@ -552,7 +557,12 @@ func ClientConsumptionPage(db *gorm.DB) http.HandlerFunc {
idParsed, _ := strconv.Atoi(clientIDStr) idParsed, _ := strconv.Atoi(clientIDStr)
clientID = uint(idParsed) clientID = uint(idParsed)
} }
fmt.Println("📅 Filtre période :", period)
if clientID > 0 {
fmt.Println("🎯 Filtre client ID :", clientID)
}
// Calcul de la date de début
var fromDate time.Time var fromDate time.Time
now := time.Now() now := time.Now()
switch period { switch period {
@ -567,8 +577,9 @@ func ClientConsumptionPage(db *gorm.DB) http.HandlerFunc {
default: default:
fromDate = time.Time{} fromDate = time.Time{}
} }
fmt.Println("📆 Date de début utilisée :", fromDate)
// Préparation des filtres // Requête de base
query := db.Model(&models.Consumption{}) query := db.Model(&models.Consumption{})
if currentUser.Role == models.ROLE_ADMIN { if currentUser.Role == models.ROLE_ADMIN {
if clientID > 0 { if clientID > 0 {
@ -581,17 +592,22 @@ func ClientConsumptionPage(db *gorm.DB) http.HandlerFunc {
query = query.Where("created_at >= ?", fromDate) query = query.Where("created_at >= ?", fromDate)
} }
// Regroupement par date // Résumé journalier
type DailySummary struct { type DailySummary struct {
Date time.Time Date time.Time
TotalCredits uint TotalCredits uint
} }
var summaries []DailySummary var summaries []DailySummary
query.Select("DATE(created_at) as date, SUM(credits_used) as total_credits"). result := query.Select("DATE(created_at) as date, SUM(credits_used) as total_credits").
Group("DATE(created_at)").Order("date desc"). Group("DATE(created_at)").Order("date desc").
Scan(&summaries) Scan(&summaries)
// Détail par jour if result.Error != nil {
fmt.Println("❌ Erreur lors de la récupération du résumé :", result.Error)
}
fmt.Printf("📊 Résumés trouvés : %d\n", len(summaries))
// Détails par date
details := make(map[string][]models.Consumption) details := make(map[string][]models.Consumption)
for _, s := range summaries { for _, s := range summaries {
var daily []models.Consumption var daily []models.Consumption
@ -608,6 +624,7 @@ func ClientConsumptionPage(db *gorm.DB) http.HandlerFunc {
} }
detailQuery.Order("created_at desc").Find(&daily) detailQuery.Order("created_at desc").Find(&daily)
fmt.Printf("📅 Détails du %s : %d enregistrements\n", s.Date.Format("2006-01-02"), len(daily))
details[s.Date.Format("2006-01-02")] = daily details[s.Date.Format("2006-01-02")] = daily
} }
@ -622,6 +639,7 @@ func ClientConsumptionPage(db *gorm.DB) http.HandlerFunc {
if currentUser.Role == models.ROLE_ADMIN { if currentUser.Role == models.ROLE_ADMIN {
var clients []models.User var clients []models.User
db.Where("role = ?", "CLIENT").Find(&clients) db.Where("role = ?", "CLIENT").Find(&clients)
fmt.Printf("👥 Nombre de clients trouvés : %d\n", len(clients))
data["Clients"] = clients data["Clients"] = clients
} }
@ -631,6 +649,7 @@ func ClientConsumptionPage(db *gorm.DB) http.HandlerFunc {
// pour un rendu complet de la page // pour un rendu complet de la page
func renderTemplate(w http.ResponseWriter, templ string, data map[string]interface{}) { func renderTemplate(w http.ResponseWriter, templ string, data map[string]interface{}) {
t, err := template.ParseFiles( t, err := template.ParseFiles(