User constructor

User({
  1. @Default('') @JsonKey(name: 'id') String userId,
  2. @Default('') @JsonKey(name: 'healthID') String healthId,
  3. @Default('') @JsonKey(name: 'username') String username,
  4. @Default('') @JsonKey(name: 'name') String name,
  5. @Default('') @JsonKey(name: 'firstName') String firstName,
  6. @Default('') @JsonKey(name: 'lastName') String lastName,
  7. @Default('') @JsonKey(name: 'nationalID') String nationalID,
  8. @Default('') @JsonKey(name: 'dateOfBirth') String dateOfBirth,
  9. @Default(Gender.unknown) @JsonKey(name: 'gender', fromJson: genderFromJson, toJson: genderToJson) Gender gender,
  10. @Default('') @JsonKey(name: 'avatar') String avatar,
  11. @JsonKey(name: 'contacts') Contact? primaryContact,
  12. @Default(<Contact>[]) @JsonKey(name: 'secondaryContacts') List<Contact> secondaryContacts,
  13. @Default('') @JsonKey(name: 'email') String email,
  14. @Default(<String>[]) @JsonKey(name: 'languages') List<String> languages,
  15. @Default('') @JsonKey(name: 'currentOrganizationID') String currentOrganizationID,
  16. @Default('') @JsonKey(name: 'currentProgramID') String currentProgramID,
  17. @Default(false) @JsonKey(name: 'active') bool active,
  18. @Default(false) @JsonKey(name: 'termsAccepted') bool termsAccepted,
  19. @Default(false) @JsonKey(name: 'hasSetPin') bool hasSetPin,
  20. @Default(false) @JsonKey(name: 'hasSetNickname') bool hasSetNickname,
  21. @Default(false) @JsonKey(name: 'isPhoneVerified') bool isPhoneVerified,
  22. @Default(false) @JsonKey(name: 'pinChangeRequired') bool pinChangeRequired,
  23. @Default(false) @JsonKey(name: 'pinUpdateRequired') bool pinUpdateRequired,
  24. @Default(false) @JsonKey(name: 'suspended') bool suspended,
  25. @Default('') String streamToken,
})

Implementation

factory User({
  // Identification
  @Default('') @JsonKey(name: 'id') String userId,
  @Default('') @JsonKey(name: 'healthID') String healthId,
  @Default('') @JsonKey(name: 'username') String username,
  @Default('') @JsonKey(name: 'name') String name,
  @Default('') @JsonKey(name: 'firstName') String firstName,
  @Default('') @JsonKey(name: 'lastName') String lastName,
  @Default('') @JsonKey(name: 'nationalID') String nationalID,

  // Personal Information
  @Default('') @JsonKey(name: 'dateOfBirth') String dateOfBirth,
  @Default(Gender.unknown)
  @JsonKey(name: 'gender', fromJson: genderFromJson, toJson: genderToJson)
  Gender gender,
  @Default('') @JsonKey(name: 'avatar') String avatar,

  // Contact Information
  @JsonKey(name: 'contacts') Contact? primaryContact,
  @Default(<Contact>[])
  @JsonKey(name: 'secondaryContacts')
  List<Contact> secondaryContacts,
  @Default('') @JsonKey(name: 'email') String email,

  // Settings and Preferences
  @Default(<String>[]) @JsonKey(name: 'languages') List<String> languages,
  @Default('')
  @JsonKey(name: 'currentOrganizationID')
  String currentOrganizationID,
  @Default('') @JsonKey(name: 'currentProgramID') String currentProgramID,

  // Status Flags
  @Default(false) @JsonKey(name: 'active') bool active,
  @Default(false) @JsonKey(name: 'termsAccepted') bool termsAccepted,
  @Default(false) @JsonKey(name: 'hasSetPin') bool hasSetPin,
  @Default(false) @JsonKey(name: 'hasSetNickname') bool hasSetNickname,
  @Default(false) @JsonKey(name: 'isPhoneVerified') bool isPhoneVerified,
  @Default(false) @JsonKey(name: 'pinChangeRequired') bool pinChangeRequired,
  @Default(false) @JsonKey(name: 'pinUpdateRequired') bool pinUpdateRequired,
  @Default(false) @JsonKey(name: 'suspended') bool suspended,

  // Additional Information
  @Default('') String streamToken,
}) = _User;