Implemented settings, new scan, enhanced UI/UX

This commit is contained in:
Dennis Nemec
2025-11-04 16:52:39 +01:00
parent b19a6e1cd4
commit 7ea9108f62
79 changed files with 3306 additions and 566 deletions

View File

@ -5,6 +5,7 @@ import 'package:hl_lieferservice/dto/discount_update_response.dart';
import 'package:hl_lieferservice/feature/delivery/detail/bloc/delivery_event.dart';
import 'package:hl_lieferservice/feature/delivery/detail/bloc/delivery_state.dart';
import 'package:hl_lieferservice/feature/delivery/detail/repository/delivery_repository.dart';
import 'package:hl_lieferservice/feature/delivery/detail/repository/note_repository.dart';
import 'package:hl_lieferservice/widget/operations/bloc/operation_bloc.dart';
import 'package:hl_lieferservice/widget/operations/bloc/operation_event.dart';
@ -15,21 +16,62 @@ import '../../../../model/delivery.dart' as model;
class DeliveryBloc extends Bloc<DeliveryEvent, DeliveryState> {
OperationBloc opBloc;
DeliveryRepository repository;
NoteRepository noteRepository;
DeliveryBloc({required this.opBloc, required this.repository})
: super(DeliveryInitial()) {
DeliveryBloc({
required this.opBloc,
required this.repository,
required this.noteRepository,
}) : super(DeliveryInitial()) {
on<UnscanArticleEvent>(_unscan);
on<ResetScanAmountEvent>(_resetAmount);
on<LoadDeliveryEvent>(_load);
on<AddDiscountEvent>(_addDiscount);
on<RemoveDiscountEvent>(_removeDiscount);
on<UpdateDiscountEvent>(_updateDiscount);
on<UpdateDeliveryOption>(_updateDeliveryOptions);
on<UpdateSelectedPaymentMethod>(_updatePayment);
on<UpdateDeliveryOptionEvent>(_updateDeliveryOptions);
on<UpdateSelectedPaymentMethodEvent>(_updatePayment);
on<FinishDeliveryEvent>(_finishDelivery);
}
void _finishDelivery(
FinishDeliveryEvent event,
Emitter<DeliveryState> emit,
) async {
final currentState = state;
opBloc.add(LoadOperation());
if (currentState is DeliveryLoaded) {
try {
model.Delivery newDelivery = event.delivery.copyWith();
newDelivery.state = model.DeliveryState.finished;
for (final option in event.delivery.options) {
debugPrint("VALUE=${option.value};KEY=${option.key}");
}
await repository.updateDelivery(newDelivery);
await noteRepository.addNamedImage(
event.delivery.id,
event.driverSignature,
"delivery_${event.delivery.id}_signature_driver.jpg",
);
await noteRepository.addNamedImage(
event.delivery.id,
event.customerSignature,
"delivery_${event.delivery.id}_signature_customer.jpg",
);
emit(DeliveryFinished(delivery: newDelivery));
opBloc.add(FinishOperation());
} catch (e, st) {
opBloc.add(FailOperation(message: "Failed to update delivery"));
debugPrint(st.toString());
}
}
}
void _updatePayment(
UpdateSelectedPaymentMethod event,
UpdateSelectedPaymentMethodEvent event,
Emitter<DeliveryState> emit,
) {
final currentState = state;
@ -44,7 +86,7 @@ class DeliveryBloc extends Bloc<DeliveryEvent, DeliveryState> {
}
void _updateDeliveryOptions(
UpdateDeliveryOption event,
UpdateDeliveryOptionEvent event,
Emitter<DeliveryState> emit,
) {
final currentState = state;
@ -53,7 +95,11 @@ class DeliveryBloc extends Bloc<DeliveryEvent, DeliveryState> {
List<model.DeliveryOption> options =
currentState.delivery.options.map((option) {
if (option.key == event.key) {
return option.copyWith(value: event.value.toString());
if (option.numerical) {
return option.copyWith(value: event.value);
} else {
return option.copyWith(value: event.value == true ? "1" : "0");
}
}
return option;

View File

@ -1,3 +1,5 @@
import 'dart:typed_data';
import 'package:hl_lieferservice/model/delivery.dart';
import 'package:hl_lieferservice/model/tour.dart';
@ -57,15 +59,27 @@ class UpdateDiscountEvent extends DeliveryEvent {
int? value;
}
class UpdateDeliveryOption extends DeliveryEvent {
UpdateDeliveryOption({required this.key, required this.value});
class UpdateDeliveryOptionEvent extends DeliveryEvent {
UpdateDeliveryOptionEvent({required this.key, required this.value});
String key;
dynamic value;
}
class UpdateSelectedPaymentMethod extends DeliveryEvent {
UpdateSelectedPaymentMethod({required this.payment});
class UpdateSelectedPaymentMethodEvent extends DeliveryEvent {
UpdateSelectedPaymentMethodEvent({required this.payment});
Payment payment;
}
class FinishDeliveryEvent extends DeliveryEvent {
FinishDeliveryEvent({
required this.delivery,
required this.driverSignature,
required this.customerSignature,
});
Delivery delivery;
Uint8List customerSignature;
Uint8List driverSignature;
}

View File

@ -12,4 +12,14 @@ class DeliveryLoaded extends DeliveryState {
DeliveryLoaded copyWith(Delivery? delivery) {
return DeliveryLoaded(delivery: delivery ?? this.delivery);
}
}
}
class DeliveryFinished extends DeliveryState {
DeliveryFinished({required this.delivery});
Delivery delivery;
DeliveryFinished copyWith(Delivery? delivery) {
return DeliveryFinished(delivery: delivery ?? this.delivery);
}
}

View File

@ -41,4 +41,4 @@ class RemoveImageNote extends NoteEvent {
final String objectId;
final String deliveryId;
}
}