From f9706f10e1e6ba462f1187cad9b5f2273c214537 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Tue, 4 Feb 2025 09:55:10 +0530 Subject: [PATCH 1/4] feat: reminder notification for incomplete payments --- frontend/src/components/BatchCourses.vue | 1 + .../course_chapter/course_chapter.json | 14 +++++++- .../payment_completion_reminder/__init__.py | 0 .../payment_completion_reminder.html | 11 ++++++ .../payment_completion_reminder.json | 35 +++++++++++++++++++ .../payment_completion_reminder.md | 1 + .../payment_completion_reminder.py | 5 +++ .../payment_completion_reminder.txt | 11 ++++++ 8 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 lms/lms/notification/payment_completion_reminder/__init__.py create mode 100644 lms/lms/notification/payment_completion_reminder/payment_completion_reminder.html create mode 100644 lms/lms/notification/payment_completion_reminder/payment_completion_reminder.json create mode 100644 lms/lms/notification/payment_completion_reminder/payment_completion_reminder.md create mode 100644 lms/lms/notification/payment_completion_reminder/payment_completion_reminder.py create mode 100644 lms/lms/notification/payment_completion_reminder/payment_completion_reminder.txt diff --git a/frontend/src/components/BatchCourses.vue b/frontend/src/components/BatchCourses.vue index 03ae3c7e..a63fdd09 100644 --- a/frontend/src/components/BatchCourses.vue +++ b/frontend/src/components/BatchCourses.vue @@ -18,6 +18,7 @@ row-key="batch_course" :options="{ showTooltip: false, + selectable: user.data?.is_student ? false : true, getRowRoute: (row) => ({ name: 'CourseDetail', params: { courseName: row.name }, diff --git a/lms/lms/doctype/course_chapter/course_chapter.json b/lms/lms/doctype/course_chapter/course_chapter.json index 55d4817d..d4e58072 100644 --- a/lms/lms/doctype/course_chapter/course_chapter.json +++ b/lms/lms/doctype/course_chapter/course_chapter.json @@ -111,7 +111,7 @@ "link_fieldname": "chapter" } ], - "modified": "2024-11-15 12:03:31.370943", + "modified": "2025-02-03 15:23:17.125617", "modified_by": "Administrator", "module": "LMS", "name": "Course Chapter", @@ -139,6 +139,18 @@ "role": "LMS Student", "select": 1, "share": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Course Creator", + "share": 1, + "write": 1 } ], "search_fields": "title", diff --git a/lms/lms/notification/payment_completion_reminder/__init__.py b/lms/lms/notification/payment_completion_reminder/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.html b/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.html new file mode 100644 index 00000000..179e4856 --- /dev/null +++ b/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.html @@ -0,0 +1,11 @@ +
+

Hi {{ doc.member_name }},

+

We noticed that you started enrolling in the {{ doc.payment_for_document_type.split(" ")[-1] }} {{ frappe.db.get_value(doc.payment_for_document_type, doc.payment_for_document, "title") }} but didn’t complete your payment.

+

We have a limited number of seats, and they won't be available for long!

+

Don’t miss this opportunity to enhance your skills. Click below to complete your enrollment:

+

+ 👉 Complete Your Enrollment +

+

If you have any questions or need assistance, feel free to reach out to our support team.

+

Looking forward to seeing you enrolled!

