"""Routes G9 — Paramètres du groupe.""" from datetime import time as dt_time from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from app.core.database import get_db from app.core.security import require_executif, get_current_membre from app.models.groupe import Groupe from app.schemas.phase3 import GroupeUpdate, GroupeDetail router = APIRouter(prefix="/groupe", tags=["G9 — Paramètres"]) ORDRES_ASSEMBLEE = {"premiere", "deuxieme", "troisieme", "quatrieme", "derniere"} @router.get("/", response_model=GroupeDetail) async def detail_groupe( membre=Depends(get_current_membre), db: AsyncSession = Depends(get_db), ): """Détail du groupe du membre connecté.""" groupe = await db.get(Groupe, membre.groupe_id) return GroupeDetail.model_validate(groupe) @router.patch("/", response_model=GroupeDetail) async def modifier_groupe( req: GroupeUpdate, executif=Depends(require_executif), db: AsyncSession = Depends(get_db), ): """G9 — Modifier les paramètres du groupe (exécutif).""" groupe = await db.get(Groupe, executif.groupe_id) if req.nom is not None: groupe.nom = req.nom.strip() if req.adresse_local is not None: groupe.adresse_local = req.adresse_local.strip() if req.jour_reunion is not None: groupe.jour_reunion = req.jour_reunion.strip() if req.heure_reunion is not None: h = req.heure_reunion.strip() if h: try: parts = h.split(":") groupe.heure_reunion = dt_time(int(parts[0]), int(parts[1])) except (ValueError, IndexError): groupe.heure_reunion = None else: groupe.heure_reunion = None if req.assemblee_affaires_ordre is not None: ordre = req.assemblee_affaires_ordre.strip() if ordre in ORDRES_ASSEMBLEE: groupe.assemblee_affaires_ordre = ordre if req.format_reunion is not None: groupe.format_reunion = req.format_reunion.strip() if req.lien_aa87 is not None: groupe.lien_aa87 = req.lien_aa87.strip() await db.flush() return GroupeDetail.model_validate(groupe)