diff --git a/core/urls.py b/core/urls.py index 22bf4c2..ff366db 100644 --- a/core/urls.py +++ b/core/urls.py @@ -13,6 +13,7 @@ from .views import spaceView from .views import AssetBundle from .views import teamView from .views import meetingView +from .views import subscriptionView from django.urls import include, path from django.conf import settings from django.conf.urls.static import static @@ -81,6 +82,8 @@ urlpatterns = [ re_path('uploadPdf/', userView.upload_pdf , name='upload_pdf'), re_path('add_subscription', userView.addSubscription), + re_path('get_user_subscriptions', subscriptionView.get_user_subscriptions), + re_path('add_teamMember', userView.addTeamMember), re_path('get_team_member_info', userView.get_team_member_info), re_path('add_space', spaceView.addSpace), diff --git a/core/views/subscriptionView.py b/core/views/subscriptionView.py new file mode 100644 index 0000000..a325e63 --- /dev/null +++ b/core/views/subscriptionView.py @@ -0,0 +1,28 @@ +from rest_framework.decorators import api_view, authentication_classes, permission_classes +from rest_framework.authentication import SessionAuthentication, TokenAuthentication +from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response +from rest_framework import status + +from core.models.Subscription import Subscription +from core.models.TeamMember import TeamMember +from core.serializers.SubscriptionSerializer import SubscriptionSerializer + + +from drf_yasg import openapi +from drf_yasg.utils import swagger_auto_schema + + + +@api_view(['GET']) +@authentication_classes([SessionAuthentication, TokenAuthentication]) +@permission_classes([IsAuthenticated]) +def get_user_subscriptions(request): + user = request.user + subscriptions = Subscription.objects.filter(user=user).order_by('-startTime') + serializer = SubscriptionSerializer(subscriptions, many=True) + return Response({ + 'status': 200, + 'subscriptions': serializer.data, + 'message': 'موفق' + }, status=status.HTTP_200_OK) diff --git a/core/views/teamView.py b/core/views/teamView.py index f336aa8..d2e3e73 100644 --- a/core/views/teamView.py +++ b/core/views/teamView.py @@ -75,39 +75,55 @@ def getTeams(request): from django.contrib.auth.models import User from django.db.models import Q +from core.models.customer import Customer from rest_framework.serializers import ModelSerializer +from rest_framework import serializers -class SimpleUserSerializer(ModelSerializer): +class UserInlineSerializer(serializers.ModelSerializer): class Meta: model = User - fields = ['id', 'username', 'first_name', 'last_name' ] + fields = ['id', 'username', 'first_name', 'last_name'] + + +class CustomerSerializer(serializers.ModelSerializer): + user = UserInlineSerializer() + + class Meta: + model = Customer + fields = [ + 'user', + 'semat', + 'mobile_number', + 'profile_img', + 'profile_glb', + 'is_sms_verified', + 'is_email_verified', + ] + @api_view(['GET']) @authentication_classes([SessionAuthentication, TokenAuthentication]) @permission_classes([IsAuthenticated]) def get_all_team_members(request): try: - # Get all team IDs for current user - # team_ids = TeamMember.objects.filter(user=request.user).values_list('team_id', flat=True) - # team_ids = Team.objects.filter(Q(members__user=request.user) | Q(admin=request.user)).values_list('id', flat=True).distinct() - - # team_ids = Team.objects.filter(admin_id=7) - team_ids = Team.objects.filter(Q(admin_id=request.user.id) | Q(members__user=request.user)).values_list('id', flat=True).distinct() - + # Find teams where user is admin or member + team_ids = Team.objects.filter( + Q(admin_id=request.user.id) | Q(members__user=request.user) + ).values_list('id', flat=True).distinct() - # Get all members of those teams - team_members = TeamMember.objects.filter(team_id__in=team_ids) - - for tm in team_members: - print(f" - {tm.user.username} (Team: {tm.team.name})") + # Get all members of those teams + team_members = TeamMember.objects.filter(team_id__in=team_ids) - # Extract user objects - users = [tm.user for tm in team_members] + # Get users and their related customers + users = [tm.user for tm in team_members] + customers = Customer.objects.filter(user__in=users).select_related('user') - serializer = SimpleUserSerializer(users, many=True) - return Response({'members': serializer.data}, status=status.HTTP_200_OK) + # Serialize customer details + serializer = CustomerSerializer(customers, many=True) + + return Response({'members': serializer.data}, status=status.HTTP_200_OK) except Exception as e: return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) \ No newline at end of file