feat: added course progress apis
diff --git a/erpnext/education/utils.py b/erpnext/education/utils.py
index 3abb840..a35cedc 100644
--- a/erpnext/education/utils.py
+++ b/erpnext/education/utils.py
@@ -249,14 +249,42 @@
 	course_enrollment = get_or_create_course_enrollment(course_name, program)
 	progress = student.get_topic_progress(course_enrollment.name, topic)
 	if not progress:
-		return {'label':'Open', 'indicator': 'blue'}
+		return None
 	count = sum([activity['is_complete'] for activity in progress])
 	if count == 0:
-		return {'label':'Open', 'indicator': 'blue'}
+		return {'completed': False, 'started': False}
 	elif count == len(progress):
-		return {'label':'Completed', 'indicator': 'green'}
+		return {'completed': True, 'started': True}
 	elif count < len(progress):
-		return {'label':'In Progress', 'indicator': 'orange'}
+		return {'completed': False, 'started': True}
+
+def get_student_course_details(course, program):
+	"""
+	Return the porgress of a course in a program as well as the content to continue from.
+		:param topic_name:
+		:param course_name:
+	"""
+	course_progress = []
+	for course_topic in course.topics:
+		topic = frappe.get_doc("Topic", course_topic.topic)
+		progress = get_student_topic_details(topic, course.name, program)
+		if progress:
+			course_progress.append(progress)
+
+	if course_progress:
+		number_of_completed_topics = sum([activity['completed'] for activity in course_progress])
+		total_topics = len(course_progress)
+		print("course_progress", course_progress)
+		print("number_of_completed_topics", number_of_completed_topics)
+		print("total_topics", total_topics)
+		if number_of_completed_topics == 0:
+			return {'completed': False, 'started': False}
+		if number_of_completed_topics == total_topics:
+			return {'completed': True, 'started': True}
+		if number_of_completed_topics < total_topics:
+			return {'completed': False, 'started': True}
+
+	return None
 
 def create_student_from_current_user():
 	user = frappe.get_doc("User", frappe.session.user)
diff --git a/erpnext/www/lms/course.html b/erpnext/www/lms/course.html
index 199fc16..34158c8 100644
--- a/erpnext/www/lms/course.html
+++ b/erpnext/www/lms/course.html
@@ -67,7 +67,13 @@
 			</div>
 		{% if has_access %}
 			<div class='card-footer'>
-				<span class="indicator {{ progress[topic.name].indicator }}"> {{ progress[topic.name].label }} </span>
+				{% if progress[topic.name].completed %}
+					<span class="indicator green">Completed</span>
+				{% elif progress[topic.name].started %}
+					<span class="indicator orange">In Progress</span>
+				{% else %}
+					<span class="indicator blue">Open</span>
+				{% endif %}
 			</div>
 			</a>
 		{% else %}
diff --git a/erpnext/www/lms/program.html b/erpnext/www/lms/program.html
index d364e5e..0ea2dbb 100644
--- a/erpnext/www/lms/program.html
+++ b/erpnext/www/lms/program.html
@@ -34,21 +34,32 @@
 
 {% macro card(course, index, length) %}
 <div class="col-sm-{{ 12 if length%3 == 1 and index == 1 else 6 if length%3 == 2 and index in [1,2] else 4}} mb-4 text-left">
+	<a href="/lms/course?name={{ course.name }}&program={{ program.name }}" class="no-decoration no-underline">
 	<div class="card h-100">
-		<a href="/lms/course?name={{ course.name }}&program={{ program.name }}" class="no-decoration no-underline">
-			{% if course.hero_image %}
-			<div class="card-hero-img" style="background-image: url({{ course.hero_image }})"></div>
+		{% if course.hero_image %}
+		<div class="card-hero-img" style="background-image: url({{ course.hero_image }})"></div>
+		{% else %}
+		<div class="card-image-wrapper text-center">
+			<div class="image-body"><i class="fa fa-picture-o" aria-hidden="true"></i></div>
+		</div>
+		{% endif %}
+		<div class='card-body'>
+			<h5 class='card-title'>{{ course.course_name }}</h5>
+			<div>{{ course.course_intro }}</div>
+		</div>
+		{% if has_access and progress[course.name] %}
+		<div class='card-footer'>
+			{% if progress[course.name].completed %}
+			<span class="indicator green">Completed</span>
+			{% elif progress[course.name].started %}
+			<span class="indicator orange">In Progress</span>
 			{% else %}
-			<div class="card-image-wrapper text-center">
-				<div class="image-body"><i class="fa fa-picture-o" aria-hidden="true"></i></div>
-			</div>
+			<span class="indicator blue">Open</span>
 			{% endif %}
-			<div class='card-body'>
-				<h5 class='card-title'>{{ course.course_name }}</h5>
-				<div>{{ course.course_intro }}</div>
-			</div>
-		</a>
+		</div>
+		{% endif %}
 	</div>
+	</a>
 </div>
 {% endmacro %}
 
@@ -57,8 +68,8 @@
 	{{ hero(program.program_name, program.description, has_access) }}
 	<div class='container'>
 		<div class="row mt-5">
-			{% for course in program.courses %}
-				{{ card(frappe.get_doc("Course", course.course), loop.index, program.courses|length) }}
+			{% for course in courses %}
+				{{ card(course, loop.index, courses|length) }}
 			{% endfor %}
 		</div>
 	</div>
diff --git a/erpnext/www/lms/program.py b/erpnext/www/lms/program.py
index 4c3a3fd..1242336 100644
--- a/erpnext/www/lms/program.py
+++ b/erpnext/www/lms/program.py
@@ -7,10 +7,16 @@
 def get_context(context):
 	context.education_settings = frappe.get_single("Education Settings")
 	context.program = get_program(frappe.form_dict['program'])
+	context.courses = [frappe.get_doc("Course", course.course) for course in context.program.courses]
 	context.has_access = utils.allowed_program_access(frappe.form_dict['program'])
+	context.progress = get_course_progress(context.courses, context.program)
 
 def get_program(program_name):
 	try:
 		return frappe.get_doc('Program', program_name)
 	except frappe.DoesNotExistError:
-		frappe.throw(_("Program {0} does not exist.".format(program_name)))
\ No newline at end of file
+		frappe.throw(_("Program {0} does not exist.".format(program_name)))
+
+def get_course_progress(courses, program):
+	progress = {course.name: utils.get_student_course_details(course, program) for course in courses}
+	return progress
\ No newline at end of file