91 lines
2.5 KiB
TypeScript
91 lines
2.5 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,
|
|
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 [];
|
|
}
|
|
}
|
|
|
|
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),
|
|
};
|
|
}
|