push ordenar por timestamp
This commit is contained in:
+1
-1
@@ -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) {
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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'],
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user