Add assign session feature.
Add copy feature.
This commit is contained in:
1 parent
ed1ebc8ec3
commit
f83fb71f2a
26 files changed
+879
-97
No files matched your search
@@ -5,10 +5,10 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
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,: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]
|
||||
before_action :set_seminar, only: [:edit, :set_write_off, :seminar_signup, :destroy,:seminar_signup_admin_setting,:update_seminar_signup_admin_setting,:get_reviewer_block,:get_session_block,:update_seminar_review,:update_seminar_session,: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,:get_session_block]
|
||||
before_action :check_permission_for_seminar, only: [:seminar_signup,:get_reviewer_block,:get_session_block]
|
||||
before_action :check_manager_for_seminar, only: [:seminar_signup_admin_setting,:update_seminar_signup_admin_setting,:update_seminar_review,:update_seminar_session]
|
||||
def initialize
|
||||
super
|
||||
@app_title = "seminar"
|
||||
@@ -89,9 +89,12 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
#render :html => seminar_params and return
|
||||
@seminar.update_attributes(seminar_params)
|
||||
unassigned_seminar_signup_ids = @seminar.seminar_signup_ids.map{|s| s.to_s}
|
||||
unassigned_mode_1_seminar_signup_ids = unassigned_seminar_signup_ids.dup
|
||||
@seminar.seminar_reviews.each do |sr|
|
||||
unassigned_mode_1_seminar_signup_ids = unassigned_mode_1_seminar_signup_ids - sr.get_all_seminar_signup_ids(1)
|
||||
unassigned_seminar_signup_ids = unassigned_seminar_signup_ids - sr.all_seminar_signup_ids
|
||||
end
|
||||
@seminar.unassigned_mode_1_seminar_signup_ids = unassigned_mode_1_seminar_signup_ids
|
||||
@seminar.unassigned_seminar_signup_ids = unassigned_seminar_signup_ids
|
||||
@seminar.save
|
||||
redirect_to admin_seminars_path
|
||||
@@ -119,10 +122,14 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
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
|
||||
seminar_review = SeminarReview.where(:reviewer_id=>reviewer_id)
|
||||
seminar_signup_ids = seminar_review.pluck(:seminar_signup_ids).flatten
|
||||
remove_seminar_signup_ids = seminar_review.pluck(:remove_seminar_signup_ids).flatten
|
||||
assign_ids = []
|
||||
seminars = SeminarMain.where(:id.in => seminar_review.pluck(:seminar_main_id))
|
||||
final_assign_signup_ids = SeminarSession.where(:id.in=>seminar_review.pluck(:seminar_session_ids).flatten,:seminar_main_id.in=>seminars.where(:assign_mode=>1).pluck(:id)).pluck(:seminar_signup_ids).flatten
|
||||
default_seminar_signup_ids = seminar_review.where(:seminar_main_id.in=>seminars.where(:assign_mode=>0).pluck(:id)).pluck(:default_seminar_signup_ids).flatten
|
||||
all_seminar_signup_ids = seminar_signup_ids - remove_seminar_signup_ids + final_assign_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)
|
||||
|
||||
@@ -130,6 +137,18 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
end
|
||||
end
|
||||
end
|
||||
def get_hide_session
|
||||
seminar_main = SeminarMain.find(params[:id]) rescue nil
|
||||
if seminar_main.nil?
|
||||
render :nothing => true
|
||||
else
|
||||
@seminar = seminar_main
|
||||
@seminar_sessions = @seminar.seminar_sessions
|
||||
@hide_session_ids = (0...seminar_main.summary_chioices.count).to_a - Array(seminar_main.session_show_ids)
|
||||
@hide_sessions = @hide_session_ids.zip(seminar_main.summary_chioices[Range.new(@hide_session_ids[0],@hide_session_ids[-1])]).to_h
|
||||
render :layout => false
|
||||
end
|
||||
end
|
||||
def get_hide_reviewer
|
||||
seminar_main = SeminarMain.find(params[:id]) rescue nil
|
||||
if seminar_main.nil?
|
||||
@@ -137,9 +156,18 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
else
|
||||
@hide_reviewer_ids = Array(seminar_main.reviewer_ids) - Array(seminar_main.reviewer_show_ids)
|
||||
@hide_reviewers = MemberProfile.where(:id.in=>@hide_reviewer_ids)
|
||||
@reviewers = seminar_main.seminar_reviews.where(:reviewer_id.in=>@hide_reviewer_ids).to_a
|
||||
render :layout => false
|
||||
end
|
||||
end
|
||||
def get_session_block
|
||||
@session_id = params[:session_id].to_i
|
||||
unless (@seminar.session_show_ids.include?(@session_id) rescue false)
|
||||
@seminar.session_show_ids << @session_id
|
||||
@seminar.save
|
||||
end
|
||||
render :layout => false
|
||||
end
|
||||
def get_reviewer_block
|
||||
@reviewer_id = params[:reviewer_id]
|
||||
unless (@seminar.reviewer_show_ids.include?(@reviewer_id) rescue false)
|
||||
@@ -148,6 +176,42 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
end
|
||||
render :layout => false
|
||||
end
|
||||
def update_seminar_session
|
||||
if @seminar.nil?
|
||||
render :json => {:success => false}
|
||||
else
|
||||
seminar_main = @seminar
|
||||
session_id = params[:session_id].to_i
|
||||
seminar_main.save
|
||||
seminar_session = @seminar.seminar_sessions.where(:key=>session_id).first
|
||||
if params[:mode] == "append"
|
||||
@seminar_signup.update(:final_session=>session_id)
|
||||
seminar_session.seminar_signup_ids << @seminar_signup.id.to_s
|
||||
@seminar_signup.update(:seminar_session_id=>seminar_session.id)
|
||||
seminar_main.assign_mode = 1
|
||||
seminar_session.save
|
||||
seminar_main.unassigned_mode_1_seminar_signup_ids.delete(@seminar_signup.id.to_s)
|
||||
elsif params[:mode] == "remove"
|
||||
@seminar_signup.update(:final_session=>nil)
|
||||
seminar_session.seminar_signup_ids.delete(@seminar_signup.id.to_s)
|
||||
@seminar_signup.update(:seminar_session_id=>nil)
|
||||
seminar_session.save
|
||||
seminar_main.assign_mode = 0 if seminar_main.seminar_sessions.where(:seminar_signup_ids.ne=>[]).count == 0
|
||||
seminar_main.unassigned_mode_1_seminar_signup_ids << @seminar_signup.id.to_s
|
||||
elsif params[:mode] == "hide"
|
||||
if seminar_main.session_show_ids.nil?
|
||||
seminar_main.session_show_ids = (0...seminar_main.summary_chioices.count).to_a[0..1]
|
||||
end
|
||||
seminar_main.session_show_ids.delete(session_id)
|
||||
elsif params[:mode] == "show"
|
||||
seminar_main.session_show_ids = seminar_main.session_show_ids.to_a + Array(session_id)
|
||||
else
|
||||
render :json => {:success => false} and return
|
||||
end
|
||||
seminar_main.save
|
||||
render :json => {:success => true}
|
||||
end
|
||||
end
|
||||
def update_seminar_review
|
||||
if @seminar_review.nil?
|
||||
render :json => {:success => false}
|
||||
@@ -157,10 +221,12 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
@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])
|
||||
seminar_main.unassigned_mode_1_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]
|
||||
seminar_main.unassigned_mode_1_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]
|
||||
@@ -190,7 +256,7 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
sort = {params[:sort].to_sym=>params[:order]}
|
||||
end
|
||||
else
|
||||
sort = {:signup_start_date=>"desc"}
|
||||
sort = {:signup_start_date=>"desc",:created_at=>"desc"}
|
||||
end
|
||||
|
||||
@seminars = SeminarMain.all.order_by(sort).with_categories(filters("category"))
|
||||
@@ -222,8 +288,9 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
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 []
|
||||
@seminar_signups = @seminar_signups.where(:id.in=>@seminar_review.get_all_seminar_signup_ids) rescue []
|
||||
end
|
||||
@seminar_signups = @seminar_signups.sort_ordered
|
||||
respond_to do |format|
|
||||
format.xlsx {
|
||||
response.headers['Content-Disposition'] = 'attachment; filename="' + filename + '"'
|
||||
@@ -233,7 +300,16 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
render :nothing => true
|
||||
end
|
||||
end
|
||||
|
||||
def copy
|
||||
@seminar = SeminarMain.find(params[:id]).clone_new
|
||||
@member = MemberProfile.where(:id.in=>@seminar.reviewer_ids).to_a
|
||||
@email_set = @seminar.seminar_email_sets
|
||||
@signup_sets = @seminar.seminar_signup_field_sets
|
||||
@submission_set = @seminar.seminar_submission_field_sets
|
||||
@custom_set = @seminar.seminar_signup_field_customs
|
||||
@seminar_items = SeminarItem.all
|
||||
@review = @seminar.seminar_reviews.first
|
||||
end
|
||||
def new
|
||||
@member = nil
|
||||
@seminar = SeminarMain.new
|
||||
@@ -256,21 +332,43 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
seminar_signup_set_params = seminar_main_params['seminar_signup_field_sets']
|
||||
seminar_submission_set_params = seminar_main_params['seminar_submission_field_sets']
|
||||
seminar_email_sets_params = seminar_main_params['seminar_email_sets']
|
||||
seminar_signup_field_customs_params = seminar_main_params["seminar_signup_field_customs"].to_hash
|
||||
seminar_main_params["seminar_signup_field_customs"].each do |k,v|
|
||||
v.delete "title"
|
||||
end
|
||||
seminar_main_params.delete(:seminar_signup_field_sets)
|
||||
seminar_main_params.delete(:seminar_submission_field_sets)
|
||||
seminar_main_params.delete(:seminar_email_sets)
|
||||
seminar = SeminarMain.new(seminar_main_params)
|
||||
seminar.create_user_id = current_user.id
|
||||
seminar.update_user_id = current_user.id
|
||||
if seminar.copy_id && params["clone_signups"].blank?
|
||||
seminar.except_clone_relations = ["seminar_signups","seminar_signup_values"]
|
||||
end
|
||||
seminar.save
|
||||
seminar_signup_set_params.each do |key,value|
|
||||
seminar.seminar_signup_field_sets.create(value)
|
||||
end
|
||||
seminar_submission_set_params.each do |key,value|
|
||||
seminar.seminar_submission_field_sets.create(value)
|
||||
end
|
||||
seminar_email_sets_params.each do |key,value|
|
||||
seminar.seminar_email_sets.create(value)
|
||||
if seminar.copy_id
|
||||
seminar_signup_set_params.each do |key,value|
|
||||
seminar.seminar_signup_field_sets[key.to_i].update_attributes(value) rescue nil
|
||||
end
|
||||
seminar_submission_set_params.each do |key,value|
|
||||
seminar.seminar_submission_field_sets[key.to_i].update_attributes(value) rescue nil
|
||||
end
|
||||
seminar_email_sets_params.each do |key,value|
|
||||
seminar.seminar_email_sets[key.to_i].update_attributes(value) rescue nil
|
||||
end
|
||||
seminar_signup_field_customs_params.each_with_index do |(key,value),i|
|
||||
seminar.seminar_signup_field_customs[i].update(:seminar_signup_field_id => seminar.seminar_signup_fields.where(:title=>value["title"]).first.id) rescue nil
|
||||
end
|
||||
else
|
||||
seminar_signup_set_params.each do |key,value|
|
||||
seminar.seminar_signup_field_sets.create(value)
|
||||
end
|
||||
seminar_submission_set_params.each do |key,value|
|
||||
seminar.seminar_submission_field_sets.create(value)
|
||||
end
|
||||
seminar_email_sets_params.each do |key,value|
|
||||
seminar.seminar_email_sets.create(value)
|
||||
end
|
||||
end
|
||||
redirect_to params['referer_url']
|
||||
|
||||
@@ -393,8 +491,14 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
else
|
||||
@seminar_signups = @seminar.seminar_signups.where(:name=>/#{params[:search]}/)
|
||||
end
|
||||
elsif params[:type] == "session"
|
||||
@seminar_signups = @seminar.seminar_signups.where(:final_session => nil, :name=>/#{params[:search]}/)
|
||||
else
|
||||
@seminar_signups = SeminarSignup.where(:id.in => @seminar.unassigned_seminar_signup_ids, :name=>/#{params[:search]}/)
|
||||
unassigned_seminar_signup_ids = @seminar.unassigned_seminar_signup_ids
|
||||
if @seminar.assign_mode == 1
|
||||
unassigned_seminar_signup_ids = @seminar.unassigned_mode_1_seminar_signup_ids
|
||||
end
|
||||
@seminar_signups = @seminar.seminar_signups.where(:id.in => unassigned_seminar_signup_ids, :name=>/#{params[:search]}/)
|
||||
end
|
||||
OrbitHelper.set_params(params,current_user)
|
||||
@access_level = OrbitHelper.user_access_level?
|
||||
@@ -407,7 +511,7 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
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)
|
||||
@seminar_signups = @seminar.seminar_signups.where(:id.in=>@seminar_review.get_all_seminar_signup_ids)
|
||||
end
|
||||
@seminar_signups = @seminar_signups.sort_ordered.page(params[:page]).per(10)
|
||||
if request.xhr?
|
||||
@@ -422,15 +526,17 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
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])
|
||||
redirect_to seminar_signup_admin_seminar_path(params[:id]) + "?type=#{params[:page]}"
|
||||
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
|
||||
page = params[:type] || params[:page]
|
||||
page = nil if page.blank?
|
||||
@seminar_signup_admin_setting = SeminarSignupAdminSetting.where(:seminar_main_id=>params[:id],:page=>page).first
|
||||
if @seminar_signup_admin_setting.nil?
|
||||
@seminar_signup_admin_setting = SeminarSignupAdminSetting.create(:seminar_main_id=>params[:id])
|
||||
@seminar_signup_admin_setting = SeminarSignupAdminSetting.create(:seminar_main_id=>params[:id],:page=>page)
|
||||
end
|
||||
end
|
||||
def edit_seminar_signup
|
||||
@@ -456,6 +562,8 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
if params[:action] == "update_seminar_review"
|
||||
@seminar_review = SeminarReview.find(params[:id]) rescue nil
|
||||
@seminar = @seminar_review.seminar_main
|
||||
elsif params[:action] == "update_seminar_session"
|
||||
@seminar_signup = SeminarSignup.find(params[:signup_id]) rescue nil
|
||||
end
|
||||
end
|
||||
|
||||
@@ -464,7 +572,7 @@ class Admin::SeminarsController < OrbitAdminController
|
||||
end
|
||||
def create_set (save_flag)
|
||||
SeminarSignup.attribute_names.each do |attr_signup|
|
||||
if !(['_id', 'created_at', 'updated_at','seminar_main_id'].include? attr_signup)
|
||||
if !(['_id', 'created_at', 'updated_at','seminar_main_id','final_session','seminar_session_id'].include? attr_signup)
|
||||
signup_set = @seminar.seminar_signup_field_sets.select{|v| v.field_name==attr_signup }
|
||||
if signup_set.length==0
|
||||
if ['status','name','tel','phone','email','password'].include? attr_signup
|
||||
|
||||
Reference in new issue
Block a user