class InvoicesController

Public Instance Methods

index() click to toggle source

It get all the invoice related information of user.

# File app/controllers/invoices_controller.rb, line 8
def index
  if params[:user_id]
    @requested_user =  User.find(params[:user_id])
  end
  add_breadcrumb "Invoices"
  @invoices = current_user.related_payments
  @invoices = @invoices.includes(from_user: [:profile_image], to_user: [:profile_image])
  @invoices = @invoices.order("invoice_transaction_views.created_at DESC").page(params[:page]).per(params[:per_page])
end
pay() click to toggle source

Method to pay the invoice.

# File app/controllers/invoices_controller.rb, line 29
def pay
  @invoice = Invoice.find(params[:id])
  if current_user.has_balanced_account?
    if @invoice.user == current_user
      unless @invoice.paid?
        unless @invoice.charged?
          if Payment.populate_credits(@invoice)
            @invoice.charged = true
            @invoice.save validate: false
          else
            respond_to do |format|
              message = "Unable to Charge your Card."
              format.html { redirect_to request.referer || dashboard_path, notice: message}
              format.js { redirect_via_turbolinks_to request.referer || dashboard_path, notice: message}
              return
            end
          end
        end
        if @invoice.pay_tutor
          flash[:notice] = "Invoice has been paid."
          respond_to do |format|
            format.js {}
          end
        else
          if @invoice.manually_billed?
            message = "Your amount for this invoice has been transfered to #{Configurations::General.application_name} escrow account. But unable to make payment to the #{Tutor.model_name.human}. Please contact #{Configurations::General.application_name} team."
          else
            message = "Unable to make payment to #{Tutor.model_name.human}. Please contact #{Configurations::General.application_name} team."
          end
          redirect_to request.referer || root_path, notice: message
        end
      else
        redirect_to dashboard_path, notice: 'This session has already been paid.'
      end
    else
      raise ActiveRecord::RecordNotFound
    end
  else
    respond_to do |format|
      format.js {}
    end
  end
end
show() click to toggle source

It will show all user related payment on payment page.

# File app/controllers/invoices_controller.rb, line 19
def show
  @invoice = current_user.related_payments.where("id = ? and payment_type = ?", params[:id], params[:type]).first
  respond_to do |format|
    format.pdf do
      render :pdf => "Invoice-#{@invoice.id}", template: 'invoices/show.pdf.slim', layout: 'pdf.html.slim', page_size: 'A6'
    end
  end
end