Module: Fe::AnswerSheetsControllerConcern

Extended by:
ActiveSupport::Concern
Included in:
AnswerSheetsController
Defined in:
app/controllers/concerns/fe/answer_sheets_controller_concern.rb

Instance Method Summary collapse

Instance Method Details

#createObject



21
22
23
24
25
26
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 21

def create
  @question_sheet = Fe::QuestionSheet.find(params[:question_sheet_id])
  @answer_sheet = @question_sheet.answer_sheets.create

  redirect_to edit_fe_answer_sheet_path(@answer_sheet)
end

#editObject

display answer sheet for data capture (page 1)



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 29

def edit
  @presenter = Fe::AnswerPagesPresenter.new(self, @answer_sheet, params[:a])
  unless @presenter.active_answer_sheet.pages.present?
    flash[:error] = "Sorry, there are no questions for this form yet."
    if request.env["HTTP_REFERER"]
      redirect_back(fallback_location: '/')
    else
      render html: "", layout: true
    end
  else
    @elements = @presenter.questions_for_page(:first).elements
    @page = @presenter.pages.first
  end
end

#indexObject

list existing answer sheets



13
14
15
16
17
18
19
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 13

def index

  @answer_sheets = answer_sheet_type.order('created_at')

  # drop down of sheets to capture data for
  @question_sheets = Fe::QuestionSheet.order('label').collect {|s| [s.label, s.id]}
end

#send_reference_invite(reference = nil) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 54

def send_reference_invite(reference = nil)
  @reference = reference || @answer_sheet.reference_sheets.find(params[:reference_id])
  if params[:reference]
    reference_params = params.fetch(:reference)[@reference.id.to_s].permit(:relationship, :title, :first_name, :last_name, :phone, :email, :is_staff)

    @reference.update(reference_params)
  end
  if @reference.valid?
    @reference.send_invite(request.host)
  end
end

#showObject

display captured answers (read-only)



45
46
47
48
49
50
51
52
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 45

def show
  @question_sheet = @answer_sheet.question_sheet
  pf = Fe.table_name_prefix
  @elements = @question_sheet.pages.collect {|p| p.elements.includes(:pages).order("#{pf}pages.number,#{pf}page_elements.position").all}.flatten
  questions = Fe::QuestionSet.new(@elements, @answer_sheet)
  questions.set_filter(get_filter)
  @elements = questions.elements.group_by{ |e| e.pages.find_by(id: @question_sheet.page_ids) }
end

#submitObject



66
67
68
69
70
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 66

def submit
  return false unless validate_sheet
  flash[:notice] = "Your form has been submitted. Thanks!"
  redirect_to root_path
end