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
@@ -53,14 +53,13 @@ class ProfessionalEntity extends Equatable {
latitude: double.parse(doc['latitude'].toString()),
longitude: double.parse(doc['longitude'].toString()),
specializations: List<String>.from(doc['specializations']),
specializationsPictures: List<String>.from(doc['specializations_pictures']),
specializationsPictures:
List<String>.from(doc['specializations_pictures']),
schedules: Schedules.fromDocument(doc['schedules']),
paymentMethods: PaymentMethodEntity.fromDocument(doc['payment_methods']),
);
}
// copy func
ProfessionalEntity copyWith({
String? id,
String? identification,
@@ -10,14 +10,15 @@ class Schedules extends Equatable {
final ScheduleEntity saturday;
final ScheduleEntity sunday;
const Schedules(
{required this.monday,
required this.tuesday,
required this.wednesday,
required this.thursday,
required this.friday,
required this.saturday,
required this.sunday});
const Schedules({
required this.monday,
required this.tuesday,
required this.wednesday,
required this.thursday,
required this.friday,
required this.saturday,
required this.sunday,
});
static const empty = Schedules(
monday: ScheduleEntity.empty,
@@ -8,17 +8,14 @@ import 'package:professional_repository/professional_repository.dart';
import 'package:firebase_storage/firebase_storage.dart';
class FirebaseProfessionalRepository {
final professionalCollection =
FirebaseFirestore.instance.collection('professional_info');
final professionalCollection = FirebaseFirestore.instance.collection('professional_info');
ProfessionalEntity? _proInfo;
final StreamController<ProfessionalEntity?> _proInfoBroadcast =
StreamController<ProfessionalEntity?>.broadcast();
final StreamController<ProfessionalEntity?> _proInfoBroadcast = StreamController<ProfessionalEntity?>.broadcast();
bool isProModeActive = false;
final StreamController<bool> _isProModeActiveBroadcast =
StreamController.broadcast();
final StreamController<bool> _isProModeActiveBroadcast = StreamController.broadcast();
FirebaseProfessionalRepository() {
_isProModeActiveBroadcast.add(isProModeActive);
@@ -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());
}
}
+266
View File
@@ -0,0 +1,266 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
_flutterfire_internals:
dependency: transitive
description:
name: _flutterfire_internals
sha256: "4eec93681221723a686ad580c2e7d960e1017cf1a4e0a263c2573c2c6b0bf5cd"
url: "https://pub.dev"
source: hosted
version: "1.3.25"
async:
dependency: transitive
description:
name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.dev"
source: hosted
version: "2.11.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
characters:
dependency: transitive
description:
name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
clock:
dependency: transitive
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
url: "https://pub.dev"
source: hosted
version: "1.1.1"
cloud_firestore:
dependency: "direct main"
description:
name: cloud_firestore
sha256: "31cfa4d65d6e9ea837234fffe121304034c30c9214c06207b4a35867e3757900"
url: "https://pub.dev"
source: hosted
version: "4.15.8"
cloud_firestore_platform_interface:
dependency: transitive
description:
name: cloud_firestore_platform_interface
sha256: a0097a26569b015faf8142e159e855241609ea9a1738b5fd1c40bfe8411b41a0
url: "https://pub.dev"
source: hosted
version: "6.1.9"
cloud_firestore_web:
dependency: transitive
description:
name: cloud_firestore_web
sha256: ed680ece29a5750985119c09cdc276b460c3a2fa80e8c12f9b7241f6b4a7ca16
url: "https://pub.dev"
source: hosted
version: "3.10.8"
collection:
dependency: transitive
description:
name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
version: "1.18.0"
equatable:
dependency: "direct main"
description:
name: equatable
sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2
url: "https://pub.dev"
source: hosted
version: "2.0.5"
fake_async:
dependency: transitive
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
firebase_core:
dependency: "direct main"
description:
name: firebase_core
sha256: "53316975310c8af75a96e365f9fccb67d1c544ef0acdbf0d88bbe30eedd1c4f9"
url: "https://pub.dev"
source: hosted
version: "2.27.0"
firebase_core_platform_interface:
dependency: transitive
description:
name: firebase_core_platform_interface
sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63
url: "https://pub.dev"
source: hosted
version: "5.0.0"
firebase_core_web:
dependency: transitive
description:
name: firebase_core_web
sha256: c8e1d59385eee98de63c92f961d2a7062c5d9a65e7f45bdc7f1b0b205aab2492
url: "https://pub.dev"
source: hosted
version: "2.11.5"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
url: "https://pub.dev"
source: hosted
version: "2.0.3"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
js:
dependency: transitive
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
url: "https://pub.dev"
source: hosted
version: "0.6.7"
lints:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
matcher:
dependency: transitive
description:
name: matcher
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
url: "https://pub.dev"
source: hosted
version: "0.12.16"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
url: "https://pub.dev"
source: hosted
version: "0.5.0"
meta:
dependency: transitive
description:
name: meta
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
url: "https://pub.dev"
source: hosted
version: "1.10.0"
path:
dependency: transitive
description:
name: path
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
url: "https://pub.dev"
source: hosted
version: "1.8.3"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
url: "https://pub.dev"
source: hosted
version: "2.1.8"
sky_engine:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
source_span:
dependency: transitive
description:
name: source_span
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
version: "1.11.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
version: "2.1.2"
string_scanner:
dependency: transitive
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.dev"
source: hosted
version: "1.2.1"
test_api:
dependency: transitive
description:
name: test_api
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
version: "0.6.1"
vector_math:
dependency: transitive
description:
name: vector_math
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
web:
dependency: transitive
description:
name: web
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev"
source: hosted
version: "0.3.0"
sdks:
dart: ">=3.2.0 <4.0.0"
flutter: ">=3.3.0"
+25
View File
@@ -0,0 +1,25 @@
name: service_repository
description: Dart package for the Service Repository.
publish_to: 'none'
version: 1.0.11+11
environment:
sdk: ">=2.19.3 <3.0.0"
dependencies:
flutter:
sdk: flutter
equatable: ^2.0.5
# Firebase
cloud_firestore: ^4.15.4
firebase_core: ^2.25.4
dev_dependencies:
flutter_lints: ^2.0.0
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
@@ -395,8 +395,6 @@ class FirebaseUserRepository implements UserRepository {
.where('professional_state', isEqualTo: ProState.active.index)
.get();
log('xd -- ${querySnapshot.docs}');
return querySnapshot.docs
.map((e) => MyUser.fromEntity(MyUserEntity.fromDocument(e.data())))
.toList();