This repository has been archived by the owner on Dec 15, 2020. It is now read-only.
forked from DFE-Digital/teaching-vacancies
-
Notifications
You must be signed in to change notification settings - Fork 1
/
vacancies_controller.rb
114 lines (88 loc) · 2.57 KB
/
vacancies_controller.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
class VacanciesController < ApplicationController
DEFAULT_RADIUS = 20
helper_method :location,
:keyword,
:minimum_salary,
:maximum_salary,
:working_pattern,
:phase,
:newly_qualified_teacher,
:radius,
:sort_column,
:sort_order
def index
@filters = VacancyFilters.new(search_params)
@sort = VacancySort.new.update(column: sort_column, order: sort_order)
records = Vacancy.public_search(filters: @filters, sort: @sort).page(page_number).records
audit_search_event(records, @filters) if @filters.any?
@vacancies = VacanciesPresenter.new(records, searched: @filters.any?)
expires_in 5.minutes, public: true
end
def show
vacancy = Vacancy.listed.friendly.find(id)
return redirect_to(job_path(vacancy), status: :moved_permanently) if old_vacancy_path?(vacancy)
@vacancy = VacancyPresenter.new(vacancy)
TrackVacancyPageViewJob.perform_later(vacancy.id) unless authenticated?
expires_in 5.minutes, public: true
end
def params
sanitised_params = super.each_pair do |key, value|
super[key] = Sanitize.fragment(value)
end
ActionController::Parameters.new(sanitised_params)
end
private
def search_params
params.permit(:keyword, :location, :radius,
:minimum_salary, :maximum_salary, :phase,
:phase, :working_pattern, :newly_qualified_teacher).to_hash
end
def old_vacancy_path?(vacancy)
request.path != job_path(vacancy) && !request.format.json?
end
def audit_search_event(records, filters)
AuditSearchEventJob.perform_later([Time.zone.now.iso8601.to_s,
records.total_count,
*filters.to_hash.values])
end
def id
params[:id]
end
def page_number
return Vacancy.page.total_pages if Vacancy.page(params[:page]).out_of_range?
params[:page]
end
def location
params[:location]
end
def keyword
params[:keyword]
end
def minimum_salary
params[:minimum_salary]
end
def maximum_salary
params[:maximum_salary]
end
def working_pattern
params[:working_pattern]
end
def phase
params[:phase]
end
def newly_qualified_teacher
params[:newly_qualified_teacher]
end
def radius
params[:radius] || DEFAULT_RADIUS
end
def sort_column
params[:sort_column]
end
def sort_order
params[:sort_order]
end
def set_headers
response.set_header('X-Robots-Tag', 'noarchive')
end
end