From 245d5cad9beab38194b09020ac9844a1050b47c7 Mon Sep 17 00:00:00 2001
From: Teal <git@teal.is>
Date: Mon, 27 May 2024 17:01:54 +0200
Subject: [PATCH] only show future assignments in human-readable views

---
 app/models/assignment.rb               | 2 ++
 app/models/session.rb                  | 1 +
 app/views/assignments/by_user.html.erb | 2 +-
 app/views/assignments/index.html.erb   | 2 +-
 4 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/app/models/assignment.rb b/app/models/assignment.rb
index 20fabd0..88cd32d 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 462c3d6..43137cd 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 9274e3a..5557083 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 86bfbb2..63d8176 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| %>
-- 
GitLab