form pro - sin imagenes
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
export '/src/entities/payment_method_entity.dart';
|
||||
export '/src/entities/professional_entity.dart';
|
||||
export '/src/entities/schedule_entity.dart';
|
||||
export '/src/entities/schedules.dart';
|
||||
@@ -0,0 +1,51 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class PaymentMethodEntity extends Equatable {
|
||||
final bool nequi;
|
||||
final bool datafono;
|
||||
final bool transferencia;
|
||||
|
||||
static const empty = PaymentMethodEntity(
|
||||
nequi: false,
|
||||
datafono: false,
|
||||
transferencia: false,
|
||||
);
|
||||
|
||||
const PaymentMethodEntity({
|
||||
required this.nequi,
|
||||
required this.datafono,
|
||||
required this.transferencia,
|
||||
});
|
||||
|
||||
static PaymentMethodEntity fromDocument(Map<String, dynamic> doc) {
|
||||
return PaymentMethodEntity(
|
||||
nequi: doc['nequi'] as bool,
|
||||
datafono: doc['datafono'] as bool,
|
||||
transferencia: doc['transferencia'] as bool,
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'nequi': nequi,
|
||||
'datafono': datafono,
|
||||
'transferencia': transferencia,
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
nequi,
|
||||
datafono,
|
||||
transferencia,
|
||||
];
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return '''SettingEntity {
|
||||
nequi: $nequi
|
||||
datafono: $datafono
|
||||
transferencia: $transferencia
|
||||
}''';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:professional_repository/professional_repository.dart';
|
||||
|
||||
class ProfessionalEntity extends Equatable {
|
||||
final String id;
|
||||
final String identification;
|
||||
final String address;
|
||||
final String profession;
|
||||
final String rate;
|
||||
final String location;
|
||||
final String identificationPicture;
|
||||
final String certificatePicture;
|
||||
final String latitude;
|
||||
final String longitude;
|
||||
final List<String> specializations;
|
||||
final List<String> specializationsPictures;
|
||||
final Schedules schedules;
|
||||
final PaymentMethodEntity paymentMethods;
|
||||
|
||||
const ProfessionalEntity({
|
||||
required this.id,
|
||||
required this.identification,
|
||||
required this.address,
|
||||
required this.profession,
|
||||
required this.rate,
|
||||
required this.location,
|
||||
required this.identificationPicture,
|
||||
required this.certificatePicture,
|
||||
required this.latitude,
|
||||
required this.longitude,
|
||||
required this.specializations,
|
||||
required this.specializationsPictures,
|
||||
required this.schedules,
|
||||
required this.paymentMethods,
|
||||
});
|
||||
|
||||
static ProfessionalEntity fromDocument(Map<String, dynamic> doc) {
|
||||
return ProfessionalEntity(
|
||||
id: doc['id'] as String,
|
||||
identification: doc['identification'] as String,
|
||||
address: doc['address'] as String,
|
||||
profession: doc['profession'] as String,
|
||||
rate: doc['rate'] as String,
|
||||
location: doc['location'] as String,
|
||||
identificationPicture: doc['identification_picture'] as String,
|
||||
certificatePicture: doc['certificate_picture'] as String,
|
||||
latitude: doc['latitude'] as String,
|
||||
longitude: doc['longitude'] as String,
|
||||
specializations: List<String>.from(doc['specializations']),
|
||||
specializationsPictures:
|
||||
List<String>.from(doc['specializations_pictures']),
|
||||
schedules: Schedules.fromDocument(doc['schedules']),
|
||||
paymentMethods: PaymentMethodEntity.fromDocument(doc['payment_methods']),
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'id': id,
|
||||
'identification': identification,
|
||||
'address': address,
|
||||
'profession': profession,
|
||||
'rate': rate,
|
||||
'location': location,
|
||||
'identification_picture': identificationPicture,
|
||||
'certificate_picture': certificatePicture,
|
||||
'latitude': latitude,
|
||||
'longitude': longitude,
|
||||
'specializations': specializations,
|
||||
'specializations_pictures': specializationsPictures,
|
||||
'schedules': schedules.toJson(),
|
||||
'payment_methods': paymentMethods.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
id,
|
||||
identification,
|
||||
address,
|
||||
profession,
|
||||
rate,
|
||||
location,
|
||||
identificationPicture,
|
||||
certificatePicture,
|
||||
latitude,
|
||||
longitude,
|
||||
specializations,
|
||||
specializationsPictures,
|
||||
schedules,
|
||||
paymentMethods
|
||||
];
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return '''ProfessionalEntity{ {
|
||||
id: $id,
|
||||
identification: $identification,
|
||||
address: $address,
|
||||
profession: $profession,
|
||||
rate: $rate,
|
||||
location: $location,
|
||||
identificationPicture: $identificationPicture,
|
||||
certificatePicture: $certificatePicture,
|
||||
latitude: $latitude,
|
||||
longitude: $longitude,
|
||||
specializations: $specializations,
|
||||
specializationsPictures: $specializationsPictures,
|
||||
schedule: $schedules,
|
||||
paymentMethods: $paymentMethods
|
||||
}''';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
class ScheduleEntity extends Equatable {
|
||||
final bool enabled;
|
||||
final bool continuousDay;
|
||||
final TimeOfDay? range1Hour1;
|
||||
final TimeOfDay? range1Hour2;
|
||||
final TimeOfDay? range2Hour1;
|
||||
final TimeOfDay? range2Hour2;
|
||||
|
||||
const ScheduleEntity({
|
||||
required this.enabled,
|
||||
required this.continuousDay,
|
||||
required this.range1Hour1,
|
||||
required this.range1Hour2,
|
||||
required this.range2Hour1,
|
||||
required this.range2Hour2,
|
||||
});
|
||||
|
||||
static const empty = ScheduleEntity(
|
||||
enabled: false,
|
||||
continuousDay: false,
|
||||
range1Hour1: null,
|
||||
range1Hour2: null,
|
||||
range2Hour1: null,
|
||||
range2Hour2: null,
|
||||
);
|
||||
|
||||
static ScheduleEntity fromDocument(Map<String, dynamic> doc) {
|
||||
return ScheduleEntity(
|
||||
enabled: doc['habilitado'] as bool,
|
||||
continuousDay: doc['continuous_day'] as bool,
|
||||
range1Hour1: _parseTime(doc['range1Hour1']),
|
||||
range1Hour2: _parseTime(doc['range1Hour2']),
|
||||
range2Hour1: _parseTime(doc['range2Hour1']),
|
||||
range2Hour2: _parseTime(doc['range2Hour2']),
|
||||
);
|
||||
}
|
||||
|
||||
static TimeOfDay? _parseTime(String? time) {
|
||||
if (time == null) return null;
|
||||
final components = time.split(' ');
|
||||
final hourMinutes = components[0].split(':');
|
||||
final hour = int.parse(hourMinutes[0]);
|
||||
final minutes = int.parse(hourMinutes[1]);
|
||||
if (components[1] == 'PM' && hour < 12) {
|
||||
return TimeOfDay(hour: hour + 12, minute: minutes);
|
||||
} else if (components[1] == 'AM' && hour == 12) {
|
||||
return TimeOfDay(hour: 0, minute: minutes);
|
||||
}
|
||||
return TimeOfDay(hour: hour, minute: minutes);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'habilitado': enabled,
|
||||
'continuous_day': continuousDay,
|
||||
'range1Hour1': formatTimeOfDay(range1Hour1),
|
||||
'range1Hour2': formatTimeOfDay(range1Hour2),
|
||||
'range2Hour1': formatTimeOfDay(range2Hour1),
|
||||
'range2Hour2': formatTimeOfDay(range2Hour2),
|
||||
};
|
||||
}
|
||||
|
||||
String? formatTimeOfDay(TimeOfDay? time) {
|
||||
if (time != null) {
|
||||
final now = DateTime.now();
|
||||
final dateTime =
|
||||
DateTime(now.year, now.month, now.day, time.hour, time.minute);
|
||||
final format = DateFormat.jm();
|
||||
return format.format(dateTime);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
enabled,
|
||||
continuousDay,
|
||||
range1Hour1,
|
||||
range1Hour2,
|
||||
range2Hour1,
|
||||
range2Hour2,
|
||||
];
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return '''ScheduleEntity {
|
||||
enabled: $enabled,
|
||||
continuousDay: $continuousDay,
|
||||
range1Hour1: $range1Hour1,
|
||||
range1Hour2: $range1Hour2,
|
||||
range2Hour1: $range2Hour1,
|
||||
range2Hour2: $range2Hour2
|
||||
}''';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:professional_repository/src/entities/schedule_entity.dart';
|
||||
|
||||
class Schedules extends Equatable {
|
||||
final ScheduleEntity monday;
|
||||
final ScheduleEntity tuesday;
|
||||
final ScheduleEntity wednesday;
|
||||
final ScheduleEntity thursday;
|
||||
final ScheduleEntity friday;
|
||||
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});
|
||||
|
||||
static const empty = Schedules(
|
||||
monday: ScheduleEntity.empty,
|
||||
tuesday: ScheduleEntity.empty,
|
||||
wednesday: ScheduleEntity.empty,
|
||||
thursday: ScheduleEntity.empty,
|
||||
friday: ScheduleEntity.empty,
|
||||
saturday: ScheduleEntity.empty,
|
||||
sunday: ScheduleEntity.empty,
|
||||
);
|
||||
|
||||
factory Schedules.fromDocument(Map<String, dynamic> doc) {
|
||||
return Schedules(
|
||||
monday: ScheduleEntity.fromDocument(doc['monday']),
|
||||
tuesday: ScheduleEntity.fromDocument(doc['tuesday']),
|
||||
wednesday: ScheduleEntity.fromDocument(doc['wednesday']),
|
||||
thursday: ScheduleEntity.fromDocument(doc['thursday']),
|
||||
friday: ScheduleEntity.fromDocument(doc['friday']),
|
||||
saturday: ScheduleEntity.fromDocument(doc['saturday']),
|
||||
sunday: ScheduleEntity.fromDocument(doc['sunday']),
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'monday': monday.toJson(),
|
||||
'tuesday': tuesday.toJson(),
|
||||
'wednesday': wednesday.toJson(),
|
||||
'thursday': thursday.toJson(),
|
||||
'friday': friday.toJson(),
|
||||
'saturday': saturday.toJson(),
|
||||
'sunday': sunday.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props =>
|
||||
[monday, tuesday, wednesday, thursday, friday, saturday, sunday];
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
import 'package:professional_repository/professional_repository.dart';
|
||||
|
||||
|
||||
class FirebaseProfessionalRepository {
|
||||
|
||||
bool isProModeActive = false;
|
||||
final professionalCollection =
|
||||
FirebaseFirestore.instance.collection('professional_info');
|
||||
final StreamController<bool> _userStreamController =
|
||||
StreamController.broadcast();
|
||||
|
||||
FirebaseProfessionalRepository() {
|
||||
_userStreamController.add(isProModeActive);
|
||||
}
|
||||
|
||||
Stream<bool> sreamIsProModeActive() {
|
||||
return _userStreamController.stream;
|
||||
}
|
||||
|
||||
switchProMode() async {
|
||||
isProModeActive = !isProModeActive;
|
||||
_userStreamController.add(isProModeActive);
|
||||
}
|
||||
|
||||
Future<void> saveProfessionalInfo(ProfessionalEntity entity) async {
|
||||
await professionalCollection.doc(entity.id).set(entity.toJson());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user