From f3879a912c5c2ea4a4fe808cc207cec57d05151d Mon Sep 17 00:00:00 2001 From: Felipe Date: Mon, 30 Oct 2023 14:43:14 -0500 Subject: [PATCH] push ordenar por timestamp --- lib/main.dart | 2 +- lib/src/components/drawer_menu.dart | 117 +++++++++++--------- lib/src/components/drawer_professional.dart | 2 +- lib/src/models/event_model.dart | 4 + lib/src/screens/my_services.dart | 2 +- lib/src/screens/my_services_pro.dart | 17 +-- lib/src/screens/solicitudes.dart | 2 +- 7 files changed, 79 insertions(+), 67 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 83da3a6..5f498a3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -106,7 +106,7 @@ class MyApp extends StatelessWidget { '/profilePro': (context) => const ProfileProScreen(), '/calendar': (context) => const CalendarScreen(), '/solicitud': (context) => SolicitudScreen(), - '/misserviciospro': (context) => const MyServicesProScreen(), + '/misserviciospro': (context) => MyServicesProScreen(), '/misservicios': (context) => MyServicesScreen(), }, onGenerateRoute: (settings) { diff --git a/lib/src/components/drawer_menu.dart b/lib/src/components/drawer_menu.dart index 70508c6..0ffc78b 100644 --- a/lib/src/components/drawer_menu.dart +++ b/lib/src/components/drawer_menu.dart @@ -27,7 +27,6 @@ class DrawerMenu extends StatefulWidget { class _DrawerMenuState extends State { final uid = AuthenticationRepository.instance.getCurrentUserUid(); - UserModel? user; ScoresModel? scoresModel; @override @@ -54,7 +53,7 @@ class _DrawerMenuState extends State { Widget build(BuildContext context) { final userProvider = Provider.of(context); - // final UserModel? user = userProvider.user; + UserModel? user; return Drawer( child: Column( @@ -68,7 +67,7 @@ class _DrawerMenuState extends State { builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { - return Center(child: CircularProgressIndicator()); + return const Center(child: CircularProgressIndicator()); } else if (snapshot.hasError) { return Center(child: Text('Error: ${snapshot.error}')); } else { @@ -343,59 +342,77 @@ class _DrawerMenuState extends State { ), Column( children: [ - ElevatedButton( - onPressed: () { - if (user?.name == '' || - user?.city == '' || - user?.phoneNumber == '' || - user?.phoneNumber == null) { - Get.snackbar( - 'Completa tu perfil', - 'Para ser un profesional registrado, asegúrate de llenar todos los campos necesarios y no olvides guardar tus cambios para que surtan efecto.', - snackPosition: SnackPosition.BOTTOM, - ); + StreamBuilder( + stream: userProvider.itemsStream, + builder: + (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return const Center(child: CircularProgressIndicator()); + } else if (snapshot.hasError) { + return Center(child: Text('Error: ${snapshot.error}')); } else { - if (user?.phoneNumber != user?.phoneNumber) { - Get.snackbar( - 'Tu número de teléfono sigue sin cambios.', - 'Para guardar esta información, dirígete a tu perfil y selecciona la opción Guardar', - snackPosition: SnackPosition.BOTTOM, - ); - } else { - if (user?.state == 'pendiente' || user?.state == null) { - if (kIsWeb) { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => - const ProfessionalProfileWebScreen()), + UserModel? user = snapshot.data; + + return ElevatedButton( + onPressed: () { + if (user?.name == '' || + user?.city == '' || + user?.phoneNumber == '' || + user?.phoneNumber == null) { + Get.snackbar( + 'Completa tu perfil', + 'Para ser un profesional registrado, asegúrate de llenar todos los campos necesarios y no olvides guardar tus cambios para que surtan efecto.', + snackPosition: SnackPosition.BOTTOM, ); } else { - Navigator.pushNamed(context, '/profesionalProfile'); + if (user?.phoneNumber != user?.phoneNumber) { + Get.snackbar( + 'Tu número de teléfono sigue sin cambios.', + 'Para guardar esta información, dirígete a tu perfil y selecciona la opción Guardar', + snackPosition: SnackPosition.BOTTOM, + ); + } else { + if (user?.state == 'pendiente' || + user?.state == null) { + if (kIsWeb) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + const ProfessionalProfileWebScreen(), + ), + ); + } else { + Navigator.pushNamed( + context, '/profesionalProfile'); + } + } else if (user?.state == 'revision') { + Navigator.pushNamed( + context, '/profesionalRevision'); + } else if (user?.state == 'activo') { + Navigator.pushNamed(context, '/solicitud'); + } + } } - } else if (user?.state == 'revision') { - Navigator.pushNamed(context, '/profesionalRevision'); - } else if (user?.state == 'activo') { - Navigator.pushNamed(context, '/solicitud'); - } - } + }, + style: ElevatedButton.styleFrom( + backgroundColor: const Color(0xFF2BA4EC), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(50), + ), + elevation: 0, + minimumSize: const Size(230, 45), + ), + child: const Text( + 'Modo profesional', + style: TextStyle( + color: Colors.white, + fontSize: 15, + ), + ), + ); } }, - style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFF2BA4EC), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), - ), - elevation: 0, - minimumSize: const Size(230, 45), - ), - child: const Text( - 'Modo profesional', - style: TextStyle( - color: Colors.white, - fontSize: 15, - ), - ), ), const SizedBox(height: 10), ElevatedButton( diff --git a/lib/src/components/drawer_professional.dart b/lib/src/components/drawer_professional.dart index fabc0c4..f9d2895 100644 --- a/lib/src/components/drawer_professional.dart +++ b/lib/src/components/drawer_professional.dart @@ -133,7 +133,7 @@ class _DrawerProfessionalState extends State { Navigator.of(context).push( CupertinoPageRoute( builder: (BuildContext context) { - return const MyServicesProScreen(); + return MyServicesProScreen(); }, ), ); diff --git a/lib/src/models/event_model.dart b/lib/src/models/event_model.dart index fdf8ff8..a8e98f4 100644 --- a/lib/src/models/event_model.dart +++ b/lib/src/models/event_model.dart @@ -65,6 +65,7 @@ Future> getByProId(String day) async { .where('professional_id', isEqualTo: uid) .where('day', isEqualTo: day.toString()) .where('status', isEqualTo: 'aprobado') + .orderBy('Timestamp', descending: true) .get(); List eventos = []; @@ -141,6 +142,7 @@ class Event { int? tarifa; bool professionalScored; bool userScored; + Timestamp? timeStamp; Event({ this.id, @@ -156,6 +158,7 @@ class Event { this.longitud, this.latitud, this.status = 'pendiente', + this.timeStamp, this.tarifa, this.professionalScored = false, this.userScored = false, @@ -176,6 +179,7 @@ class Event { longitud: json['longitude'] ?? 0, latitud: json['latitude'] ?? 0, status: json['status'], + timeStamp: json['Timestamp'] ?? 0, tarifa: json['tarifa'] ?? 0, professionalScored: json['professional_scored'], userScored: json['user_scored'], diff --git a/lib/src/screens/my_services.dart b/lib/src/screens/my_services.dart index adbb692..3fec83f 100644 --- a/lib/src/screens/my_services.dart +++ b/lib/src/screens/my_services.dart @@ -87,7 +87,7 @@ class _MyServicesScreenState extends State { try { eventos.addAll(snapshot.data!); - eventos.sort((a, b) => a.range1Hour1.compareTo(b.range1Hour1)); + eventos.sort((a, b) => a.timeStamp!.compareTo(b.timeStamp!)); } catch (e) { print("Error" + e.toString()); } diff --git a/lib/src/screens/my_services_pro.dart b/lib/src/screens/my_services_pro.dart index 5450dd7..341657e 100644 --- a/lib/src/screens/my_services_pro.dart +++ b/lib/src/screens/my_services_pro.dart @@ -10,21 +10,12 @@ import 'package:prosappco/src/models/event_model.dart'; import 'package:prosappco/src/models/scores_model.dart'; import 'package:prosappco/src/screens/cita.dart'; -class MyServicesProScreen extends StatefulWidget { - const MyServicesProScreen({super.key}); +class MyServicesProScreen extends StatelessWidget { + MyServicesProScreen({super.key}); - @override - State createState() => _MyServicesProScreenState(); -} - -class _MyServicesProScreenState extends State { DateTime today = DateTime.now(); - final uid = AuthenticationRepository.instance.getCurrentUserUid(); - @override - void initState() { - super.initState(); - } + final uid = AuthenticationRepository.instance.getCurrentUserUid(); @override Widget build(BuildContext context) { @@ -83,7 +74,7 @@ class _MyServicesProScreenState extends State { try { eventos.addAll(snapshot.data!); - eventos.sort((a, b) => a.range1Hour1.compareTo(b.range1Hour1)); + eventos.sort((a, b) => a.timeStamp!.compareTo(b.timeStamp!)); } catch (e) { print("Error" + e.toString()); } diff --git a/lib/src/screens/solicitudes.dart b/lib/src/screens/solicitudes.dart index 385ae99..a3851aa 100644 --- a/lib/src/screens/solicitudes.dart +++ b/lib/src/screens/solicitudes.dart @@ -75,7 +75,7 @@ class SolicitudScreen extends StatelessWidget { try { eventos.addAll(snapshot.data!); - eventos.sort((a, b) => a.range1Hour1.compareTo(b.range1Hour1)); + eventos.sort((a, b) => a.timeStamp!.compareTo(b.timeStamp!)); } catch (e) { print("Error" + e.toString()); }