@@ -6,6 +6,7 @@ import { useStatsFilters } from '@/hooks/useStatsFilters';
66import { useAuthGuard } from '@/hooks/useAuthGuard' ;
77import { useTawkTo } from '@/hooks/useTawkTo' ;
88import { useGuidedTour } from '@/hooks/useGuidedTour' ;
9+ import { supabase } from '@/integrations/supabase/client' ;
910import { DashboardBackground } from '@/components/DashboardBackground' ;
1011import { DashboardHeader } from '@/components/DashboardHeader' ;
1112import { DashboardContent } from '@/components/DashboardContent' ;
@@ -59,9 +60,17 @@ const DashboardStats = ({ activeCampaigns, totalCampaigns, totalAffiliates, user
5960 Logger . security ( `Loading secured global stats ${ periodLabel } for: ${ userId } ` ) ;
6061
6162 // Récupérer les campagnes de l'utilisateur avec vérification de propriété
62- const campaignsQuery = query ( collection ( db , 'campaigns' ) , where ( 'userId' , '==' , userId ) ) ;
63- const campaignsSnapshot = await getDocs ( campaignsQuery ) ;
64- const campaignIds = campaignsSnapshot . docs . map ( doc => doc . id ) ;
63+ const { data : userCampaigns , error : campaignsError } = await supabase
64+ . from ( 'campaigns' )
65+ . select ( 'id' )
66+ . eq ( 'user_id' , userId ) ;
67+
68+ if ( campaignsError ) {
69+ console . error ( 'Error fetching campaigns:' , campaignsError ) ;
70+ return ;
71+ }
72+
73+ const campaignIds = userCampaigns ?. map ( c => c . id ) || [ ] ;
6574
6675 if ( campaignIds . length === 0 ) {
6776 Logger . security ( 'No campaigns found for user' ) ;
@@ -70,30 +79,28 @@ const DashboardStats = ({ activeCampaigns, totalCampaigns, totalAffiliates, user
7079 }
7180
7281 // Récupérer tous les clics et conversions en parallèle avec vérification de sécurité
73- const [ clicksSnapshot , conversionsSnapshot ] = await Promise . all ( [
74- getDocs ( query ( collection ( db , 'clicks' ) , where ( 'campaignId' , 'in' , campaignIds ) ) ) ,
75- getDocs ( query ( collection ( db , 'conversions' ) , where ( 'campaignId' , 'in' , campaignIds ) ) )
82+ const [ clicksResult , conversionsResult ] = await Promise . all ( [
83+ supabase . from ( 'clicks' ) . select ( '*' ) . in ( 'campaign_id' , campaignIds ) ,
84+ supabase . from ( 'conversions' ) . select ( '*' ) . in ( 'campaign_id' , campaignIds )
7685 ] ) ;
7786
7887 // Filtrer par période si nécessaire
7988 const filterDataByDate = ( data : any [ ] ) => {
8089 if ( ! filterDate ) return data ;
8190
8291 return data . filter ( item => {
83- if ( ! item . timestamp ) return false ;
92+ if ( ! item . created_at ) return false ;
8493 try {
85- const itemDate = item . timestamp . toDate ?
86- item . timestamp . toDate ( ) :
87- new Date ( item . timestamp ) ;
94+ const itemDate = new Date ( item . created_at ) ;
8895 return itemDate >= filterDate ;
8996 } catch ( error ) {
9097 return false ;
9198 }
9299 } ) ;
93100 } ;
94101
95- const filteredClicks = filterDataByDate ( clicksSnapshot . docs . map ( doc => doc . data ( ) ) ) ;
96- const filteredConversions = filterDataByDate ( conversionsSnapshot . docs . map ( doc => doc . data ( ) ) ) ;
102+ const filteredClicks = filterDataByDate ( clicksResult . data || [ ] ) ;
103+ const filteredConversions = filterDataByDate ( conversionsResult . data || [ ] ) ;
97104
98105 const totalClicks = filteredClicks . length ;
99106 let totalRevenue = 0 ;
0 commit comments