feat: send email to batch students
This commit is contained in:
@@ -335,3 +335,14 @@ def get_timetable_details(timetable):
|
|||||||
|
|
||||||
timetable = sorted(timetable, key=lambda k: k["date"])
|
timetable = sorted(timetable, key=lambda k: k["date"])
|
||||||
return timetable
|
return timetable
|
||||||
|
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def send_email_to_students(batch, subject, message):
|
||||||
|
frappe.only_for("Moderator")
|
||||||
|
students = frappe.get_all("Batch Student", {"parent": batch}, pluck="student")
|
||||||
|
frappe.sendmail(
|
||||||
|
recipients=students,
|
||||||
|
subject=subject,
|
||||||
|
message=message,
|
||||||
|
)
|
||||||
|
|||||||
@@ -2469,4 +2469,8 @@ select {
|
|||||||
-webkit-transform: rotate(180deg);
|
-webkit-transform: rotate(180deg);
|
||||||
-moz-transform: rotate(180deg);
|
-moz-transform: rotate(180deg);
|
||||||
transform: rotate(180deg);
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-body .ql-container {
|
||||||
|
max-height: unset !important;
|
||||||
}
|
}
|
||||||
@@ -75,6 +75,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-4">
|
||||||
|
<button class="btn btn-secondary btn-sm btn-email">
|
||||||
|
{{ _("Email to Students") }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% if batch_info.custom_component %}
|
{% if batch_info.custom_component %}
|
||||||
<div class="mt-4">
|
<div class="mt-4">
|
||||||
|
|||||||
@@ -63,6 +63,10 @@ frappe.ready(() => {
|
|||||||
$(document).on("click", ".slot", (e) => {
|
$(document).on("click", ".slot", (e) => {
|
||||||
mark_active_slot(e);
|
mark_active_slot(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(".btn-email").click((e) => {
|
||||||
|
email_to_students();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const create_live_class = (e) => {
|
const create_live_class = (e) => {
|
||||||
@@ -765,3 +769,47 @@ const get_background_color = (doctype) => {
|
|||||||
if (doctype == "LMS Assignment") return "var(--orange-400)";
|
if (doctype == "LMS Assignment") return "var(--orange-400)";
|
||||||
if (doctype == "LMS Live Class") return "var(--purple-400)";
|
if (doctype == "LMS Live Class") return "var(--purple-400)";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const email_to_students = () => {
|
||||||
|
this.email_dialog = new frappe.ui.Dialog({
|
||||||
|
title: __("Email to Students"),
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
fieldtype: "Data",
|
||||||
|
fieldname: "subject",
|
||||||
|
label: __("Subject"),
|
||||||
|
reqd: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldtype: "Text Editor",
|
||||||
|
fieldname: "message",
|
||||||
|
label: __("Message"),
|
||||||
|
reqd: 1,
|
||||||
|
max_height: 100,
|
||||||
|
min_lines: 5,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
primary_action: (values) => {
|
||||||
|
send_email(values);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
this.email_dialog.show();
|
||||||
|
};
|
||||||
|
|
||||||
|
const send_email = (values) => {
|
||||||
|
frappe.call({
|
||||||
|
method: "lms.lms.doctype.lms_batch.lms_batch.send_email_to_students",
|
||||||
|
args: {
|
||||||
|
batch: $(".class-details").data("batch"),
|
||||||
|
subject: values.subject,
|
||||||
|
message: values.message,
|
||||||
|
},
|
||||||
|
callback: (r) => {
|
||||||
|
this.email_dialog.hide();
|
||||||
|
frappe.show_alert({
|
||||||
|
message: __("Email sent successfully"),
|
||||||
|
indicator: "green",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user