Sha256: 0e9da21e45e88c2eb3da3f4c625f263ef6ab44ef4a096288fcf5fcb2a3a77816
Contents?: true
Size: 1.53 KB
Versions: 1
Compression:
Stored size: 1.53 KB
Contents
class TicketReport class ViewTicket < Struct.new( :id, :number, :type, :summary, :reporter_email, :reporter_first_name, :reporter_last_name, :antecedents, :opened_at, :closed_at, :milestone_id, :milestone_name) def antecedents (super || []).map { |s| TicketAntecedent.from_s(self, s) } end def reporter_name "#{reporter_first_name} #{reporter_last_name}" end def as_json(options={}) { id: id, number: number, type: type.downcase, summary: summary, reporter: { email: reporter_email, name: reporter_name }, milestone: milestone_id && { id: milestone_id, name: milestone_name }, antecedents: antecedents.map { |antecedent| { id: antecedent.id, kind: antecedent.kind } }, openedAt: opened_at, closedAt: closed_at } end end def initialize(tickets) @tickets = tickets .joins("LEFT OUTER JOIN users ON tickets.reporter_id=users.id") .joins("LEFT OUTER JOIN milestones ON tickets.milestone_id=milestones.id") .order(Ticket.arel_table[:created_at].desc) end def to_a @tickets.pluck( :id, :number, :type, :summary, "users.email", "users.first_name", "users.last_name", :antecedents, :created_at, :closed_at, "milestones.id", "milestones.name" ).map { |args| ViewTicket.new(*args) } end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
houston-core-0.5.0.beta1 | app/interactors/ticket_report.rb |