Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion app/controllers/courses_controller.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
class CoursesController < ApplicationController
skip_before_action :authenticate_user!, only: [ :show ]
before_action :set_course, only: %i[ show edit update destroy approve unapprove ]
before_action :set_course, only: %i[ show edit update destroy approve unapprove analytics ]

# GET /courses or /courses.json
def index
Expand Down Expand Up @@ -118,6 +118,9 @@ def unapproved
render "index"
end

def analytics
authorize @course, :owner?
end

def destroy
authorize @course
Expand Down
6 changes: 5 additions & 1 deletion app/views/courses/_course.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,14 @@
- if policy(course).edit?
.card-footer
- if policy(course).owner?
= link_to "Add lesson", new_course_lesson_path(course, @lesson), class: "btn btn-sm btn-primary"
= link_to "Add lesson", new_course_lesson_path(course, @lesson), class: 'btn btn-sm btn-primary'
= link_to 'Edit', edit_course_path(course), class: 'btn btn-sm btn-warning'
-# - if current_user && policy(course).destroy?
= link_to 'Destroy', course, data: { turbo_method: :delete, confirm: 'Are you sure?' }, class: 'btn btn-sm btn-danger'
= link_to analytics_course_path(course), class: 'btn btn-sm btn-info' do
.fa.fa-chart-bar
Analytics

- if policy(course).destroy?
.card-footer
- if course.published?
Expand Down
30 changes: 30 additions & 0 deletions app/views/courses/analytics.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
-content_for :title do
E-learning
\|
= @course.title
Analytics

= link_to 'Courses', courses_path
\/
= link_to course_path(@course) do
.fa.fa-graduation-cap
= @course.title
\/
= link_to analytics_course_path(@course) do
.fa.fa-chart-bar
Analytics

%h4.text-center
Analytics for #{@course.title}

Enrollments per day, quantity
= line_chart @course.enrollments.group_by_day(:created_at).count

Enrollments per day, revenue
= line_chart @course.enrollments.group_by_day(:created_at).sum(:price)

Unique user views(how many unique users viewed the lesson)
= bar_chart @course.user_lessons.joins(:lesson).group(:'lessons.title').count

Impressions per lesson (how many times the lesson was opened)
= bar_chart @course.user_lessons.joins(:lesson).group(:'lessons.title').sum(:impression)
1 change: 1 addition & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
resources :courses do
get :purchased, :pending_review, :created, :unapproved, on: :collection
member do
get :analytics
patch :approve
patch :unapprove
end
Expand Down
Loading