servicios

This commit is contained in:
Juan Felipe Duarte
2023-04-27 15:56:20 -05:00
parent 69168917f2
commit b3d31d3a8d
8 changed files with 297 additions and 115 deletions
+49 -40
View File
@@ -11,7 +11,8 @@ import 'package:prosappco/src/screens/professional_info.dart';
import '../models/scores_model.dart';
class ProfessionalScreen extends StatefulWidget {
const ProfessionalScreen({super.key});
final String profession;
const ProfessionalScreen({super.key, required this.profession});
@override
State<ProfessionalScreen> createState() => _ProfessionalScreenState();
@@ -24,6 +25,7 @@ final CollectionReference usersCollection =
var _photo = '...';
class Professional {
final String id;
final Reference professionalRef;
final String name;
final String professionName;
@@ -33,6 +35,7 @@ class Professional {
final ScoresModel scores;
Professional({
required this.id,
required this.professionalRef,
required this.name,
required this.professionName,
@@ -78,6 +81,7 @@ class Professional {
.toList();
Professional professional = Professional(
id: user.id,
name: data['name'],
professionName: data['profesion'],
cityName: data['city'],
@@ -95,44 +99,6 @@ class Professional {
}
}
Future<List<Professional>> getProfessionals() async {
List<Professional> professionals = [];
try {
QuerySnapshot users = await usersCollection.get();
for (DocumentSnapshot user in users.docs) {
// Acceder a los datos de cada usuario
Map<String, dynamic> data = user.data() as Map<String, dynamic>;
// Crear un objeto Professional a partir de los datos del usuario
_photo = await AuthenticationRepository.instance.getPhoto(user.id);
if (data['estado'] == 'activo') {
List<String> especializaciones;
especializaciones = (data['especializaciones'] as List<dynamic>)
.map((e) => e.toString())
.toList();
Professional professional = Professional(
name: data['name'],
professionName: data['profesion'],
cityName: data['city'],
professionalRef: storage.ref().child(_photo),
professionalEspecializado: especializaciones,
ubicacion: data['ubicacion'] ?? '',
scores: await ScoresModel.scoreTo(user.id, true, true),
);
professionals.add(professional);
}
}
} catch (e) {
print('Error al obtener profesionales: $e');
}
return professionals;
}
class _ProfessionalScreenState extends State<ProfessionalScreen> {
List<Professional>? filteredProfessionals;
@@ -141,9 +107,52 @@ class _ProfessionalScreenState extends State<ProfessionalScreen> {
final uid = AuthenticationRepository.instance.getCurrentUserUid();
List<Professional>? _professionals;
Future<List<Professional>> getProfessionals() async {
List<Professional> professionals = [];
try {
QuerySnapshot users = await usersCollection.get();
for (DocumentSnapshot user in users.docs) {
// Acceder a los datos de cada usuario
Map<String, dynamic> data = user.data() as Map<String, dynamic>;
// Crear un objeto Professional a partir de los datos del usuario
_photo = await AuthenticationRepository.instance.getPhoto(user.id);
if (data['estado'] == 'activo') {
List<String> especializaciones;
especializaciones = (data['especializaciones'] as List<dynamic>)
.map((e) => e.toString())
.toList();
if (widget.profession == data['profesion'] ||
widget.profession == '') {
Professional professional = Professional(
id: user.id,
name: data['name'],
professionName: data['profesion'],
cityName: data['city'],
professionalRef: storage.ref().child(_photo),
professionalEspecializado: especializaciones,
ubicacion: data['ubicacion'] ?? '',
scores: await ScoresModel.scoreTo(user.id, true, true),
);
professionals.add(professional);
}
}
}
} catch (e) {
print('Error al obtener profesionales: $e');
}
return professionals;
}
@override
void initState() {
super.initState();
searchController.addListener(() {
setState(() {
if (_professionals != null) {
@@ -257,7 +266,7 @@ class _ProfessionalScreenState extends State<ProfessionalScreen> {
),
),
onTap: () {
// Navigator.pop(context, professionals[index]);
Navigator.pop(context, professionals[index]);
},
);
},