separte class and services

This commit is contained in:
tuanvu
2025-12-09 14:22:39 +01:00
parent 13138c4280
commit 84df00230e
4 changed files with 91 additions and 109 deletions

View File

@@ -11,12 +11,13 @@ import {
StyleSheet, StyleSheet,
Text Text
} from "react-native"; } from "react-native";
import { getRessources, Ressource } from "../../services/ressourcesService"; import { Ressources } from "../../class/class";
import { getRessources } from "../../services/ressourcesService";
export default function GestionnaireRessource() { export default function GestionnaireRessource() {
const { nom, prenom } = useLocalSearchParams(); const { nom, prenom } = useLocalSearchParams();
const [search, setSearch] = useState(""); const [search, setSearch] = useState("");
const [ressource, setRessources] = useState<Ressource[]>([]); const [ressource, setRessources] = useState<Ressources[]>([]);
const [loading, setLoading] = useState(true); const [loading, setLoading] = useState(true);
const router = useRouter(); const router = useRouter();
@@ -39,7 +40,7 @@ export default function GestionnaireRessource() {
r.name.toLowerCase().includes(search.toLowerCase()) r.name.toLowerCase().includes(search.toLowerCase())
); );
const renderRessource = ({ item }: { item: Ressource }) => { const renderRessource = ({ item }: { item: Ressources }) => {
if (!item) return null; if (!item) return null;
return ( return (

View File

@@ -1,6 +1,3 @@
import { collection, getDocs, Timestamp } from "firebase/firestore";
import { db } from "../firebase_config";
export type Chantier = { export type Chantier = {
id: number; id: number;
adresse: string; adresse: string;
@@ -15,42 +12,6 @@ export type Chantier = {
anomalies: string[]; anomalies: string[];
}; };
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 [];
}
}
export type User = { export type User = {
id: string; id: string;
name: string; name: string;
@@ -60,23 +21,6 @@ export type User = {
qualifications: string; qualifications: string;
}; };
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 type Ressources = { export type Ressources = {
id: number; id: number;
name: string; name: string;
@@ -87,39 +31,8 @@ export type Ressources = {
allocation: Reservation[]; allocation: Reservation[];
}; };
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 type Reservation = { export type Reservation = {
id: string; id: string;
dateChantier: Date; dateChantier: Date;
dateFin: Date; dateFin: Date;
}; };
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),
};
}

View File

@@ -1,5 +1,6 @@
import { useChantier } from "@/app/ContextChantier"; import { useChantier } from "@/app/ContextChantier";
import { Chantier, getChantiers } from "@/class/class"; import { Chantier } from "@/class/class";
import { getChantiers } from "@/services/ressourcesService";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { import {
Dimensions, Dimensions,

View File

@@ -1,23 +1,90 @@
import { collection, getDocs, doc, updateDoc } from "firebase/firestore"; import { collection, getDocs, doc, updateDoc } from "firebase/firestore";
import { db } from "../firebase_config"; import { db } from "../firebase_config";
import { Timestamp } from "firebase/firestore";
import { Chantier, User, Ressources, Reservation } from "../class/class";
export type Ressource = { export async function getUsers(): Promise<User[]> {
id: number;
name: string;
type: string;
Image: string;
quantity: number;
available_quantity: number;
};
export async function getRessources(): Promise<Ressource[]> {
try { try {
const ressourcesCol = collection(db, "ressources"); const colRef = collection(db, "user");
const snapshot = await getDocs(ressourcesCol); const snapshot = await getDocs(colRef);
const list = snapshot.docs.map((doc) => doc.data() as Ressource); return snapshot.docs.map((doc) => {
return list; const data = doc.data();
return {
...data,
allocation: data.allocation?.map(convertReservation) || [],
} as User;
});
} catch (err) { } catch (err) {
console.log("Firestore Error:", err); console.error("Firestore Users Error:", err);
return []; 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),
};
}