Add signup search feature.
Add assign organizer to seminar events and assign signups to reviewers feature.
This commit is contained in:
1 parent
a605fc0df7
commit
2f076ab2cf
29 files changed
+1474
-349
No files matched your search
@@ -2,12 +2,21 @@
|
||||
class Admin::SeminarSignupsController < OrbitAdminController
|
||||
include Admin::SeminarsHelper
|
||||
before_action ->(module_app = @app_title) { set_variables module_app }
|
||||
|
||||
before_action :check_manager_for_seminar
|
||||
def initialize
|
||||
super
|
||||
@app_title = "seminar"
|
||||
end
|
||||
|
||||
def check_manager_for_seminar
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
access_level = OrbitHelper.user_access_level?
|
||||
if (access_level.nil? || access_level == "user")
|
||||
@seminar = SeminarSignup.find(params[:id]).seminar_main rescue nil
|
||||
if (@seminar.organizer_id != current_user.member_profile_id rescue true)
|
||||
render_401
|
||||
end
|
||||
end
|
||||
end
|
||||
def edit
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
params[:controller] = "admin/seminars"
|
||||
@@ -29,6 +38,15 @@ class Admin::SeminarSignupsController < OrbitAdminController
|
||||
field_value = r.last[:id].present?
|
||||
@custom_field_value = SeminarSignupValue.put_field_values(@seminar_signup, r.last, r.last[:id], field_value)
|
||||
end
|
||||
seminar_reviews = SeminarReview.where(:seminar_main_id=>@seminar_signup.seminar_main_id).to_a
|
||||
seminar_reviews.each{|sr| sr.save}
|
||||
@seminar = @seminar_signup.seminar_main
|
||||
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
||||
@seminar.seminar_reviews.each do |sr|
|
||||
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
||||
end
|
||||
@seminar.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
||||
@seminar.save
|
||||
end
|
||||
|
||||
redirect_to "/admin/seminars/#{@seminar_signup.seminar_main_id}/seminar_signup"
|
||||
|
||||
@@ -2,10 +2,13 @@
|
||||
class Admin::SeminarsController < OrbitAdminController
|
||||
|
||||
require 'axlsx'
|
||||
include Admin::SeminarsHelper
|
||||
helper Admin::SeminarsFieldHelper
|
||||
before_action ->(module_app = @app_title) { set_variables module_app }
|
||||
before_action :set_seminar, only: [:edit, :set_write_off, :seminar_signup, :destroy]
|
||||
|
||||
before_action :set_seminar, only: [:edit, :set_write_off, :seminar_signup, :destroy,:seminar_signup_admin_setting,:update_seminar_signup_admin_setting,:get_reviewer_block,:update_seminar_review,:reviewer_setting,:update_reviewer_setting]
|
||||
before_action :set_seminar_signup_admin_setting, only: [:seminar_signup,:seminar_signup_admin_setting,:update_seminar_signup_admin_setting,:get_reviewer_block]
|
||||
before_action :check_permission_for_seminar, only: [:seminar_signup,:get_reviewer_block]
|
||||
before_action :check_manager_for_seminar, only: [:seminar_signup_admin_setting,:update_seminar_signup_admin_setting,:update_seminar_review]
|
||||
def initialize
|
||||
super
|
||||
@app_title = "seminar"
|
||||
@@ -16,7 +19,152 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
:category=>categories.map{|c| {:title=>(c.title.blank? ? " " : c.title), :id=>c.id}}
|
||||
}
|
||||
end
|
||||
def check_manager_for_seminar
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
access_level = OrbitHelper.user_access_level?
|
||||
if (access_level.nil? || access_level == "user") && (@seminar.organizer_id != current_user.member_profile_id rescue true)
|
||||
render_401
|
||||
end
|
||||
end
|
||||
def check_permission_for_seminar
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
access_level = OrbitHelper.user_access_level?
|
||||
if (access_level.nil? || access_level == "user")
|
||||
unless (@seminar.reviewer_ids.include?(current_user.member_profile_id.to_s) rescue false) || (@seminar.organizer_id == current_user.member_profile_id rescue false)
|
||||
render_401
|
||||
else
|
||||
@user_authenticated_categories = ['all']
|
||||
end
|
||||
end
|
||||
end
|
||||
def reviewer_setting
|
||||
@seminar_reviews = @seminar.seminar_reviews
|
||||
@fields = []
|
||||
@fields_translations = []
|
||||
access_markup = ["select","radio_button","checkbox"]
|
||||
@fields_values = []
|
||||
@seminar.seminar_signup_fields.each do |f|
|
||||
next if f.disabled
|
||||
if access_markup.include?(f.markup)
|
||||
@fields << "seminar_signup_fields.#{f.id}"
|
||||
@fields_translations << f.title
|
||||
@fields_values << f.option_list
|
||||
end
|
||||
end
|
||||
@seminar.seminar_submission_fields.each do |f|
|
||||
next if f.disabled
|
||||
if access_markup.include?(f.markup)
|
||||
@fields << "seminar_submission_fields.#{f.id}"
|
||||
@fields_translations << f.title
|
||||
@fields_values << f.option_list
|
||||
end
|
||||
end
|
||||
@fields_values = @fields_values.collect.with_index{|fields_values,i| [i, fields_values.values.map{|v| v[I18n.locale]} ] }.to_h
|
||||
end
|
||||
def update_reviewer_setting
|
||||
seminar_params[:seminar_reviews_attributes].keys.each do |i|
|
||||
if seminar_params[:seminar_reviews_attributes][i][:default_topics].present?
|
||||
seminar_params[:seminar_reviews_attributes][i][:default_topics] = [] if seminar_params[:seminar_reviews_attributes][i][:default_topics].nil?
|
||||
default_topics_values = []
|
||||
(0...seminar_params[:seminar_reviews_attributes][i][:default_topics].count).each do |ii|
|
||||
default_topics_values << (Array(seminar_params[:seminar_reviews_attributes][i][:default_topics_values][ii.to_s]) rescue [])
|
||||
end
|
||||
seminar_params[:seminar_reviews_attributes][i][:default_topics_values] = default_topics_values
|
||||
else
|
||||
seminar_params[:seminar_reviews_attributes][i][:default_topics] = []
|
||||
seminar_params[:seminar_reviews_attributes][i][:default_topics_values] = []
|
||||
end
|
||||
end
|
||||
#render :html => seminar_params and return
|
||||
@seminar.update_attributes(seminar_params)
|
||||
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
||||
@seminar.seminar_reviews.each do |sr|
|
||||
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
||||
end
|
||||
@seminar.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
||||
@seminar.save
|
||||
redirect_to admin_seminars_path
|
||||
end
|
||||
def enquiry_for_applicants
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
@access_level = OrbitHelper.user_access_level?
|
||||
@can_edit = true
|
||||
if @access_level == "user" || @access_level.nil?
|
||||
@can_edit = false
|
||||
end
|
||||
reviewer_id = current_user.member_profile_id.to_s
|
||||
if !@can_edit && SeminarMain.where(:reviewer_ids=>reviewer_id).count == 0 && SeminarMain.where(:organizer_id=>reviewer_id).count == 0
|
||||
render_401 and return
|
||||
end
|
||||
|
||||
@seminar_signup_admin_setting = SeminarSignupAdminSetting.where(:seminar_main_id=>"enquiry_for_applicants").first
|
||||
if @seminar_signup_admin_setting.nil?
|
||||
@seminar_signup_admin_setting = SeminarSignupAdminSetting.create(:seminar_main_id=>"enquiry_for_applicants")
|
||||
end
|
||||
if params[:name].present?
|
||||
@seminar_signups = SeminarSignup.where(:name => /#{params[:name]}/).page(params[:page]).per(10)
|
||||
else
|
||||
@seminar_signups = []
|
||||
end
|
||||
unless @can_edit
|
||||
if @seminar_signups.class != Array
|
||||
seminar_signup_ids = SeminarReview.where(:reviewer_id=>reviewer_id).pluck(:seminar_signup_ids).flatten
|
||||
remove_seminar_signup_ids = SeminarReview.where(:reviewer_id=>reviewer_id).pluck(:remove_seminar_signup_ids).flatten
|
||||
default_seminar_signup_ids = SeminarReview.where(:reviewer_id=>reviewer_id).pluck(:default_seminar_signup_ids).flatten
|
||||
all_seminar_signup_ids = seminar_signup_ids - remove_seminar_signup_ids + default_seminar_signup_ids
|
||||
|
||||
ids2 = SeminarSignup.where(:seminar_main_id.in=> SeminarMain.where(:organizer_id=>current_user.member_profile_id).pluck(:id)).pluck(:id)
|
||||
|
||||
@seminar_signups = @seminar_signups.where(:id.in=>all_seminar_signup_ids + ids2).page(params[:page]).per(10)
|
||||
end
|
||||
end
|
||||
end
|
||||
def get_hide_reviewer
|
||||
seminar_main = SeminarMain.find(params[:id]) rescue nil
|
||||
if seminar_main.nil?
|
||||
render :nothing => true
|
||||
else
|
||||
@hide_reviewer_ids = Array(seminar_main.reviewer_ids) - Array(seminar_main.reviewer_show_ids)
|
||||
@hide_reviewers = MemberProfile.where(:id.in=>@hide_reviewer_ids)
|
||||
render :layout => false
|
||||
end
|
||||
end
|
||||
def get_reviewer_block
|
||||
@reviewer_id = params[:reviewer_id]
|
||||
unless (@seminar.reviewer_show_ids.include?(@reviewer_id) rescue false)
|
||||
@seminar.reviewer_show_ids << @reviewer_id
|
||||
@seminar.save
|
||||
end
|
||||
render :layout => false
|
||||
end
|
||||
def update_seminar_review
|
||||
if @seminar_review.nil?
|
||||
render :json => {:success => false}
|
||||
else
|
||||
seminar_main = @seminar_review.seminar_main
|
||||
if params[:mode] == "append"
|
||||
@seminar_review.seminar_signup_ids << params[:signup_id]
|
||||
@seminar_review.remove_seminar_signup_ids.delete(params[:signup_id])
|
||||
seminar_main.unassigned_seminar_signup_ids.delete(params[:signup_id])
|
||||
elsif params[:mode] == "remove"
|
||||
@seminar_review.seminar_signup_ids.delete(params[:signup_id])
|
||||
@seminar_review.remove_seminar_signup_ids << params[:signup_id]
|
||||
seminar_main.unassigned_seminar_signup_ids << params[:signup_id]
|
||||
elsif params[:mode] == "hide"
|
||||
if seminar_main.reviewer_show_ids.nil?
|
||||
seminar_main.reviewer_show_ids = seminar_main.reviewer_ids[0..1]
|
||||
end
|
||||
seminar_main.reviewer_show_ids = seminar_main.reviewer_show_ids - Array(@seminar_review.reviewer_id).flatten
|
||||
elsif params[:mode] == "show"
|
||||
seminar_main.reviewer_show_ids = seminar_main.reviewer_show_ids.to_a + Array(@seminar_review.reviewer_id).flatten
|
||||
else
|
||||
render :json => {:success => false} and return
|
||||
end
|
||||
seminar_main.save
|
||||
@seminar_review.save
|
||||
render :json => {:success => true}
|
||||
end
|
||||
end
|
||||
def index
|
||||
@categories = @module_app.categories.enabled
|
||||
@filter_fields = filter_fields(@categories)
|
||||
@@ -37,7 +185,18 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
@seminars = SeminarMain.all.order_by(sort).with_categories(filters("category"))
|
||||
|
||||
@seminars = search_data(@seminars,[:title]).page(params[:page]).per(10)
|
||||
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
@access_level = OrbitHelper.user_access_level?
|
||||
@can_edit = true
|
||||
if @access_level == "user" || @access_level.nil?
|
||||
@can_edit = false
|
||||
end
|
||||
unless @can_edit
|
||||
reviewer_id = current_user.member_profile_id.to_s
|
||||
ids1 = @seminars.where(:reviewer_ids=>reviewer_id).pluck(:id)
|
||||
ids2 = @seminars.where(:organizer_id=>current_user.member_profile_id).pluck(:id)
|
||||
@seminars = @seminars.where(:id.in=>ids1+ids2)
|
||||
end
|
||||
if request.xhr?
|
||||
render :partial => "index"
|
||||
end
|
||||
@@ -49,12 +208,19 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
@seminar = SeminarMain.find(params[:id])
|
||||
@seminar_signups = SeminarSignup.where(:seminar_main_id => params[:id])
|
||||
filename = @seminar.title.parameterize.underscore + "_export.xlsx"
|
||||
respond_to do |format|
|
||||
format.xlsx {
|
||||
response.headers['Content-Disposition'] = 'attachment; filename="' + filename + '"'
|
||||
}
|
||||
if can_see_seminar_signup(@seminar)
|
||||
if !admin_for_seminar(@seminar)
|
||||
@seminar_review = @seminar.seminar_reviews.where(:reviewer_id => current_user.member_profile_id.to_s).first
|
||||
@seminar_signups = @seminar_signups.where(:id.in=>@seminar_review.all_seminar_signup_ids) rescue []
|
||||
end
|
||||
respond_to do |format|
|
||||
format.xlsx {
|
||||
response.headers['Content-Disposition'] = 'attachment; filename="' + filename + '"'
|
||||
}
|
||||
end
|
||||
else
|
||||
render :nothing => true
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def new
|
||||
@@ -121,22 +287,22 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
@signup_sets = @seminar.seminar_signup_field_sets
|
||||
@submission_set = @seminar.seminar_submission_field_sets
|
||||
@custom_set = @seminar.seminar_signup_field_customs
|
||||
if @seminar.seminar_reviews.first.nil?
|
||||
@review = @seminar.seminar_reviews.new()
|
||||
@member = MemberProfile.where(:id.in=>@seminar.reviewer_ids).to_a rescue []
|
||||
if (@seminar.organizer_id == current_user.member_profile_id rescue false)
|
||||
@user_authorized_categories = @module_app.categories.enabled.to_a
|
||||
else
|
||||
@review = @seminar.seminar_reviews.first
|
||||
@user_authorized_categories = nil
|
||||
end
|
||||
@member = MemberProfile.find(@review.reviewer_id) rescue nil
|
||||
end
|
||||
|
||||
def update
|
||||
|
||||
|
||||
params[:seminar_main][:registration_status] = (params[:seminar_main][:registration_status] ? params[:seminar_main][:registration_status] : [])
|
||||
|
||||
uid = params[:id].split('-').last
|
||||
@seminar = SeminarMain.find_by(:uid=>uid)
|
||||
|
||||
seminar_params["reviewer_ids"] = [] if seminar_params["reviewer_ids"].nil?
|
||||
seminar_params["organizer_id"] = nil if seminar_params["organizer_id"].nil?
|
||||
if params[:seminar_main][:seminar_signup_fields]
|
||||
seminar_params[:seminar_signup_fields].each do |a|
|
||||
@field_name = 'seminar_main'
|
||||
@@ -209,15 +375,49 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
end
|
||||
|
||||
def seminar_signup
|
||||
|
||||
if !params[:search].blank?
|
||||
@seminar_signups = SeminarSignup.where(:seminar_main_id => @seminar.id, :name=>params[:search]).page(params[:page]).per(10)
|
||||
@seminar_signups = []
|
||||
if params[:type] == "table"
|
||||
@seminar_signups = @seminar.seminar_signups.where(:name=>/#{params[:search]}/)
|
||||
else
|
||||
@seminar_signups = SeminarSignup.where(:seminar_main_id => @seminar.id).page(params[:page]).per(10)
|
||||
@seminar_signups = SeminarSignup.where(:id.in => @seminar.unassigned_seminar_signup_ids, :name=>/#{params[:search]}/)
|
||||
end
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
@access_level = OrbitHelper.user_access_level?
|
||||
@can_edit = true
|
||||
if @access_level == "user" || @access_level.nil?
|
||||
@can_edit = false
|
||||
end
|
||||
unless @can_edit
|
||||
@can_edit = (@seminar.organizer_id == current_user.member_profile_id rescue false)
|
||||
end
|
||||
unless @can_edit
|
||||
@seminar_review = @seminar.seminar_reviews.where(:reviewer_id => current_user.member_profile_id.to_s).first
|
||||
@seminar_signups = @seminar.seminar_signups.where(:id.in=>@seminar_review.all_seminar_signup_ids)
|
||||
end
|
||||
@seminar_signups = @seminar_signups.page(params[:page]).per(10)
|
||||
if request.xhr?
|
||||
render :layout => false
|
||||
end
|
||||
end
|
||||
def seminar_signup_admin_setting
|
||||
if @seminar.nil? && params[:id] != "enquiry_for_applicants"
|
||||
redirect_to admin_seminars_path
|
||||
end
|
||||
end
|
||||
def update_seminar_signup_admin_setting
|
||||
@seminar_signup_admin_setting.update_attributes(params.require(:seminar_signup_admin_setting).permit!)
|
||||
if params[:id] != "enquiry_for_applicants"
|
||||
redirect_to seminar_signup_admin_seminar_path(params[:id])
|
||||
else
|
||||
redirect_to admin_seminar_enquiry_for_applicants_path
|
||||
end
|
||||
end
|
||||
def set_seminar_signup_admin_setting
|
||||
@seminar_signup_admin_setting = SeminarSignupAdminSetting.where(:seminar_main_id=>params[:id]).first
|
||||
if @seminar_signup_admin_setting.nil?
|
||||
@seminar_signup_admin_setting = SeminarSignupAdminSetting.create(:seminar_main_id=>params[:id])
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def edit_seminar_signup
|
||||
@seminar_signup = SeminarSignup.find(params[:id])
|
||||
@seminar = SeminarMain.find(@seminar_signup.seminar_main_id)
|
||||
@@ -237,7 +437,11 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
private
|
||||
|
||||
def set_seminar
|
||||
@seminar = SeminarMain.find(params[:id])
|
||||
@seminar = SeminarMain.find(params[:id]) rescue nil
|
||||
if params[:action] == "update_seminar_review"
|
||||
@seminar_review = SeminarReview.find(params[:id]) rescue nil
|
||||
@seminar = @seminar_review.seminar_main
|
||||
end
|
||||
end
|
||||
|
||||
def seminar_params
|
||||
|
||||
Reference in new issue
Block a user