feat(alarm): complete musical alarm flows
This commit is contained in:
@@ -12,6 +12,7 @@ class AlarmaMusical {
|
||||
required this.minuto,
|
||||
required this.tipoProgramacion,
|
||||
required this.diasSemana,
|
||||
this.fechaUnica,
|
||||
this.emisora,
|
||||
this.emisoraFallback,
|
||||
this.activa = true,
|
||||
@@ -31,6 +32,7 @@ class AlarmaMusical {
|
||||
final int minuto;
|
||||
final TipoProgramacionAlarma tipoProgramacion;
|
||||
final List<int> diasSemana;
|
||||
final DateTime? fechaUnica;
|
||||
final Emisora? emisora;
|
||||
final Emisora? emisoraFallback;
|
||||
final bool sonarEnVacaciones;
|
||||
@@ -49,6 +51,8 @@ class AlarmaMusical {
|
||||
int? minuto,
|
||||
TipoProgramacionAlarma? tipoProgramacion,
|
||||
List<int>? diasSemana,
|
||||
DateTime? fechaUnica,
|
||||
bool limpiarFechaUnica = false,
|
||||
Emisora? emisora,
|
||||
Emisora? emisoraFallback,
|
||||
bool? sonarEnVacaciones,
|
||||
@@ -67,6 +71,7 @@ class AlarmaMusical {
|
||||
minuto: minuto ?? this.minuto,
|
||||
tipoProgramacion: tipoProgramacion ?? this.tipoProgramacion,
|
||||
diasSemana: diasSemana ?? this.diasSemana,
|
||||
fechaUnica: limpiarFechaUnica ? null : fechaUnica ?? this.fechaUnica,
|
||||
emisora: emisora ?? this.emisora,
|
||||
emisoraFallback: emisoraFallback ?? this.emisoraFallback,
|
||||
sonarEnVacaciones: sonarEnVacaciones ?? this.sonarEnVacaciones,
|
||||
@@ -87,6 +92,7 @@ class AlarmaMusical {
|
||||
'minuto': minuto,
|
||||
'tipoProgramacion': tipoProgramacion.name,
|
||||
'diasSemana': diasSemana,
|
||||
'fechaUnica': fechaUnica?.toIso8601String(),
|
||||
'emisora': emisora?.toMap(),
|
||||
'emisoraFallback': emisoraFallback?.toMap(),
|
||||
'sonarEnVacaciones': sonarEnVacaciones,
|
||||
@@ -115,6 +121,7 @@ class AlarmaMusical {
|
||||
.whereType<int>()
|
||||
.where((d) => d >= DateTime.monday && d <= DateTime.sunday)
|
||||
.toList(),
|
||||
fechaUnica: _dateFromJson(json['fechaUnica']),
|
||||
emisora: _emisoraFromJson(json['emisora']),
|
||||
emisoraFallback: _emisoraFromJson(json['emisoraFallback']),
|
||||
sonarEnVacaciones: json['sonarEnVacaciones'] as bool? ?? true,
|
||||
@@ -166,13 +173,27 @@ class RangoVacaciones {
|
||||
final DateTime fin;
|
||||
final bool activo;
|
||||
|
||||
DateTime get inicioDia => DateTime(inicio.year, inicio.month, inicio.day);
|
||||
DateTime get finDia => DateTime(fin.year, fin.month, fin.day);
|
||||
|
||||
bool contiene(DateTime fecha) {
|
||||
final dia = DateTime(fecha.year, fecha.month, fecha.day);
|
||||
final desde = DateTime(inicio.year, inicio.month, inicio.day);
|
||||
final hasta = DateTime(fin.year, fin.month, fin.day);
|
||||
final desde = inicioDia;
|
||||
final hasta = finDia;
|
||||
return activo && !dia.isBefore(desde) && !dia.isAfter(hasta);
|
||||
}
|
||||
|
||||
RangoVacaciones normalizado() {
|
||||
if (!finDia.isBefore(inicioDia)) return this;
|
||||
return RangoVacaciones(
|
||||
id: id,
|
||||
nombre: nombre,
|
||||
inicio: finDia,
|
||||
fin: inicioDia,
|
||||
activo: activo,
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
'id': id,
|
||||
'nombre': nombre,
|
||||
|
||||
Reference in New Issue
Block a user