import 'package:prosapp_web_app/models/location_preferences.dart'; import 'package:prosapp_web_app/models/payment_method_entity.dart'; import 'package:prosapp_web_app/models/schedules.dart'; class Profesional { final String id; final String identification; final String address; final String aditionalAddress; final String profession; final bool ratePreferences; final String rate; final LocationPreferences locationPreferences; final String bannerPicture; final String identificationPicture; final String certificatePicture; final double latitude; final double longitude; final List specializations; final List specializationsPictures; final Schedules schedules; final PaymentMethodEntity paymentMethods; const Profesional({ required this.id, required this.identification, required this.address, required this.aditionalAddress, required this.profession, required this.ratePreferences, required this.rate, required this.locationPreferences, required this.bannerPicture, 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 Profesional fromDocument(Map doc) { return Profesional( id: doc['id'] as String, identification: doc['identification'] as String, address: doc['address'] as String, aditionalAddress: doc['aditional_address'] as String, profession: doc['profession'] as String, ratePreferences: doc['rate_preferences'] as bool, rate: doc['rate'] as String, locationPreferences: intToEnum(doc['location_preferences'] as int), bannerPicture: doc['banner_picture'] as String, identificationPicture: doc['identification_picture'] as String, certificatePicture: doc['certificate_picture'] as String, latitude: double.parse(doc['latitude'].toString()), longitude: double.parse(doc['longitude'].toString()), specializations: List.from(doc['specializations']), specializationsPictures: List.from(doc['specializations_pictures']), schedules: Schedules.fromDocument(doc['schedules']), paymentMethods: PaymentMethodEntity.fromDocument(doc['payment_methods']), ); } Profesional copyWith({ String? id, String? identification, String? address, String? aditionalAddress, String? profession, bool ratePreferences = false, String? rate, LocationPreferences? locationPreferences, String? bannerPicture, String? identificationPicture, String? certificatePicture, double? latitude, double? longitude, List? specializations, List? specializationsPictures, Schedules? schedules, PaymentMethodEntity? paymentMethods, }) { return Profesional( id: id ?? this.id, identification: identification ?? this.identification, address: address ?? this.address, aditionalAddress: aditionalAddress ?? this.aditionalAddress, profession: profession ?? this.profession, ratePreferences: ratePreferences, rate: rate ?? this.rate, locationPreferences: locationPreferences ?? this.locationPreferences, bannerPicture: bannerPicture ?? this.bannerPicture, identificationPicture: identificationPicture ?? this.identificationPicture, certificatePicture: certificatePicture ?? this.certificatePicture, latitude: latitude ?? this.latitude, longitude: longitude ?? this.longitude, specializations: specializations ?? this.specializations, specializationsPictures: specializationsPictures ?? this.specializationsPictures, schedules: schedules ?? this.schedules, paymentMethods: paymentMethods ?? this.paymentMethods, ); } Map toDocument() { return { 'id': id, 'identification': identification, 'address': address, 'aditional_address': aditionalAddress, 'profession': profession, 'rate_preferences': ratePreferences, 'rate': rate, 'location_preferences': enumToInt(locationPreferences), 'banner_picture': bannerPicture, 'identification_picture': identificationPicture, 'certificate_picture': certificatePicture, 'latitude': latitude, 'longitude': longitude, 'specializations': specializations, 'specializations_pictures': specializationsPictures, 'schedules': schedules.toJson(), 'payment_methods': paymentMethods.toDocument(), }; } @override String toString() { return '''Profesional{ { id: $id, identification: $identification, address: $address, aditional_address: $aditionalAddress, profession: $profession, rate_preferences: $ratePreferences, rate: $rate, location_preferences: $locationPreferences, bannerPicture: $bannerPicture, identificationPicture: $identificationPicture, certificatePicture: $certificatePicture, latitude: $latitude, longitude: $longitude, specializations: $specializations, specializationsPictures: $specializationsPictures, schedule: $schedules, paymentMethods: $paymentMethods }'''; } }