budget mockup, account settings & transactions filter
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user