Skip to content

Instantly share code, notes, and snippets.

@koyta
Created March 13, 2019 09:10
Show Gist options
  • Save koyta/45fbdba883b6d3f81e4133d8846092d8 to your computer and use it in GitHub Desktop.
Save koyta/45fbdba883b6d3f81e4133d8846092d8 to your computer and use it in GitHub Desktop.
User dart model
/*
* 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