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 String 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 doc, String id) { return Service( id: id, professionalId: doc['professional_id'] as String, professionalScored: doc['professional_scored'] as bool? ?? false, userId: doc['user_id'] as String, userScored: doc['user_scored'] as bool? ?? false, address: doc['address'] as String? ?? '', aditionalAddress: doc['aditional_address'] as String? ?? '', latitude: (doc['latitude'] as num?)?.toDouble() ?? 0.0, longitude: (doc['longitude'] as num?)?.toDouble() ?? 0.0, day: doc['day'] as String? ?? '', createdAt: doc['created_at']?.toString() ?? '', description: doc['description'] as String? ?? '', range1Hour1: parseTimeOfDay(doc['range1_hour1'] as String? ?? '0:0'), range1Hour2: parseTimeOfDay(doc['range1_hour2'] as String? ?? '0:0'), status: intToEnumService((doc['status'] as num?)?.toInt() ?? 0), rate: doc['rate'] as String? ?? '', location: intToEnum((doc['location'] as num?)?.toInt() ?? 0), ); } Map 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}:${time.minute}'; return null; } @override String toString() { return 'Service{professionalId: $professionalId, userId: $userId, day: $day, status: $status}'; } }