class Family::Accounting::InvoicesController < Family::Controller
  def index
    data = invoices.by_status(params[:status])
    render_success :ok, json: data.map { |i| invoice_props(i) }
  end

  def show
    render_success :ok, json: invoice_props(invoice)
  end

  def pdf
    Reporting::Accounting::InvoicesJob.perform_async(
      current_school.id,
      current_user.id,
      invoice_ids: invoice.id
    )
  end

  private
    def invoices
      current_family.accounting_invoices.shared
    end

    def invoice
      @invoice ||= invoices.find_by(id: params[:id])
    end

    def invoice_props(invoice)
      {
        id: invoice.id,
        due_date: invoice.due_date,
        total: invoice.decorate.total,
        balance: invoice.decorate.balance
      }
    end
end
