import 'package:eatvio_app/features/consultant/become_consultant/models/consultation_request_model.dart'; import 'package:eatvio_app/features/my_finance/models/card_model.dart'; import 'package:eatvio_app/features/profile/models/badge_model.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; part 'profile_model.freezed.dart'; part 'profile_model.g.dart'; @freezed abstract class ProfileModel with _$ProfileModel { const factory ProfileModel({ @JsonKey(name: "id") required int id, @JsonKey(name: "name") required String name, @JsonKey(name: "email") required String email, @JsonKey(name: "rating_place") int? ratingPlace, @JsonKey(name: "email_verified_at") DateTime? emailVerifiedAt, @JsonKey(name: "phone_confirmation_state") required String phoneConfirmationState, @JsonKey(name: "created_at") DateTime? createdAt, @JsonKey(name: "updated_at") DateTime? updatedAt, @JsonKey(name: "is_public_profile", fromJson: parseBool) required bool isPublicProfile, @JsonKey(name: "is_blocked_by_me", fromJson: parseBool) required bool isBlockedByMe, @JsonKey(name: "is_blocked_by_author", fromJson: parseBool) required bool isBlockedByAuthor, @JsonKey(name: "is_blocked_by_user", fromJson: parseBool, defaultValue: false) required bool isBlockedByUser, @JsonKey(name: 'is_entity_subscribed_by_me') required bool isEntitySubscribedByMe, @JsonKey(name: "slug") required String slug, @JsonKey(name: "profile_photo_url") required String profilePhotoUrl, @JsonKey(name: "roles") required List roles, @JsonKey(name: "badges") required List badges, @JsonKey(name: "subscriptions") required List subscriptions, @JsonKey(name: "subscribers") required List subscribers, @JsonKey(name: "education_resource") EducationModel? educationResource, @JsonKey(name: "cert_photos") List? diplomasAndCertificates, }) = _ProfileModel; factory ProfileModel.fromJson(Map json) => _$ProfileModelFromJson(json); } @freezed abstract class DiplomasAndCertificatesModel with _$DiplomasAndCertificatesModel { const factory DiplomasAndCertificatesModel({ required int id, required String path, }) = _DiplomasAndCertificatesModel; factory DiplomasAndCertificatesModel.fromJson(Map json) => _$DiplomasAndCertificatesModelFromJson(json); } @freezed abstract class EducationModel with _$EducationModel { const factory EducationModel({ @JsonKey(name: "has_medical_education") int? hasMedicalEducation, @JsonKey(name: "completed_courses") List>? completedCourses, @JsonKey(name: "vk_link") String? vkLink, @JsonKey(name: "insta_link") String? instaLink, @JsonKey(name: "fb_link") String? fbLink, @JsonKey(name: "tg_link") String? tgLink, @JsonKey(name: "personal_site_link") String? personalSiteLink, @JsonKey(name: "request_state") required ModerationStatus requestState, }) = _EducationModel; factory EducationModel.fromJson(Map json) => _$EducationModelFromJson(json); } @freezed abstract class CompletedCoursesModel with _$CompletedCoursesModel { const factory CompletedCoursesModel({ required String date, required String title, }) = _CompletedCoursesModel; factory CompletedCoursesModel.fromJson(Map json) => _$CompletedCoursesModelFromJson(json); } @freezed abstract class ProfileDetailsModel with _$ProfileDetailsModel { const factory ProfileDetailsModel({ @JsonKey(name: "first_name") required String firstName, @JsonKey(name: "last_name") required String lastName, @JsonKey(name: "birthdate") required String birthdate, @JsonKey(name: "gender") required String gender, @JsonKey(name: "country") required String country, @JsonKey(name: "city") required String city, @JsonKey(name: "lang") required String lang, @JsonKey(name: "weight") required double weight, @JsonKey(name: "height") required int height, @JsonKey(name: "chest_circumference") required int chestCircumference, @JsonKey(name: "waist_circumference") required int waistCircumference, @JsonKey(name: "hip_circumference") required int hipCircumference, @JsonKey(name: "blood_pressure_up") required int bloodPressureUp, @JsonKey(name: "blood_pressure_down") required int bloodPressureDown, @JsonKey(name: "has_hypo") required bool hasHypo, @JsonKey(name: "has_hyper") required bool hasHyper, @JsonKey(name: "about_alergy") required String aboutAlergy, @JsonKey(name: "about_taking_pils") required String aboutTakingPils, @JsonKey(name: "about_sport_hobbies") required String aboutSportHobbies, @JsonKey(name: "favorite_foods") required String favoriteFoods, @JsonKey(name: "unfavorite_foods") required String unfavoriteFoods, @JsonKey(name: "additional_info") required String additionalInfo, @JsonKey(name: "created_at") DateTime? createdAt, @JsonKey(name: "updated_at") DateTime? updatedAt, @JsonKey(name: "is_mood_fillable") required bool isMoodFillable, @JsonKey(name: "is_bedtime_fillable") required bool isBedtimeFillable, @JsonKey(name: "activity_coefficient") required double activityCoefficient, }) = _ProfileDetailsModel; factory ProfileDetailsModel.fromJson(Map json) => _$ProfileDetailsModelFromJson(json); } @freezed abstract class ProfilePreviewModel with _$ProfilePreviewModel { const factory ProfilePreviewModel({ @JsonKey(name: "profile_photo_url") required String profilePhotoUrl, }) = _ProfilePreviewModel; factory ProfilePreviewModel.fromJson(Map json) => _$ProfilePreviewModelFromJson(json); }