diff --git a/apps/dashboard/src/lib/components/Courses/components/Card/index.svelte b/apps/dashboard/src/lib/components/Courses/components/Card/index.svelte
index f923f991..44886a59 100644
--- a/apps/dashboard/src/lib/components/Courses/components/Card/index.svelte
+++ b/apps/dashboard/src/lib/components/Courses/components/Card/index.svelte
@@ -12,6 +12,7 @@
export let isPublished = false;
export let cost = 0;
export let totalLessons = 0;
+ export let totalStudents = 0;
export let currency = 'NGN';
export let isOnLandingPage = false;
export let isLMS = false;
@@ -46,7 +47,8 @@
{totalLessons} lessons
@@ -81,6 +83,11 @@
variant={VARIANTS.OUTLINED}
className="rounded-none text-primary-600"
/>
+ {:else if !isOnLandingPage}
+
+
{totalStudents} students
+
+
{/if}
diff --git a/apps/dashboard/src/lib/components/Courses/index.svelte b/apps/dashboard/src/lib/components/Courses/index.svelte
index f0a87c0d..bc920ef7 100644
--- a/apps/dashboard/src/lib/components/Courses/index.svelte
+++ b/apps/dashboard/src/lib/components/Courses/index.svelte
@@ -40,6 +40,7 @@
cost={courseData.cost}
currency={courseData.currency}
totalLessons={courseData.total_lessons}
+ totalStudents={courseData.total_students}
isLMS={$appStore.isOrgSite}
progressRate={calcProgressRate(courseData.progress_rate, courseData.total_lessons)}
/>
diff --git a/apps/dashboard/src/lib/utils/types/index.ts b/apps/dashboard/src/lib/utils/types/index.ts
index 0bc85b89..1272b33b 100644
--- a/apps/dashboard/src/lib/utils/types/index.ts
+++ b/apps/dashboard/src/lib/utils/types/index.ts
@@ -182,6 +182,7 @@ export interface Course {
is_published?: boolean;
progress_rate?: number;
total_lessons?: number;
+ total_students?: number;
attendance: {
student_id: string;
lesson_id: string;
diff --git a/supabase/migrations/20231207061507_update_get_courses.sql b/supabase/migrations/20231207061507_update_get_courses.sql
new file mode 100644
index 00000000..da4d0a43
--- /dev/null
+++ b/supabase/migrations/20231207061507_update_get_courses.sql
@@ -0,0 +1,22 @@
+
+drop function if exists "public"."get_courses"(org_id_arg uuid, profile_id_arg uuid);
+
+set check_function_bodies = off;
+
+CREATE OR REPLACE FUNCTION public.get_courses(org_id_arg uuid, profile_id_arg uuid)
+ RETURNS TABLE(id uuid, org_id uuid, title character varying, slug character varying, description character varying, logo text, banner_image text, cost bigint, currency character varying, is_published boolean, profile_id uuid, role_id bigint, total_lessons bigint, total_students bigint, progress_rate bigint)
+ LANGUAGE plpgsql
+AS $function$
+BEGIN
+ Return query
+ select course.id, organization.id AS org_id, course.title, course.slug, course.description, course.logo, course.banner_image, course.cost, course.currency, course.is_published, groupmember.profile_id, groupmember.role_id, (select COUNT(*) from lesson as l where l.course_id = course.id) AS total_lessons, (select COUNT(*) from groupmember as gm where gm.group_id = course.group_id AND gm.role_id = 3) as total_students, (select COUNT(*) from lesson_completion as lc join lesson as l on l.id = lc.lesson_id where l.course_id = course.id and lc.is_complete = true and lc.profile_id = profile_id_arg) AS progress_rate
+ from course
+ join "group" on "group".id = course.group_id
+ join groupmember on groupmember.group_id = course.group_id
+ join organization on organization.id = "group".organization_id
+ where course.status = 'ACTIVE' AND organization.id = org_id_arg
+ -- GROUP BY course.id, groupmember.profile_id
+ ORDER BY course.created_at DESC;
+END;
+$function$
+;