127 lines
3.5 KiB
Dart
127 lines
3.5 KiB
Dart
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
|
|
}}''';
|
|
}
|
|
}
|