lib/tracker_api/resources/epic.rb
module TrackerApi
module Resources
class Epic
include Shared::Base
attribute :client
attribute :comment_ids, [Integer]
attribute :comments, [Comment]
attribute :created_at, DateTime
attribute :description, String
attribute :follower_ids, [Integer]
attribute :followers, [Person]
attribute :kind, String
attribute :label, Label
attribute :label_id, Integer
attribute :name, String
attribute :project_id, Integer
attribute :updated_at, DateTime
attribute :completed_at, DateTime
attribute :projected_completion, DateTime
attribute :url, String
class UpdateRepresenter < Representable::Decorator
include Representable::JSON
property :name
property :description
property :label, class: Label, decorator: Label::UpdateRepresenter, render_empty: true
end
# Save changes to an existing Epic.
def save
raise ArgumentError, 'Can not update an epic with an unknown project_id.' if project_id.nil?
Endpoints::Epic.new(client).update(self, UpdateRepresenter.new(self))
end
# Provides a list of all the comments on the epic.
def comments(reload: false)
if !reload && @comments.present?
@comments
else
@comments = Endpoints::Comments.new(client).get(project_id, epic_id: id)
end
end
# @param [Hash] params attributes to create the comment with
# @return [Comment] newly created Comment
def create_comment(params)
files = params.delete(:files)
comment = Endpoints::Comment.new(client).create(project_id, epic_id: id, params: params)
comment.create_attachments(files: files) if files.present?
comment
end
end
end
end