From ceacbc72eeddf765916b9873aee55703d4af1552 Mon Sep 17 00:00:00 2001 From: Valentin CZERYBA Date: Sun, 28 Jul 2024 21:54:37 +0200 Subject: [PATCH] add classes update event by image wip --- .../lib/classes/updateEventImage.dart | 67 ----- covas_mobile/lib/pages/UpdateEventImage.dart | 242 ++++++++++++++++++ 2 files changed, 242 insertions(+), 67 deletions(-) delete mode 100644 covas_mobile/lib/classes/updateEventImage.dart create mode 100644 covas_mobile/lib/pages/UpdateEventImage.dart diff --git a/covas_mobile/lib/classes/updateEventImage.dart b/covas_mobile/lib/classes/updateEventImage.dart deleted file mode 100644 index 33804df..0000000 --- a/covas_mobile/lib/classes/updateEventImage.dart +++ /dev/null @@ -1,67 +0,0 @@ -import 'package:flutter/material.dart'; -import 'events.dart'; -import '../variable/globals.dart' as globals; -import 'package:http/http.dart' as http; -import 'dart:io'; -import 'dart:convert'; - -import 'package:shared_preferences/shared_preferences.dart'; - -mixin ShowDescImageUpdate on State { - Future updateEvents(var events) async { - SharedPreferences prefs = await SharedPreferences.getInstance(); - var accessToken = prefs.getString("access_token") ?? ""; - List send = ["toto"]; - - if (accessToken.isNotEmpty) { - var urlPut = Uri.parse("${globals.api}/events"); - print("start date : ${events["start_date"]}"); - var responsePut = await http.put(urlPut, - headers: { - HttpHeaders.cookieHeader: 'access_token=${accessToken}', - HttpHeaders.acceptHeader: 'application/json, text/plain, */*', - HttpHeaders.contentTypeHeader: 'application/json' - }, - body: jsonEncode({ - 'name': events["name"], - 'place': events["place"], - 'start_date': events['date'], - 'end_date': events['date'], - 'organizers': send, - 'latitude': '0.0', - 'longitude': '0.0', - })); - - print("http put code status : ${responsePut.statusCode}"); - print("http put body : ${responsePut.body}"); - } - } - - void showDescImageUpdateDialog(BuildContext context, var events) { - // Create AlertDialog - String name = events['name']; - AlertDialog dialog = AlertDialog( - title: Text("Modifier un evenement"), - content: Text("${name} a été trouvé. Voulez-vous le modifier ou voir ? "), - actions: [ - TextButton( - child: Text("Annuler"), - onPressed: () { - Navigator.of(context).pop("Yes, Of course!"); // Return value - }), - TextButton( - child: Text("Oui"), - onPressed: () { - updateEvents(events); // Return value - }), - ], - ); - - // Call showDialog function to show dialog. - Future futureValue = showDialog( - context: context, - builder: (BuildContext context) { - return dialog; - }); - } -} diff --git a/covas_mobile/lib/pages/UpdateEventImage.dart b/covas_mobile/lib/pages/UpdateEventImage.dart new file mode 100644 index 0000000..c9ecbdd --- /dev/null +++ b/covas_mobile/lib/pages/UpdateEventImage.dart @@ -0,0 +1,242 @@ +import 'package:flutter/material.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:http/http.dart' as http; + +import 'dart:convert'; +import 'dart:io'; + +//import 'MyHomePage.dart'; +import 'ListItemMenu.dart'; + +import '../classes/alert.dart'; + +import '../variable/globals.dart' as globals; + +void main() { + runApp(MyApp()); +} + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MaterialApp( + debugShowCheckedModeBanner: false, + home: UpdateeventImage(), + ); + } +} + +class UpdateeventImage extends StatefulWidget { + @override + _UpdateeventImageState createState() => _UpdateeventImageState(); +} + +class _UpdateeventImageState extends State + with ShowErrorDialog { + TextEditingController inputPseudo = TextEditingController(); + TextEditingController inputPassword = TextEditingController(); + Future _login(BuildContext context) async { + var url = Uri.parse("${globals.api}/token"); + var pseudo = inputPseudo.text; + var password = inputPassword.text; + print("get login"); + print(pseudo.isNotEmpty); + print(password.isNotEmpty); + if ((pseudo.isNotEmpty) && (password.isNotEmpty)) { + print(url); + try { + //String credentials = "${pseudo}:${password}"; + //Codec stringToBase64 = utf8.fuse(base64); + //String encoded = stringToBase64.encode(credentials); + var response = await http.post(url, + // headers: { + // HttpHeaders.authorizationHeader: 'Basic $encoded', + //} + headers: { + 'accept': 'application/json', + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: { + "username": "${pseudo}", + "password": "${password}" + }); + print(response.statusCode); + if ((response.statusCode == 200) || (response.statusCode == 201)) { + SharedPreferences prefs = await SharedPreferences.getInstance(); + + var cookies = response.headers["set-cookie"].toString().split(";"); + for (var cookie in cookies) { + var cookiesMany = cookie.split(","); + for (var cookie2 in cookiesMany) { + switch (cookie2.split("=")[0]) { + case "access_token": + { + prefs.setString("access_token", cookie2.split("=")[1]); + } + break; + default: + break; + } + } + } + Navigator.push( + context, MaterialPageRoute(builder: (_) => ListItemMenu())); + } else { + var text = ""; + switch (response.statusCode) { + case 400: + { + text = "Requête mal construite"; + } + break; + case 406: + { + text = "Mot de passe incorrect"; + } + break; + case 404: + { + text = "Utilisateur inconnu"; + } + break; + case 403: + { + text = "Utilisateur desactive"; + } + break; + case 410: + { + text = "Token invalide"; + } + break; + case 500: + { + text = "Probleme interne du serveur"; + } + break; + default: + { + text = "Probleme d'authentification inconnu"; + } + break; + } + showErrorDialog(context, text); + } + } catch (e) { + showErrorDialog(context, "${e}"); + } + } else { + showErrorDialog(context, "Champ vide"); + } + } + + void start() async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + var access_token = prefs.getString("access_token") ?? ""; + print("Get access token"); + + if (access_token.isNotEmpty) { + print("Appel HTTP"); + var urlToken = Uri.parse("${globals.api}/token"); + + var responseToken = await http.get(urlToken, + headers: {HttpHeaders.cookieHeader: 'access_token: ${access_token}'}); + print(responseToken.statusCode); + if (responseToken.statusCode == 200) { + print("route to item list"); + Navigator.push( + context, MaterialPageRoute(builder: (_) => ListItemMenu())); + } else { + prefs.remove("access_token"); + } + } + } + + @override + void initState() { + start(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.white, + appBar: AppBar( + title: Text("Login Page"), + backgroundColor: Colors.blue, + foregroundColor: Colors.white, + ), + body: SingleChildScrollView( + child: Column( + children: [ + Padding( + padding: const EdgeInsets.only(top: 60.0), + child: Center( + child: Container( + width: 200, + height: 150, + decoration: BoxDecoration( + color: Colors.red, + borderRadius: BorderRadius.circular(50.0)), + child: Image.asset('./images/flutter.png')), + ), + ), + Padding( + //padding: const EdgeInsets.only(left:15.0,right: 15.0,top:0,bottom: 0), + padding: EdgeInsets.symmetric(horizontal: 15), + child: TextField( + controller: inputPseudo, + decoration: InputDecoration( + border: OutlineInputBorder(), + labelText: 'Pseudo', + hintText: 'Enter pseudo existent'), + ), + ), + Padding( + padding: const EdgeInsets.only( + left: 15.0, right: 15.0, top: 15, bottom: 0), + //padding: EdgeInsets.symmetric(horizontal: 15), + child: TextField( + controller: inputPassword, + obscureText: true, + decoration: InputDecoration( + border: OutlineInputBorder(), + labelText: 'Password', + hintText: 'Enter secure password'), + ), + ), + TextButton( + onPressed: () { + //TODO FORGOT PASSWORD SCREEN GOES HERE + }, + child: Text( + 'Forgot Password', + style: TextStyle(color: Colors.blue, fontSize: 15), + ), + ), + Container( + height: 50, + width: 250, + decoration: BoxDecoration( + color: Colors.blue, borderRadius: BorderRadius.circular(20)), + child: TextButton( + onPressed: () { + _login(context); + }, + child: Text( + 'Login', + style: TextStyle(color: Colors.white, fontSize: 25), + ), + ), + ), + SizedBox( + height: 130, + ), + Text('New User? Create Account') + ], + ), + ), + ); + } +}