bookingToCashMigrate function
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;
}