diff --git a/backend/server/adventures/views.py b/backend/server/adventures/views.py index 0d0c24c..cce6946 100644 --- a/backend/server/adventures/views.py +++ b/backend/server/adventures/views.py @@ -2,7 +2,7 @@ from rest_framework.decorators import action from rest_framework import viewsets from rest_framework.response import Response from .models import Adventure, Trip -from worldtravel.models import VisitedRegion +from worldtravel.models import VisitedRegion, Region, Country from .serializers import AdventureSerializer, TripSerializer from rest_framework.permissions import IsAuthenticated from django.db.models import Q, Prefetch @@ -88,15 +88,19 @@ class StatsViewSet(viewsets.ViewSet): type='featured', is_public=True).count() trips_count = Trip.objects.filter( user_id=request.user.id).count() - region_count = VisitedRegion.objects.filter( + visited_region_count = VisitedRegion.objects.filter( user_id=request.user.id).count() + total_regions = Region.objects.count() country_count = VisitedRegion.objects.filter( user_id=request.user.id).values('region__country').distinct().count() + total_countries = Country.objects.count() return Response({ 'visited_count': visited_count, 'planned_count': planned_count, 'featured_count': featured_count, 'trips_count': trips_count, - 'region_count': region_count, + 'visited_region_count': visited_region_count, + 'total_regions': total_regions, 'country_count': country_count, + 'total_countries': total_countries }) \ No newline at end of file diff --git a/frontend/src/routes/profile/+page.server.ts b/frontend/src/routes/profile/+page.server.ts index 7c8c5ae..ee5e5cb 100644 --- a/frontend/src/routes/profile/+page.server.ts +++ b/frontend/src/routes/profile/+page.server.ts @@ -1,11 +1,27 @@ import { redirect } from '@sveltejs/kit'; import type { PageServerLoad, RequestEvent } from '../$types'; - +import { PUBLIC_SERVER_URL } from '$env/static/public'; +const endpoint = PUBLIC_SERVER_URL || 'http://localhost:8000'; export const load: PageServerLoad = async (event: RequestEvent) => { - if (!event.locals.user) { + if (!event.locals.user || !event.cookies.get('auth')) { return redirect(302, '/login'); } + + let stats = null; + + let res = await event.fetch(`${endpoint}/api/stats/counts/`, { + headers: { + Cookie: `${event.cookies.get('auth')}` + } + }); + if (!res.ok) { + console.error('Failed to fetch user stats'); + } else { + stats = await res.json(); + } + return { - user: event.locals.user + user: event.locals.user, + stats }; }; diff --git a/frontend/src/routes/profile/+page.svelte b/frontend/src/routes/profile/+page.svelte index d9bfa2d..79d3a28 100644 --- a/frontend/src/routes/profile/+page.svelte +++ b/frontend/src/routes/profile/+page.svelte @@ -1,5 +1,23 @@ +
+ +