From 8e3ca7f5f590ad225f7da32ebc9ef700663abdc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leandro=20C=C3=A2ndido?= <123888466+marshfellow42@users.noreply.github.com> Date: Thu, 31 Jul 2025 00:23:50 -0300 Subject: [PATCH] =?UTF-8?q?Criar=20a=20fun=C3=A7=C3=A3o=20de=20puxar=20tod?= =?UTF-8?q?os=20os=20usu=C3=A1rios=20de=20uma=20=C3=BAnica=20agenda?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/main.py | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/api/main.py b/api/main.py index 129fb2b..0ff6dc5 100644 --- a/api/main.py +++ b/api/main.py @@ -290,7 +290,7 @@ async def mostrar_todas_as_agendas_que_o_usuário_faz_parte(uid_do_responsavel: return agendas @app.get("/getAllTarefasFromOneAgenda", tags=["Agenda"], responses=STANDARD_RESPONSES) -async def get_all_tarefas_from_agenda(uid_da_agenda: str, api_key: str = Depends(get_api_key)): +async def mostrar_todas_as_tarefas_dentro_de_uma_agenda(uid_da_agenda: str, api_key: str = Depends(get_api_key)): agenda_node = agenda_ref.child(uid_da_agenda).get() if not agenda_node: @@ -303,6 +303,50 @@ async def get_all_tarefas_from_agenda(uid_da_agenda: str, api_key: str = Depends return {"tarefas": tarefas} +@app.get("/getAllMembrosFromOneAgenda", tags=["Agenda"], responses=STANDARD_RESPONSES) +async def mostrar_todos_os_membros_dentro_de_uma_agenda(uid_da_agenda: str, api_key: str = Depends(get_api_key)): + membros_geral = agenda_membros_ref.get() + if not membros_geral: + raise HTTPException(status_code=404, detail="Não há membros vinculados a nenhuma agenda.") + + membros_da_agenda = {} + + for uid_usuario, agendas in membros_geral.items(): + if uid_da_agenda in agendas: + role = agendas[uid_da_agenda].get("role", "Desconhecido") + membros_da_agenda[uid_usuario] = role + + if not membros_da_agenda: + raise HTTPException(status_code=404, detail=f"Nenhum membro encontrado para a agenda '{uid_da_agenda}'.") + + todos_usuarios = {} + page = auth.list_users() + while page: + for user in page.users: + todos_usuarios[user.uid] = { + "uid": user.uid, + "email": user.email, + "display_name": user.display_name, + "phone_number": user.phone_number or "", + "photo_url": user.photo_url or "" + } + page = page.get_next_page() + + resultado = [] + for uid, role in membros_da_agenda.items(): + usuario_info = todos_usuarios.get(uid) + if usuario_info: + usuario_info["role"] = role + resultado.append(usuario_info) + else: + resultado.append({ + "uid": uid, + "role": role, + "info": "Usuário não encontrado no Firebase Auth" + }) + + return {"membros": resultado} + @app.post("/add/agenda", tags=["Agenda"], responses=STANDARD_RESPONSES) async def criar_uma_agenda(nome_agenda: str, uid_do_responsavel: str, api_key: str = Depends(get_api_key)): if not check_uid_exists(uid_do_responsavel):