@@ -114,38 +114,44 @@ def get(self, request):
114114
115115 except Exception as e :
116116 return Response ({'error' : str (e )}, status = status .HTTP_500_INTERNAL_SERVER_ERROR )
117-
117+
118+
118119class BuscarMembroPorGrupoView (APIView ):
119120 permission_classes = [IsAuthenticated ]
120121
121122 def get (self , request ):
122123 try :
123- nome = request .query_params .get ('nome' , None )
124- group_member = request .query_params .get ('grupo' , None )
124+ # Obtém os IDs dos grupos como uma string (exemplo: "1,2,3")
125+ grupos_ids_str = request .GET .get ('grupos_ids' , '' )
126+
127+ if not grupos_ids_str :
128+ return Response ({'error' : 'Parâmetro grupos_ids não fornecido!' }, status = status .HTTP_400_BAD_REQUEST )
125129
126- if not group_member :
127- return Response ({'error' : 'Parâmetro grupo não fornecido!' }, status = status .HTTP_400_BAD_REQUEST )
130+ # Converte a string em uma lista de inteiros
131+ try :
132+ grupos_ids = [int (id .strip ()) for id in grupos_ids_str .split (',' ) if id .strip ().isdigit ()]
133+ except ValueError :
134+ return Response ({'error' : 'IDs dos grupos devem ser números inteiros!' }, status = status .HTTP_400_BAD_REQUEST )
128135
129- # Busca o grupo pelo nome
130- group = Group . objects . filter ( name = group_member ). first ( )
136+ if not grupos_ids :
137+ return Response ({ 'error' : 'Nenhum ID de grupo válido fornecido!' }, status = status . HTTP_400_BAD_REQUEST )
131138
132- if not group :
133- return Response ({ 'error' : 'Grupo não encontrado!' }, status = status . HTTP_404_NOT_FOUND )
139+ # Filtra os grupos pelos IDs
140+ grupos = Group . objects . filter ( id__in = grupos_ids )
134141
135- # Filtra membros cujo usuário pertence ao grupo
136- membros = Membro . objects . filter ( usuario__groups = group )
142+ if not grupos . exists ():
143+ return Response ({ 'error' : 'Nenhum grupo encontrado com os IDs fornecidos!' }, status = status . HTTP_404_NOT_FOUND )
137144
138- # Filtra por nome, se fornecido
139- if nome :
140- membros = membros .filter (nome__icontains = nome )
145+ # Busca membros cujos usuários pertencem a esses grupos
146+ membros = Membro .objects .filter (usuario__groups__in = grupos ).distinct ()
141147
142- # Serializa os resultados
143148 serializer = MembroSerializer (membros , many = True )
144149
145- return Response ({ 'message' : 'Membros encontrados com sucesso.' , 'results' : serializer .data } , status = status .HTTP_200_OK )
150+ return Response (serializer .data , status = status .HTTP_200_OK )
146151
147152 except Exception as e :
148153 return Response ({"error" : str (e )}, status = status .HTTP_500_INTERNAL_SERVER_ERROR )
154+
149155
150156class BuscarMembroPorIdUsuarioView (APIView ):
151157 permission_classes = [IsAuthenticated ]
0 commit comments