bookingToCashMigrate function

Future<String?> bookingToCashMigrate(
  1. dynamic callback(
    1. String
    )
)

Implementation

Future<String?> bookingToCashMigrate(Function(String) callback) async {
  try{
    // double percentage = 0;
    var querySnapshot = await FirebaseFirestore.instance.collection("booking").get();
    // var oneStep = 100/querySnapshot.docs.length;

    Map<String, dynamic> _toWrite = {};

    for (var item in querySnapshot.docs) {
      if (!item.exists)
        continue;
      var _data = OrderData.fromJson(item.id, item.data());

      if (_data.status == "temp" || _data.delete)
        continue;

      setDataToCalculate(_data, null);
      OrderDataCache order;
      if (_data.ver4){
        cartCurrentProvider = ProviderData.createEmpty()..id = _data.providerId;
        PriceTotalForCardData _prices = cartGetTotalForAllServices2(_data.products);
        int _count = 0;
        String _name = "";
        for (var item in _data.products) {
          _count += (item.countProduct);
          if (_name.isEmpty)
            _name = getTextByLocale(item.name, locale);
        }
        _name += " + $_count";
        order = OrderDataCache(
          id: _data.id,
          time: _data.time,
          timeModify: _data.timeModify,
          status: _data.status,
          delete: _data.delete,
          customerId: _data.customerId,
          customerName: _data.customer,
          providerId: _data.providerId,
          providerName: _data.provider,
          countProducts: _count,
          subtotal: _prices.subtotal,
          toAdmin: _prices.toAdmin,
          toDriver: 0,
          discount: _prices.discount,
          tax: _prices.tax,
          total: _prices.total,
          couponId: _data.couponId,
          paymentMethod: _data.paymentMethod,
          finished: _data.finished,
          viewByAdmin: _data.viewByAdmin,
          viewByProvider: _data.viewByProvider,
          providerImage: _data.providerAvatar,
          customerImage: _data.customerAvatar,
          name: _name,
        );
      }else{
        order = OrderDataCache(
          id: item.id,
          time: _data.time,
          timeModify: _data.timeModify,
          status: _data.status,
          delete: _data.delete,
          customerId: _data.customerId,
          customerName: _data.customer,
          providerId: _data.providerId,
          providerName: _data.provider,
          countProducts: _data.count,
          subtotal: getSubTotalWithCoupon(), // getTotal(),
          toAdmin: getSubTotalWithCoupon()*_data.taxAdmin/100, // getTotal
          toDriver: 0,
          discount: getCoupon(),
          tax: getTax(),
          total: getTotal(),
          couponId: _data.couponId,
          paymentMethod: _data.paymentMethod,
          finished: _data.finished,
          viewByAdmin: true,
          viewByProvider: _data.viewByProvider,
          providerImage: _data.providerAvatar,
          customerImage: _data.customerAvatar,
          name: getTextByLocale(_data.service, locale),
        );
      }
      _toWrite.addAll({
        order.id: order.toJson(migrate: true),
      });
      // percentage += oneStep;

    }
    FirebaseFirestore.instance.collection("cache").doc("orders").set(_toWrite, SetOptions(merge:true)).then((value) async {
      await FirebaseFirestore.instance.collection("settings").doc("main").set({
        "bookingToCashMigrate": true
      }, SetOptions(merge:true));
      callback("");
    }).onError((error, stackTrace) {
      callback(error.toString());
    });
  }catch(ex){
    return "bookingToCashMigrate " + ex.toString();
  }
  return null;
}