gitlab-org--gitlab-foss/app/finders/incident_management/timeline_events_finder.rb

37 lines
799 B
Ruby

# 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_id_asc
end
end
end