Sha256: 7cd996c2ae0bb0c110db3eeffe4f655196dd9146e304428a056ccea63ccf5088

Contents?: true

Size: 1.51 KB

Versions: 16

Compression:

Stored size: 1.51 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

16 entries across 16 versions & 1 rubygems

Version Path
houston-core-0.7.0 app/interactors/ticket_report.rb
houston-core-0.7.0.beta4 app/interactors/ticket_report.rb
houston-core-0.7.0.beta3 app/interactors/ticket_report.rb
houston-core-0.7.0.beta2 app/interactors/ticket_report.rb
houston-core-0.7.0.beta app/interactors/ticket_report.rb
houston-core-0.6.3 app/interactors/ticket_report.rb
houston-core-0.6.2 app/interactors/ticket_report.rb
houston-core-0.6.1 app/interactors/ticket_report.rb
houston-core-0.6.0 app/interactors/ticket_report.rb
houston-core-0.5.6 app/interactors/ticket_report.rb
houston-core-0.5.5 app/interactors/ticket_report.rb
houston-core-0.5.4 app/interactors/ticket_report.rb
houston-core-0.5.3 app/interactors/ticket_report.rb
houston-core-0.5.2 app/interactors/ticket_report.rb
houston-core-0.5.1 app/interactors/ticket_report.rb
houston-core-0.5.0 app/interactors/ticket_report.rb