fromEntityPlus static method

Future<OrderModel?> fromEntityPlus(
  1. String documentID,
  2. OrderEntity? entity, {
  3. String? appId,
})

Implementation

static Future<OrderModel?> fromEntityPlus(
    String documentID, OrderEntity? entity,
    {String? appId}) async {
  if (entity == null) return null;

  MemberModel? customerHolder;
  if (entity.customerId != null) {
    try {
      customerHolder =
          await memberRepository(appId: appId)!.get(entity.customerId);
    } on Exception catch (e) {
      print('Error whilst trying to initialise customer');
      print('Error whilst retrieving member with id ${entity.customerId}');
      print('Exception: $e');
    }
  }

  var counter = 0;
  return OrderModel(
    documentID: documentID,
    appId: entity.appId ?? '',
    customer: customerHolder,
    name: entity.name,
    email: entity.email,
    shipStreet1: entity.shipStreet1,
    shipStreet2: entity.shipStreet2,
    shipCity: entity.shipCity,
    shipState: entity.shipState,
    postcode: entity.postcode,
    country: entity.country,
    invoiceSame: entity.invoiceSame,
    invoiceStreet1: entity.invoiceStreet1,
    invoiceStreet2: entity.invoiceStreet2,
    invoiceCity: entity.invoiceCity,
    invoiceState: entity.invoiceState,
    invoicePostcode: entity.invoicePostcode,
    invoiceCountry: entity.invoiceCountry,
    products: entity.products == null
        ? null
        : List<OrderItemModel>.from(
            await Future.wait(entity.products!.map((item) {
            counter++;
            return OrderItemModel.fromEntityPlus(counter.toString(), item,
                appId: appId);
          }).toList())),
    totalPrice: entity.totalPrice,
    currency: entity.currency,
    paymentReference: entity.paymentReference,
    shipmentReference: entity.shipmentReference,
    deliveryReference: entity.deliveryReference,
    paymentNote: entity.paymentNote,
    shipmentNote: entity.shipmentNote,
    deliveryNote: entity.deliveryNote,
    status: toOrderStatus(entity.status),
    timeStamp: entity.timeStamp,
  );
}