check_if_coupon_is_valid function
dynamic
check_if_coupon_is_valid(
- String coupon_id,
- BuildContext context,
- String valid_message,
- String invalid_message,
Implementation
check_if_coupon_is_valid(
String coupon_id,
BuildContext context,
String valid_message,
String invalid_message,
) async {
String? user_id = FirebaseAuth.instance.currentUser?.uid;
bool coupon_is_valid = false;
if (user_id != null) {
DocumentSnapshot coupon_snapshot = await FirebaseFirestore.instance
.collection("coupons")
.doc(coupon_id)
.get();
if (coupon_snapshot.exists) {
Coupon coupon = Coupon.from_snapshot(
coupon_snapshot.id,
coupon_snapshot.data() as Map<String, dynamic>,
);
if (coupon.user_id.isEmpty || coupon.user_id == user_id) {
int date_diference = coupon.date_expiry.compareTo(DateTime.now());
if (!coupon.used) {
if (date_diference > 0) {
await coupon_snapshot.reference.update({
"used": true,
"user_id": user_id,
"date_used": FieldValue.serverTimestamp(),
});
coupon_is_valid = true;
await FirebaseFirestore.instance
.collection("users")
.doc(user_id)
.update({
"products_acquired": FieldValue.arrayUnion([coupon.product_id]),
});
}
}
}
}
ScaffoldMessenger.of(context).showMaterialBanner(
MaterialBanner(
content: Text(
coupon_is_valid ? valid_message : invalid_message,
style: TextStyle(
color: Colors.white,
),
),
leading: Icon(
coupon_is_valid ? Icons.check_circle_rounded : Icons.info,
color: Colors.white,
),
backgroundColor: coupon_is_valid ? Colors.green : Colors.red,
actions: [
IconButton(
icon: const Icon(
Icons.close,
color: Colors.white,
),
onPressed: () {
ScaffoldMessenger.of(context).hideCurrentMaterialBanner();
},
),
],
),
);
Timer(
Duration(seconds: coupon_is_valid ? 2 : 2),
() {
ScaffoldMessenger.of(context).hideCurrentMaterialBanner();
Timer(
Duration(milliseconds: 300),
() {
if (coupon_is_valid) open_screen("home/courses");
},
);
},
);
} else {
open_screen("login");
}
}