72 lines
2.4 KiB
Dart
72 lines
2.4 KiB
Dart
import 'package:equatable/equatable.dart';
|
|
import 'package:hive_ce/hive.dart';
|
|
import '../utils/id_generator.dart';
|
|
|
|
// Указываем Hive, что это модель для хранения в базе данных
|
|
// typeId: 1003 - уникальный идентификатор типа для Hive
|
|
part 'user.g.dart';
|
|
|
|
@HiveType(typeId: 1003)
|
|
/// Модель пользователя приложения
|
|
/// Содержит основную информацию для идентификации пользователя
|
|
class User extends Equatable {
|
|
/// Уникальный идентификатор пользователя
|
|
@HiveField(0)
|
|
final String id;
|
|
|
|
/// Имя пользователя для отображения в интерфейсе
|
|
@HiveField(1)
|
|
final String name;
|
|
|
|
/// Email пользователя (может использоваться для входа в будущем)
|
|
@HiveField(2)
|
|
final String email;
|
|
|
|
@HiveField(3)
|
|
/// Дата и время последнего обновления объекта
|
|
final DateTime updatedAt;
|
|
|
|
// Комментарий: Добавлено поле для хранения времени последней синхронизации SMS.
|
|
@HiveField(4)
|
|
final DateTime lastSmsSyncTime;
|
|
|
|
/// Конструктор пользователя
|
|
/// id генерируется автоматически, если не передан
|
|
User({
|
|
String? id,
|
|
required this.name,
|
|
required this.email,
|
|
DateTime? updatedAt,
|
|
DateTime? lastSmsSyncTime,
|
|
}) : id = id ?? IdGenerator.generateId(),
|
|
updatedAt = updatedAt ?? DateTime.now(),
|
|
lastSmsSyncTime = lastSmsSyncTime ??
|
|
DateTime(DateTime.now().year, DateTime.now().month - 1, 1);
|
|
|
|
|
|
/// Переопределяем toString для удобного отображения в логах
|
|
@override
|
|
String toString() {
|
|
return 'User(id: $id, name: $name, email: $email, lastSmsSyncTime: $lastSmsSyncTime)';
|
|
}
|
|
|
|
// Используем Equatable для сравнения объектов по их свойствам.
|
|
@override
|
|
List<Object?> get props => [id];
|
|
|
|
User copyWith({
|
|
String? id,
|
|
String? name,
|
|
String? email,
|
|
DateTime? lastSmsSyncTime,
|
|
}) {
|
|
return User(
|
|
id: id ?? this.id,
|
|
name: name ?? this.name,
|
|
email: email ?? this.email,
|
|
updatedAt: DateTime.now(),
|
|
lastSmsSyncTime: lastSmsSyncTime ?? this.lastSmsSyncTime,
|
|
);
|
|
}
|
|
}
|