Class: Qe::AnswerSheetsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/qe/answer_sheets_controller.rb

Direct Known Subclasses

ReferenceSheetsController

Instance Method Summary collapse

Methods inherited from ApplicationController

#check_valid_user

Instance Method Details

#createObject



21
22
23
24
25
26
27
# File 'app/controllers/qe/answer_sheets_controller.rb', line 21

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

#editObject

display answer sheet for data capture (page 1)



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/controllers/qe/answer_sheets_controller.rb', line 30

def edit
  @presenter = 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_to :back
    else
      render :text => "", :layout => true
    end
  else
    @elements = @presenter.questions_for_page(:first).elements
    @page = @presenter.pages.first
  end
end

#indexObject

list existing answer sheets



11
12
13
14
15
16
17
18
19
# File 'app/controllers/qe/answer_sheets_controller.rb', line 11

def index
  
  # TODO dynamically reference this
  # @answer_sheets = answer_sheet_type.find(:all, :order => 'created_at')
  @answer_sheets = AnswerSheet.find(:all, :order => 'created_at')

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

#send_reference_inviteObject



53
54
55
56
57
58
59
# File 'app/controllers/qe/answer_sheets_controller.rb', line 53

def send_reference_invite
  @reference = @answer_sheet.reference_sheets.find(params[:reference_id])
  @reference.update_attributes!(params[:reference][@reference.id.to_s])
  if @reference.valid?
    @reference.send_invite
  end
end

#showObject

display captured answers (read-only)



46
47
48
49
50
51
# File 'app/controllers/qe/answer_sheets_controller.rb', line 46

def show
  @question_sheet = @answer_sheet.question_sheet
  pf = Qe.table_name_prefix
  @elements = @question_sheet.pages.collect {|p| p.elements.includes(:pages).order("#{pf}pages.number,#{pf}page_elements.position").all}.flatten
  @elements = QuestionSet.new(@elements, @answer_sheet).elements.group_by{ |e| e.pages.first }
end

#submitObject



61
62
63
64
65
# File 'app/controllers/qe/answer_sheets_controller.rb', line 61

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