-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathmake_language_live_controller.rb
More file actions
93 lines (68 loc) · 3.36 KB
/
Copy pathmake_language_live_controller.rb
File metadata and controls
93 lines (68 loc) · 3.36 KB
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
module Forms
class MakeLanguageLiveController < FormsController
def new
authorize current_form, :can_make_language_live?
return redirect_to form_path(form_id: current_form.id) unless current_form.can_make_language_live?(language: params[:language])
@make_language_live_input = MakeLiveInput.new(form: current_form)
render_new
end
def create
authorize current_form, :can_make_language_live?
@make_language_live_input = MakeLiveInput.new(**make_language_live_input_params)
return render_new(status: :unprocessable_content) unless @make_language_live_input.valid?
return redirect_to form_path(@make_language_live_input.form.id) unless @make_language_live_input.confirmed?
return redirect_to form_path(form_id: current_form.id) unless current_form.can_make_language_live?(language: params[:language])
@make_form_live_service = MakeFormLiveService.call(current_form:, current_user:, language: params[:language])
@make_form_live_service.make_language_live
if current_form.state_previously_changed?
OrgAdminAlertsService.new(form: current_form, current_user:).form_made_live
end
redirect_to make_language_live_show_confirmation_path
end
def show_confirmation
authorize current_form, :can_make_language_live?
@go_to_make_welsh_live_input = GoToMakeWelshLiveInput.new
render_confirmation
end
def submit_confirmation
authorize current_form, :can_make_language_live?
@go_to_make_welsh_live_input = GoToMakeWelshLiveInput.new(**go_to_make_welsh_live_input_params)
return render_confirmation(status: :unprocessable_content) unless @go_to_make_welsh_live_input.valid?
if @go_to_make_welsh_live_input.confirmed?
redirect_to make_language_live_path(language: "cy")
else
redirect_to form_path
end
end
private
def make_language_live_input_params
params.require(:forms_make_live_input).permit(:confirm).merge(form: current_form, language: params[:language])
end
def render_new(status: :ok)
render "new", status:, locals: { current_form:, language: params[:language], page_title: new_page_title, page_body: new_page_body }
end
def render_confirmation(status: :ok)
@make_form_live_service = MakeFormLiveService.call(current_form:, current_user:, language: params[:language])
render "confirmation", status:, locals: {
current_form:,
confirmation_page_title: @make_form_live_service.page_title,
confirmation_page_body: @make_form_live_service.confirmation_page_body,
language: params[:language],
}
end
def go_to_make_welsh_live_input_params
params.require(:forms_go_to_make_welsh_live_input).permit(:confirm)
end
def new_page_title
return I18n.t("page_titles.make_your_changes_to_english_live") if making_english_changes_live?
I18n.t("page_titles.make_language_live.#{params[:language]}")
end
def new_page_body
return t("make_language_live.en.make_your_changes_to_english_live.body_html", submission_email: @current_form.submission_email) if making_english_changes_live?
t("make_language_live.#{params[:language]}.new.body_html", submission_email: @current_form.submission_email)
end
def making_english_changes_live?
@current_form.is_live? && params[:language] == "en"
end
end
end