From 398dcb710563b6abd1abcce1b9ddbd8f5311b084 Mon Sep 17 00:00:00 2001
From: Arnaud Levy <contact@arnaudlevy.com>
Date: Mon, 13 Nov 2023 18:10:30 +0100
Subject: [PATCH] clean

---
 .../communication/block/template/agenda.rb    | 19 +++++++++++++++++--
 .../communication/website/agenda/event.rb     |  2 ++
 .../blocks/templates/agenda/_edit.html.erb    |  4 +++-
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/app/models/communication/block/template/agenda.rb b/app/models/communication/block/template/agenda.rb
index 72a406e43..3256da47b 100644
--- a/app/models/communication/block/template/agenda.rb
+++ b/app/models/communication/block/template/agenda.rb
@@ -19,7 +19,7 @@ class Communication::Block::Template::Agenda < Communication::Block::Template::B
   has_component :show_status, :boolean
 
   def selected_events
-    @selected_events ||= events_with_time_scope
+    @selected_events ||= send "selected_events_#{mode}"
   end
 
   def category
@@ -40,10 +40,25 @@ class Communication::Block::Template::Agenda < Communication::Block::Template::B
 
   protected
 
-  def events_with_time_scope
+  def base_events
     events = website.events.for_language(block.language).published
     events = events.send(time) if time.in? AUTHORIZED_SCOPES
+  end
+
+  def selected_events_all
+    events = base_events.limit(quantity)
+  end
+
+  def selected_events_category
+    events = base_events
+    events = events.for_category(category) if category
     events = events.limit(quantity)
   end
 
+  def selected_events_selection
+    elements.map { |element|
+      element.event
+    }.compact
+  end
+
 end
diff --git a/app/models/communication/website/agenda/event.rb b/app/models/communication/website/agenda/event.rb
index d5b7b769d..ac96d5b5f 100644
--- a/app/models/communication/website/agenda/event.rb
+++ b/app/models/communication/website/agenda/event.rb
@@ -71,6 +71,8 @@ class Communication::Website::Agenda::Event < ApplicationRecord
   scope :recent, -> { order(:updated_at).limit(5) }
   scope :published, -> { where(published: true) }
   scope :draft, -> { where(published: false) }
+  
+  scope :for_category, -> (category_id) { joins(:categories).where(communication_website_categories: { id: category_id }).distinct }
 
   scope :future, -> { where('from_day > :today', today: Date.today).ordered_asc }
   scope :future_or_present, -> { where('from_day <= :today', today: Date.today).ordered_asc }
diff --git a/app/views/admin/communication/blocks/templates/agenda/_edit.html.erb b/app/views/admin/communication/blocks/templates/agenda/_edit.html.erb
index 1597d9497..1dbe1ecef 100644
--- a/app/views/admin/communication/blocks/templates/agenda/_edit.html.erb
+++ b/app/views/admin/communication/blocks/templates/agenda/_edit.html.erb
@@ -23,7 +23,9 @@
     </div>    
   </div>
   <div class="col-xl-6 mb-5">
-    <%= block_component_edit block, :time %>
+    <div v-if="data.mode != 'selection'">
+      <%= block_component_edit block, :time %>
+    </div>
   </div>
 </div>
 
-- 
GitLab