Files
prosappweb/lib/models/service.dart
T
Lizandro GuarnizoandClaude Sonnet 4.6 15175c1b91 replace: swap prosappweb content for prosapp_web_app (more complete version)
prosapp_web_app has chat, dashboard, calendar, support, 13 providers and
Fluro URL routing. Keep Dockerfile + nginx.conf from previous prosappweb.
Upgrade google_fonts 6.2.1 → 8.1.0 (Dart 3.12 compat fix).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 15:26:32 -05:00

117 lines
3.4 KiB
Dart

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:prosapp_web_app/models/service_location_preferences.dart';
import 'package:prosapp_web_app/models/service_status.dart';
class Service {
final String? id;
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 ServiceLocationPreferences location;
Service({
required this.id,
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 Service fromJson(Map<String, dynamic> doc, String id) {
return Service(
id: id,
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: parseTimeOfDay(doc['range1_hour1'] as String),
range1Hour2: parseTimeOfDay(doc['range1_hour2'] as String),
status: intToEnumService(doc['status'] as int),
rate: doc['rate'] as String,
location: intToEnum(doc['location'] as int),
);
}
static Service fromDocument(DocumentSnapshot<Map<String, dynamic>> doc) {
return fromJson(doc.data()!, doc.id);
}
Map<String, dynamic> toDocument() {
return {
'id': id,
'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': formatTimeOfDay(range1Hour1),
'range1_hour2': formatTimeOfDay(range1Hour2),
'rate': rate,
'status': enumToIntService(status),
'location': enumToInt(location),
};
}
static TimeOfDay parseTimeOfDay(String timeString) {
final parts = timeString.split(':');
return TimeOfDay(hour: int.parse(parts[0]), minute: int.parse(parts[1]));
}
String? formatTimeOfDay(TimeOfDay? time) {
if (time != null) {
return "${time.hour.toString()}:${time.minute.toString()}";
}
return null;
}
@override
String toString() {
return '''Service {
professionalId: $professionalId,
userId: $userId,
day: $day,
createdAt: $createdAt,
status: $status,
location: $location
}''';
}
}