app/presenters/milestones_presenter.rb
# frozen_string_literal: true
# Displays milestones for each of the versions for an object
class MilestonesPresenter
# @param [String] druid the druid of the object
def initialize(druid:)
@druid = druid
end
def each_version(&)
milestones.keys.sort_by(&:to_i).each(&)
end
def steps_for(version)
milestones[version]
end
def version_title(version)
val = versions.find { |this| this.versionId == version.to_i }
return version unless val
"#{version} #{val.message}"
end
def user_version_for(version)
user_versions.find { |user_version| user_version.version == version.to_i }&.userVersion
end
def valid_user_version?(user_version)
user_version.nil? || user_versions.any? { |version| version.userVersion.to_s == user_version }
end
attr_reader :druid
private
def milestones
@milestones ||= MilestoneService.milestones_for(druid:)
end
def versions
@versions ||= object_client.version.inventory
end
def user_versions
@user_versions ||= object_client.user_version.inventory
end
def object_client
@object_client ||= Dor::Services::Client.object(druid)
end
end