Files
mmm-projet/services/ressourcesService.ts
2025-12-09 14:47:20 +01:00

71 lines
2.0 KiB
TypeScript

import { collection, getDocs, doc, updateDoc } from "firebase/firestore";
import { db } from "../firebase_config";
import { Timestamp } from "firebase/firestore";
import { Chantier, User, Ressources, Reservation } from "../class/class";
export async function getUsers(): Promise<User[]> {
try {
const colRef = collection(db, "user");
const snapshot = await getDocs(colRef);
return snapshot.docs.map((doc) => {
const data = doc.data();
return {
...data,
allocation: data.allocation?.map(convertReservation) || [],
} as User;
});
} catch (err) {
console.error("Firestore Users Error:", err);
return [];
}
}
export async function getRessources(): Promise<Ressources[]> {
try {
const colRef = collection(db, "ressources");
const snapshot = await getDocs(colRef);
return snapshot.docs.map((doc) => {
const data = doc.data();
return {
...data,
allocation: data.allocation?.map(convertReservation) || [],
} as Ressources;
});
} catch (err) {
console.error("Firestore Ressources Error:", err);
return [];
}
}
export async function getChantiers(): Promise<Chantier[]> {
try {
const colRef = collection(db, "chantier");
const snapshot = await getDocs(colRef);
return snapshot.docs.map((doc) => {
const data = doc.data() as any;
return {
...data,
dateDep: data.dateDep.toDate(),
chef: { ...data.chef },
equipe: data.equipe ?? [],
materiel: data.materiel ?? [],
vehicules: data.vehicules ?? [],
anomalies: data.anomalies ?? []
} as Chantier;
});
} catch (err) {
console.error("Firestore Chantiers Error:", err);
return [];
}
}
function convertReservation(res: any): Reservation {
return {
id: res.id,
dateChantier:
res.dateChantier instanceof Timestamp ? res.dateChantier.toDate() : new Date(res.dateChantier),
dateFin:
res.dateFin instanceof Timestamp ? res.dateFin.toDate() : new Date(res.dateFin),
};
}