joshsoftware/code-curiosity

View on GitHub
app/controllers/admin/redeem_requests_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
class Admin::RedeemRequestsController < ApplicationController
  include Admin::RedeemRequestsHelper

  before_action :authenticate_user!
  before_action :authenticate_admin!
  before_action :load_redeem_request, only: [:index, :download]

  def index
    @redeem_requests = @redeem_requests.where(store: params[:store]) if REDEEM['amazon_stores'].include?(params[:store])
    @redeem_requests = @redeem_requests.page(params[:page])
    if request.xhr?
      respond_to do|format|
        format.js
      end
    end
  end

  def update
    @redeem_request = RedeemRequest.find(params[:id])
    if @redeem_request
      @redeem_request.update_attributes(redeem_params)
      @redeem_request.update_transaction_points
    end
    redirect_back
  end

  def destroy
    @redeem_request = RedeemRequest.find(params[:id])
    @redeem_request.destroy
    flash[:success] = "successfully deleted"
    redirect_to admin_redeem_requests_path
  end

  def download
    csv_string = CSV.generate do |csv|
      csv << ["User", "Gift Shop", "Store", "Points", "Cost", "Date", "Coupon Code", "Address", "Status"]
      @redeem_requests.each do |redeem_request|
        csv << [redeem_request.user.email, redeem_request.retailer, redeem_request.store,
          redeem_request.points, redeem_request.amount,
          redeem_request.updated_at.strftime(fmt='%F %T'), redeem_request.coupon_code,
          redeem_request.address, redeem_request.status]
      end
    end
   send_data csv_string, type: 'text/csv; header = present;', disposition: "filename = requests.csv"
  end

  private

  def redeem_params
    params.fetch(:redeem_request).permit(:coupon_code, :comment, :points, :status)
  end

  def load_redeem_request
    @status = params[:status] || false
    @redeem_requests = RedeemRequest.where(status: @status).desc(:sponsorer_detail).desc(:created_at)
  end

end