diff --git a/app/(tabs)/_layout.tsx b/app/(tabs)/_layout.tsx
index d70ae38..69afbb2 100644
--- a/app/(tabs)/_layout.tsx
+++ b/app/(tabs)/_layout.tsx
@@ -11,6 +11,7 @@ import Home from './home';
import MapScreen from './mapScreen';
import AddChantier from './addChantier';
import AddRessource from './addRessource';
+import AddArtisant from './addArtisant';
import AntDesign from '@expo/vector-icons/AntDesign';
import { UserProvider } from '../ContextUser';
import { ChantierProvider } from '../ContextChantier';
@@ -81,7 +82,18 @@ export default function TabLayout() {
name="addRessource"
component={AddRessource}
options={{
- title: 'Ajouter',
+ title: 'Ressources',
+ tabBarIcon: ({ color }) => (
+
+ ),
+ }}
+ />
+
+ (
),
@@ -89,7 +101,6 @@ export default function TabLayout() {
/>
-
);
}
diff --git a/app/(tabs)/addArtisant.tsx b/app/(tabs)/addArtisant.tsx
new file mode 100644
index 0000000..e340971
--- /dev/null
+++ b/app/(tabs)/addArtisant.tsx
@@ -0,0 +1,247 @@
+import ChantierSummary from '@/components/chantierSummary';
+import SelectChantier from '@/components/selectChantier';
+import SetStatus from '@/components/setStatus';
+
+
+import { ThemedView } from '@/components/theme/themed-view';
+import React, { useEffect, useState } from 'react';
+import { StyleSheet, ScrollView, Button, TextInput, Text, View, Modal } from 'react-native';
+import { useChantier } from '../ContextChantier';
+import { useRessources } from '../ContextRessource';
+import { useUser } from '../ContextUser';
+import { getRessources, getUsers, addChantier } from '@/services/ressourcesService';
+import { Chantier, Ressources, User } from '@/class/class';
+import { ThemedText } from '@/components/theme/themed-text';
+import { ThemedButton } from '@/components/theme/themed-button';
+import { ThemedTextInput } from '@/components/theme/themed-textinput';
+import DateTimePicker, { DateTimePickerEvent } from '@react-native-community/datetimepicker';
+
+import Constants from 'expo-constants'; //pour connaître la taille de la barre menu de l'OS en haut
+import SelectChafChantier from '@/components/selectChefChantier';
+import SelectMachine from '@/components/selectMachine';
+
+//Uniquement accessible par le RESPONSSABLE du chantier
+//Pour créer ou modifier un chantier
+export default function AddArtisant() {
+ const { chantier, setChantier } = useChantier();
+ const { user, setUser } = useUser();
+ const { ressources, setRessources } = useRessources();
+
+ const [editMode,setEditMode] = useState(false);
+
+ const [loading, setLoading] = useState(false);
+ const [nom, setNom] = useState('');
+ const [qualifications, setQualifications] = useState('');
+ const [date, setDate] = useState(new Date());
+ const [contact, setContact] = useState('');
+
+ const [showDateSelect,setSowDateSelect] = useState(false);
+ const [openConfirmation,setOpenConfirmation] = useState(false);
+
+ const [userSelect, setUserSelect] = useState([]);
+ const [ressourcesSelect, setRessourcesSelect] = useState([]);
+
+ async function handleAddArtisant() {
+ setLoading(true);
+ setOpenConfirmation(true);
+ }
+
+
+ const onSelectDate = (event: DateTimePickerEvent, selectedDate?: Date) => {
+ setSowDateSelect(false);
+ if (selectedDate) {
+ setDate(selectedDate);
+ }
+ };
+
+ async function onConfirm(): Promise {
+ //TODO
+ //await changeChantierStatus(chantier.id,tempStatus)
+ //Il faut changer le UX
+ //setChantier({...chantier,etat: tempStatus})
+ if(isValidChantier()){
+ setOpenConfirmation(false);
+ }
+ }
+
+ function onCancel(): void {
+ setOpenConfirmation(false);
+ }
+
+ function isValidChantier(): boolean {
+ return nom=="" && qualifications!=='' && contact!==''
+ }
+
+ const renderValidationScreen = () => {
+ return(
+
+
+
+ Créer le nouveau chantier suivant ? :
+
+ Nom: {nom===''?"NONE":nom}
+ Qualifications : {qualifications===''?"NONE":qualifications}
+
+ Date: {date.toLocaleDateString()}
+ Contact {contact===''?"NONE":contact}
+
+
+
+ onConfirm()}>
+ Confirmer
+
+
+
+ onCancel()}>
+ Annuler
+
+
+
+
+
+ )
+ }
+
+ const renderInutDate = (name : string) => {
+ return (
+
+ {name}:
+
+
+
+ setSowDateSelect(true)} style = {{borderRadius:10}}>{date.toLocaleDateString()}
+
+
+
+ {showDateSelect && (
+
+ )}
+
+
+ );
+ };
+
+ const renderInut = (name : string, preFill : string, value : string, setValue : ((text:string) => void),numeric:boolean) => {
+ return (
+
+ {name}:
+
+
+ );
+ };
+
+
+ return (
+
+
+ {editMode &&
+
+
+
+ }
+
+
+
+
+ {editMode? "Edition d'un chantier"
+ :"Ajouter un nouvel artisant"}
+
+ {renderInut("Nom","Jean Dupont",nom,setNom,false)}
+ {//renderInut("Date de départ","TOTO : JOUR + Demi journé",date,setDate)
+ }
+ {renderInut("Qualifications","Plombier",qualifications,setQualifications,false)}
+ {renderInutDate("Date d'arrivée")}
+ {renderInut("Contact artisant","07 01 02 03 04 05",contact,setContact,true)}
+ handleAddArtisant()}
+ >
+ Valider
+
+
+ {openConfirmation && renderValidationScreen()}
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ back:{
+ height:"100%",
+ width:"100%",
+ },
+ container: {
+ flex: 1,
+ marginTop: Constants.statusBarHeight, //pour la barre menu du haut
+ },
+ header: {
+ marginTop:60,
+ alignItems: "center",
+ paddingHorizontal: 20,
+ },
+ text: {
+ fontSize: 22,
+ fontWeight: "bold",
+ marginBottom: 10,
+ },
+ inputBack: {
+ width: "100%",
+ borderRadius: 10,
+ backgroundColor: "transparent",
+ },
+ inputLine:{
+ width: "100%",
+ //flexDirection: 'row',
+ paddingVertical: 5,
+ //alignItems: "center",
+ },
+ inputName: {
+ fontSize: 16,
+ },
+ input: {
+ width: "100%",
+ borderRadius: 10,
+ padding: 10,
+ fontSize: 16,
+ },
+ overlay:{
+ backgroundColor:'#00000080',
+ padding:"5%",
+ paddingVertical:"20%",
+ width:"100%",
+ height:"100%",
+ },
+ overlayView:{
+ borderRadius: 20,
+ padding: 20,
+ alignItems: "center",
+ width: "100%",
+ gap:5,
+ //backgroundColor:'#ff0000',
+ },
+ buttonValid:{
+ //borderWidth: 2,
+ width:'100%',
+ margin: 0,
+ borderRadius: 15,
+ padding: 10,
+ height:60,
+ alignItems: "center",
+ justifyContent: 'center',
+ },
+ summaryNewChantier:{
+ width:'100%',
+ borderRadius: 15,
+ padding:10,
+ }
+});