Created
March 13, 2019 09:10
-
-
Save koyta/45fbdba883b6d3f81e4133d8846092d8 to your computer and use it in GitHub Desktop.
User dart model
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Authenticated user model | |
*/ | |
import './EnumUtilClass.dart'; | |
enum AccountType { REGULAR, VENDOR } | |
enum Language { EN, RU } | |
enum Privacy { PUBLIC, PRIVATE } | |
enum Roles { USER, VENDOR, ADMIN } | |
enum Sex { NONE, MALE, FEMALE } | |
enum SocialType { VK, OK, FB, GOOGLE, LINKEDIN, TWITTER } | |
enum AccountState { ACTIVE, BLOCK } | |
class User { | |
final AccountType accountType; | |
final List<SimpleGrantedAuthority> authorities; | |
final String avatar; | |
final String bio; | |
final String birthDay; | |
final String firstName; | |
final String lastName; | |
final String confirmCode; | |
final String createdDate; | |
final String userName; | |
final String email; | |
final String id; | |
final String kcyAddress; | |
final String name; | |
final bool verified; | |
final AccountState state; | |
final String password; | |
final Privacy privacy; | |
final Language lang; | |
final Sex sex; | |
final UserContacts contacts; | |
final bool emailConfirm; | |
final bool fake; | |
final bool hideBio; | |
final Roles roles; | |
User( | |
{this.accountType, | |
this.authorities, | |
this.avatar, | |
this.bio, | |
this.birthDay, | |
this.firstName, | |
this.lastName, | |
this.email, | |
this.contacts, | |
this.sex, | |
this.privacy, | |
this.name, | |
this.id, | |
this.password, | |
this.confirmCode, | |
this.state, | |
this.createdDate, | |
this.kcyAddress, | |
this.lang, | |
this.userName, | |
this.verified, | |
this.emailConfirm, | |
this.fake, | |
this.hideBio, | |
this.roles}); | |
factory User.fromJson(Map<String, dynamic> json) { | |
return User( | |
contacts: json['contacts'] | |
.map<SimpleGrantedAuthority>( | |
(item) => UserContacts.fromJson(item)) | |
.toList(), | |
accountType: | |
EnumUtil.fromStringEnum(AccountType.values, json['accountType']), | |
authorities: json['authorities'] | |
.map<SimpleGrantedAuthority>( | |
(item) => SimpleGrantedAuthority.fromJson(item)) | |
.toList(), | |
avatar: json['avatar'], | |
bio: json['bio'], | |
birthDay: json['birthDay'], | |
firstName: json['firstName'], | |
lastName: json['lastName'], | |
name: json['name'], | |
confirmCode: json['confirmCode'], | |
email: json['email'], | |
password: json['password'], | |
userName: json['userName'], | |
verified: json['verified'].cast<bool>(), | |
emailConfirm: json['emailConfirm'].cast<bool>(), | |
fake: json['fake'].cast<bool>(), | |
hideBio: json['hideBio'].cast<bool>(), | |
id: json['id'], | |
kcyAddress: json['kcyAddress'], | |
lang: EnumUtil.fromStringEnum(Language.values, json['lang']), | |
sex: EnumUtil.fromStringEnum(Sex.values, json['sex']), | |
privacy: EnumUtil.fromStringEnum(Privacy.values, json['privacy']), | |
state: EnumUtil.fromStringEnum(AccountState.values, json['state']), | |
roles: EnumUtil.fromStringEnum(Roles.values, json['roles']), | |
createdDate: json['createdDate'], | |
); | |
} | |
} | |
class SimpleGrantedAuthority { | |
final String authority; | |
SimpleGrantedAuthority({this.authority}); | |
factory SimpleGrantedAuthority.fromJson(Map<String, dynamic> json) { | |
return SimpleGrantedAuthority( | |
authority: json['authority'], | |
); | |
} | |
} | |
class UserContacts { | |
final String email; | |
final String facebook; | |
final String linkedin; | |
final String phone; | |
final String telegram; | |
final String vk; | |
UserContacts( | |
{this.email, | |
this.facebook, | |
this.linkedin, | |
this.phone, | |
this.telegram, | |
this.vk}); | |
factory UserContacts.fromJson(Map<String, dynamic> json) { | |
return UserContacts( | |
email: json['email'], | |
facebook: json['facebook'], | |
phone: json['phone'], | |
telegram: json['telegram'], | |
vk: json['vk'], | |
linkedin: json['linkedin'], | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment