Files
packet/lib/domain/entities/pendiente.dart

56 lines
1.5 KiB
Dart
Raw Normal View History

import 'dart:typed_data';
class Pendiente {
final String hash;
final String? titulo;
final Uint8List contenido;
final int intentos;
final DateTime? ultimoIntento;
final DateTime? proximoIntento;
final int? destinoId;
Pendiente({
required this.hash,
this.titulo,
required this.contenido,
this.intentos = 0,
this.ultimoIntento,
this.proximoIntento,
this.destinoId,
});
factory Pendiente.fromMap(Map<String, dynamic> map) => Pendiente(
hash: map['hash'] as String,
titulo: map['titulo'] as String?,
contenido: map['contenido'] as Uint8List,
intentos: map['intentos'] as int? ?? 0,
ultimoIntento: map['ultimo_intento'] != null
? DateTime.parse(map['ultimo_intento'] as String)
: null,
proximoIntento: map['proximo_intento'] != null
? DateTime.parse(map['proximo_intento'] as String)
: null,
destinoId: map['destino_id'] as int?,
);
Map<String, dynamic> toMap() => {
'hash': hash,
'titulo': titulo,
'contenido': contenido,
'intentos': intentos,
'ultimo_intento': ultimoIntento?.toIso8601String(),
'proximo_intento': proximoIntento?.toIso8601String(),
'destino_id': destinoId,
};
bool get puedeReintentar => intentos < 20;
String get estado {
if (intentos >= 20) return 'agotado';
if (proximoIntento != null && proximoIntento!.isAfter(DateTime.now())) {
return 'esperando';
}
return 'listo';
}
}