horario del profesional

This commit is contained in:
Felipe
2024-03-27 16:42:50 -05:00
parent ac16be0406
commit d7fe33cf30
26 changed files with 927 additions and 163 deletions
@@ -0,0 +1,5 @@
library service_repository;
export 'src/entities/entities.dart';
export 'src/models/models.dart';
export 'src/repositories/firebase_service_repository.dart';
@@ -0,0 +1 @@
export '/src/entities/service_entity.dart';
@@ -0,0 +1,126 @@
import 'package:equatable/equatable.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:service_repository/service_repository.dart';
import 'package:flutter/material.dart';
class ServiceEntity extends Equatable {
final String professionalId;
final bool professionalScored;
final String userId;
final bool userScored;
final String address;
final String aditionalAddress;
final double latitude;
final double longitude;
final String day;
final Timestamp createdAt;
final String description;
final TimeOfDay range1Hour1;
final TimeOfDay range1Hour2;
final String rate;
final ServiceStatus status;
final LocationPreferences location;
const ServiceEntity({
required this.professionalId,
required this.professionalScored,
required this.userId,
required this.userScored,
required this.address,
required this.aditionalAddress,
required this.latitude,
required this.longitude,
required this.day,
required this.createdAt,
required this.description,
required this.range1Hour1,
required this.range1Hour2,
required this.rate,
required this.status,
required this.location,
});
static ServiceEntity fromDocument(Map<String, dynamic> doc) {
return ServiceEntity(
professionalId: doc['professional_id'] as String,
professionalScored: doc['professional_scored'] as bool,
userId: doc['user_id'] as String,
userScored: doc['user_scored'] as bool,
address: doc['address'] as String,
aditionalAddress: doc['aditional_address'] as String,
latitude: doc['latitude'] as double,
longitude: doc['longitude'] as double,
day: doc['day'] as String,
createdAt: doc['created_at'] as Timestamp,
description: doc['description'] as String,
range1Hour1: doc['range1_hour1'] as TimeOfDay,
range1Hour2: doc['range1_hour2'] as TimeOfDay,
status: intToEnumService(doc['status'] as int),
rate: doc['rate'] as String,
location: intToEnum(doc['location'] as int),
);
}
Map<String, dynamic> toDocument() {
return {
'professional_id': professionalId,
'professional_scored': professionalScored,
'user_id': userId,
'user_scored': userScored,
'address': address,
'aditional_address': aditionalAddress,
'latitude': latitude,
'longitude': longitude,
'day': day,
'created_at': createdAt,
'description': description,
'range1_hour1': range1Hour1,
'range1_hour2': range1Hour2,
'rate': rate,
'status': enumToIntService(status),
'location': enumToInt(location),
};
}
@override
List<Object> get props => [
professionalId,
professionalScored,
userId,
userScored,
address,
aditionalAddress,
latitude,
longitude,
day,
createdAt,
description,
range1Hour1,
range1Hour2,
rate,
status,
location,
];
@override
String toString() {
return '''ServiceEntity{{
professionalId: $professionalId,
professionalScored: $professionalScored,
userId: $userId,
userScored: $userScored,
address: $address,
aditionalAddress: $aditionalAddress,
latitude: $latitude,
longitude: $longitude,
day: $day,
createdAt: $createdAt,
description: $description,
range1Hour1: $range1Hour1,
range1Hour2: $range1Hour2,
rate: $rate,
status: $status,
location: $location
}}''';
}
}
@@ -0,0 +1,11 @@
export 'location_preferences.dart';
enum LocationPreferences { office, delivery }
int enumToInt(LocationPreferences state) {
return state.index;
}
LocationPreferences intToEnum(int value) {
return LocationPreferences.values[value];
}
@@ -0,0 +1,2 @@
export 'location_preferences.dart';
export 'service_status.dart';
@@ -0,0 +1,11 @@
export 'service_status.dart';
enum ServiceStatus { pending, active, cancelled, completed }
int enumToIntService(ServiceStatus state) {
return state.index;
}
ServiceStatus intToEnumService(int value) {
return ServiceStatus.values[value];
}
@@ -0,0 +1,10 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:service_repository/service_repository.dart';
class FirebaseServiceRepository {
final serviceCollection = FirebaseFirestore.instance.collection('services');
Future<void> createService(ServiceEntity entity) async {
await serviceCollection.doc().set(entity.toDocument());
}
}