diff options
Diffstat (limited to 'app/finders/incident_management/timeline_events_finder.rb')
-rw-r--r-- | app/finders/incident_management/timeline_events_finder.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/app/finders/incident_management/timeline_events_finder.rb b/app/finders/incident_management/timeline_events_finder.rb new file mode 100644 index 00000000000..09de46bb79f --- /dev/null +++ b/app/finders/incident_management/timeline_events_finder.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +module IncidentManagement + class TimelineEventsFinder + def initialize(user, incident, params = {}) + @user = user + @incident = incident + @params = params + end + + def execute + return ::IncidentManagement::TimelineEvent.none unless allowed? + + collection = incident.incident_management_timeline_events + collection = by_id(collection) + sort(collection) + end + + private + + attr_reader :user, :incident, :params + + def allowed? + Ability.allowed?(user, :read_incident_management_timeline_event, incident) + end + + def by_id(collection) + return collection unless params[:id] + + collection.id_in(params[:id]) + end + + def sort(collection) + collection.order_occurred_at_asc + end + end +end |