diff --git a/app/controllers/admin/questions_controller.rb b/app/controllers/admin/questions_controller.rb index c065c334..b55ff496 100644 --- a/app/controllers/admin/questions_controller.rb +++ b/app/controllers/admin/questions_controller.rb @@ -10,6 +10,10 @@ module Admin @new_question = @conference.questions.new end + def show + @registrations = @conference.registrations.joins(:qanswers).uniq + end + def new @question = Question.new(conference_id: @conference.id) authorize! :create, @question diff --git a/app/models/registration.rb b/app/models/registration.rb index 9f068317..e2bc78c4 100644 --- a/app/models/registration.rb +++ b/app/models/registration.rb @@ -25,6 +25,7 @@ class Registration < ActiveRecord::Base delegate :email, to: :user delegate :nickname, to: :user delegate :affiliation, to: :user + delegate :username, to: :user alias_attribute :other_needs, :other_special_needs diff --git a/app/views/admin/questions/_questions.html.haml b/app/views/admin/questions/_questions.html.haml index 124fa060..8417a0ef 100644 --- a/app/views/admin/questions/_questions.html.haml +++ b/app/views/admin/questions/_questions.html.haml @@ -19,6 +19,7 @@ %td .btn-group + = link_to 'Show', admin_conference_question_path(@conference.short_title, q), class: 'btn btn-success' = link_to 'Edit', edit_admin_conference_question_path(@conference.short_title, q), class: 'btn btn-primary', disabled: !(can? :update, q) = link_to 'Delete', admin_conference_question_path(@conference.short_title, q), diff --git a/app/views/admin/questions/show.html.haml b/app/views/admin/questions/show.html.haml new file mode 100644 index 00000000..0f01d41d --- /dev/null +++ b/app/views/admin/questions/show.html.haml @@ -0,0 +1,26 @@ +.container + .row + .col-md-12 + .page-header + %h1= @question.title + - @question.answers.each do |answer| + = answer.title + (#{answer.qanswers.find_by(question: @question).registrations.where(conference: @conference).count}) + + + .row + .col-md-12 + + %table.table.table-border.table-hover.datatable#question_users + %thead + %th Name + %th Username + %th Email + %th Answer + %tbody + - @registrations.each do |registration| + %tr + %td= registration.name + %td= registration.username + %td= registration.email + %td= registration.qanswers.find_by(question: @question).answer.title diff --git a/app/views/admin/registrations/index.pdf.prawn b/app/views/admin/registrations/index.pdf.prawn index a75c062c..d7c97ef2 100644 --- a/app/views/admin/registrations/index.pdf.prawn +++ b/app/views/admin/registrations/index.pdf.prawn @@ -1,34 +1,37 @@ -prawn_document(:force_download=>true, :filename => @pdf_filename) do |pdf| +prawn_document(force_download: true, filename: @pdf_filename, page_layout: :landscape) do |pdf| table_array = [] - header_array = [" ", - "Name", - "Email", - "Attending Social Events", - "Attending With Partner", - "Arrival Date", - "Departure Date"] + header_array = ['Attended', + 'Name', + 'Nickname', + 'Affiliation', + 'Email', + 'Arrival Date', + 'Departure Date'] + @conference.questions.each do |question| + header_array << question.title + end + table_array << header_array @registrations.each do |registration| row = [] - row << "" + row << ( registration.attended ? 'X' : '' ) row << registration.name + row << registration.nickname + row << registration.affiliation row << registration.email - if registration.attending_social_events - row << "X" - else - row << " " + row << registration.arrival.to_s || '' + row << registration.departure.to_s || '' + + @conference.questions.each do |question| + qa = registration.qanswers.find_by(question: question) + answer = ( qa ? qa.answer.title : '' ) + + row << answer end - if registration.attending_with_partner.to_s - row << "X" - else - row << " " - end - row << registration.arrival.to_s - row << registration.departure.to_s table_array << row end - pdf.text "#{@conference.title} Registrations", :font_size => 25 - pdf.table table_array, :header => true, :cell_style => {:size => 5, :border_width => 1} + pdf.text "#{@conference.title} Registrations", font_size: 25 + pdf.table table_array, header: true, cell_style: {size: 5, border_width: 1} end diff --git a/app/views/admin/registrations/index.xlsx.axlsx b/app/views/admin/registrations/index.xlsx.axlsx index 96e5e489..c8d5bb1d 100644 --- a/app/views/admin/registrations/index.xlsx.axlsx +++ b/app/views/admin/registrations/index.xlsx.axlsx @@ -1,23 +1,30 @@ wb = xlsx_package.workbook -wb.add_worksheet(:name => "registrations") do |sheet| - bold_style = wb.styles.add_style(:b => true) - row = ["Attended", "Name", "Nickname", "Affilation", "Email", "Social events", - "With partner", "Needs access", "Other needs", "Arrival", "Departure"] +wb.add_worksheet(name: 'registrations') do |sheet| + bold_style = wb.styles.add_style(b: true) + row = ['Attended', 'Name', 'Nickname', 'Affilιation', 'Email', 'Arrival', 'Departure'] + + @conference.questions.each do |question| + row << question.title + end + sheet.add_row row, :style => bold_style - @registrations.each do |reg| + @registrations.each do |registration| row = [] - row << reg.attended - row << reg.name - row << reg.nickname - row << reg.affiliation - row << reg.email - row << reg.attending_social_events - row << reg.attending_with_partner - row << reg.handicapped_access_required - row << reg.other_needs - row << reg.arrival - row << reg.departure + row << ( registration.attended ? 'X' : '' ) + row << registration.name + row << registration.nickname + row << registration.affiliation + row << registration.email + row << registration.arrival.to_s + row << registration.departure.to_s + @conference.questions.each do |question| + qa = registration.qanswers.find_by(question: question) + answer = ( qa ? qa.answer.title : '' ) + + row << answer + end + sheet.add_row row end sheet.column_info[8].width = [sheet.column_info[8].width, 30].min