diff --git a/core/views/userView.py b/core/views/userView.py index 9940e58..ecda0d5 100644 --- a/core/views/userView.py +++ b/core/views/userView.py @@ -1042,37 +1042,63 @@ def addSubscription(request): @authentication_classes([SessionAuthentication, TokenAuthentication]) @permission_classes([IsAuthenticated]) def addTeamMember(request): + # Print the incoming data for debugging purposes + print("Received data:", request.data) + + # Ensure mobile number is provided and not empty + if 'mobile_number' not in request.data or not request.data['mobile_number'].strip(): + return Response({'mobile_number': ['This field is required and cannot be empty.']}, status=status.HTTP_400_BAD_REQUEST) + # Check if username already exists if User.objects.filter(username=request.data['mobile_number']).exists(): return Response({'username': ['A user with that username already exists.']}, status=status.HTTP_400_BAD_REQUEST) - - # Ensure mobile number is provided - if 'mobile_number' not in request.data: - return Response({'mobile_number': ['This field is required.']}, status=status.HTTP_400_BAD_REQUEST) - # Proceed with user creation user_serializer = UserSerializer(data=request.data) if user_serializer.is_valid(): user = user_serializer.save() + + # Ensure the mobile_number is set as the username + username = request.data['mobile_number'] + if not username.strip(): # Ensure the username is not empty + return Response({'username': ['Username cannot be empty.']}, status=status.HTTP_400_BAD_REQUEST) + user.set_password(request.data['password']) - user.username = request.data['mobile_number'] + user.username = username user.first_name = request.data['first_name'] user.last_name = request.data['last_name'] - user.save() - + + # Proceed with customer data creation customer_data = { - 'user': user.id, - 'mobile_number': request.data['mobile_number'], # Ensure mobile number is provided - 'semat': request.data['semat'], - + 'user': user.id, + 'mobile_number': request.data['mobile_number'], + 'semat': request.data['semat'], } + customer_serializer = CustomerSerializer(data=customer_data) if customer_serializer.is_valid(): customer_serializer.save() token = Token.objects.create(user=user) - return Response({'token': token.key, 'customer': customer_serializer.data, 'user': user_serializer.data}, status=status.HTTP_201_CREATED) + + # Make a mutable copy of the request data for TeamMember + data = request.data.copy() + data['adminUser'] = request.user.id # Automatically assign the authenticated user as admin + data['user'] = user.id # Automatically assign the user as team member + + # Pass the request object to the serializer context + serializer = TeamMemberSerializer(data=data, context={'request': request}) + + if serializer.is_valid(): + # Save the team member and return success response + team_member = serializer.save() + + return Response({ + "message": "Team member added successfully.", + "team_member": serializer.data + }, status=status.HTTP_201_CREATED) + else: + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) else: # If customer data is invalid, delete the created user user.delete() @@ -1084,6 +1110,8 @@ def addTeamMember(request): + + @api_view(['GET']) @authentication_classes([SessionAuthentication, TokenAuthentication]) @permission_classes([IsAuthenticated])