Recurring schedule
This commit is contained in:
parent
47e769653b
commit
2bb05d1919
|
|
@ -604,11 +604,26 @@ abstract class ExpenseEntity extends Object
|
|||
@override
|
||||
String get listDisplayName => number ?? '';
|
||||
|
||||
@nullable
|
||||
@BuiltValueField(compare: false)
|
||||
int get loadedAt;
|
||||
|
||||
bool isBetween(String startDate, String endDate) {
|
||||
return (startDate ?? '').compareTo(date ?? '') <= 0 &&
|
||||
(endDate ?? '').compareTo(date ?? '') >= 0;
|
||||
}
|
||||
|
||||
bool get isLoaded => loadedAt != null && loadedAt > 0;
|
||||
|
||||
bool get isStale {
|
||||
if (!isLoaded) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return DateTime.now().millisecondsSinceEpoch - loadedAt >
|
||||
kMillisecondsToRefreshActivities;
|
||||
}
|
||||
|
||||
bool get isUpcoming => convertSqlDateToDateTime(date).isAfter(DateTime.now());
|
||||
|
||||
bool get isRecurring => [EntityType.recurringExpense].contains(entityType);
|
||||
|
|
|
|||
|
|
@ -302,6 +302,12 @@ class _$ExpenseEntitySerializer implements StructuredSerializer<ExpenseEntity> {
|
|||
specifiedType: const FullType(
|
||||
BuiltList, const [const FullType(ExpenseScheduleEntity)])));
|
||||
}
|
||||
value = object.loadedAt;
|
||||
if (value != null) {
|
||||
result
|
||||
..add('loadedAt')
|
||||
..add(serializers.serialize(value, specifiedType: const FullType(int)));
|
||||
}
|
||||
value = object.isChanged;
|
||||
if (value != null) {
|
||||
result
|
||||
|
|
@ -528,6 +534,10 @@ class _$ExpenseEntitySerializer implements StructuredSerializer<ExpenseEntity> {
|
|||
BuiltList, const [const FullType(ExpenseScheduleEntity)]))
|
||||
as BuiltList<Object>);
|
||||
break;
|
||||
case 'loadedAt':
|
||||
result.loadedAt = serializers.deserialize(value,
|
||||
specifiedType: const FullType(int)) as int;
|
||||
break;
|
||||
case 'isChanged':
|
||||
result.isChanged = serializers.deserialize(value,
|
||||
specifiedType: const FullType(bool)) as bool;
|
||||
|
|
@ -941,6 +951,8 @@ class _$ExpenseEntity extends ExpenseEntity {
|
|||
@override
|
||||
final BuiltList<ExpenseScheduleEntity> recurringDates;
|
||||
@override
|
||||
final int loadedAt;
|
||||
@override
|
||||
final bool isChanged;
|
||||
@override
|
||||
final int createdAt;
|
||||
|
|
@ -1006,6 +1018,7 @@ class _$ExpenseEntity extends ExpenseEntity {
|
|||
this.nextSendDate,
|
||||
this.remainingCycles,
|
||||
this.recurringDates,
|
||||
this.loadedAt,
|
||||
this.isChanged,
|
||||
this.createdAt,
|
||||
this.updatedAt,
|
||||
|
|
@ -1244,6 +1257,7 @@ class _$ExpenseEntity extends ExpenseEntity {
|
|||
..add('nextSendDate', nextSendDate)
|
||||
..add('remainingCycles', remainingCycles)
|
||||
..add('recurringDates', recurringDates)
|
||||
..add('loadedAt', loadedAt)
|
||||
..add('isChanged', isChanged)
|
||||
..add('createdAt', createdAt)
|
||||
..add('updatedAt', updatedAt)
|
||||
|
|
@ -1446,6 +1460,10 @@ class ExpenseEntityBuilder
|
|||
set recurringDates(ListBuilder<ExpenseScheduleEntity> recurringDates) =>
|
||||
_$this._recurringDates = recurringDates;
|
||||
|
||||
int _loadedAt;
|
||||
int get loadedAt => _$this._loadedAt;
|
||||
set loadedAt(int loadedAt) => _$this._loadedAt = loadedAt;
|
||||
|
||||
bool _isChanged;
|
||||
bool get isChanged => _$this._isChanged;
|
||||
set isChanged(bool isChanged) => _$this._isChanged = isChanged;
|
||||
|
|
@ -1534,6 +1552,7 @@ class ExpenseEntityBuilder
|
|||
_nextSendDate = $v.nextSendDate;
|
||||
_remainingCycles = $v.remainingCycles;
|
||||
_recurringDates = $v.recurringDates?.toBuilder();
|
||||
_loadedAt = $v.loadedAt;
|
||||
_isChanged = $v.isChanged;
|
||||
_createdAt = $v.createdAt;
|
||||
_updatedAt = $v.updatedAt;
|
||||
|
|
@ -1615,6 +1634,7 @@ class ExpenseEntityBuilder
|
|||
nextSendDate: BuiltValueNullFieldError.checkNotNull(nextSendDate, 'ExpenseEntity', 'nextSendDate'),
|
||||
remainingCycles: BuiltValueNullFieldError.checkNotNull(remainingCycles, 'ExpenseEntity', 'remainingCycles'),
|
||||
recurringDates: _recurringDates?.build(),
|
||||
loadedAt: loadedAt,
|
||||
isChanged: isChanged,
|
||||
createdAt: BuiltValueNullFieldError.checkNotNull(createdAt, 'ExpenseEntity', 'createdAt'),
|
||||
updatedAt: BuiltValueNullFieldError.checkNotNull(updatedAt, 'ExpenseEntity', 'updatedAt'),
|
||||
|
|
|
|||
|
|
@ -92,6 +92,10 @@ class _ExpenseViewState extends State<ExpenseView>
|
|||
? localization.documents
|
||||
: '${localization.documents} (${expense.documents.length})',
|
||||
),
|
||||
if (expense.isRecurring)
|
||||
Tab(
|
||||
text: localization.schedule,
|
||||
)
|
||||
],
|
||||
),
|
||||
body: Builder(builder: (context) {
|
||||
|
|
@ -113,6 +117,12 @@ class _ExpenseViewState extends State<ExpenseView>
|
|||
child: ExpenseViewDocuments(
|
||||
viewModel: viewModel, expense: viewModel.expense),
|
||||
),
|
||||
if (expense.isRecurring)
|
||||
RefreshIndicator(
|
||||
onRefresh: () => viewModel.onRefreshed(context),
|
||||
child: ExpenseViewDocuments(
|
||||
viewModel: viewModel, expense: viewModel.expense),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
|
|||
Loading…
Reference in New Issue