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:
@ -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({
|
||||
|
@ -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,
|
||||
},
|
||||
],
|
||||
|
@ -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,
|
||||
};
|
||||
}
|
||||
|
@ -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,
|
||||
};
|
||||
}
|
||||
|
49
lib/models/tracked_item.dart
Normal file
49
lib/models/tracked_item.dart
Normal 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,
|
||||
};
|
||||
}
|
||||
}
|
@ -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,
|
||||
};
|
||||
}
|
||||
}
|
@ -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,
|
||||
};
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user