|
| 1 | +require 'slack/incoming/webhooks' |
| 2 | + |
| 3 | +namespace :util do |
| 4 | + desc 'add_talks_for_cnds2025_intermission' |
| 5 | + task add_talks_for_cnds2025_intermission: :environment do |
| 6 | + ActiveRecord::Base.logger = Logger.new($stdout) |
| 7 | + Rails.logger.level = Logger::DEBUG |
| 8 | + |
| 9 | + def add_talk(param) |
| 10 | + talk = Talk.new(param) |
| 11 | + talk.save! |
| 12 | + if talk.abstract != 'intermission' |
| 13 | + proposal = Proposal.new(conference_id: conference.id, talk_id: talk.id, status: 1) |
| 14 | + proposal.save! |
| 15 | + end |
| 16 | + video = Video.new(talk_id: talk.id, on_air: false) |
| 17 | + video.save! |
| 18 | + end |
| 19 | + |
| 20 | + conference = Conference.find_by(abbr: 'cnds2025') |
| 21 | + tracks = Hash[conference.tracks.map { |track| [track.name, track.id] }] |
| 22 | + |
| 23 | + track_a_talks = [ |
| 24 | + %w[08:00:00 10:20:00 開始までしばらくお待ちください intermission], |
| 25 | + %w[10:20:00 10:30:00 オープニング intermission], |
| 26 | + %w[12:20:00 13:20:00 休憩 intermission], |
| 27 | + %w[14:00:00 14:20:00 休憩 intermission], |
| 28 | + %w[15:00:00 15:20:00 休憩 intermission], |
| 29 | + %w[16:00:00 16:20:00 休憩 intermission], |
| 30 | + %w[17:00:00 17:20:00 休憩 intermission], |
| 31 | + %w[18:00:00 18:10:00 休憩 intermission], |
| 32 | + %w[18:10:00 19:00:00 クロージング intermission], |
| 33 | + %w[19:00:00 20:00:00 本日のイベントは終了しました intermission] |
| 34 | + ] |
| 35 | + |
| 36 | + other_track_talks = [ |
| 37 | + %w[08:00:00 10:20:00 開始までしばらくお待ちください intermission], |
| 38 | + %w[10:20:00 10:30:00 トラックAでオープニング実施中! intermission], |
| 39 | + %w[10:30:00 12:20:00 トラックAでキーノート配信中! intermission], |
| 40 | + %w[12:20:00 13:20:00 休憩 intermission], |
| 41 | + %w[14:00:00 14:20:00 休憩 intermission], |
| 42 | + %w[15:00:00 15:20:00 休憩 intermission], |
| 43 | + %w[16:00:00 16:20:00 休憩 intermission], |
| 44 | + %w[17:00:00 17:20:00 休憩 intermission], |
| 45 | + %w[18:00:00 18:10:00 休憩 intermission], |
| 46 | + %w[18:10:00 19:00:00 トラックAでクロージング実施中! intermission], |
| 47 | + %w[19:00:00 20:00:00 本日のイベントは終了しました intermission] |
| 48 | + ] |
| 49 | + |
| 50 | + days = conference.conference_days.where(internal: false) |
| 51 | + |
| 52 | + days.each do |day| |
| 53 | + track_a_talks.each do |arr| |
| 54 | + param = { start_time: arr[0], end_time: arr[1], title: arr[2], abstract: arr[3] } |
| 55 | + add_talk(param.merge(conference_id: conference.id, conference_day_id: day.id, track_id: tracks['A'], show_on_timetable: false)) |
| 56 | + end |
| 57 | + |
| 58 | + tracks.except('A').each do |_track_name, track_id| |
| 59 | + other_track_talks.each do |arr| |
| 60 | + param = { start_time: arr[0], end_time: arr[1], title: arr[2], abstract: arr[3] } |
| 61 | + add_talk(param.merge(conference_id: conference.id, conference_day_id: day.id, track_id:, show_on_timetable: false)) |
| 62 | + end |
| 63 | + end |
| 64 | + |
| 65 | + # https://cloudnativedays.slack.com/archives/C087QPW51RQ/p1745897807167199?thread_ts=1745857454.682939&cid=C087QPW51RQ |
| 66 | + # 各トラックにComing Soonのセッションを追加 |
| 67 | + tracks.each do |_track_name, track_id| |
| 68 | + param = { start_time: '16:20:00', end_time: '17:00:00', title: 'Coming Soon', abstract: '魅力的なセッションを企画中!' } |
| 69 | + add_talk(param.merge(conference_id: conference.id, conference_day_id: day.id, track_id:, show_on_timetable: true)) |
| 70 | + end |
| 71 | + end |
| 72 | + end |
| 73 | +end |
0 commit comments