From 211dffac98af967f01b6c2174b8c8fa9f52a3924 Mon Sep 17 00:00:00 2001 From: Alexis Leboeuf Date: Sat, 13 Dec 2025 20:26:38 +0100 Subject: [PATCH 1/5] Removed unnecessary information --- app/(tabs)/gestionnaire_ressource.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/(tabs)/gestionnaire_ressource.tsx b/app/(tabs)/gestionnaire_ressource.tsx index 0cef0f1..93e4a6e 100644 --- a/app/(tabs)/gestionnaire_ressource.tsx +++ b/app/(tabs)/gestionnaire_ressource.tsx @@ -12,7 +12,6 @@ import { getRessources } from "../../services/ressourcesService"; import SelectChantier from "@/components/selectChantier"; export default function GestionnaireRessource() { - const { nom, prenom } = useLocalSearchParams(); const [search, setSearch] = useState(""); const [ressource, setRessources] = useState([]); const [filterType, setFilterType] = useState("tout"); @@ -43,7 +42,6 @@ export default function GestionnaireRessource() { - {item.id} Nom : {item.name} Type : {item.type} Quantité totale : {item.quantity} From dc83b1d06db34a01a52a46785919c00b86be60ef Mon Sep 17 00:00:00 2001 From: Alexis Leboeuf Date: Sat, 13 Dec 2025 20:47:46 +0100 Subject: [PATCH 2/5] Renamed the tab that displays workers as Ouvrier --- app/(tabs)/_layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/(tabs)/_layout.tsx b/app/(tabs)/_layout.tsx index 08789e2..0ce41c8 100644 --- a/app/(tabs)/_layout.tsx +++ b/app/(tabs)/_layout.tsx @@ -49,7 +49,7 @@ export default function TabLayout() { name="GestionOuvrier" component={GestionOuvrier} options={{ - title: 'Bonjour', + title: 'Ouvriers', tabBarIcon: ({ color }) => , }} /> From 15d7a517f5f77233ec59d38f5552778e0e715aaf Mon Sep 17 00:00:00 2001 From: tuanvu Date: Sat, 13 Dec 2025 21:03:45 +0100 Subject: [PATCH 3/5] resync --- app/(tabs)/gestionnaire_ressource.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/(tabs)/gestionnaire_ressource.tsx b/app/(tabs)/gestionnaire_ressource.tsx index a6b17d5..ca2faa0 100644 --- a/app/(tabs)/gestionnaire_ressource.tsx +++ b/app/(tabs)/gestionnaire_ressource.tsx @@ -75,9 +75,11 @@ export default function GestionnaireRessource() { lvl={1} shadow={true} style={{ padding: 10, borderRadius: 8, marginBottom: 10 }} - onPress={() => { + onPress={async () => { setFilterType(t); setShowFilterMenu(false); + const updatedChantiers = await getRessources(); + setRessources(updatedChantiers) }} > {t} From 85fc76ddec755b4eab189c272f7d045cb4736754 Mon Sep 17 00:00:00 2001 From: tuanvu Date: Sat, 13 Dec 2025 21:19:57 +0100 Subject: [PATCH 4/5] mini change in anomalies --- app/(tabs)/gestionnaire_ressource.tsx | 4 ++-- components/anomaly.tsx | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/(tabs)/gestionnaire_ressource.tsx b/app/(tabs)/gestionnaire_ressource.tsx index d5c5a24..0feb325 100644 --- a/app/(tabs)/gestionnaire_ressource.tsx +++ b/app/(tabs)/gestionnaire_ressource.tsx @@ -76,8 +76,8 @@ export default function GestionnaireRessource() { onPress={async () => { setFilterType(t); setShowFilterMenu(false); - const updatedChantiers = await getRessources(); - setRessources(updatedChantiers) + const updateRessource = await getRessources(); + setRessources(updateRessource) }} > {t} diff --git a/components/anomaly.tsx b/components/anomaly.tsx index 7eeee95..e94187e 100644 --- a/components/anomaly.tsx +++ b/components/anomaly.tsx @@ -66,7 +66,7 @@ export default function Anomaly({data,style}: Props) { {data.chantier.anomalies.length > 0 ? ( data.chantier.anomalies.map((anomaly, index) => ( - • {anomaly} + • {anomaly} handleDelete(anomaly)} style={styles.deleteButton}> @@ -99,7 +99,7 @@ const styles = StyleSheet.create({ anomaliesContainer: { padding: 5, borderRadius: 10, - height: 150, + //height: 150, }, anomaliesTitle: { fontSize: 16, @@ -107,10 +107,16 @@ const styles = StyleSheet.create({ marginBottom: 8, }, anomalyItem: { + flexDirection: "row", + alignItems: "flex-start", padding: 8, marginBottom: 5, borderRadius: 8, }, + anomalyText: { + flex: 1, + marginLeft: 5, + }, noAnomaly: { fontStyle: "italic", opacity: 0.7, @@ -133,6 +139,7 @@ const styles = StyleSheet.create({ //add anomaly styles addContainer: { marginTop: 10, + marginLeft: 2, flexDirection: "row", alignItems: "center" }, @@ -144,6 +151,7 @@ const styles = StyleSheet.create({ marginRight: 8, }, addButton: { + color: "white", paddingVertical: 8, paddingHorizontal: 12, borderRadius: 8, From 898f06d57753310602efdc9fd411f2c5fb0eddd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ama=C3=ABl=20Kesteman?= Date: Sat, 13 Dec 2025 21:49:07 +0100 Subject: [PATCH 5/5] Feat: Sync entre addRessources et gestionRessources --- app/(tabs)/gestionnaire_ressource.tsx | 5 ++-- class/class.tsx | 2 +- components/add/addRessource.tsx | 35 +++++++++++++++++++++------ services/ressourcesService.ts | 13 ++++++++++ 4 files changed, 44 insertions(+), 11 deletions(-) diff --git a/app/(tabs)/gestionnaire_ressource.tsx b/app/(tabs)/gestionnaire_ressource.tsx index 0feb325..6f19aef 100644 --- a/app/(tabs)/gestionnaire_ressource.tsx +++ b/app/(tabs)/gestionnaire_ressource.tsx @@ -10,10 +10,11 @@ import { FlatList, Image, StyleSheet, Text, View } from "react-native"; import { Ressources } from "../../class/class"; import { getRessources } from "../../services/ressourcesService"; import SelectChantier from "@/components/selectChantier"; +import { useRessources } from "../ContextRessource"; export default function GestionnaireRessource() { const [search, setSearch] = useState(""); - const [ressource, setRessources] = useState([]); + const {ressources, setRessources} = useRessources(); const [filterType, setFilterType] = useState("tout"); const [showFilterMenu, setShowFilterMenu] = useState(false); const router = useRouter(); @@ -30,7 +31,7 @@ export default function GestionnaireRessource() { loadData(); }, []); - const filteredData = ressource.filter((r) => { + const filteredData = ressources.filter((r) => { const matchName = r.name.toLowerCase().includes(search.toLowerCase()); const matchType = filterType === "tout" || r.type === filterType; return matchName && matchType; diff --git a/class/class.tsx b/class/class.tsx index dd59d2b..a7734d2 100644 --- a/class/class.tsx +++ b/class/class.tsx @@ -24,7 +24,7 @@ export type User = { }; export type Ressources = { - id: number; + id: string; name: string; type: string; //"machine","ouvrier" Image: string; diff --git a/components/add/addRessource.tsx b/components/add/addRessource.tsx index 7cbda9a..84a5a3d 100644 --- a/components/add/addRessource.tsx +++ b/components/add/addRessource.tsx @@ -9,7 +9,7 @@ import { StyleSheet, ScrollView, Button, TextInput, Text, View, Modal } from 're import { useChantier } from '@/app/ContextChantier'; import { useRessources } from '@/app/ContextRessource'; import { useUser } from '@/app/ContextUser'; -import { getRessources, getUsers, addChantier } from '@/services/ressourcesService'; +import { getRessources, getUsers, addChantier , addRessources} from '@/services/ressourcesService'; import { Chantier, Ressources, User } from '@/class/class'; import { ThemedText } from '@/components/theme/themed-text'; import { ThemedButton } from '@/components/theme/themed-button'; @@ -58,20 +58,40 @@ export default function AddRessource({ressourceType, ...otherProps }: Props) { } async function onConfirm(): Promise { - //TODO - //await changeChantierStatus(chantier.id,tempStatus) - //Il faut changer le UX - //setChantier({...chantier,etat: tempStatus}) if(isValidRessource()){ + try{ + setLoading(true); + const nouvelleRessource : Ressources = { + id : '', + name: nom, + type : ressourceType, + quantity : parseInt(quantite), + available_quantity : parseInt(quantite), + Image : "", + allocation : [], + }; + const id = await addRessources(nouvelleRessource); + + if(id){ + setRessources([...ressources,{...nouvelleRessource, id}]); + setOpenConfirmation(false); + setNom(''); + setQuantite(''); + setQuantiteDisponible(''); + } + }catch(error){ + }finally{ setOpenConfirmation(false); + setLoading(false); } } + } function onCancel(): void { setOpenConfirmation(false); } function isValidRessource():Boolean{ - return nom!= "" && quantite != "" && quantiteDisponible != "" + return nom!= "" && quantite != "" } const renderValidationScreen = () => { @@ -98,8 +118,7 @@ export default function AddRessource({ressourceType, ...otherProps }: Props) { ) -} - + } const renderInut = (name : string, preFill : string, value : string, setValue : ((text:string) => void),numeric:boolean) => { return ( diff --git a/services/ressourcesService.ts b/services/ressourcesService.ts index 5556674..daae994 100644 --- a/services/ressourcesService.ts +++ b/services/ressourcesService.ts @@ -37,6 +37,19 @@ export async function getRessources(): Promise { return []; } } + +//ADD RESSOURCES +export async function addRessources(ressourceData: Omit): Promise { + try { + const colRef = collection(db, "ressources"); + const ressourcesRef = await addDoc(colRef, ressourceData); + console.log(`Ressource ajoutée avec ID: ${ressourcesRef.id}`); + return ressourcesRef.id; + } catch (err) { + console.error("Error adding:", err); + return null; + } +} ///////////////////////////////////CHANTIER///////////////////////////////// export async function getChantiers(): Promise { const snap = await getDocs(collection(db, "chantier"));