|
1 | 1 | module Admin |
2 | | - class AnalyticsController < Admin::BaseController |
3 | | - protect_from_forgery with: :null_session |
4 | | - |
5 | | - def index |
6 | | - @most_viewed_workshops = Workshop.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
7 | | - @most_viewed_workshop_variations = WorkshopVariation.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
8 | | - @most_viewed_resources = Resource.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
9 | | - @most_viewed_community_news = CommunityNews.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
10 | | - @most_viewed_stories = Story.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
11 | | - @most_viewed_quotes = Quote.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
12 | | - @most_viewed_tutorials = Tutorial.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
13 | | - @most_viewed_projects = Project.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
14 | | - @most_viewed_events = Event.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
15 | | - @most_viewed_facilitators = Facilitator.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
16 | | - |
17 | | - @most_printed_workshops = Workshop.published.order(print_count: :desc, created_at: :desc).limit(10).decorate |
18 | | - @most_downloaded_resources = Resource.published.order(download_count: :desc, created_at: :desc).limit(10).decorate |
19 | | - |
20 | | - @zero_engagement_workshops = Workshop.published.where(view_count: 0).order(created_at: :desc).limit(10).decorate |
21 | | - @zero_engagement_resources = Resource.published.where(view_count: 0).order(created_at: :desc).limit(10).decorate |
22 | | - |
23 | | - @summary = { |
24 | | - workshops: Workshop.sum(:view_count), |
25 | | - workshop_prints: Workshop.sum(:print_count), |
26 | | - resources: Resource.sum(:view_count), |
27 | | - resource_downloads: Resource.sum(:download_count), |
28 | | - community_news: CommunityNews.sum(:view_count), |
29 | | - stories: Story.sum(:view_count), |
30 | | - events: Event.sum(:view_count), |
31 | | - workshop_variations: WorkshopVariation.sum(:view_count), |
32 | | - quotes: Quote.sum(:view_count), |
33 | | - tutorials: Tutorial.sum(:view_count), |
34 | | - projects: Project.sum(:view_count), |
35 | | - facilitators: Facilitator.sum(:view_count) |
36 | | - } |
37 | | - end |
38 | | - |
39 | | - def print |
40 | | - printable_models = { |
41 | | - "Resource" => Resource, |
42 | | - "Story" => Story, |
43 | | - "Workshop" => Workshop, |
44 | | - "CommunityNews" => CommunityNews |
45 | | - }.freeze |
46 | | - |
47 | | - klass = printable_models[params[:printable_type]] |
48 | | - return head :bad_request unless klass |
49 | | - |
50 | | - record = klass.find_by(id: params[:printable_id]) |
51 | | - return head :not_found unless record |
52 | | - |
53 | | - record.increment_print_count! |
54 | | - |
55 | | - head :ok |
56 | | - end |
57 | | - end |
58 | | - |
| 2 | + class AnalyticsController < Admin::BaseController |
| 3 | + protect_from_forgery with: :null_session |
| 4 | + |
| 5 | + def index |
| 6 | + @most_viewed_workshops = Workshop.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
| 7 | + @most_viewed_workshop_variations = WorkshopVariation.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
| 8 | + @most_viewed_resources = Resource.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
| 9 | + @most_viewed_community_news = CommunityNews.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
| 10 | + @most_viewed_stories = Story.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
| 11 | + @most_viewed_quotes = Quote.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
| 12 | + @most_viewed_tutorials = Tutorial.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
| 13 | + @most_viewed_projects = Project.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
| 14 | + @most_viewed_events = Event.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
| 15 | + @most_viewed_facilitators = Facilitator.published.order(view_count: :desc, created_at: :desc).limit(10).decorate |
| 16 | + |
| 17 | + @most_printed_workshops = Workshop.published.order(print_count: :desc, created_at: :desc).limit(10).decorate |
| 18 | + @most_downloaded_resources = Resource.published.order(download_count: :desc, created_at: :desc).limit(10).decorate |
| 19 | + |
| 20 | + @zero_engagement_workshops = Workshop.published.where(view_count: 0).order(created_at: :desc).limit(10).decorate |
| 21 | + @zero_engagement_resources = Resource.published.where(view_count: 0).order(created_at: :desc).limit(10).decorate |
| 22 | + |
| 23 | + @summary = { |
| 24 | + workshops: Workshop.sum(:view_count), |
| 25 | + workshop_prints: Workshop.sum(:print_count), |
| 26 | + resources: Resource.sum(:view_count), |
| 27 | + resource_downloads: Resource.sum(:download_count), |
| 28 | + community_news: CommunityNews.sum(:view_count), |
| 29 | + stories: Story.sum(:view_count), |
| 30 | + events: Event.sum(:view_count), |
| 31 | + workshop_variations: WorkshopVariation.sum(:view_count), |
| 32 | + quotes: Quote.sum(:view_count), |
| 33 | + tutorials: Tutorial.sum(:view_count), |
| 34 | + projects: Project.sum(:view_count), |
| 35 | + facilitators: Facilitator.sum(:view_count) |
| 36 | + } |
| 37 | + end |
| 38 | + |
| 39 | + def print |
| 40 | + printable_models = { |
| 41 | + "Resource" => Resource, |
| 42 | + "Story" => Story, |
| 43 | + "Workshop" => Workshop, |
| 44 | + "CommunityNews" => CommunityNews |
| 45 | + }.freeze |
| 46 | + |
| 47 | + klass = printable_models[params[:printable_type]] |
| 48 | + return head :bad_request unless klass |
| 49 | + |
| 50 | + record = klass.find_by(id: params[:printable_id]) |
| 51 | + return head :not_found unless record |
| 52 | + |
| 53 | + record.increment_print_count! |
| 54 | + |
| 55 | + head :ok |
| 56 | + end |
| 57 | + end |
59 | 58 | end |
0 commit comments