Class: LesliAudit::VisitorService

Inherits:
Lesli::ApplicationLesliService
  • Object
show all
Defined in:
app/services/lesli_audit/visitor_service.rb

Instance Method Summary collapse

Instance Method Details

#browsersObject



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'app/services/lesli_audit/visitor_service.rb', line 124

def browsers
    browser_counts = current_user..audit.
    .group(:agent_browser)
    .sum(:agent_count)

    total = browser_counts.values.sum

    browser_counts.map do |browser, count|
        {
            browser: browser,
            count: count,
            icon: browser_icon(browser),
            percentage: total.zero? ? 0 : ((count.to_f / total) * 100).round()
        }
    end
    #Rails.cache.fetch(cache_key_for_account(__method__), expires_in: 4.hour) do 
        # current_user.account.audit.account_devices
        # .group(:agent_browser, :created_at)
        # .select(
        #     'created_at as xaxiskey',
        #     'agent_browser as dataname',
        #     'sum(agent_count) as yaxiskey'
        # ).as_json
    #end
end

#devicesObject



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'app/services/lesli_audit/visitor_service.rb', line 107

def devices 
    device_counts = current_user..audit.
    .group(:agent_device)
    .sum(:agent_count)

    total = device_counts.values.sum

    device_counts.map do |device, count|
        {
            device: device,
            count: count,
            icon: device_icon(device),
            percentage: total.zero? ? 0 : ((count.to_f / total) * 100).round()
        }
    end
end

#osObject



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'app/services/lesli_audit/visitor_service.rb', line 90

def os 
    device_counts = current_user..audit.
    .group(:agent_platform)
    .sum(:agent_count)

    total = device_counts.values.sum

    device_counts.map do |device, count|
        {
            device: device,
            count: count,
            icon: platform_icon(device),
            percentage: total.zero? ? 0 : ((count.to_f / total) * 100).round()
        }
    end
end

#requestsObject



78
79
80
81
82
83
84
85
86
87
88
# File 'app/services/lesli_audit/visitor_service.rb', line 78

def requests
    requests = current_user..audit.
    .group("request_controller")

    requests = apply_filters(requests, query)

    requests = requests.limit(LIMIT).order("requests DESC").select(
        :request_controller,
        "sum(request_count) requests"
    ).as_json
end

#visitorsObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'app/services/lesli_audit/visitor_service.rb', line 50

def visitors 
    #Rails.cache.fetch(cache_key_for_account(__method__), expires_in: 1.hour) do 
        group = 'day' 
        #group = params[:bygroup] if ['month','week','day'].include?(params[:bygroup])

        # only the users of the account
        usrs = current_user..users

        group_by = "DATE_TRUNC('month', created_at)" if group == 'month'
        group_by = "DATE_TRUNC('week', created_at)" if group == 'week'
        group_by = "DATE_TRUNC('day', created_at)" if group == 'day'

        # compatibility for SQLite
        if ActiveRecord::Base.connection.adapter_name == "SQLite"
            group_by = "strftime('%Y-%m-%d', created_at)"
        end

        requests = current_user..audit..group(group_by)

        requests = apply_filters(requests, query)
        
        requests.limit(10).order("xaxiskey desc").select(
            "sum(request_count) yaxiskey",
            "#{group_by} xaxiskey"
        ).as_json
    #end
end

#visitsObject



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'app/services/lesli_audit/visitor_service.rb', line 36

def visits
    requests = current_user..audit.

    controllers, total_requests = requests.pick(
        Arel.sql("COUNT(DISTINCT request_controller)"),
        Arel.sql("SUM(request_count)")
    )

    {
        controllers: controllers.to_i,
        requests: total_requests.to_i
    }
end