Files
Holzleitner-Lieferservice-App/lib/dto/delivery_update.dart
2025-11-04 16:52:39 +01:00

84 lines
2.1 KiB
Dart

import 'package:hl_lieferservice/model/delivery.dart';
import 'package:intl/intl.dart';
import 'package:json_annotation/json_annotation.dart';
part 'delivery_update.g.dart';
@JsonSerializable(fieldRename: FieldRename.snake)
class DeliveryOptionUpdateDTO {
DeliveryOptionUpdateDTO({
required this.numerical,
required this.value,
required this.key,
});
bool numerical;
String value;
String key;
factory DeliveryOptionUpdateDTO.fromJson(Map<String, dynamic> json) =>
_$DeliveryOptionUpdateDTOFromJson(json);
Map<dynamic, dynamic> toJson() => _$DeliveryOptionUpdateDTOToJson(this);
factory DeliveryOptionUpdateDTO.fromEntity(DeliveryOption option) {
return DeliveryOptionUpdateDTO(
numerical: option.numerical,
value: option.value,
key: option.key,
);
}
}
@JsonSerializable(fieldRename: FieldRename.snake)
class DeliveryUpdateDTO {
DeliveryUpdateDTO({
required this.deliveryId,
this.finishedDate,
this.selectedPaymentMethodId,
this.options,
this.state,
this.carId,
});
String deliveryId;
String? finishedDate;
String? state;
String? carId;
String? selectedPaymentMethodId;
List<DeliveryOptionUpdateDTO>? options;
factory DeliveryUpdateDTO.fromJson(Map<String, dynamic> json) =>
_$DeliveryUpdateDTOFromJson(json);
factory DeliveryUpdateDTO.fromEntity(Delivery delivery) {
String state = "";
switch (delivery.state) {
case DeliveryState.finished:
state = "geliefert";
break;
case DeliveryState.ongoing:
state = "laufend";
break;
case DeliveryState.onhold:
state = "vertagt";
break;
case DeliveryState.canceled:
state = "abgebrochen";
break;
}
return DeliveryUpdateDTO(
deliveryId: delivery.id,
state: state,
carId: delivery.carId?.toString() ,
selectedPaymentMethodId: delivery.payment.id,
options: delivery.options.map(DeliveryOptionUpdateDTO.fromEntity).toList(),
finishedDate: DateTime.now().millisecondsSinceEpoch.toString()
);
}
Map<dynamic, dynamic> toJson() => _$DeliveryUpdateDTOToJson(this);
}