diff --git a/app/models/assignment.rb b/app/models/assignment.rb index 20fabd09597b2916f934e6d9c7f86e004e2273ee..88cd32d9cbd913419e6f5271c981c9cb39ca1964 100644 --- a/app/models/assignment.rb +++ b/app/models/assignment.rb @@ -9,6 +9,8 @@ class Assignment < ApplicationRecord after_create_commit :notify_assignment_created after_destroy_commit :notify_assignment_destroyed + scope :future, -> { joins(:session).where('sessions.starts_at' => Time.now..) } + after_create_commit -> { Rails.logger.debug('Created assignment, broadcasting') broadcast_replace_to "sessions", diff --git a/app/models/session.rb b/app/models/session.rb index 462c3d6dde332579325ed19201e4c363b2b5623e..43137cd1b2a189159ee52dc8c841f27755089c76 100644 --- a/app/models/session.rb +++ b/app/models/session.rb @@ -7,6 +7,7 @@ class Session < ApplicationRecord has_many :speakers, through: :session_speakers scope :scheduled, -> { where(status: 'scheduled') } + scope :future, -> { where(starts_at: Time.now..) } validates :ref_id, uniqueness: { scope: :conference_id } diff --git a/app/views/assignments/by_user.html.erb b/app/views/assignments/by_user.html.erb index 9274e3a74c329dd7fe5b162622b43fac5be7575a..555708396cc9956863dd5b323c3e569ab854c3cc 100644 --- a/app/views/assignments/by_user.html.erb +++ b/app/views/assignments/by_user.html.erb @@ -12,7 +12,7 @@ </tr> </thead> <tbody> - <% @user.assignments.includes(:session, session: :conference).order('sessions.starts_at').each do |assignment| %> + <% @user.assignments.future.includes(:session, session: :conference).order('sessions.starts_at').each do |assignment| %> <tr class="*:border *:p-1"> <td><%= assignment.session.conference.name %></td> <td><%= assignment.session.starts_at.strftime('%Y-%m-%d') %></td> diff --git a/app/views/assignments/index.html.erb b/app/views/assignments/index.html.erb index 86bfbb25a7f7f3ba49652d6de2d0fd94e5694a28..63d8176aa2d9be269a32d147d5514949f0223a54 100644 --- a/app/views/assignments/index.html.erb +++ b/app/views/assignments/index.html.erb @@ -1,5 +1,5 @@ <div> - <% @assignments.group_by(&:user).each do |user, assignments| %> + <% @assignments.future.group_by(&:user).each do |user, assignments| %> <div class="my-8"> <h4 class="text-xl my-2"><%= link_to user.name, user_assignments_path(user) %> <span class="font-normal"><%= link_to user_assignments_path(user, format: 'ics') do %><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" class="ml-2 mb-1 size-4 inline-block stroke-slate-400 fill-slate-400"><path fill-rule="evenodd" d="M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z" clip-rule="evenodd"></path></svg><% end %></span></h4> <% assignments.group_by { |a| a.session.starts_at.strftime('%Y-%m-%d') }.each do |date, assignments_on_date| %>