forked from eatvio/eatvio_app
117 lines
5.6 KiB
Dart
117 lines
5.6 KiB
Dart
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<String> roles,
|
|
@JsonKey(name: "badges") required List<BadgeModel> badges,
|
|
@JsonKey(name: "subscriptions") required List<String> subscriptions,
|
|
@JsonKey(name: "subscribers") required List<String> subscribers,
|
|
@JsonKey(name: "education_resource") EducationModel? educationResource,
|
|
@JsonKey(name: "cert_photos") List<DiplomasAndCertificatesModel>? diplomasAndCertificates,
|
|
}) = _ProfileModel;
|
|
|
|
factory ProfileModel.fromJson(Map<String, dynamic> json) => _$ProfileModelFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class DiplomasAndCertificatesModel with _$DiplomasAndCertificatesModel {
|
|
const factory DiplomasAndCertificatesModel({
|
|
required int id,
|
|
required String path,
|
|
}) = _DiplomasAndCertificatesModel;
|
|
|
|
factory DiplomasAndCertificatesModel.fromJson(Map<String, dynamic> json) => _$DiplomasAndCertificatesModelFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class EducationModel with _$EducationModel {
|
|
const factory EducationModel({
|
|
@JsonKey(name: "has_medical_education") int? hasMedicalEducation,
|
|
@JsonKey(name: "completed_courses") List<Map<String, CompletedCoursesModel>>? 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<String, dynamic> json) => _$EducationModelFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class CompletedCoursesModel with _$CompletedCoursesModel {
|
|
const factory CompletedCoursesModel({
|
|
required String date,
|
|
required String title,
|
|
}) = _CompletedCoursesModel;
|
|
|
|
factory CompletedCoursesModel.fromJson(Map<String, dynamic> 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<String, dynamic> 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<String, dynamic> json) => _$ProfilePreviewModelFromJson(json);
|
|
}
|