Skip to content
Snippets Groups Projects
Commit fe4db100 authored by yann.niermare's avatar yann.niermare
Browse files

Update mobile app

parent f4efc07e
No related branches found
No related tags found
1 merge request!15Deleted rpg_app/assets/fonts/Inter-Bold.ttf,...
......@@ -4,6 +4,30 @@ import { RectButtonWhite } from './Button'
import { useNavigation } from '@react-navigation/native'
const HomeHeader = ({ onSearch, route }) => {
let handleModif = () => {
const datas = {
mail : route.params.user.Mail,
password : route.params.user.Password,
};
const options2 = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(datas),
};
fetch('http://10.0.2.2:3001/login', options2).then(
res => { if (res.status == 200) {
res.json().then(result => handleResponse(result));
}
}
)
}
let handleResponse = (response) => {
navigation.navigate("UpdateAccount",{user : response[0]})
}
let msg = "Bonjour, "+ route.params.user.Prenom + " " + route.params.user.Nom
const navigation = useNavigation();
return (
......@@ -29,7 +53,7 @@ const HomeHeader = ({ onSearch, route }) => {
</View>
<View style={{ flexDirection: "row", alignItems: "center", justifyContent: "space-between"}}>
<RectButtonWhite width={"48%"} fonSize={SIZES.large} text="Modifier des informations" handlePress={() => navigation.navigate("UpdateAccount",{user : route.params.user})} {...SHADOWS.dark}/>
<RectButtonWhite width={"48%"} fonSize={SIZES.large} text="Modifier des informations" handlePress={handleModif} {...SHADOWS.dark}/>
<RectButtonWhite width={"48%"} fonSize={SIZES.large} text="Prendre un rendez-vous" handlePress={() => navigation.navigate("RdvScreen",{user : route.params.user})} {...SHADOWS.dark}/>
</View>
......
export const COLORS = {
primary: "#001F2D",
primary: "#2F278F",
secondary: "#4D626C",
save: "#001F2D",
white: "#FFF",
gray: "#E6E6E6",
red: "#BC0116",
......
......@@ -14,7 +14,7 @@
"@react-navigation/native": "6.1.2",
"@react-navigation/stack": "6.3.11",
"appjs": "0.0.20",
"appjs-linux-x64": "0.0.19",
"appjs-win32": "^0.0.19",
"emailjs-com": "^3.2.0",
"expo": "~47.0.12",
"expo-font": "11.0.1",
......@@ -4047,15 +4047,12 @@
"node": ">=0.8"
}
},
"node_modules/appjs-linux-x64": {
"node_modules/appjs-win32": {
"version": "0.0.19",
"resolved": "https://registry.npmjs.org/appjs-linux-x64/-/appjs-linux-x64-0.0.19.tgz",
"integrity": "sha512-BjONz/ONyx0AUE0bCasx0Tj6QeM/NPPzBBqX+XM9pNZ/1JTYC2H6qvaBGh7iOSShzzHuTrblTB07LnywpZabbQ==",
"cpu": [
"x64"
],
"resolved": "https://registry.npmjs.org/appjs-win32/-/appjs-win32-0.0.19.tgz",
"integrity": "sha512-ide+/pVBbT043Zxx5CQd2R8j2UIhOs4xV17rEf335ooujHtdvWphiyC3R81UWib9vKHEOY7dNlv91J9R/a7pVw==",
"os": [
"linux"
"win32"
],
"engines": {
"node": ">=0.8"
......@@ -21987,10 +21984,10 @@
"mime": ">=1.2.5"
}
},
"appjs-linux-x64": {
"appjs-win32": {
"version": "0.0.19",
"resolved": "https://registry.npmjs.org/appjs-linux-x64/-/appjs-linux-x64-0.0.19.tgz",
"integrity": "sha512-BjONz/ONyx0AUE0bCasx0Tj6QeM/NPPzBBqX+XM9pNZ/1JTYC2H6qvaBGh7iOSShzzHuTrblTB07LnywpZabbQ=="
"resolved": "https://registry.npmjs.org/appjs-win32/-/appjs-win32-0.0.19.tgz",
"integrity": "sha512-ide+/pVBbT043Zxx5CQd2R8j2UIhOs4xV17rEf335ooujHtdvWphiyC3R81UWib9vKHEOY7dNlv91J9R/a7pVw=="
},
"application-config-path": {
"version": "0.1.1",
......@@ -15,7 +15,7 @@
"@react-navigation/native": "6.1.2",
"@react-navigation/stack": "6.3.11",
"appjs": "0.0.20",
"appjs-linux-x64": "0.0.19",
"appjs-win32": "^0.0.19",
"emailjs-com": "^3.2.0",
"expo": "~47.0.12",
"expo-font": "11.0.1",
......
......@@ -12,6 +12,8 @@ import { COLORS, SIZES, SHADOWS, RPGData } from '../constants';
import { RDVCard, HomeHeader, FocusedStatusBar, RectButton } from '../components';
const Home = ({ navigation, route }) => {
const userData = route.params.user;
console.log(userData);
const isFocused = useIsFocused();
const [rdvData, setRdvData] = useState(RPGData);
......
......@@ -14,6 +14,7 @@ const Subscription = () => {
const [nom,setNom] = useState();
const [prenom,setPrenom] = useState();
const [date, setDate] = useState(new Date());
const [baseDate,setBaseDate] = useState(date);
const [dateShow, setDateShow] = useState();
const [mail,setMail] = useState();
const [mdp,setMdp] = useState();
......@@ -21,6 +22,17 @@ const Subscription = () => {
const [taille,setTaille] = useState();
const [poids,setPoids] = useState();
// error messages
const [errNom,setErrNom] = useState("");
const [errPrenom,setErrPrenom] = useState("");
const [errDate,setErrDate] = useState("");
const [errMail,setErrMail] = useState("");
const [errMdp,setErrMdp] = useState("");
const [errPointure,setErrPointure] = useState("");
const [errTaille,setErrTaille] = useState("");
const [errPoids,setErrPoids] = useState("");
const [isOk,setIsOk] = useState(false);
const [show,setShow] = useState(false);
const [dateSelected,setDateSelected] = useState(false);
......@@ -39,7 +51,7 @@ const Subscription = () => {
}
]);
const PostRDV= () => {
const PostSub= () => {
const data = {
......@@ -48,11 +60,12 @@ const Subscription = () => {
email : mail,
password : mdp,
date_naissance : date,
sexe : "",
sexe : "Homme",
taille : taille,
poids : poids,
pointure : pointure,
};
console.log(data)
const options = {
method: 'POST',
......@@ -62,6 +75,7 @@ const Subscription = () => {
body: JSON.stringify(data),
};
fetch('http://10.0.2.2:3001/inscription', options);
navigation.navigate("Connexion")
}
const today = new Date()
......@@ -73,30 +87,78 @@ const Subscription = () => {
const handleNom = (value) => {
if(value == "" || value.length <=1){
setErrNom("Merci d'indiquer votre nom")
} else {
setErrNom("")
}
UpdateOk();
return setNom(value);
}
const handlePrenom = (value) => {
if(value == "" || value.length <=1) {
setErrPrenom("Merci d'indiquer un Prénom correcte")
}
else {
setErrPrenom("")
}
UpdateOk();
return setPrenom(value);
}
const handleMail = (value) => {
let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w\w+)+$/;
if (reg.test(value) === false) {
setErrMail("Merci d'indiquer un email correcte")
}
else {
setErrMail("")
}
UpdateOk();
return setMail(value);
}
const handleMdp = (value) => {
let reg = /(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})/;
if(reg.test(value) === false) {
setErrMdp("Votre mot de passe doit contenir minimum 8 characteres dont une majuscule et un chiffre")
}
else {
setErrMdp("")
}
UpdateOk();
return setMdp(value);
}
const handlePointure = (value) => {
if(isNaN(parseInt(value)) || value=="") {
setErrPointure("Merci d'indiquer une pointure valide")
} else {
setErrPointure("")
}
UpdateOk();
return setPointure(value);
}
const handleTaille = (value) => {
if(isNaN(parseInt(value)) || value=="") {
setErrTaille("Merci d'indiquer une taille valide")
} else {
setErrTaille("")
}
UpdateOk();
return setTaille(value);
}
const handlePoids = (value) => {
if(isNaN(parseInt(value)) || value=="") {
setErrPoids("Merci d'indiquer une taille valide")
} else {
setErrPoids("")
}
UpdateOk();
return setPoids(value);
}
......@@ -111,12 +173,24 @@ const Subscription = () => {
setDateSelected(true)
setDate(selectedDate);
let dateShow = selectedDate.getDate() + '/' + (selectedDate.getMonth() + 1) + '/' + selectedDate.getFullYear();
UpdateOk()
setDateShow(dateShow)
}
}
const UpdateOk = () => {
if(errNom=="" && nom!="" && errPrenom=="" && prenom!="" && errMail=="" && mail!="" && errMdp=="" && mdp!="" && errPointure=="" && pointure!="" && errTaille=="" && taille!="" && errPoids=="" && poids!="" && date!=baseDate){
console.log("ok");
setIsOk(true);
} else {
console.log("notOk")
setIsOk(false);
}
}
const Verification = () => {
PostRDV();
PostSub();
}
......@@ -138,17 +212,17 @@ const Subscription = () => {
</View>
<View style={{backgroundColor: COLORS.white, borderRadius: SIZES.font, margin: "2%", padding: "3%", ...SHADOWS.dark}}>
<TextBox logo={assets.nom} text={"Ton nom STP"} onchange={handleNom} message={""} clavierType={"default"}/>
<TextBox logo={assets.prenom} text={"Ton prenom STP"} onchange={handlePrenom} message={""} clavierType={"default"}/>
<TextBox logo={assets.mail} text={"Ton mail STP"} onchange={handleMail} message={""} clavierType={"default"}/>
<TextBox logo={assets.mdp} text={"Ton mot de passe STP"} onchange={handleMdp} message={""} clavierType={"default"} secure={true}/>
<TextBox logo={assets.nom} text={"Ton nom"} onchange={handleNom} message={errNom} clavierType={"default"}/>
<TextBox logo={assets.prenom} text={"Ton prenom"} onchange={handlePrenom} message={errPrenom} clavierType={"default"}/>
<TextBox logo={assets.mail} text={"Ton mail"} onchange={handleMail} message={errMail} clavierType={"default"}/>
<TextBox logo={assets.mdp} text={"Ton mot de passe"} onchange={handleMdp} message={errMdp} clavierType={"default"} secure={true}/>
<View style={{ flexDirection: "row", alignItems: "center"}}>
<TextBox logo={assets.pointure} text={"Ta pointure STP"} onchange={handlePointure} message={""} clavierType={"decimal-pad"}/>
<TextBox logo={assets.taille} text={"Ta taille STP"} onchange={handleTaille} message={""} clavierType={"decimal-pad"}/>
<TextBox logo={assets.pointure} text={"Ta pointure"} onchange={handlePointure} message={errPointure} clavierType={"decimal-pad"}/>
<TextBox logo={assets.taille} text={"Ta taille"} onchange={handleTaille} message={errTaille} clavierType={"decimal-pad"}/>
</View>
<View style={{ flexDirection: "row", alignItems: "center"}}>
<TextBox logo={assets.poids} text={"Ton poids STP"} onchange={handlePoids} message={""} clavierType={"number-pad"}/>
<TextBox logo={assets.poids} text={"Ton poids STP"} onchange={handlePoids} message={errPoids} clavierType={"number-pad"}/>
<RadioGender radioData={radioButtons} handlePress={onPressRadioButton} />
</View>
......
......@@ -22,6 +22,17 @@ const UpdateAccount = ({ route, navigation }) => {
const [taille,setTaille] = useState(data.Taille.toString());
const [poids,setPoids] = useState(data.Poids.toString());
// error messages
const [errNom,setErrNom] = useState("");
const [errPrenom,setErrPrenom] = useState("");
const [errDate,setErrDate] = useState("");
const [errMail,setErrMail] = useState("");
const [errMdp,setErrMdp] = useState("");
const [errPointure,setErrPointure] = useState("");
const [errTaille,setErrTaille] = useState("");
const [errPoids,setErrPoids] = useState("");
const [isOk,setIsOk] = useState(true);
const [show,setShow] = useState(false);
const [radioButtons, setRadioButtons] = useState([
......@@ -64,30 +75,79 @@ const UpdateAccount = ({ route, navigation }) => {
const handleNom = (value) => {
if(value == "" || value.length <=1){
setErrNom("Merci d'indiquer votre nom")
} else {
setErrNom("")
}
UpdateOk();
return setNom(value);
}
const handlePrenom = (value) => {
if(value == "" || value.length <=1) {
setErrPrenom("Merci d'indiquer un Prénom correcte")
}
else {
setErrPrenom("")
}
UpdateOk();
return setPrenom(value);
}
const handleMail = (value) => {
let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w\w+)+$/;
if (reg.test(value) === false) {
setErrMail("Merci d'indiquer un email correcte")
}
else {
setErrMail("")
}
UpdateOk();
return setMail(value);
}
const handleMdp = (value) => {
let reg = /(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})/;
if(reg.test(value) === false) {
setErrMdp("Votre mot de passe doit contenir minimum 8 characteres dont une majuscule et un chiffre")
}
else {
setErrMdp("")
}
UpdateOk();
return setMdp(value);
}
const handlePointure = (value) => {
if(isNaN(parseInt(value)) || value=="") {
setErrPointure("Merci d'indiquer une pointure valide")
} else {
setErrPointure("")
}
UpdateOk();
return setPointure(value);
}
const handleTaille = (value) => {
if(isNaN(parseInt(value)) || value=="") {
setErrTaille("Merci d'indiquer une taille valide")
} else {
setErrTaille("")
}
UpdateOk();
return setTaille(value);
}
const handlePoids = (value) => {
if(isNaN(parseInt(value)) || value=="") {
setErrPoids("Merci d'indiquer une taille valide")
} else {
console.log("Out")
setErrPoids("")
}
UpdateOk();
return setPoids(value);
}
......@@ -95,20 +155,28 @@ const UpdateAccount = ({ route, navigation }) => {
setRadioButtons(radioButtonsArray);
}
const onPressRadioButton2 = (radioButtonsArray2) => {
setRadioButtons2(radioButtonsArray2);
}
const onChangeDate = (event, selectedDate) => {
setShow(false);
if(event.type == "set"){
setDateSelected(true)
setDate(selectedDate);
let dateShow = selectedDate.getDate() + '/' + (selectedDate.getMonth() + 1) + '/' + selectedDate.getFullYear();
UpdateOk()
setDateShow(dateShow)
}
}
const UpdateOk = () => {
if(errNom=="" && nom!="" && errPrenom=="" && prenom!="" && errMail=="" && mail!="" && errMdp=="" && mdp!="" && errPointure=="" && pointure!="" && errTaille=="" && taille!="" && errPoids=="" && poids!=""){
console.log("ok");
setIsOk(true);
} else {
console.log("notOk")
setIsOk(false);
}
}
const Verification = () => {
Popup.show({
......@@ -119,10 +187,51 @@ const UpdateAccount = ({ route, navigation }) => {
confirmText: 'Annuler',
callback: () => {
//Requete UPDATE
const data1 = {
client_id : route.params.user.Id_Client,
nom : nom,
prenom : prenom,
email : mail,
password : mdp,
date_naissance : date,
sexe : "Homme",
taille : taille,
poids : poids,
pointure : pointure,
};
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data1),
};
fetch('http://10.0.2.2:3001/modification', options);
Popup.hide();
navigation.goBack()
// Need to update user datas with new datas
const datas = {
mail : mail,
password : mdp,
};
const options2 = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(datas),
};
fetch('http://10.0.2.2:3001/login', options2).then(
res => { if (res.status == 200) {
res.json().then(result => handleResponse(result));
}
}
)
},
cancelCallback: () => {
Popup.hide();
......@@ -130,6 +239,14 @@ const UpdateAccount = ({ route, navigation }) => {
})
}
let handleResponse = (response) => {
Popup.hide();
console.log("In update")
console.log(response[0])
navigation.navigate("Home", {user : response[0]})
}
return (
<Root>
......@@ -137,7 +254,7 @@ const UpdateAccount = ({ route, navigation }) => {
<FocusedStatusBar background={COLORS.primary}/>
<View style={{ width: "100%", position: "absolute", bottom: 0, paddingVertical: SIZES.medium, flexDirection: "row", justifyContent: "center", alignItems: "center", backgroundColor: "rgba(2555, 255, 255, 0.5)", zIndex: 1}}>
<RectButton fonSize={SIZES.large} text="Confirmer" handlePress={Verification} {...SHADOWS.dark} />
{isOk && (<RectButton fonSize={SIZES.large} text="Confirmer" handlePress={Verification} {...SHADOWS.dark} />)}
<RectButton fonSize={SIZES.large} text="Annuler" handlePress={() => navigation.goBack()} {...SHADOWS.dark} />
</View>
......@@ -151,17 +268,17 @@ const UpdateAccount = ({ route, navigation }) => {
</View>
<View style={{backgroundColor: COLORS.white, borderRadius: SIZES.font, margin: "2%", padding: "3%", ...SHADOWS.dark}}>
<TextBox logo={assets.nom} text={"Ton nom STP"} onchange={handleNom} message={""} value={nom} clavierType={"default"}/>
<TextBox logo={assets.prenom} text={"Ton prenom STP"} onchange={handlePrenom} message={""} value={prenom} clavierType={"default"}/>
<TextBox logo={assets.mail} text={"Ton mail STP"} onchange={handleMail} message={""} value={mail} clavierType={"default"}/>
<TextBox logo={assets.mdp} text={"Ton mot de passe STP"} onchange={handleMdp} message={""} value={mdp} clavierType={"default"} secure={true}/>
<TextBox logo={assets.nom} text={"Ton nom STP"} onchange={handleNom} message={errNom} value={nom} clavierType={"default"}/>
<TextBox logo={assets.prenom} text={"Ton prenom STP"} onchange={handlePrenom} message={errPrenom} value={prenom} clavierType={"default"}/>
<TextBox logo={assets.mail} text={"Ton mail STP"} onchange={handleMail} message={errMail} value={mail} clavierType={"default"}/>
<TextBox logo={assets.mdp} text={"Ton mot de passe STP"} onchange={handleMdp} message={errMdp} value={mdp} clavierType={"default"} secure={true}/>
<View style={{ flexDirection: "row", alignItems: "center"}}>
<TextBox logo={assets.pointure} text={"Ta pointure STP"} onchange={handlePointure} message={""} value={pointure} clavierType={"decimal-pad"}/>
<TextBox logo={assets.taille} text={"Ta taille STP"} onchange={handleTaille} message={""} value={taille} clavierType={"decimal-pad"}/>
<TextBox logo={assets.pointure} text={"Ta pointure STP"} onchange={handlePointure} message={errPointure} value={pointure} clavierType={"decimal-pad"}/>
<TextBox logo={assets.taille} text={"Ta taille STP"} onchange={handleTaille} message={errTaille} value={taille} clavierType={"decimal-pad"}/>
</View>
<View style={{ flexDirection: "row", alignItems: "center"}}>
<TextBox logo={assets.poids} text={"Ton poids STP"} onchange={handlePoids} message={""} value={poids} clavierType={"number-pad"}/>
<TextBox logo={assets.poids} text={"Ton poids STP"} onchange={handlePoids} message={errPoids} value={poids} clavierType={"number-pad"}/>
<RadioGender logo={assets.genre} radioData={radioButtons} handlePress={onPressRadioButton} />
</View>
......@@ -181,7 +298,7 @@ const UpdateAccount = ({ route, navigation }) => {
<DateForm dateShow={dateShow} handlePress={() => setShow(true)}/>
<RadioGender radioData={radioButtons2} handlePress={onPressRadioButton2} />
</View>
......
Arguments:
C:\Program Files\nodejs\node.exe C:\Users\Yann\AppData\Roaming\npm\node_modules\yarn\bin\yarn.js install
PATH:
C:\Users\Yann\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\local\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Users\Yann\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Program Files (x86)\sqlite3;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\nodejs;C:\Program Files\MySQL\MySQL Shell 8.0\bin;C:\Users\Yann\AppData\Local\Programs\Python\Python310\Scripts;C:\Users\Yann\AppData\Local\Programs\Python\Python310;C:\Users\Yann\AppData\Local\Microsoft\WindowsApps;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.3.2\bin;C:\Users\Yann\AppData\Local\Programs\Microsoft VS Code\bin;C:\flutter\bin;C:\Program Files\Java\jdk-18.0.2.1\bin;C:\Users\Yann\AppData\Roaming\npm;C:\Program Files\Git\usr\bin\vendor_perl;C:\Program Files\Git\usr\bin\core_perl
Yarn version:
1.22.19
Node version:
18.12.1
Platform:
win32 x64
Trace:
Error: getaddrinfo ENOTFOUND registry.yarnpkg.com
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:107:26)
npm manifest:
{
"name": "rpg_app",
"version": "1.0.0",
"main": "node_modules/expo/AppEntry.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"web": "expo start --web"
},
"dependencies": {
"@emailjs/browser": "^3.10.0",
"@expo/webpack-config": "^0.17.2",
"@react-native-community/datetimepicker": "6.5.2",
"@react-navigation/native": "6.1.2",
"@react-navigation/stack": "6.3.11",
"appjs": "0.0.20",
"appjs-linux-x64": "0.0.19",
"emailjs-com": "^3.2.0",
"expo": "~47.0.12",
"expo-font": "11.0.1",
"expo-status-bar": "~1.4.2",
"expo-updates": "0.15.6",
"react": "18.1.0",
"react-dom": "18.1.0",
"react-native": "0.70.5",
"react-native-gesture-handler": "~2.8.0",
"react-native-popup-confirm-toast": "^2.3.1",
"react-native-radio-buttons-group": "^2.3.2",
"react-native-safe-area-context": "4.4.1",
"react-native-web": "~0.18.9"
},
"devDependencies": {
"@babel/core": "^7.12.9"
},
"private": true
}
yarn manifest:
No manifest
Lockfile:
No lockfile
Source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment