jam-cloud/admin/app/admin/posa_card_upload.rb

118 lines
3.7 KiB
Ruby

ActiveAdmin.register_page "POSA Card Uploads" do
menu :label => 'Posa Cards Upload', :parent => 'JamClass'
page_action :upload_posacards, :method => :post do
PosaCard.transaction do
puts params
file = params[:jam_ruby_posa_card][:csv]
array_of_arrays = CSV.read(file.tempfile.path)
array_of_arrays.each do |row|
if row.length != 5
raise "UKNONWN CSV FORMAT! Must be 5 columns"
end
code = row[0]
lesson_package_type = row[1]
preactivate = row[2].strip.downcase == "true"
requires_purchase = row[3].downcase== "true"
is_test = row[4].strip.downcase == "true"
posa_card = PosaCard.new
posa_card.code = code
posa_card.lesson_package_type = LessonPackageType.find(lesson_package_type)
posa_card.preactivate = preactivate
posa_card.requires_purchase = requires_purchase
posa_card.purchased = !requires_purchase
posa_card.card_type = params[:jam_ruby_posa_card][:card_type]
posa_card.is_test = is_test
if posa_card.card_type == PosaCard::JAM_CLASS_4
posa_card.is_lesson = true
posa_card.credits = 4
elsif posa_card.card_type == PosaCard::JAM_CLASS_2
posa_card.is_lesson = true
posa_card.credits = 2
end
posa_card.origin = file .original_filename
posa_card.save!
end
redirect_to admin_posa_card_uploads_path, :notice => "Created #{array_of_arrays.length} POSA cards!"
end
end
=begin
form :html => {:multipart => true} do |f|
f.inputs "Details" do
f.input :version, :hint => "Should match Jenkins build number of artifact"
f.input :environment, :hint => "Typically just 'public'"
f.input :product, :as => :select, :collection => JamRuby::ArtifactUpdate::PRODUCTS
end
f.inputs "Artifact Upload" do
f.input :uri, :as => :file, :hint => "Upload the artifact from Jenkins"
end
f.actions
end
# fr manual entry of huge CSVs from rails c command line
PosaCard.transaction do
array_of_arrays = CSV.read('codes.csv')
array_of_arrays.each do |row|
if row.length != 5
raise "UKNONWN CSV FORMAT! Must be 5 columns"
end
code = row[0]
lesson_package_type = row[1]
preactivate = row[2].strip.downcase == "true"
requires_purchase = row[3].downcase== "true"
is_test = row[4].strip.downcase == "true"
posa_card = PosaCard.new
posa_card.code = code
posa_card.lesson_package_type = LessonPackageType.find(lesson_package_type)
posa_card.preactivate = preactivate
posa_card.requires_purchase = requires_purchase
posa_card.purchased = !requires_purchase
posa_card.card_type = 'jam_class_2'
posa_card.is_test = is_test
if posa_card.card_type == PosaCard::JAM_CLASS_4
posa_card.is_lesson = true
posa_card.credits = 4
elsif posa_card.card_type == PosaCard::JAM_CLASS_2
posa_card.is_lesson = true
posa_card.credits = 2
end
posa_card.origin = 'posa-cards-amazon-test-drive-paid-4-50k.csv'
posa_card.save!
end
end
=end
content do
active_admin_form_for PosaCard.new, :url => admin_posa_card_uploads_upload_posacards_path, :builder => ActiveAdmin::FormBuilder do |f|
f.inputs "Upload POSA Cards" do
f.input :csv, as: :file, required: true, :label => "A single column CSV that contains ONE type of gift card (5 JamTrack, 10 JamTrack, 4 JamClass etc)"
f.input :card_type, required:true, as: :select, :collection => JamRuby::PosaCard::CARD_TYPES
end
f.actions
end
end
end