save_certificate function
dynamic
save_certificate({
- required User user,
- required Map user_info,
- required String course_id,
- required bool has_certificate,
- required bool show_has_certificate,
- required BuildContext context,
Implementation
save_certificate({
required User user,
required Map user_info,
required String course_id,
required bool has_certificate,
required bool show_has_certificate,
required BuildContext context,
}) async {
if (!has_certificate) {
FirebaseFirestore.instance.collection("certificates").add({
"course_id": course_id,
"date": FieldValue.serverTimestamp(),
"user_id": user.uid,
}).then((new_certificate) {
FirebaseFirestore.instance.collection("users").doc(user.uid).update({
"certificates": FieldValue.arrayUnion([new_certificate.id]),
}).catchError((err) => print(err));
FirebaseFirestore.instance
.collection('templates')
.doc("certificate")
.get()
.then((DocumentSnapshot certificate_template) async {
DocumentSnapshot course_snapshot = await FirebaseFirestore.instance
.collection("courses")
.doc(course_id)
.get();
String course_name = course_snapshot.get("name");
String html_certificate = await get_html_certificate(
course_name: course_name,
user_name: user_info["firstname"] + " " + user_info["lastname"],
date: timestamp_to_date(certificate_template.get("date")),
id: new_certificate.id,
);
send_email(
to: user.email!,
subject:
"Hello ${user_info["firstname"]} ${user_info["lastname"]}, here is your $course_name certificate!",
text: "New Message",
html: html_certificate,
)
.then((value) => {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Certificate email sent! ✉️"),
duration: Duration(seconds: 3),
),
),
})
.catchError((err) => print(err));
});
}).catchError((err) {
print(err);
});
} else {
if (show_has_certificate) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("You already have this certificate 👍"),
duration: Duration(seconds: 3),
),
);
}
}
}