strawberrycanyon/redeemify

View on GitHub
app/controllers/concerns/offeror_actions.rb

Summary

Maintainability
A
25 mins
Test Coverage
module OfferorActions
  
  def upload_page
  end

  def home
    @histories_array = Offeror.home_set(current_offeror.history)

    @hash = { "uploaded" => current_offeror.uploaded_codes,
              "used" => current_offeror.used_codes,
              "unclaimed" => current_offeror.unclaimed_codes,
              "removed" => current_offeror.removed_codes }

    gon.codes = @hash
    gon.history = current_offeror.history
  end

  def import
    if params[:file].nil?
      redirect_to "/#{params[:controller]}/upload_page", 
        :flash => { :error => "You have not selected a file to upload" }
    else
      import_status = current_offeror.import(params[:file], params[:comment])
      fail_codes = import_status[:err_codes]
      if import_status[:err_file]
        flash[:error] = import_status[:err_file]
        redirect_to "/#{params[:controller]}/upload_page" 
      elsif fail_codes > 0
        content = validation_errors_content(import_status)
        send_data(content,
          :filename => "#{fail_codes}_#{'code'.pluralize(fail_codes)}_rejected_at_submission_details.txt")
      else                                
        flash[:notice] = "#{import_status[:submitted_codes]} #{'code'.pluralize(import_status[:submitted_codes])} imported" 
        redirect_to "/#{params[:controller]}/home"
      end
    end
  end
  
  def remove_unclaimed_codes
    if offeror_codes.where(user_id: nil).count.zero?
      redirect_to "/#{params[:controller]}/home",
        :flash => { :error => "There are no unclaimed codes" }
    else
      current_offeror.remove_unclaimed_codes(offeror_codes)
      redirect_to "/#{params[:controller]}/home",
        :flash => { :notice => "Codes were removed" }
    end
  end
  
  def download_unclaimed_codes
    unclaimed_codes = current_offeror.download_unclaimed_codes(offeror_codes)
    send_data(unclaimed_codes, filename: "unclaimed_codes.txt")
  end
  
  def view_codes
    @offeror_codes = offeror_codes.all
  end

  def clear_history
    if current_offeror.history.nil?
      redirect_to "/#{params[:controller]}/home",
        :flash => { :error => "History is empty" }
    else
      current_offeror.update_attribute(:history, nil)
      redirect_to "/#{params[:controller]}/home",
        :flash => { :notice => "History was cleared" }
    end
  end
  
  private

  def require_login
    unless current_offeror
      redirect_to '/' and return
    end
  end
end