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

85 lines
3.0 KiB
Ruby

ActiveAdmin.register JamRuby::User, :as => 'OnboarderManagement' do
menu :label => 'Onboarder Management', :parent => 'JamClass'
config.sort_order = 'created_at desc'
config.batch_actions = true
config.per_page = 100
config.paginate = true
config.filters = true
config.clear_action_items!
batch_action :destroy, false
batch_action :onboarder, form: -> { {
support_consultant: (User.where(is_onboarder: true).includes(:onboarding_users).map {|user| ["#{user.name} (#{user.onboarding_users.where('onboarding_status = ? OR onboarding_status = ?', User::ONBOARDING_STATUS_ASSIGNED, User::ONBOARDING_STATUS_EMAILED).count})", user.id]}).to_a.unshift(['Unassign', ''])
} } do |ids, inputs|
onboarder = inputs[:support_consultant]
if onboarder.blank?
onboarder = nil
else
onboarder = User.find(onboarder)
end
ids.each do |id|
user = User.find(id)
user.onboarder = onboarder
user.onboarder_assigned_at = Date.today
user.save
end
if onboarder
msg = 'Assigned ' + User.find(onboarder).name + " to #{ids.length} users"
else
msg = "Unassigned any Support Consultant from #{ids.length} users"
end
redirect_to :back, notice: msg
end
filter :jamuser_full_name_or_email_cont, label: 'Name Or Email', as: :string
filter :onboarder, as: :select, :collection => User.where(is_onboarder: true), label: 'Support Consultant'
filter :onboarder_id_blank, :as => :boolean, label: 'Unassigned'
filter :onboarding_escalation_reason_present, :as => :boolean, label: 'Escalated'
scope("TestDrive/Amazon Users", default: true) { |scope| scope.joins(:posa_cards).where('posa_cards.lesson_package_type_id in (?)', LessonPackageType::AMAZON_PACKAGES + LessonPackageType::LESSON_PACKAGE_TYPES) }
controller do
active_admin_config.includes.push :onboarding_users
end
index do
selectable_column
column "Name" do |user|
link_to user.name, user.admin_url
end
column :email
column :onboarding_status
column "Lost Reason", :onboarding_lost_reason
column "Escalated Reason", :onboarding_escalation_reason
column "Support Consultant" do |user|
if user.onboarder
link_to "#{user.onboarder.name} (#{user.onboarder.onboarding_users.where('onboarding_status = ? OR onboarding_status = ?', User::ONBOARDING_STATUS_ASSIGNED, User::ONBOARDING_STATUS_EMAILED).count})", user.onboarder.admin_url
else
end
end
column "Signup" do |user|
user.created_at.to_date
end
column "Assigned", :onboarder_assigned_at
column "Email 1", :onboarding_email_1_sent_at
column "Email 2", :onboarding_email_2_sent_at
column "Email 3", :onboarding_email_3_sent_at
column "Email 4", :onboarding_email_4_sent_at
column "Email 5", :onboarding_email_5_sent_at
column "Test Session", :onboarding_test_session_scheduled_at
end
member_action :update_onboarder, :method => :post do
resource.onboarder = params[:onboarder]
resource.save!
redirect_to :back
end
end