From af6b883ed4a9003aeb1b7138c537a99a229cde29 Mon Sep 17 00:00:00 2001 From: enrique-lozano Date: Tue, 30 Apr 2024 20:06:26 +0200 Subject: [PATCH] refactor: Move transactions enums to new files --- lib/app/accounts/account_form.dart | 3 +- lib/app/accounts/details/account_details.dart | 2 +- .../details/account_details_actions.dart | 3 +- lib/app/home/dashboard.page.dart | 2 +- .../home/widgets/income_or_expense_card.dart | 2 +- lib/app/stats/stats_page.dart | 2 +- lib/app/stats/widgets/balance_bar_chart.dart | 4 +- .../widgets/balance_bar_chart_small.dart | 2 +- .../widgets/income_expense_comparason.dart | 2 +- .../chart_by_categories.dart | 6 +- .../form/transaction_form.page.dart | 3 +- .../transaction_details.page.dart | 3 +- .../widgets/transaction_list_tile.dart | 7 +- lib/core/database/app_db.dart | 2 +- .../services/account/account_service.dart | 2 +- .../transaction/transaction_service.dart | 2 + lib/core/models/budget/budget.dart | 5 +- .../transaction/next_pay_status.enum.dart | 48 +++++++++ lib/core/models/transaction/transaction.dart | 102 +----------------- ...atus.dart => transaction_status.enum.dart} | 0 .../transaction/transaction_type.enum.dart | 53 +++++++++ .../filter_sheet_modal.dart | 4 +- .../transaction_status_filter.dart | 2 +- .../transaction_status_filter_chip.dart | 2 +- .../transaction_filters.dart | 5 +- lib/core/services/finance_health_service.dart | 3 +- 26 files changed, 145 insertions(+), 126 deletions(-) create mode 100644 lib/core/models/transaction/next_pay_status.enum.dart rename lib/core/models/transaction/{transaction_status.dart => transaction_status.enum.dart} (100%) create mode 100644 lib/core/models/transaction/transaction_type.enum.dart diff --git a/lib/app/accounts/account_form.dart b/lib/app/accounts/account_form.dart index 15d21dbc..69879b68 100644 --- a/lib/app/accounts/account_form.dart +++ b/lib/app/accounts/account_form.dart @@ -13,7 +13,6 @@ import 'package:monekin/core/models/account/account.dart'; import 'package:monekin/core/models/currency/currency.dart'; import 'package:monekin/core/models/supported-icon/icon_displayer.dart'; import 'package:monekin/core/models/supported-icon/supported_icon.dart'; -import 'package:monekin/core/models/transaction/transaction.dart'; import 'package:monekin/core/presentation/app_colors.dart'; import 'package:monekin/core/presentation/widgets/currency_selector_modal.dart'; import 'package:monekin/core/presentation/widgets/date_form_field/date_form_field.dart'; @@ -27,6 +26,8 @@ import 'package:monekin/core/utils/text_field_utils.dart'; import 'package:monekin/core/utils/uuid.dart'; import 'package:monekin/i18n/translations.g.dart'; +import '../../core/models/transaction/transaction_type.enum.dart'; + class AccountFormPage extends StatefulWidget { const AccountFormPage({super.key, this.account}); diff --git a/lib/app/accounts/details/account_details.dart b/lib/app/accounts/details/account_details.dart index 08d0040f..a54b5fd3 100644 --- a/lib/app/accounts/details/account_details.dart +++ b/lib/app/accounts/details/account_details.dart @@ -9,7 +9,7 @@ import 'package:monekin/core/database/services/account/account_service.dart'; import 'package:monekin/core/database/services/exchange-rate/exchange_rate_service.dart'; import 'package:monekin/core/database/services/transaction/transaction_service.dart'; import 'package:monekin/core/models/account/account.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; import 'package:monekin/core/presentation/app_colors.dart'; import 'package:monekin/core/presentation/widgets/bottomSheetFooter.dart'; import 'package:monekin/core/presentation/widgets/card_with_header.dart'; diff --git a/lib/app/accounts/details/account_details_actions.dart b/lib/app/accounts/details/account_details_actions.dart index aca5547b..bccdc0a0 100644 --- a/lib/app/accounts/details/account_details_actions.dart +++ b/lib/app/accounts/details/account_details_actions.dart @@ -5,12 +5,13 @@ import 'package:monekin/app/accounts/details/account_details.dart'; import 'package:monekin/app/transactions/form/transaction_form.page.dart'; import 'package:monekin/core/database/services/account/account_service.dart'; import 'package:monekin/core/models/account/account.dart'; -import 'package:monekin/core/models/transaction/transaction.dart'; import 'package:monekin/core/presentation/widgets/confirm_dialog.dart'; import 'package:monekin/core/routes/route_utils.dart'; import 'package:monekin/core/utils/list_tile_action_item.dart'; import 'package:monekin/i18n/translations.g.dart'; +import '../../../core/models/transaction/transaction_type.enum.dart'; + abstract class AccountDetailsActions { static List getAccountDetailsActions( BuildContext context, { diff --git a/lib/app/home/dashboard.page.dart b/lib/app/home/dashboard.page.dart index c70691ce..939c3b90 100644 --- a/lib/app/home/dashboard.page.dart +++ b/lib/app/home/dashboard.page.dart @@ -14,7 +14,6 @@ import 'package:monekin/core/database/services/account/account_service.dart'; import 'package:monekin/core/database/services/user-setting/user_setting_service.dart'; import 'package:monekin/core/models/account/account.dart'; import 'package:monekin/core/models/date-utils/date_period_state.dart'; -import 'package:monekin/core/models/transaction/transaction.dart'; import 'package:monekin/core/presentation/responsive/breakpoints.dart'; import 'package:monekin/core/presentation/responsive/responsive_row_column.dart'; import 'package:monekin/core/presentation/widgets/card_with_header.dart'; @@ -30,6 +29,7 @@ import 'package:monekin/core/routes/route_utils.dart'; import 'package:monekin/core/services/finance_health_service.dart'; import 'package:monekin/i18n/translations.g.dart'; +import '../../core/models/transaction/transaction_type.enum.dart'; import '../../core/presentation/app_colors.dart'; class DashboardPage extends StatefulWidget { diff --git a/lib/app/home/widgets/income_or_expense_card.dart b/lib/app/home/widgets/income_or_expense_card.dart index be67bc7b..2993ba38 100644 --- a/lib/app/home/widgets/income_or_expense_card.dart +++ b/lib/app/home/widgets/income_or_expense_card.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:monekin/core/database/services/account/account_service.dart'; -import 'package:monekin/core/models/transaction/transaction.dart'; import 'package:monekin/core/presentation/widgets/number_ui_formatters/currency_displayer.dart'; import 'package:monekin/core/presentation/widgets/skeleton.dart'; import 'package:monekin/core/presentation/widgets/transaction_filter/transaction_filters.dart'; +import '../../../core/models/transaction/transaction_type.enum.dart'; import '../../../core/presentation/app_colors.dart'; class IncomeOrExpenseCard extends StatelessWidget { diff --git a/lib/app/stats/stats_page.dart b/lib/app/stats/stats_page.dart index fa889314..811f3ad4 100644 --- a/lib/app/stats/stats_page.dart +++ b/lib/app/stats/stats_page.dart @@ -7,7 +7,6 @@ import 'package:monekin/app/stats/widgets/movements_distribution/chart_by_catego import 'package:monekin/app/stats/widgets/movements_distribution/tags_stats.dart'; import 'package:monekin/core/database/services/account/account_service.dart'; import 'package:monekin/core/models/date-utils/date_period_state.dart'; -import 'package:monekin/core/models/transaction/transaction.dart'; import 'package:monekin/core/presentation/widgets/card_with_header.dart'; import 'package:monekin/core/presentation/widgets/dates/segmented_calendar_button.dart'; import 'package:monekin/core/presentation/widgets/filter_row_indicator.dart'; @@ -16,6 +15,7 @@ import 'package:monekin/core/presentation/widgets/transaction_filter/filter_shee import 'package:monekin/core/presentation/widgets/transaction_filter/transaction_filters.dart'; import 'package:monekin/i18n/translations.g.dart'; +import '../../core/models/transaction/transaction_type.enum.dart'; import '../accounts/all_accounts_balance.dart'; class StatsPage extends StatefulWidget { diff --git a/lib/app/stats/widgets/balance_bar_chart.dart b/lib/app/stats/widgets/balance_bar_chart.dart index 0d2a29fb..7cd8977b 100644 --- a/lib/app/stats/widgets/balance_bar_chart.dart +++ b/lib/app/stats/widgets/balance_bar_chart.dart @@ -6,15 +6,15 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:monekin/core/database/services/account/account_service.dart'; import 'package:monekin/core/database/services/currency/currency_service.dart'; +import 'package:monekin/core/extensions/color.extensions.dart'; import 'package:monekin/core/models/date-utils/date_period.dart'; import 'package:monekin/core/models/date-utils/date_period_state.dart'; import 'package:monekin/core/models/date-utils/period_type.dart'; import 'package:monekin/core/models/date-utils/periodicity.dart'; -import 'package:monekin/core/models/transaction/transaction.dart'; import 'package:monekin/core/presentation/widgets/number_ui_formatters/ui_number_formatter.dart'; import 'package:monekin/core/presentation/widgets/transaction_filter/transaction_filters.dart'; -import 'package:monekin/core/extensions/color.extensions.dart'; +import '../../../core/models/transaction/transaction_type.enum.dart'; import '../../../core/presentation/app_colors.dart'; class IncomeExpenseChartDataItem { diff --git a/lib/app/stats/widgets/balance_bar_chart_small.dart b/lib/app/stats/widgets/balance_bar_chart_small.dart index 17e21038..c0961c68 100644 --- a/lib/app/stats/widgets/balance_bar_chart_small.dart +++ b/lib/app/stats/widgets/balance_bar_chart_small.dart @@ -3,11 +3,11 @@ import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; import 'package:monekin/core/database/services/account/account_service.dart'; import 'package:monekin/core/models/date-utils/date_period_state.dart'; -import 'package:monekin/core/models/transaction/transaction.dart'; import 'package:monekin/core/presentation/responsive/breakpoints.dart'; import 'package:monekin/core/presentation/widgets/transaction_filter/transaction_filters.dart'; import 'package:monekin/i18n/translations.g.dart'; +import '../../../core/models/transaction/transaction_type.enum.dart'; import '../../../core/presentation/app_colors.dart'; class BalanceChartSmall extends StatefulWidget { diff --git a/lib/app/stats/widgets/income_expense_comparason.dart b/lib/app/stats/widgets/income_expense_comparason.dart index 3a4532a1..afacb475 100644 --- a/lib/app/stats/widgets/income_expense_comparason.dart +++ b/lib/app/stats/widgets/income_expense_comparason.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:monekin/core/database/services/account/account_service.dart'; -import 'package:monekin/core/models/transaction/transaction.dart'; import 'package:monekin/core/presentation/widgets/animated_progress_bar.dart'; import 'package:monekin/core/presentation/widgets/number_ui_formatters/currency_displayer.dart'; import 'package:monekin/core/presentation/widgets/skeleton.dart'; @@ -8,6 +7,7 @@ import 'package:monekin/core/presentation/widgets/transaction_filter/transaction import 'package:monekin/i18n/translations.g.dart'; import 'package:rxdart/rxdart.dart'; +import '../../../core/models/transaction/transaction_type.enum.dart'; import '../../../core/presentation/app_colors.dart'; class IncomeExpenseComparason extends StatelessWidget { diff --git a/lib/app/stats/widgets/movements_distribution/chart_by_categories.dart b/lib/app/stats/widgets/movements_distribution/chart_by_categories.dart index ef1c40f0..3056b658 100644 --- a/lib/app/stats/widgets/movements_distribution/chart_by_categories.dart +++ b/lib/app/stats/widgets/movements_distribution/chart_by_categories.dart @@ -5,17 +5,19 @@ import 'package:intl/intl.dart'; import 'package:monekin/app/stats/widgets/movements_distribution/category_stats_modal.dart'; import 'package:monekin/core/database/services/category/category_service.dart'; import 'package:monekin/core/database/services/transaction/transaction_service.dart'; +import 'package:monekin/core/extensions/color.extensions.dart'; import 'package:monekin/core/models/category/category.dart'; import 'package:monekin/core/models/date-utils/date_period_state.dart'; import 'package:monekin/core/models/supported-icon/icon_displayer.dart'; import 'package:monekin/core/models/transaction/transaction.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; import 'package:monekin/core/presentation/widgets/number_ui_formatters/currency_displayer.dart'; import 'package:monekin/core/presentation/widgets/number_ui_formatters/ui_number_formatter.dart'; import 'package:monekin/core/presentation/widgets/transaction_filter/transaction_filters.dart'; -import 'package:monekin/core/extensions/color.extensions.dart'; import 'package:monekin/i18n/translations.g.dart'; +import '../../../../core/models/transaction/transaction_type.enum.dart'; + class TrDistributionChartItem { T category; List transactions; diff --git a/lib/app/transactions/form/transaction_form.page.dart b/lib/app/transactions/form/transaction_form.page.dart index 48cc7b9c..26a71e30 100644 --- a/lib/app/transactions/form/transaction_form.page.dart +++ b/lib/app/transactions/form/transaction_form.page.dart @@ -15,7 +15,7 @@ import 'package:monekin/core/models/supported-icon/icon_displayer.dart'; import 'package:monekin/core/models/tags/tag.dart'; import 'package:monekin/core/models/transaction/recurrency_data.dart'; import 'package:monekin/core/models/transaction/transaction.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; import 'package:monekin/core/presentation/animations/shake/shake_widget.dart'; import 'package:monekin/core/presentation/responsive/breakpoint_container.dart'; import 'package:monekin/core/presentation/widgets/date_form_field/date_form_field.dart'; @@ -30,6 +30,7 @@ import 'package:monekin/core/utils/text_field_utils.dart'; import 'package:monekin/core/utils/uuid.dart'; import 'package:monekin/i18n/translations.g.dart'; +import '../../../core/models/transaction/transaction_type.enum.dart'; import '../../../core/presentation/app_colors.dart'; enum TransactionFormMode { transfer, incomeOrExpense } diff --git a/lib/app/transactions/transaction_details.page.dart b/lib/app/transactions/transaction_details.page.dart index 5b4af68a..24a10f8b 100644 --- a/lib/app/transactions/transaction_details.page.dart +++ b/lib/app/transactions/transaction_details.page.dart @@ -11,7 +11,7 @@ import 'package:monekin/core/models/supported-icon/icon_displayer.dart'; import 'package:monekin/core/models/supported-icon/supported_icon.dart'; import 'package:monekin/core/models/tags/tag.dart'; import 'package:monekin/core/models/transaction/transaction.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; import 'package:monekin/core/presentation/widgets/card_with_header.dart'; import 'package:monekin/core/presentation/widgets/confirm_dialog.dart'; import 'package:monekin/core/presentation/widgets/monekin_quick_actions_buttons.dart'; @@ -22,6 +22,7 @@ import 'package:monekin/core/utils/list_tile_action_item.dart'; import 'package:monekin/core/utils/uuid.dart'; import 'package:monekin/i18n/translations.g.dart'; +import '../../core/models/transaction/transaction_type.enum.dart'; import '../../core/presentation/app_colors.dart'; class TransactionDetailAction { diff --git a/lib/app/transactions/widgets/transaction_list_tile.dart b/lib/app/transactions/widgets/transaction_list_tile.dart index 38897e12..41aa2715 100644 --- a/lib/app/transactions/widgets/transaction_list_tile.dart +++ b/lib/app/transactions/widgets/transaction_list_tile.dart @@ -1,16 +1,17 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; -import 'package:monekin/core/routes/route_utils.dart'; import 'package:monekin/app/transactions/transaction_details.page.dart'; +import 'package:monekin/core/extensions/color.extensions.dart'; import 'package:monekin/core/models/date-utils/periodicity.dart'; import 'package:monekin/core/models/supported-icon/icon_displayer.dart'; import 'package:monekin/core/models/transaction/transaction.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; import 'package:monekin/core/presentation/widgets/number_ui_formatters/currency_displayer.dart'; import 'package:monekin/core/presentation/widgets/number_ui_formatters/ui_number_formatter.dart'; +import 'package:monekin/core/routes/route_utils.dart'; import 'package:monekin/core/services/view-actions/transaction_view_actions_service.dart'; -import 'package:monekin/core/extensions/color.extensions.dart'; +import '../../../core/models/transaction/transaction_type.enum.dart'; import '../../../core/presentation/app_colors.dart'; class TransactionListTile extends StatelessWidget { diff --git a/lib/core/database/app_db.dart b/lib/core/database/app_db.dart index 4612d402..e7d66de1 100644 --- a/lib/core/database/app_db.dart +++ b/lib/core/database/app_db.dart @@ -13,7 +13,7 @@ import 'package:monekin/core/models/category/category.dart'; import 'package:monekin/core/models/date-utils/periodicity.dart'; import 'package:monekin/core/models/exchange-rate/exchange_rate.dart'; import 'package:monekin/core/models/transaction/transaction.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; import 'package:path/path.dart'; import 'package:path_provider/path_provider.dart'; diff --git a/lib/core/database/services/account/account_service.dart b/lib/core/database/services/account/account_service.dart index 8da70da0..f4768f4e 100644 --- a/lib/core/database/services/account/account_service.dart +++ b/lib/core/database/services/account/account_service.dart @@ -3,7 +3,7 @@ import 'package:drift/drift.dart'; import 'package:monekin/core/database/app_db.dart'; import 'package:monekin/core/database/services/transaction/transaction_service.dart'; import 'package:monekin/core/models/account/account.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; import 'package:monekin/core/presentation/widgets/transaction_filter/transaction_filters.dart'; import 'package:rxdart/rxdart.dart'; diff --git a/lib/core/database/services/transaction/transaction_service.dart b/lib/core/database/services/transaction/transaction_service.dart index 9b21ee9a..b0c3625f 100644 --- a/lib/core/database/services/transaction/transaction_service.dart +++ b/lib/core/database/services/transaction/transaction_service.dart @@ -7,6 +7,8 @@ import 'package:monekin/core/models/transaction/transaction.dart'; import 'package:monekin/core/presentation/widgets/transaction_filter/transaction_filters.dart'; import 'package:rxdart/rxdart.dart'; +import '../../../models/transaction/transaction_type.enum.dart'; + class TransactionQueryStatResult { int numberOfRes; double valueSum; diff --git a/lib/core/models/budget/budget.dart b/lib/core/models/budget/budget.dart index b88e7e2e..fb27b0c2 100644 --- a/lib/core/models/budget/budget.dart +++ b/lib/core/models/budget/budget.dart @@ -3,11 +3,12 @@ import 'package:monekin/core/database/app_db.dart'; import 'package:monekin/core/database/services/account/account_service.dart'; import 'package:monekin/core/models/date-utils/date_period.dart'; import 'package:monekin/core/models/date-utils/date_period_state.dart'; -import 'package:monekin/core/models/transaction/transaction.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; import 'package:monekin/core/presentation/widgets/transaction_filter/transaction_filters.dart'; import 'package:monekin/core/utils/date_utils.dart'; +import '../transaction/transaction_type.enum.dart'; + class Budget extends BudgetInDB { List? categories; List? accounts; diff --git a/lib/core/models/transaction/next_pay_status.enum.dart b/lib/core/models/transaction/next_pay_status.enum.dart new file mode 100644 index 00000000..93993bbc --- /dev/null +++ b/lib/core/models/transaction/next_pay_status.enum.dart @@ -0,0 +1,48 @@ +import 'package:flutter/material.dart'; +import 'package:monekin/core/presentation/app_colors.dart'; +import 'package:monekin/i18n/translations.g.dart'; + +enum NextPayStatus { + /// The payment date has not yet arrived, but it is very close + comingSoon, + + /// The payment should have already been made, that is, it was scheduled before the current date + delayed, + + /// The payment date has not yet arrived nor is it close + planified; + + Color color(BuildContext context) { + if (this == planified) { + return AppColors.of(context).primary; + } else if (this == delayed) { + return AppColors.of(context).danger; + } + + return Colors.amber; + } + + IconData get icon { + if (this == planified) { + return Icons.event_rounded; + } else if (this == delayed) { + return Icons.warning_rounded; + } + + return Icons.upcoming; + } + + String displayDaysToPay(BuildContext context, int days) { + final t = Translations.of(context); + + if (days == 0) { + return t.general.today; + } + + if (this == delayed) { + return 'Atrasado por ${days.abs()}d'; + } + + return 'In ${days.abs()} days'; + } +} diff --git a/lib/core/models/transaction/transaction.dart b/lib/core/models/transaction/transaction.dart index 003289a8..c88bca14 100644 --- a/lib/core/models/transaction/transaction.dart +++ b/lib/core/models/transaction/transaction.dart @@ -1,111 +1,17 @@ import 'package:flutter/material.dart'; import 'package:monekin/core/database/app_db.dart'; +import 'package:monekin/core/extensions/color.extensions.dart'; import 'package:monekin/core/models/account/account.dart'; import 'package:monekin/core/models/category/category.dart'; import 'package:monekin/core/models/date-utils/periodicity.dart'; import 'package:monekin/core/models/tags/tag.dart'; import 'package:monekin/core/models/transaction/recurrency_data.dart'; import 'package:monekin/core/models/transaction/rule_recurrent_limit.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; -import 'package:monekin/core/extensions/color.extensions.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; import 'package:monekin/i18n/translations.g.dart'; -import '../../presentation/app_colors.dart'; - -/// All the possible types of a transaction -enum TransactionType { - income, - expense, - transfer; - - String displayName(BuildContext context, {bool plural = false}) { - if (this == income) { - return t.transaction.types.income(n: plural ? 10 : 1); - } else if (this == expense) { - return t.transaction.types.expense(n: plural ? 10 : 1); - } else if (this == transfer) { - return t.transaction.types.transfer(n: plural ? 10 : 1); - } - - return ''; - } - - IconData get icon { - if (this == income) { - return Icons.south_east_rounded; - } else if (this == expense) { - return Icons.north_east_rounded; - } - - return Icons.swap_vert_rounded; - } - - /// Get the sign of this transactionType - IconData get mathIcon { - if (this == income) { - return Icons.add; - } else if (this == expense) { - return Icons.remove; - } - - return icon; - } - - Color color(BuildContext context) { - if (this == income) { - return AppColors.of(context).success; - } else if (this == expense) { - return AppColors.of(context).danger; - } - - return AppColors.of(context).brand; - } -} - -enum NextPayStatus { - /// The payment date has not yet arrived, but it is very close - comingSoon, - - /// The payment should have already been made, that is, it was scheduled before the current date - delayed, - - /// The payment date has not yet arrived nor is it close - planified; - - Color color(BuildContext context) { - if (this == planified) { - return AppColors.of(context).primary; - } else if (this == delayed) { - return AppColors.of(context).danger; - } - - return Colors.amber; - } - - IconData get icon { - if (this == planified) { - return Icons.event_rounded; - } else if (this == delayed) { - return Icons.warning_rounded; - } - - return Icons.upcoming; - } - - String displayDaysToPay(BuildContext context, int days) { - final t = Translations.of(context); - - if (days == 0) { - return t.general.today; - } - - if (this == delayed) { - return 'Atrasado por ${days.abs()}d'; - } - - return 'In ${days.abs()} days'; - } -} +import 'next_pay_status.enum.dart'; +import 'transaction_type.enum.dart'; class MoneyTransaction extends TransactionInDB { Category? category; diff --git a/lib/core/models/transaction/transaction_status.dart b/lib/core/models/transaction/transaction_status.enum.dart similarity index 100% rename from lib/core/models/transaction/transaction_status.dart rename to lib/core/models/transaction/transaction_status.enum.dart diff --git a/lib/core/models/transaction/transaction_type.enum.dart b/lib/core/models/transaction/transaction_type.enum.dart new file mode 100644 index 00000000..71b11d8b --- /dev/null +++ b/lib/core/models/transaction/transaction_type.enum.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; +import 'package:monekin/core/presentation/app_colors.dart'; +import 'package:monekin/i18n/translations.g.dart'; + +/// All the possible types of a transaction +enum TransactionType { + income, + expense, + transfer; + + String displayName(BuildContext context, {bool plural = false}) { + if (this == income) { + return t.transaction.types.income(n: plural ? 10 : 1); + } else if (this == expense) { + return t.transaction.types.expense(n: plural ? 10 : 1); + } else if (this == transfer) { + return t.transaction.types.transfer(n: plural ? 10 : 1); + } + + return ''; + } + + IconData get icon { + if (this == income) { + return Icons.south_east_rounded; + } else if (this == expense) { + return Icons.north_east_rounded; + } + + return Icons.swap_vert_rounded; + } + + /// Get the sign of this transactionType + IconData get mathIcon { + if (this == income) { + return Icons.add; + } else if (this == expense) { + return Icons.remove; + } + + return icon; + } + + Color color(BuildContext context) { + if (this == income) { + return AppColors.of(context).success; + } else if (this == expense) { + return AppColors.of(context).danger; + } + + return AppColors.of(context).brand; + } +} diff --git a/lib/core/presentation/widgets/transaction_filter/filter_sheet_modal.dart b/lib/core/presentation/widgets/transaction_filter/filter_sheet_modal.dart index 5eee1026..e986742f 100644 --- a/lib/core/presentation/widgets/transaction_filter/filter_sheet_modal.dart +++ b/lib/core/presentation/widgets/transaction_filter/filter_sheet_modal.dart @@ -7,8 +7,7 @@ import 'package:monekin/core/database/services/account/account_service.dart'; import 'package:monekin/core/database/services/category/category_service.dart'; import 'package:monekin/core/database/services/currency/currency_service.dart'; import 'package:monekin/core/database/services/tags/tags_service.dart'; -import 'package:monekin/core/models/transaction/transaction.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; import 'package:monekin/core/presentation/widgets/bottomSheetFooter.dart'; import 'package:monekin/core/presentation/widgets/date_form_field/date_field.dart'; import 'package:monekin/core/presentation/widgets/date_form_field/date_form_field.dart'; @@ -21,6 +20,7 @@ import 'package:monekin/core/presentation/widgets/transaction_filter/transaction import 'package:monekin/core/utils/text_field_utils.dart'; import 'package:monekin/i18n/translations.g.dart'; +import '../../../models/transaction/transaction_type.enum.dart'; import '../../app_colors.dart'; Future openFilterSheetModal( diff --git a/lib/core/presentation/widgets/transaction_filter/status_filter/transaction_status_filter.dart b/lib/core/presentation/widgets/transaction_filter/status_filter/transaction_status_filter.dart index bf8c7a86..54070b6f 100644 --- a/lib/core/presentation/widgets/transaction_filter/status_filter/transaction_status_filter.dart +++ b/lib/core/presentation/widgets/transaction_filter/status_filter/transaction_status_filter.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; import 'package:monekin/core/presentation/widgets/transaction_filter/status_filter/transaction_status_filter_chip.dart'; import 'package:monekin/i18n/translations.g.dart'; diff --git a/lib/core/presentation/widgets/transaction_filter/status_filter/transaction_status_filter_chip.dart b/lib/core/presentation/widgets/transaction_filter/status_filter/transaction_status_filter_chip.dart index 05a463c9..f122f8ad 100644 --- a/lib/core/presentation/widgets/transaction_filter/status_filter/transaction_status_filter_chip.dart +++ b/lib/core/presentation/widgets/transaction_filter/status_filter/transaction_status_filter_chip.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; import 'package:monekin/i18n/translations.g.dart'; import '../../../app_colors.dart'; diff --git a/lib/core/presentation/widgets/transaction_filter/transaction_filters.dart b/lib/core/presentation/widgets/transaction_filter/transaction_filters.dart index 171da7ce..4941e5a1 100644 --- a/lib/core/presentation/widgets/transaction_filter/transaction_filters.dart +++ b/lib/core/presentation/widgets/transaction_filter/transaction_filters.dart @@ -3,8 +3,9 @@ import 'package:drift/drift.dart'; import 'package:monekin/core/database/app_db.dart'; import 'package:monekin/core/database/services/account/account_service.dart'; import 'package:monekin/core/models/account/account.dart'; -import 'package:monekin/core/models/transaction/transaction.dart'; -import 'package:monekin/core/models/transaction/transaction_status.dart'; +import 'package:monekin/core/models/transaction/transaction_status.enum.dart'; + +import '../../../models/transaction/transaction_type.enum.dart'; part 'transaction_filters.g.dart'; diff --git a/lib/core/services/finance_health_service.dart b/lib/core/services/finance_health_service.dart index b5d17526..f6c4912d 100644 --- a/lib/core/services/finance_health_service.dart +++ b/lib/core/services/finance_health_service.dart @@ -4,12 +4,13 @@ import 'package:async/async.dart'; import 'package:flutter/material.dart'; import 'package:monekin/core/database/services/account/account_service.dart'; import 'package:monekin/core/database/services/transaction/transaction_service.dart'; -import 'package:monekin/core/models/transaction/transaction.dart'; import 'package:monekin/core/presentation/widgets/transaction_filter/transaction_filters.dart'; import 'package:monekin/core/utils/date_time_picker.dart'; import 'package:monekin/i18n/translations.g.dart'; import 'package:rxdart/rxdart.dart'; +import '../models/transaction/transaction_type.enum.dart'; + class FinanceHealthAttrScore { /// A number between 0 and 100 final double? score;