Move down to only 1 abstract data type with a nully Frequency. Should aid in making the Expense page usable for all 3 data type.

This commit is contained in:
2025-02-21 08:56:50 -07:00
parent 992195b9a0
commit be66f52cbf
11 changed files with 133 additions and 139 deletions

View File

@ -1,6 +1,7 @@
import '/models/tracked_type.dart';
// Local
import '/models/tracked_item.dart';
class Asset extends TrackedType {
class Asset extends TrackedItem {
static String amountText = "Amount";
Asset({

View File

@ -29,7 +29,7 @@ class DatabaseBackup {
'id': e.id,
'name': e.name,
'cost': e.amount,
'frequency': e.frequency.title,
'frequency': e.frequency!.title,
'description': e.description,
},
],
@ -39,7 +39,7 @@ class DatabaseBackup {
'id': i.id,
'name': i.name,
'revenue': i.amount,
'frequency': i.frequency.title,
'frequency': i.frequency!.title,
'description': i.description,
},
],

View File

@ -1,8 +1,8 @@
// Local
import '/models/tracked_type_recurring.dart';
import '/models/tracked_item.dart';
import '/models/frequency.dart';
class Expense extends RecurringTrackedType {
class Expense extends TrackedItem {
static String amountText = "Cost";
Expense({
@ -29,7 +29,7 @@ class Expense extends RecurringTrackedType {
'id': id,
'name': name,
'cost': amount,
'frequency': frequency.title,
'frequency': frequency!.title,
'description': description,
};
}

View File

@ -1,8 +1,8 @@
// Local
import '/models/tracked_type_recurring.dart';
import '/models/tracked_item.dart';
import '/models/frequency.dart';
class Income extends RecurringTrackedType {
class Income extends TrackedItem {
static String amountText = "Revenue";
Income({
@ -29,7 +29,7 @@ class Income extends RecurringTrackedType {
'id': id,
'name': name,
'revenue': amount,
'frequency': frequency.title,
'frequency': frequency!.title,
'description': description,
};
}

View File

@ -0,0 +1,49 @@
// Local
import '/models/frequency.dart';
abstract class TrackedItem {
int? id;
String name;
double amount;
Frequency? frequency;
String description;
TrackedItem({
this.id,
required this.name,
required this.amount,
this.frequency,
required this.description,
});
static String amountText = "Amount";
String getAmountText() => amountText;
@override
String toString() {
return toMap().toString();
}
double calcComparableAmountYearly() {
return frequency == null ? 0 : amount * frequency!.timesPerYear;
}
double calcComparableAmountDaily() {
return frequency == null ? 0 : amount / frequency!.numDays;
}
Map<String, dynamic> toMap() {
return frequency == null ? {
'id': id,
'name': name,
'amount': amount,
'description': description,
} : {
'id': id,
'name': name,
'amount': amount,
'frequency': frequency!.title,
'description': description,
};
}
}

View File

@ -1,30 +0,0 @@
abstract class TrackedType {
int? id;
String name;
double amount;
String description;
TrackedType({
this.id,
required this.name,
required this.amount,
required this.description,
});
static String amountText = "Amount";
String getAmountText() => amountText;
@override
String toString() {
return toMap().toString();
}
Map<String, dynamic> toMap() {
return {
'id': id,
'name': name,
'amount': amount,
'description': description,
};
}
}

View File

@ -1,34 +0,0 @@
// Local
import '/models/tracked_type.dart';
import '/models/frequency.dart';
abstract class RecurringTrackedType extends TrackedType {
Frequency frequency;
RecurringTrackedType({
super.id,
required super.name,
required super.amount,
required this.frequency,
required super.description,
});
double calcComparableAmountYearly() {
return amount * frequency.timesPerYear;
}
double calcComparableAmountDaily() {
return amount / frequency.numDays;
}
@override
Map<String, dynamic> toMap() {
return {
'id': id,
'name': name,
'amount': amount,
'frequency': frequency.title,
'description': description,
};
}
}