budget mockup, account settings & transactions filter

This commit is contained in:
2024-02-18 00:08:17 +01:00
parent b2da8436e4
commit 44279796c4
18 changed files with 367 additions and 32 deletions

View File

@@ -1,4 +1,3 @@
import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:formz/formz.dart';
@@ -8,6 +7,7 @@ import 'package:tunas/domains/transaction/models/transaction_date.dart';
import 'package:tunas/domains/transaction/models/transaction_description.dart';
import 'package:tunas/domains/transaction/models/transaction_line.dart';
import 'package:tunas/domains/transaction/models/transaction_value.dart';
import 'package:tunas/repositories/metadata/models/category.dart';
import 'package:tunas/repositories/transactions/models/transaction.dart';
import 'package:tunas/repositories/transactions/transactions_repository.dart';
import 'package:uuid/uuid.dart';
@@ -32,6 +32,7 @@ class TransactionBloc extends Bloc<TransactionEvent, TransactionState> {
on<TransactionAdd>(_onTransactionAddDialog);
on<TransactionSetCurrent>(_onTransactionSetCurrent);
on<TransactionDeleteCurrent>(_onTransactionDeleteCurrent);
on<TransactionFilterCategory>(_onTransactionFilterCategory);
_transactionsRepository
.getTransactionsStream()
@@ -43,6 +44,7 @@ class TransactionBloc extends Bloc<TransactionEvent, TransactionState> {
emit(state.copyWith(
transactions: event.transactions,
transactionsLines: computeResult.list,
transactionsLinesFiltered: _applyCategoryFilter(computeResult.list),
globalTotal: computeResult.globalTotal,
accountsTotals: computeResult.accountsTotals,
));
@@ -172,6 +174,7 @@ class TransactionBloc extends Bloc<TransactionEvent, TransactionState> {
transactionValue: const TransactionValue.pure(),
transactions: transactions,
transactionsLines: computeResult.list,
transactionsLinesFiltered: _applyCategoryFilter(computeResult.list),
globalTotal: computeResult.globalTotal,
accountsTotals: computeResult.accountsTotals,
));
@@ -221,10 +224,33 @@ class TransactionBloc extends Bloc<TransactionEvent, TransactionState> {
transactionValue: const TransactionValue.pure(),
transactions: transactions,
transactionsLines: computeResult.list,
transactionsLinesFiltered: _applyCategoryFilter(computeResult.list),
globalTotal: computeResult.globalTotal,
accountsTotals: computeResult.accountsTotals,
));
}
}
_onTransactionFilterCategory(TransactionFilterCategory event, Emitter<TransactionState> emit) {
List<TransactionLine> transactionsLinesFiltered = state.transactionsLines;
String? categoryLabel = event.category?.label;
if (categoryLabel != null) {
transactionsLinesFiltered = state.transactionsLines.where((transaction) => transaction.transaction.category == categoryLabel).toList();
}
emit(state.copyWith(
transactionsLinesFiltered: transactionsLinesFiltered,
categoryFilter: event.category,
));
}
List<TransactionLine> _applyCategoryFilter(List<TransactionLine> transactionsLines) {
List<TransactionLine> transactionsLinesFiltered = transactionsLines;
String? categoryLabel = state.categoryFilter?.label;
if (categoryLabel != null) {
transactionsLinesFiltered = state.transactionsLines.where((transaction) => transaction.transaction.category == categoryLabel).toList();
}
return transactionsLinesFiltered;
}
}