openSUSE/osem

View on GitHub
app/views/admin/events/_all_with_comments.xlsx.axlsx

Summary

Maintainability
Test Coverage
# frozen_string_literal: true

wb.use_shared_strings = true
wb.add_worksheet(name: 'events with comments') do |sheet|
  bold_style = wb.styles.add_style(b: true)
  cell_style = wb.styles.add_style(alignment: { wrap_text: true, vertical: :top })
  row = ['Event ID',
         'Title',
         'Abstract',
         'Start time',
         'Submitter',
         'Speaker',
         'Speaker Email',
         'Event Type',
         'Track',
         'Difficulty Level',
         'Room',
         'State',
         'Comments']
  sheet.add_row row, style: bold_style

  @events.each do |event|
    all_comments = ''
    event.root_comments.each do |comment|
      all_comments <<  "#{comment.created_at.strftime("%Y-%m-%d")} #{comment.created_at.strftime("%I:%M%p")}  #{comment.user.name}: #{comment.body}\n"
    end
    row = []
    row << event.id
    row << event.title
    row << event.abstract
    row << (event.time.present? ? "#{event.time.strftime("%Y-%m-%d")} #{event.time.strftime("%I:%M%p")} " : '')
    row << event.submitter.name
    row << event.speaker_names
    row << event.speaker_emails
    row << event.event_type.title
    row << (event.track.present? ? event.track.name : '')
    row << (event.difficulty_level.present? ? event.difficulty_level.title : '')
    row << (event.room.present? ? event.room.name : '')
    row << event.state
    row << all_comments.strip
    sheet.add_row row, style: cell_style
    sheet.column_widths 10,15,35,13,18,18,28,12,15,15,15,10
  end
end