# Conflicts:
#	lib/presentation/navigation/app_router.dart
#	pubspec.yaml
This commit is contained in:
2026-08-11 00:14:00 +03:00
parent c9b8d143d1
commit 182be1049b
351 changed files with 24566 additions and 22898 deletions

View File

@@ -0,0 +1,81 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../domain/usecase/get_fine_details_usecase.dart';
import '../../domain/usecase/pay_fine_usecase.dart';
import '../event/fine_payment_event.dart';
import '../state/fine_payment_state.dart';
class FinePaymentBloc extends Bloc<FinePaymentEvent, FinePaymentState> {
final GetFineDetailsUsecase getFineDetailsUsecase;
final PayFineUsecase payFineUsecase;
FinePaymentBloc({
required this.getFineDetailsUsecase,
required this.payFineUsecase,
}) : super(const FinePaymentState()) {
on<FetchFineDetails>(_onFetchFineDetails);
on<FinePaymentCardChanged>(_onCardChanged);
on<SelectFineBalancePressed>(_onSelectBalance);
on<PayFineSubmitted>(_onPayFineSubmitted);
}
Future<void> _onFetchFineDetails(
FetchFineDetails event,
Emitter<FinePaymentState> emit,
) async {
emit(state.copyWith(status: FinePaymentStatus.loading));
try {
final fine = await getFineDetailsUsecase(event.fineId);
// emit(state.copyWith(status: FinePaymentStatus.initial, fine: fine));
} catch (e) {
emit(
state.copyWith(
status: FinePaymentStatus.failure,
errorMessage: 'Не удалось загрузить данные о штрафе',
),
);
}
}
void _onCardChanged(
FinePaymentCardChanged event,
Emitter<FinePaymentState> emit,
) {
emit(state.copyWith(selectedCard: event.card, useBalance: false));
}
void _onSelectBalance(
SelectFineBalancePressed event,
Emitter<FinePaymentState> emit,
) {
emit(state.copyWith(useBalance: true, selectedCard: null));
}
Future<void> _onPayFineSubmitted(
PayFineSubmitted event,
Emitter<FinePaymentState> emit,
) async {
if (state.fine == null) return;
emit(state.copyWith(status: FinePaymentStatus.loading));
try {
await payFineUsecase(
orderId: state.fine!.id,
cardId: state.useBalance ? null : state.selectedCard?.id,
isBalance: state.useBalance,
);
emit(
state.copyWith(
status: FinePaymentStatus.success,
paymentCompleted: true,
),
);
} catch (e) {
emit(
state.copyWith(
status: FinePaymentStatus.failure,
errorMessage: e.toString(),
),
);
}
}
}