Class: MetadataPresenter::SaveAndReturnController

Inherits:
EngineController show all
Defined in:
app/controllers/metadata_presenter/save_and_return_controller.rb

Instance Method Summary collapse

Methods inherited from EngineController

#allow_analytics?, #analytics_cookie_name, #analytics_tags_present?, #answered?, #back_link, #external_or_relative_link, #load_autocomplete_items, #maintenance_mode?, #reload_user_data, #save_form_progress, #show_cookie_confirmation?, #show_cookie_request?

Instance Method Details

#confirm_emailObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'app/controllers/metadata_presenter/save_and_return_controller.rb', line 39

def confirm_email
  @email_confirmation = EmailConfirmation.new
  @email_confirmation.assign_attributes(confirmation_params[:email_confirmation], session['saved_form']['email'])

  if @email_confirmation.valid?
    # save_form_progress returns the uuid of the saved form as 'id'
    # user to generate email link, for now not assigned because rubocop
    # save_form_progress.body['id']
    # TODO: rescue failed POST
    # send_email(uuid, confirmation_params[:email_confirmation])
    redirect_to '/save/progress_saved'
  else
    render :email_confirmation, status: :unprocessable_entity
  end
end

#confirmation_paramsObject



91
92
93
94
95
96
# File 'app/controllers/metadata_presenter/save_and_return_controller.rb', line 91

def confirmation_params
  params.permit(
    :email_confirmation,
    :authenticity_token
  )
end

#confirmed_emailObject



14
15
16
17
# File 'app/controllers/metadata_presenter/save_and_return_controller.rb', line 14

def confirmed_email
  session['saved_form']['email']
  # TODO: clear session data after submission is successful
end

#createObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/controllers/metadata_presenter/save_and_return_controller.rb', line 19

def create
  @saved_form = SavedForm.new
  @saved_form.populate_param_values(saved_form_params)
  @saved_form.secret_question = text_for(params['saved_form']['secret_question'])
  @saved_form.populate_service_values(service)
  @saved_form.populate_session_values(session)
  if @saved_form.valid?
    # put in session until we have confirmed email address
    session[:saved_form] = @saved_form
    redirect_to '/save/email_confirmation'
  else
    render :show, params: { page_slug: params[:page_slug], status: :unprocessable_entity }
  end
end

#email_confirmationObject



34
35
36
37
# File 'app/controllers/metadata_presenter/save_and_return_controller.rb', line 34

def email_confirmation
  @saved_form = session[:saved_form]
  @email_confirmation = EmailConfirmation.new
end

#page_slugObject



10
11
12
# File 'app/controllers/metadata_presenter/save_and_return_controller.rb', line 10

def page_slug
  params[:page_slug] || params[:saved_form][:page_slug]
end

#saved_form_paramsObject



81
82
83
84
85
86
87
88
89
# File 'app/controllers/metadata_presenter/save_and_return_controller.rb', line 81

def saved_form_params
  params.permit(
    :email,
    :secret_answer,
    { saved_form: i[page_slug secret_question] },
    :authenticity_token,
    :page_slug
  )
end

#secret_questionsObject

Rails.logger.info(‘returning to form’)

Rails.logger.info('session')
redirect_to '/check-answers'

end



67
68
69
70
71
72
73
# File 'app/controllers/metadata_presenter/save_and_return_controller.rb', line 67

def secret_questions
  [
    OpenStruct.new(id: 1, name: I18n.t('presenter.save_and_return.secret_questions.one')),
    OpenStruct.new(id: 2, name: I18n.t('presenter.save_and_return.secret_questions.two')),
    OpenStruct.new(id: 3, name: I18n.t('presenter.save_and_return.secret_questions.three'))
  ]
end

#showObject



6
7
8
# File 'app/controllers/metadata_presenter/save_and_return_controller.rb', line 6

def show
  @saved_form = SavedForm.new
end

#text_for(question) ⇒ Object



75
76
77
78
79
# File 'app/controllers/metadata_presenter/save_and_return_controller.rb', line 75

def text_for(question)
  return nil if question.blank?

  secret_questions.select { |s| s.id.to_s == question.to_s }.first.name
end