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"));