I want to add a tax if the given period is expired for the next expiration date. I use;
final now = DateTime.now();
final expirationDate = e['expired'].toDate();
final bool isExpired = expirationDate.isBefore(now);
After this, the tax adds in every minute until the next expiration date. How to solve this problem. My adding tax code like this;
var amount = int.parse(e['amount']);
var tax = amount + 4000;
var amountWithTax = tax.toString();
this my code sofar;
StreamBuilder(
stream: FirebaseFirestore.instance
.collection('Data')
.doc(uid)
.collection('fine')
.where('mode', isEqualTo: 'notpaid')
.snapshots(),
builder: ((context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
}
var datetime = DateTime.now();
var ds = snapshot.data!.docs;
final now = DateTime.now();
for (int i = 0; i < ds.length; i++) {
final expirationDate = ds[i]['expired'].toDate();
final bool isExpired = expirationDate.isBefore(now);
print(isExpired);
//not expired
if (isExpired == false) {
return Card(
color: Colors.green,
child: Text(ds[i]['description']),
);
} else {
final Timestamp timestamp1 = ds[i]['expired'] as Timestamp;
final DateTime dateTime1 = timestamp1.toDate();
final nextExpireDate = dateTime1.add(Duration(days: 7));
final expiredMinutes = nextExpireDate.difference(now).inDays;
if (expiredMinutes == -1) {
var amount = int.parse(ds[i]['amount']);
var withTax = amount + 1000;
var fineWithTax = withTax.toString();
print(expiredMinutes);
print(fineWithTax);
FirebaseFirestore.instance
.collection('Data')
.doc(uid)
.collection('fine')
.doc(ds[i].id)
.update({
'status': 1,
'paybefore': dateTime1.add(const Duration(days: 7)),
'amount': fineWithTax.toString(),
});
}
return Card(
child: Text(ds[i]['amount']),
);
The error of this code is, that tax is added every second.