push ordenar por timestamp

This commit is contained in:
Felipe
2023-10-30 14:43:14 -05:00
parent 6d8f83bc66
commit f3879a912c
7 changed files with 79 additions and 67 deletions
+1 -1
View File
@@ -106,7 +106,7 @@ class MyApp extends StatelessWidget {
'/profilePro': (context) => const ProfileProScreen(), '/profilePro': (context) => const ProfileProScreen(),
'/calendar': (context) => const CalendarScreen(), '/calendar': (context) => const CalendarScreen(),
'/solicitud': (context) => SolicitudScreen(), '/solicitud': (context) => SolicitudScreen(),
'/misserviciospro': (context) => const MyServicesProScreen(), '/misserviciospro': (context) => MyServicesProScreen(),
'/misservicios': (context) => MyServicesScreen(), '/misservicios': (context) => MyServicesScreen(),
}, },
onGenerateRoute: (settings) { onGenerateRoute: (settings) {
+67 -50
View File
@@ -27,7 +27,6 @@ class DrawerMenu extends StatefulWidget {
class _DrawerMenuState extends State<DrawerMenu> { class _DrawerMenuState extends State<DrawerMenu> {
final uid = AuthenticationRepository.instance.getCurrentUserUid(); final uid = AuthenticationRepository.instance.getCurrentUserUid();
UserModel? user;
ScoresModel? scoresModel; ScoresModel? scoresModel;
@override @override
@@ -54,7 +53,7 @@ class _DrawerMenuState extends State<DrawerMenu> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context); final userProvider = Provider.of<UserProvider>(context);
// final UserModel? user = userProvider.user; UserModel? user;
return Drawer( return Drawer(
child: Column( child: Column(
@@ -68,7 +67,7 @@ class _DrawerMenuState extends State<DrawerMenu> {
builder: (BuildContext context, builder: (BuildContext context,
AsyncSnapshot<UserModel> snapshot) { AsyncSnapshot<UserModel> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) { if (snapshot.connectionState == ConnectionState.waiting) {
return Center(child: CircularProgressIndicator()); return const Center(child: CircularProgressIndicator());
} else if (snapshot.hasError) { } else if (snapshot.hasError) {
return Center(child: Text('Error: ${snapshot.error}')); return Center(child: Text('Error: ${snapshot.error}'));
} else { } else {
@@ -343,59 +342,77 @@ class _DrawerMenuState extends State<DrawerMenu> {
), ),
Column( Column(
children: [ children: [
ElevatedButton( StreamBuilder<UserModel>(
onPressed: () { stream: userProvider.itemsStream,
if (user?.name == '' || builder:
user?.city == '' || (BuildContext context, AsyncSnapshot<UserModel> snapshot) {
user?.phoneNumber == '' || if (snapshot.connectionState == ConnectionState.waiting) {
user?.phoneNumber == null) { return const Center(child: CircularProgressIndicator());
Get.snackbar( } else if (snapshot.hasError) {
'Completa tu perfil', return Center(child: Text('Error: ${snapshot.error}'));
'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 { } else {
if (user?.phoneNumber != user?.phoneNumber) { UserModel? user = snapshot.data;
Get.snackbar(
'Tu número de teléfono sigue sin cambios.', return ElevatedButton(
'Para guardar esta información, dirígete a tu perfil y selecciona la opción Guardar', onPressed: () {
snackPosition: SnackPosition.BOTTOM, if (user?.name == '' ||
); user?.city == '' ||
} else { user?.phoneNumber == '' ||
if (user?.state == 'pendiente' || user?.state == null) { user?.phoneNumber == null) {
if (kIsWeb) { Get.snackbar(
Navigator.push( 'Completa tu perfil',
context, 'Para ser un profesional registrado, asegúrate de llenar todos los campos necesarios y no olvides guardar tus cambios para que surtan efecto.',
MaterialPageRoute( snackPosition: SnackPosition.BOTTOM,
builder: (context) =>
const ProfessionalProfileWebScreen()),
); );
} else { } 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'); style: ElevatedButton.styleFrom(
} else if (user?.state == 'activo') { backgroundColor: const Color(0xFF2BA4EC),
Navigator.pushNamed(context, '/solicitud'); 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), const SizedBox(height: 10),
ElevatedButton( ElevatedButton(
+1 -1
View File
@@ -133,7 +133,7 @@ class _DrawerProfessionalState extends State<DrawerProfessional> {
Navigator.of(context).push( Navigator.of(context).push(
CupertinoPageRoute( CupertinoPageRoute(
builder: (BuildContext context) { builder: (BuildContext context) {
return const MyServicesProScreen(); return MyServicesProScreen();
}, },
), ),
); );
+4
View File
@@ -65,6 +65,7 @@ Future<List<Event>> getByProId(String day) async {
.where('professional_id', isEqualTo: uid) .where('professional_id', isEqualTo: uid)
.where('day', isEqualTo: day.toString()) .where('day', isEqualTo: day.toString())
.where('status', isEqualTo: 'aprobado') .where('status', isEqualTo: 'aprobado')
.orderBy('Timestamp', descending: true)
.get(); .get();
List<Event> eventos = []; List<Event> eventos = [];
@@ -141,6 +142,7 @@ class Event {
int? tarifa; int? tarifa;
bool professionalScored; bool professionalScored;
bool userScored; bool userScored;
Timestamp? timeStamp;
Event({ Event({
this.id, this.id,
@@ -156,6 +158,7 @@ class Event {
this.longitud, this.longitud,
this.latitud, this.latitud,
this.status = 'pendiente', this.status = 'pendiente',
this.timeStamp,
this.tarifa, this.tarifa,
this.professionalScored = false, this.professionalScored = false,
this.userScored = false, this.userScored = false,
@@ -176,6 +179,7 @@ class Event {
longitud: json['longitude'] ?? 0, longitud: json['longitude'] ?? 0,
latitud: json['latitude'] ?? 0, latitud: json['latitude'] ?? 0,
status: json['status'], status: json['status'],
timeStamp: json['Timestamp'] ?? 0,
tarifa: json['tarifa'] ?? 0, tarifa: json['tarifa'] ?? 0,
professionalScored: json['professional_scored'], professionalScored: json['professional_scored'],
userScored: json['user_scored'], userScored: json['user_scored'],
+1 -1
View File
@@ -87,7 +87,7 @@ class _MyServicesScreenState extends State<MyServicesScreen> {
try { try {
eventos.addAll(snapshot.data!); eventos.addAll(snapshot.data!);
eventos.sort((a, b) => a.range1Hour1.compareTo(b.range1Hour1)); eventos.sort((a, b) => a.timeStamp!.compareTo(b.timeStamp!));
} catch (e) { } catch (e) {
print("Error" + e.toString()); print("Error" + e.toString());
} }
+4 -13
View File
@@ -10,21 +10,12 @@ import 'package:prosappco/src/models/event_model.dart';
import 'package:prosappco/src/models/scores_model.dart'; import 'package:prosappco/src/models/scores_model.dart';
import 'package:prosappco/src/screens/cita.dart'; import 'package:prosappco/src/screens/cita.dart';
class MyServicesProScreen extends StatefulWidget { class MyServicesProScreen extends StatelessWidget {
const MyServicesProScreen({super.key}); MyServicesProScreen({super.key});
@override
State<MyServicesProScreen> createState() => _MyServicesProScreenState();
}
class _MyServicesProScreenState extends State<MyServicesProScreen> {
DateTime today = DateTime.now(); DateTime today = DateTime.now();
final uid = AuthenticationRepository.instance.getCurrentUserUid();
@override final uid = AuthenticationRepository.instance.getCurrentUserUid();
void initState() {
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@@ -83,7 +74,7 @@ class _MyServicesProScreenState extends State<MyServicesProScreen> {
try { try {
eventos.addAll(snapshot.data!); eventos.addAll(snapshot.data!);
eventos.sort((a, b) => a.range1Hour1.compareTo(b.range1Hour1)); eventos.sort((a, b) => a.timeStamp!.compareTo(b.timeStamp!));
} catch (e) { } catch (e) {
print("Error" + e.toString()); print("Error" + e.toString());
} }
+1 -1
View File
@@ -75,7 +75,7 @@ class SolicitudScreen extends StatelessWidget {
try { try {
eventos.addAll(snapshot.data!); eventos.addAll(snapshot.data!);
eventos.sort((a, b) => a.range1Hour1.compareTo(b.range1Hour1)); eventos.sort((a, b) => a.timeStamp!.compareTo(b.timeStamp!));
} catch (e) { } catch (e) {
print("Error" + e.toString()); print("Error" + e.toString());
} }