feat: migrate prosapp_web_app from Firebase to NestJS API
- Replace Firebase Auth with JWT stored in SharedPreferences - Replace Firestore with REST API calls via new ApiService - Replace Firebase Storage with POST /storage/upload - Remove firebase_auth, firebase_core, cloud_firestore, firebase_storage, firebase_messaging, google_sign_in deps - Add api_service.dart as central HTTP client Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
1c20d0c0cd
commit
b95e0630de
+68
-106
@@ -1,6 +1,6 @@
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
import 'package:prosappco/src/authentication/authentication_repository.dart';
|
||||
import 'package:prosappco/src/models/scores_model.dart';
|
||||
import 'package:prosappco/src/services/api_service.dart';
|
||||
|
||||
final uid = AuthenticationRepository.instance.getCurrentUserUid();
|
||||
|
||||
@@ -22,10 +22,7 @@ class EventoService {
|
||||
bool userScored,
|
||||
) async {
|
||||
try {
|
||||
DateTime ahora = DateTime.now();
|
||||
|
||||
final eventId =
|
||||
await FirebaseFirestore.instance.collection('services').add({
|
||||
final Map<String, dynamic> result = await ApiService.instance.post('/services', {
|
||||
'user_id': uid,
|
||||
'title': title,
|
||||
'description': description,
|
||||
@@ -38,41 +35,27 @@ class EventoService {
|
||||
'latitude': latitude,
|
||||
'longitude': longitude,
|
||||
'status': status,
|
||||
'Timestamp': ahora,
|
||||
'tarifa': tarifa ?? 0,
|
||||
'professional_scored': professionalScored,
|
||||
'user_scored': userScored,
|
||||
}).then((value) {
|
||||
FirebaseFirestore.instance.collection('users').doc(uid).update({
|
||||
'services': FieldValue.arrayUnion([value.id])
|
||||
});
|
||||
|
||||
return value.id;
|
||||
});
|
||||
|
||||
return eventId;
|
||||
return result['id']?.toString();
|
||||
} catch (e) {
|
||||
print('Evento $e');
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<Event>> getByProId(String day) async {
|
||||
try {
|
||||
var snapshot = await FirebaseFirestore.instance
|
||||
.collection('services')
|
||||
// .where('professional_id', isEqualTo: uid)
|
||||
.where('day', isEqualTo: day.toString())
|
||||
.where('status', isEqualTo: 'aprobado')
|
||||
// .orderBy('Timestamp', descending: true)
|
||||
.get();
|
||||
|
||||
final List<dynamic> data = await ApiService.instance
|
||||
.get('/services?day=$day&status=aprobado');
|
||||
List<Event> eventos = [];
|
||||
for (var element in snapshot.docs) {
|
||||
final event = Event.fromJson(element.data());
|
||||
event.scoresModel = await ScoresModel.scoreTo(event.userId, false, false);
|
||||
event.id = element.id;
|
||||
for (var element in data) {
|
||||
final event = Event.fromJson(element as Map<String, dynamic>);
|
||||
event.scoresModel =
|
||||
await ScoresModel.scoreTo(event.userId, false, false);
|
||||
eventos.add(event);
|
||||
}
|
||||
return eventos;
|
||||
@@ -84,42 +67,36 @@ Future<List<Event>> getByProId(String day) async {
|
||||
|
||||
Future<List<Event>> getByProIdAll(String state1, String state2) async {
|
||||
try {
|
||||
var snapshot = await FirebaseFirestore.instance
|
||||
.collection('services')
|
||||
.where('professional_id', isEqualTo: uid)
|
||||
.where('status', whereIn: [state1, state2]).get();
|
||||
|
||||
final List<dynamic> data = await ApiService.instance
|
||||
.get('/services?professionalId=$uid&status=$state1,$state2');
|
||||
List<Event> eventos = [];
|
||||
for (var element in snapshot.docs) {
|
||||
final event = Event.fromJson(element.data());
|
||||
event.scoresModel = await ScoresModel.scoreTo(event.userId, false, false);
|
||||
event.id = element.id;
|
||||
for (var element in data) {
|
||||
final event = Event.fromJson(element as Map<String, dynamic>);
|
||||
event.scoresModel =
|
||||
await ScoresModel.scoreTo(event.userId, false, false);
|
||||
eventos.add(event);
|
||||
}
|
||||
return eventos;
|
||||
} catch (e) {
|
||||
print('Error getByProId $e');
|
||||
print('Error getByProIdAll $e');
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<Event>> getByUserIdAll(String state1, String state2) async {
|
||||
try {
|
||||
var snapshot = await FirebaseFirestore.instance
|
||||
.collection('services')
|
||||
.where('user_id', isEqualTo: uid)
|
||||
.where('status', whereIn: [state1, state2]).get();
|
||||
|
||||
final List<dynamic> data = await ApiService.instance
|
||||
.get('/services?userId=$uid&status=$state1,$state2');
|
||||
List<Event> eventos = [];
|
||||
for (var element in snapshot.docs) {
|
||||
final event = Event.fromJson(element.data());
|
||||
event.scoresModel = await ScoresModel.scoreTo(event.userId, false, false);
|
||||
event.id = element.id;
|
||||
for (var element in data) {
|
||||
final event = Event.fromJson(element as Map<String, dynamic>);
|
||||
event.scoresModel =
|
||||
await ScoresModel.scoreTo(event.userId, false, false);
|
||||
eventos.add(event);
|
||||
}
|
||||
return eventos;
|
||||
} catch (e) {
|
||||
print('Error getByUserId $e');
|
||||
print('Error getByUserIdAll $e');
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -142,7 +119,7 @@ class Event {
|
||||
int? tarifa;
|
||||
bool professionalScored;
|
||||
bool userScored;
|
||||
Timestamp? timeStamp;
|
||||
DateTime? timeStamp;
|
||||
|
||||
Event({
|
||||
this.id,
|
||||
@@ -165,94 +142,79 @@ class Event {
|
||||
});
|
||||
|
||||
factory Event.fromJson(Map<String, dynamic> json) {
|
||||
DateTime? ts;
|
||||
final raw = json['Timestamp'] ?? json['created_at'];
|
||||
if (raw is String) ts = DateTime.tryParse(raw);
|
||||
|
||||
return Event(
|
||||
id: json['id'] ?? '',
|
||||
title: json['title'],
|
||||
id: json['id']?.toString() ?? '',
|
||||
title: json['title'] ?? '',
|
||||
description: json['description'],
|
||||
day: json['day'],
|
||||
range1Hour1: json['range1Hour1'],
|
||||
day: json['day'] ?? '',
|
||||
range1Hour1: json['range1Hour1'] ?? '',
|
||||
range1Hour2: json['range1Hour2'],
|
||||
userId: json['user_id'],
|
||||
professionalId: json['professional_id'],
|
||||
userId: json['user_id'] ?? '',
|
||||
professionalId: json['professional_id'] ?? '',
|
||||
ubicacion: json['ubicacion'] ?? '',
|
||||
address: json['address'] ?? '',
|
||||
longitud: json['longitude'] ?? 0,
|
||||
latitud: json['latitude'] ?? 0,
|
||||
status: json['status'],
|
||||
timeStamp: json['Timestamp'] ?? 0,
|
||||
tarifa: json['tarifas'] ?? 0,
|
||||
professionalScored: json['professional_scored'],
|
||||
userScored: json['user_scored'],
|
||||
longitud: (json['longitude'] ?? 0).toDouble(),
|
||||
latitud: (json['latitude'] ?? 0).toDouble(),
|
||||
status: json['status'] ?? 'pendiente',
|
||||
timeStamp: ts,
|
||||
tarifa: json['tarifa'] ?? json['tarifas'] ?? 0,
|
||||
professionalScored: json['professional_scored'] ?? false,
|
||||
userScored: json['user_scored'] ?? false,
|
||||
);
|
||||
}
|
||||
|
||||
static Future<Event> getEventById(String uid) async {
|
||||
static Future<Event> getEventById(String eventId) async {
|
||||
try {
|
||||
final snapshot = await FirebaseFirestore.instance
|
||||
.collection('services')
|
||||
.doc(uid)
|
||||
.get();
|
||||
final Map<String, dynamic>? data = snapshot.data();
|
||||
return Event.fromJson(data!);
|
||||
final Map<String, dynamic> data =
|
||||
await ApiService.instance.get('/services/$eventId');
|
||||
return Event.fromJson(data);
|
||||
} catch (e) {
|
||||
print('Error getting user: $e');
|
||||
print('Error getting event: $e');
|
||||
return Event(
|
||||
title: '', day: '', range1Hour1: '', userId: '', professionalId: '');
|
||||
}
|
||||
}
|
||||
|
||||
static Future<List<Event>> getEventsAllById(String uid) async {
|
||||
static Future<List<Event>> getEventsAllById(String proId) async {
|
||||
try {
|
||||
var snapshot = await FirebaseFirestore.instance
|
||||
.collection('services')
|
||||
.where('professional_id', isEqualTo: uid)
|
||||
.get();
|
||||
|
||||
List<Event> eventos = [];
|
||||
for (var element in snapshot.docs) {
|
||||
eventos.add(Event.fromJson(element.data()));
|
||||
}
|
||||
return eventos;
|
||||
final List<dynamic> data =
|
||||
await ApiService.instance.get('/services?professionalId=$proId');
|
||||
return data
|
||||
.map((e) => Event.fromJson(e as Map<String, dynamic>))
|
||||
.toList();
|
||||
} catch (e) {
|
||||
print('Error getByProId $e');
|
||||
print('Error getEventsAllById $e');
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
static Future<List<Event>> getEventsAllByIdAndStatus(String uid) async {
|
||||
static Future<List<Event>> getEventsAllByIdAndStatus(String proId) async {
|
||||
try {
|
||||
var snapshot = await FirebaseFirestore.instance
|
||||
.collection('services')
|
||||
.where('professional_id', isEqualTo: uid)
|
||||
.where('status', whereIn: ['aprobado', 'pendiente']).get();
|
||||
|
||||
List<Event> eventos = [];
|
||||
for (var element in snapshot.docs) {
|
||||
eventos.add(Event.fromJson(element.data()));
|
||||
}
|
||||
return eventos;
|
||||
final List<dynamic> data = await ApiService.instance
|
||||
.get('/services?professionalId=$proId&status=aprobado,pendiente');
|
||||
return data
|
||||
.map((e) => Event.fromJson(e as Map<String, dynamic>))
|
||||
.toList();
|
||||
} catch (e) {
|
||||
print('Error getByProId $e');
|
||||
print('Error getEventsAllByIdAndStatus $e');
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
static Future<List<Event>> getEventsAllByIdStatus(
|
||||
String uid, String state) async {
|
||||
String proId, String state) async {
|
||||
try {
|
||||
var snapshot = await FirebaseFirestore.instance
|
||||
.collection('services')
|
||||
.where('professional_id', isEqualTo: uid)
|
||||
.where('status', isEqualTo: state)
|
||||
.get();
|
||||
|
||||
List<Event> eventos = [];
|
||||
for (var element in snapshot.docs) {
|
||||
eventos.add(Event.fromJson(element.data()));
|
||||
}
|
||||
return eventos;
|
||||
final List<dynamic> data = await ApiService.instance
|
||||
.get('/services?professionalId=$proId&status=$state');
|
||||
return data
|
||||
.map((e) => Event.fromJson(e as Map<String, dynamic>))
|
||||
.toList();
|
||||
} catch (e) {
|
||||
print('Error getByProId $e');
|
||||
print('Error getEventsAllByIdStatus $e');
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user