separte class and services
This commit is contained in:
@@ -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 (
|
||||||
|
|||||||
@@ -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),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -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,
|
||||||
|
|||||||
@@ -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),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user