1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-11-25 22:39:22 +00:00
comunicmobile/lib/models/user.dart

59 lines
1.9 KiB
Dart

import 'package:comunic/enums/user_page_visibility.dart';
import 'package:comunic/helpers/database/database_contract.dart';
import 'package:comunic/models/cache_model.dart';
import 'package:meta/meta.dart';
/// Single user information
///
/// @author Pierre HUBERT
class User extends CacheModel {
final String firstName;
final String lastName;
final UserPageVisibility pageVisibility;
final String virtualDirectory;
final String accountImageURL;
const User({
@required int id,
@required this.firstName,
@required this.lastName,
@required this.pageVisibility,
@required this.virtualDirectory,
@required this.accountImageURL,
}) : assert(id != null),
assert(firstName != null),
assert(lastName != null),
assert(pageVisibility != null),
assert(accountImageURL != null),
super(id: id);
/// Get user full name
String get fullName => firstName + " " + lastName;
/// Get user display name
String get displayName => fullName; //TODO : support HTML characters (eg: É => é)
Map<String, dynamic> toMap() {
return {
UserTableContract.C_ID: id,
UserTableContract.C_FIRST_NAME: firstName,
UserTableContract.C_LAST_NAME: lastName,
UserTableContract.C_VISIBILITY: pageVisibility.toString(),
UserTableContract.C_VIRTUAL_DIRECTORY: virtualDirectory,
UserTableContract.C_ACCOUNT_IMAGE_URL: accountImageURL,
};
}
User.fromMap(Map<String, dynamic> map)
: this.firstName = map[UserTableContract.C_FIRST_NAME],
this.lastName = map[UserTableContract.C_LAST_NAME],
this.pageVisibility =
userPageVisibilityFromString(map[UserTableContract.C_VISIBILITY]),
this.virtualDirectory = map[UserTableContract.C_VIRTUAL_DIRECTORY],
this.accountImageURL = map[UserTableContract.C_ACCOUNT_IMAGE_URL],
super.fromMap(map);
}