+
\ No newline at end of file diff --git a/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.json b/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.json new file mode 100644 index 00000000..26860544 --- /dev/null +++ b/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.json @@ -0,0 +1,35 @@ +{ + "attach_print": 0, + "channel": "Email", + "condition": "doc.payment_received == 0", + "creation": "2025-02-03 15:52:32.508093", + "date_changed": "creation", + "days_in_advance": 1, + "docstatus": 0, + "doctype": "Notification", + "document_type": "LMS Payment", + "enabled": 1, + "event": "Days After", + "idx": 0, + "is_standard": 1, + "message": "
\n

Hi {{ doc.member_name }},

\n

We noticed that you started enrolling in the {{ doc.payment_for_document_type.split(\" \")[-1] }} {{ frappe.db.get_value(doc.payment_for_document_type, doc.payment_for_document, \"title\") }} but didn\u2019t complete your payment.

\n

We have a limited number of seats, and they won't be available for long!

\n

Don\u2019t miss this opportunity to enhance your skills. Click below to complete your enrollment:

\n

\n \ud83d\udc49 Complete Your Enrollment\n

\n

If you have any questions or need assistance, feel free to reach out to our support team.

\n

Looking forward to seeing you enrolled!

\n
", + "message_type": "HTML", + "minutes_offset": 0, + "modified": "2025-02-03 16:14:24.568958", + "modified_by": "sayali@frappe.io", + "module": "LMS", + "name": "Payment Completion Reminder", + "owner": "sayali@frappe.io", + "recipients": [ + { + "receiver_by_document_field": "member" + }, + { + "cc": "", + "receiver_by_role": "Moderator" + } + ], + "send_system_notification": 0, + "send_to_all_assignees": 0, + "subject": " Complete Your Enrollment - Don't miss out!" +} \ No newline at end of file diff --git a/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.md b/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.md new file mode 100644 index 00000000..f96f7f9a --- /dev/null +++ b/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.md @@ -0,0 +1 @@ +

Add your message here

diff --git a/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.py b/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.py new file mode 100644 index 00000000..e1ada619 --- /dev/null +++ b/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.py @@ -0,0 +1,5 @@ +import frappe + +def get_context(context): + # do your magic here + pass diff --git a/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.txt b/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.txt new file mode 100644 index 00000000..28e1c47e --- /dev/null +++ b/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.txt @@ -0,0 +1,11 @@ +Hi {{ doc.member_name }}, + +We noticed that you started enrolling in the {{ doc.payment_for_document_type.split(" ")[-1] }} {{ frappe.db.get_value(doc.payment_for_document_type, doc.payment_for_document, "title") }} but didn’t complete your payment. We have limited number of seats and they won't be empty for long. + +Don’t miss this opportunity to enhance your skills. Click below to complete your enrollment now: + +[👉 Complete Your Enrollment](/lms/billing/{{ doc.payment_for_document_type.split(" ")[-1].lower()/doc.payment_for_document }}) + +If you have any questions or need assistance, feel free to reach out to our support team. + +Looking forward to seeing you enrolled! From 3ff6c962735d2d6be58580d5644be42fa7cbc8de Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Tue, 4 Feb 2025 11:15:39 +0530 Subject: [PATCH 2/4] fix: top aligned all batch feedback rows --- frontend/src/components/BatchFeedback.vue | 8 +++++++- frontend/src/components/Modals/BatchStudentProgress.vue | 2 +- frontend/src/components/StudentHeatmap.vue | 4 ++-- frontend/src/pages/Batch.vue | 2 +- lms/lms/api.py | 2 +- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/BatchFeedback.vue b/frontend/src/components/BatchFeedback.vue index 380d0ba8..6a8b5d65 100644 --- a/frontend/src/components/BatchFeedback.vue +++ b/frontend/src/components/BatchFeedback.vue @@ -67,7 +67,7 @@ diff --git a/frontend/src/components/StudentHeatmap.vue b/frontend/src/components/StudentHeatmap.vue index 5654e4c0..850f63f4 100644 --- a/frontend/src/components/StudentHeatmap.vue +++ b/frontend/src/components/StudentHeatmap.vue @@ -27,7 +27,7 @@ const props = defineProps({ member: { type: String, }, - base_days: { + days: { type: Number, default: 200, }, @@ -42,7 +42,7 @@ const heatmap = createResource({ makeParams(values) { return { member: values.member, - base_days: props.base_days, + base_days: props.days, } }, auto: false, diff --git a/frontend/src/pages/Batch.vue b/frontend/src/pages/Batch.vue index 3c9288c4..5632ebee 100644 --- a/frontend/src/pages/Batch.vue +++ b/frontend/src/pages/Batch.vue @@ -21,7 +21,7 @@ -
+
Date: Tue, 4 Feb 2025 11:19:13 +0530 Subject: [PATCH 3/4] fix: changed heatmap base days back to 200 --- lms/lms/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/lms/api.py b/lms/lms/api.py index feb99232..7ad04441 100644 --- a/lms/lms/api.py +++ b/lms/lms/api.py @@ -1087,7 +1087,7 @@ def mark_lesson_progress(course, chapter_number, lesson_number): @frappe.whitelist() -def get_heatmap_data(member=None, base_days=300): +def get_heatmap_data(member=None, base_days=200): if not member: member = frappe.session.user From 661748adc17057708775144bcc076829023cffe5 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Tue, 4 Feb 2025 11:27:21 +0530 Subject: [PATCH 4/4] style: improved formatting --- frontend/src/components/BatchFeedback.vue | 2 +- .../payment_completion_reminder/payment_completion_reminder.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/BatchFeedback.vue b/frontend/src/components/BatchFeedback.vue index 6a8b5d65..fce37cf1 100644 --- a/frontend/src/components/BatchFeedback.vue +++ b/frontend/src/components/BatchFeedback.vue @@ -242,4 +242,4 @@ const feedbackColumns = computed(() => { align-items: start; padding: 0.25rem 0; } - \ No newline at end of file + diff --git a/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.py b/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.py index e1ada619..80b7b873 100644 --- a/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.py +++ b/lms/lms/notification/payment_completion_reminder/payment_completion_reminder.py @@ -1,5 +1,6 @@ import frappe + def get_context(context): # do your magic here pass