85 lines
3.0 KiB
Ruby
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 |