diff --git a/app/(tabs)/gestionnaire_ressource.tsx b/app/(tabs)/gestionnaire_ressource.tsx index ae8c79d..c63d6a5 100644 --- a/app/(tabs)/gestionnaire_ressource.tsx +++ b/app/(tabs)/gestionnaire_ressource.tsx @@ -83,7 +83,7 @@ export default function GestionnaireRessource() { } ListEmptyComponent={ - Aucun résultat trouvé 😕 + Aucun résultat trouvé } /> diff --git a/app/_layout.tsx b/app/_layout.tsx index ccb215d..c37c24d 100644 --- a/app/_layout.tsx +++ b/app/_layout.tsx @@ -26,19 +26,11 @@ export default function RootLayout() { const [user, setUser] = useState(null); const [userRole, setUserRole] = useState(null); - - useEffect(() => { - if (Platform.OS === 'android' && UIManager.setLayoutAnimationEnabledExperimental) { - UIManager.setLayoutAnimationEnabledExperimental(true); - } - }, []); - - useEffect(() => { const unsubscribe = onAuthStateChanged(auth, async (currentUser) => { - setUser(currentUser); if (!currentUser) { router.replace("/login/login"); + setUser(null); return; } @@ -47,6 +39,7 @@ export default function RootLayout() { if (!userDoc.exists()) { router.replace("/login/login"); + setUser(null); return; } @@ -56,8 +49,10 @@ export default function RootLayout() { if (role === "chef") { router.replace("/(tabs)"); - } else if (role === "responsable") { - router.replace("/login/login"); + } else if (role === "resp") { + router.replace("/(tabs)"); + } else if (role === "ouvrier") { + router.replace("/(tabs)"); } else { router.replace("/login/login"); } diff --git a/services/ressourcesService.ts b/services/ressourcesService.ts index fabdd20..946d768 100644 --- a/services/ressourcesService.ts +++ b/services/ressourcesService.ts @@ -1,4 +1,4 @@ -import { collection, getDocs, doc, updateDoc } from "firebase/firestore"; +import { collection, getDocs, getDoc } from "firebase/firestore"; import { db } from "../firebase_config"; import { Timestamp } from "firebase/firestore"; import { Chantier, User, Ressources, Reservation } from "../class/class"; @@ -20,7 +20,6 @@ export async function getUsers(): Promise { } } - export async function getRessources(): Promise { try { const colRef = collection(db, "ressources"); @@ -38,53 +37,47 @@ export async function getRessources(): Promise { } } - export async function getChantiers(): Promise { - try { - const colRef = collection(db, "chantier"); - const snapshot = await getDocs(colRef); - return snapshot.docs.map((doc) => { - const data = doc.data() as any; - return { - ...data, - chef: { - ...data.chef, - allocation: data.chef?.allocation?.map(convertReservation) || [], - }, - equipe: - data.equipe?.map((u: any) => ({ - ...u, - allocation: u.allocation?.map(convertReservation) || [], - })) || [], - materiel: - data.materiel?.map((m: any) => ({ - ...m, - allocation: m.allocation?.map(convertReservation) || [], - })) || [], - vehicules: - data.vehicules?.map((v: any) => ({ - ...v, - allocation: v.allocation?.map(convertReservation) || [], - })) || [], - anomalies: data.anomalies || [], - } as Chantier; - }); - } catch (err) { - console.error("Firestore Chantiers Error:", err); - return []; + const snap = await getDocs(collection(db, "chantier")); + const chantiers: Chantier[] = []; + + for (const docSnap of snap.docs) { + const data = docSnap.data(); + //Faut convertir les Timestamp en Date ( merci à firebase :) ) + const dateDep = data.dateDep instanceof Timestamp ? data.dateDep.toDate() : new Date(data.dateDep); + let chef: User | null = null; + if (data.chef) { + const chefSnap = await getDoc(data.chef); + if (chefSnap.exists()) { + chef = chefSnap.data() as User; + } + } + let equipe: User[] = []; + if (Array.isArray(data.equipe)) { + equipe = await Promise.all( + data.equipe.map(async (ref: any) => { + const snap = await getDoc(ref); + return snap.exists() ? (snap.data() as User) : null; + }) + ).then(list => list.filter(x => x !== null)) as User[]; + } + + chantiers.push({ + ...data, + dateDep, + chef, + equipe + } as Chantier); } + return chantiers; } function convertReservation(res: any): Reservation { return { id: res.id, dateChantier: - res.dateChantier instanceof Timestamp - ? res.dateChantier.toDate() - : new Date(res.dateChantier), + res.dateChantier instanceof Timestamp ? res.dateChantier.toDate() : new Date(res.dateChantier), dateFin: - res.dateFin instanceof Timestamp - ? res.dateFin.toDate() - : new Date(res.dateFin), + res.dateFin instanceof Timestamp ? res.dateFin.toDate() : new Date(res.dateFin), }; }