test reservation todo corriger getChantier avec la nouvelelle structure
This commit is contained in:
@@ -7,8 +7,8 @@ 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 { Chantier, Ressources, User } from '@/class/class';
|
||||
import { getRessources, getUsers, addChantier, sendNewChantier } from '@/services/ressourcesService';
|
||||
import { Chantier, Ressources, User, Reservation } from '@/class/class';
|
||||
import { ThemedText } from '@/components/theme/themed-text';
|
||||
import { ThemedButton } from '@/components/theme/themed-button';
|
||||
import { ThemedTextInput } from '@/components/theme/themed-textinput';
|
||||
@@ -34,7 +34,6 @@ export default function AddChantier() {
|
||||
|
||||
const [editMode,setEditMode] = useState(false);
|
||||
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [objet, setObjet] = useState('');
|
||||
const [date, setDate] = useState(new Date());
|
||||
const [morning, setMorning] = useState(true);
|
||||
@@ -44,6 +43,7 @@ export default function AddChantier() {
|
||||
const [contact, setContact] = useState('');
|
||||
const [machines, setMachines] = useState<RessourcesQte[]>();
|
||||
const [ouvriers, setOuviers] = useState<RessourcesQte[]>();
|
||||
const [outils, setOutils] = useState<RessourcesQte[]>();
|
||||
|
||||
const [showDateSelect,setSowDateSelect] = useState(false);
|
||||
const [openConfirmation,setOpenConfirmation] = useState(false);
|
||||
@@ -52,7 +52,6 @@ export default function AddChantier() {
|
||||
const [ressourcesSelect, setRessourcesSelect] = useState<string[]>([]);
|
||||
|
||||
async function handleAddChantier() {
|
||||
setLoading(true);
|
||||
setOpenConfirmation(true);
|
||||
}
|
||||
|
||||
@@ -64,15 +63,89 @@ export default function AddChantier() {
|
||||
}
|
||||
};
|
||||
async function onConfirm(): Promise<void> {
|
||||
if (!isValidChantier() || !chefChantier) return;
|
||||
try {
|
||||
setLoading(true);
|
||||
if (!isValidChantier() || !chefChantier){
|
||||
alert("Choisir un chef de Chantier");
|
||||
return;
|
||||
}
|
||||
setOpenConfirmation(false);
|
||||
var latitude=0;
|
||||
var longitude=0;
|
||||
try { //verification de l'adresse
|
||||
const coords = await geocodeAddress(adresse);
|
||||
if (coords) {
|
||||
latitude=coords.latitude;
|
||||
longitude=coords.longitude;
|
||||
}
|
||||
else{
|
||||
console.error("Impossible de géocoder l'adresse");
|
||||
alert("Adresse introuvable. Veuillez vérifier l'adresse.");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Erreur lors de la création du chantier:", error);
|
||||
alert("Erreur lors de la création du chantier");
|
||||
}
|
||||
|
||||
|
||||
|
||||
var chantier: Chantier = {
|
||||
id:"0",
|
||||
name: objet,
|
||||
adresse: adresse,
|
||||
etat: 'En cours',
|
||||
contact: contact,
|
||||
chef: chefChantier,
|
||||
dateDep: date,
|
||||
tempsEst: Number(duree),
|
||||
anomalies: [],
|
||||
latitude: latitude,
|
||||
longitude: longitude,
|
||||
equipe: [],
|
||||
materiel: [],
|
||||
vehicules: []
|
||||
}
|
||||
|
||||
if(machines){
|
||||
machines.forEach(item => {
|
||||
chantier.vehicules.push({
|
||||
id:"0",
|
||||
chantier: chantier,
|
||||
ressource: item[0],
|
||||
quantity: item[1],
|
||||
})
|
||||
});
|
||||
}
|
||||
if(ouvriers){
|
||||
ouvriers.forEach(item => {
|
||||
chantier.equipe.push({
|
||||
id:"0",
|
||||
chantier: chantier,
|
||||
ressource: item[0],
|
||||
quantity: item[1],
|
||||
})
|
||||
});
|
||||
}
|
||||
if(outils){
|
||||
outils.forEach(item => {
|
||||
chantier.materiel.push({
|
||||
id:"0",
|
||||
chantier: chantier,
|
||||
ressource: item[0],
|
||||
quantity: item[1],
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
sendNewChantier(chantier);
|
||||
|
||||
|
||||
|
||||
|
||||
/*try {
|
||||
const coords = await geocodeAddress(adresse);
|
||||
|
||||
if (!coords) {
|
||||
console.error("Impossible de géocoder l'adresse");
|
||||
alert("Adresse introuvable. Veuillez vérifier l'adresse.");
|
||||
setLoading(false);
|
||||
return;
|
||||
}
|
||||
const chantierDate = new Date(date);
|
||||
@@ -85,17 +158,17 @@ export default function AddChantier() {
|
||||
contact,
|
||||
chef: doc(db, "user", chefChantier.id),
|
||||
equipe: [],
|
||||
/*materiel: materiels
|
||||
? [doc(db, "ressources", String(materiels.id))]
|
||||
: [],*/
|
||||
//materiel: materiels
|
||||
// ? [doc(db, "ressources", String(materiels.id))]
|
||||
// : [],
|
||||
vehicules: machines?.map(e =>
|
||||
doc(db, "ressources", String(e[0].id))
|
||||
) || [],
|
||||
anomalies: [],
|
||||
dateDep: chantierDate,
|
||||
tempsEst: parseInt(duree) || 1,
|
||||
latitude: coords.latitude, //TODO
|
||||
longitude: coords.longitude, //TODO
|
||||
latitude: coords.latitude,
|
||||
longitude: coords.longitude,
|
||||
};
|
||||
const id = await addChantier(chantierFirestore as any);
|
||||
if (id) {
|
||||
@@ -113,9 +186,7 @@ export default function AddChantier() {
|
||||
} catch (error) {
|
||||
console.error("Erreur lors de la création du chantier:", error);
|
||||
alert("Erreur lors de la création du chantier");
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
function onCancel(): void {
|
||||
@@ -231,7 +302,7 @@ export default function AddChantier() {
|
||||
</View>
|
||||
<View style = {styles.inputLine}>
|
||||
<ThemedText style = {styles.inputName}>Outils:</ThemedText>
|
||||
<SelectRessource style={styles.input} sendRessources={setOuviers} ressourceType="Outil"/>
|
||||
<SelectRessource style={styles.input} sendRessources={setOutils} ressourceType="Outil"/>
|
||||
</View>
|
||||
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@ export default function SelectChafChantier({style,sendChefChantier , ...otherPro
|
||||
return(
|
||||
<View style={{padding:10,width:"100%"}}>
|
||||
<ThemedButton lvl={2} style={{padding:10,width:"100%",borderRadius:10}} onPress={() => {onPressUser(item)}}>
|
||||
<ThemedText>{item.id}</ThemedText>
|
||||
<ThemedText>{item.name}</ThemedText>
|
||||
<ThemedText>{item.last_name}</ThemedText>
|
||||
<ThemedText>{item.role}</ThemedText>
|
||||
|
||||
@@ -20,9 +20,9 @@ export default function ChantierSummary({data,style , ...otherProps }: Props) {
|
||||
<Image source={{ uri:"https://cdn.discordapp.com/attachments/1425108443571945644/1427207643180826757/raw.png?ex=693f1a72&is=693dc8f2&hm=86ffb97145fc8d3aec822b87d99be233c98477d4424c1ef58f80eb81b17c7c80&" /*chantier.urlImg*/ }} style={styles.image} />
|
||||
</View>
|
||||
<View style={{flex: 1}}>
|
||||
<ThemedText>Adresse: {data.chantier.adresse}</ThemedText>
|
||||
<ThemedText>Chef de chantier: {data.chantier.chef.last_name}{" "}{data.chantier.chef.name}</ThemedText>
|
||||
<ThemedText>État: {data.chantier.etat}</ThemedText>
|
||||
<ThemedText selectable={true}>Adresse: {data.chantier.adresse}</ThemedText>
|
||||
<ThemedText selectable={true}>Chef de chantier: {data.chantier.chef.last_name}{" "}{data.chantier.chef.name}</ThemedText>
|
||||
<ThemedText selectable={true}>État: {data.chantier.etat}</ThemedText>
|
||||
</View>
|
||||
</ThemedView>
|
||||
) :
|
||||
|
||||
@@ -78,7 +78,7 @@ export default function SelectChantier() {
|
||||
var keyWords:string[] = search.toLowerCase().split(" ") ;
|
||||
var containsAllKeyWord:boolean = true;
|
||||
keyWords.forEach(keyWord => {
|
||||
containsAllKeyWord = containsAllKeyWord && (chantier.adresse.toLowerCase().includes(keyWord))
|
||||
containsAllKeyWord = containsAllKeyWord && (chantier.adresse.toLowerCase().includes(keyWord) || chantier.name.toLowerCase().includes(keyWord))
|
||||
});
|
||||
return containsAllKeyWord
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user