Ogólne dane
++
Wizyty na stronie
++
Wygenerowane pliki PDF
++
diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb new file mode 100644 index 0000000..dddca49 --- /dev/null +++ b/app/controllers/dashboard_controller.rb @@ -0,0 +1,47 @@ +class DashboardController < ApplicationController + def index + @monitor = [] + general_data + visits_data + pdfs_data + search_data + end + + private + + def general_data + @monitor << [ + Dotation.all.size, + Dotation.public_dot.size, + FilterForEmail.all.size, + EmailMessage.all.size + ] + end + + def visits_data + @monitor << [ + VisitHistory.visits.count, + VisitHistory.visits.by_today.size, + VisitHistory.visits.by_7days.size, + VisitHistory.visits.by_30days.size + ] + end + + def pdfs_data + @monitor << [ + VisitHistory.pdf_files.count, + VisitHistory.pdf_files.by_today.size, + VisitHistory.pdf_files.by_7days.size, + VisitHistory.pdf_files.by_30days.size + ] + end + + def search_data + @monitor << [ + VisitHistory.search.count, + VisitHistory.search.by_today.size, + VisitHistory.search.by_7days.size, + VisitHistory.search.by_30days.size + ] + end +end diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 4c52b43..e6316e7 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -14,6 +14,8 @@ class HomeController < ApplicationController end def index + VisitHistory.create(ip_address: request.remote_ip, event: 0, site: 0) + puts request.remote_ip require 'json' prepare_filters cookies[:filter] = JSON.generate(build_filter_hash) @@ -25,6 +27,7 @@ class HomeController < ApplicationController end def search + VisitHistory.create(ip_address: request.remote_ip, event: 1) require 'json' prepare_filters cookies[:filter] = JSON.generate(build_filter_hash) @@ -36,10 +39,12 @@ class HomeController < ApplicationController end def contact + VisitHistory.create(ip_address: request.remote_ip, event: 0, site: 1) @email_message = EmailMessage.new end def statute + VisitHistory.create(ip_address: request.remote_ip, event: 0, site: 2) @setting = Setting.first end @@ -64,9 +69,12 @@ class HomeController < ApplicationController SendContactEmailJob.perform_later(@consultation_email.id) end - def arrange_consultation; end + def arrange_consultation + VisitHistory.create(ip_address: request.remote_ip, event: 0, site: 3) + end def monitor + VisitHistory.create(ip_address: request.remote_ip, event: 0, site: 4) prepare_filters cookies[:filter] = JSON.generate(build_filter_hash) end @@ -77,8 +85,13 @@ class HomeController < ApplicationController .where.not(id: @dotation.id).limit(4) @company_sizes = CompanySize.all respond_to do |format| - format.html + format.html do + VisitHistory.create(ip_address: request.remote_ip, event: 0, site: 5, + dotation_id: @dotation.id) + end format.pdf do + VisitHistory.create(ip_address: request.remote_ip, event: 2, site: 5, + dotation_id: @dotation.id) pdf1a = WickedPdf.new.pdf_from_string( render_cover_header(@dotation, @company_sizes), {pdf: 'cover_header', @@ -136,6 +149,7 @@ class HomeController < ApplicationController @dotations = Dotation.search_with_filters(filters).public_dot .point_desc.end_date_asc dotation = @dotations.first + VisitHistory.create(ip_address: request.remote_ip, event: 2, site: 0) respond_to do |format| format.pdf do pdf1a = WickedPdf.new.pdf_from_string( diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3e1f2b0..f1cd26f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -5,6 +5,7 @@ module ApplicationHelper # icon, name, controller, def nav_menu ret = '' + ret += menu_item('fas fa-tachometer-alt', 'Statystyki', '/dashboard', 'dashboard') if admin? ret += menu_item('far fa-circle', 'Dotacje', '/grants', 'grants') if role?('dotations') ret += menu_item('far fa-circle', 'Wydatki', '/expenses', 'expenses') if role?('expenses') ret += menu_item('far fa-circle', 'Wielkość firmy', '/company_sizes', 'company_sizes') if role?('company_sizes') diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb new file mode 100644 index 0000000..a94ddfc --- /dev/null +++ b/app/helpers/dashboard_helper.rb @@ -0,0 +1,2 @@ +module DashboardHelper +end diff --git a/app/models/expert.rb b/app/models/expert.rb index c262918..2a0797b 100644 --- a/app/models/expert.rb +++ b/app/models/expert.rb @@ -13,7 +13,7 @@ class Expert < ApplicationRecord # == Validations ========================================================== validates :name, presence: true - + validates :description, presence: true, length: { maximum: 500 } # == Scopes =============================================================== # == Callbacks ============================================================ diff --git a/app/models/visit_history.rb b/app/models/visit_history.rb new file mode 100644 index 0000000..ff54ab9 --- /dev/null +++ b/app/models/visit_history.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +# event +# 0 - vist +# 1 - search +# 2 - pdf generation + +# site +# 0 - index +# 1 - contact +# 2 - regulamin +# 3 - umow_konsultacje +# 4 - monitoring +# 5 - dotacja + +# History model +class VisitHistory < ApplicationRecord + # == Constants ============================================================ + + # == Attributes =========================================================== + + # == Extensions =========================================================== + + # == Relationships ======================================================== + + # == Validations ========================================================== + + # == Scopes =============================================================== + scope :visits, -> { where(event: 0) } + scope :search, -> { where(event: 1) } + scope :pdf_files, -> { where(event: 2) } + scope :by_today, -> { where('created_at > ?', Time.now.midnight) } + scope :by_7days, -> { where('created_at > ?', Time.now.midnight - 7.days) } + scope :by_30days, -> { where('created_at > ?', Time.now.midnight - 30.days) } + scope :dist_ip, -> { select(:ip_address).uniq } + # == Callbacks ============================================================ + + # == Class Methods ======================================================== + + # == Instance Methods ===================================================== +end diff --git a/app/views/dashboard/index.html.erb b/app/views/dashboard/index.html.erb new file mode 100644 index 0000000..943f94a --- /dev/null +++ b/app/views/dashboard/index.html.erb @@ -0,0 +1,266 @@ + +