hps_member/app/controllers/member_counselors_controlle...

368 lines
11 KiB
Ruby

class MemberCounselorsController < CUserController
before_filter :is_user_authorized?, :only => ["show", "fileupload", "resultupload", "editfileupload", "editresultupload", "file_upload", "result_upload", "update_file_upload", "update_result_upload", "deletefileupload", "deleteresultupload", "newrecord", "new_record_upload", "editrecord", "update_record_upload", "deleterecord"]
def index
idx = 0
params = OrbitHelper.params
page = Page.where(:page_id => params[:page_id]).first
if params[:page_id] == "hpsschool"
members = HpsMember.where(:user_type => 0).pluck(:id)
type = ""
elsif params[:page_id] == "hpsgovt"
members = HpsMember.where(:user_type => 1).pluck(:id)
type = "&type=proposals"
end
data = {}
cities = HpsCity.all.collect do |city|
total = city.hps_files.where(:hps_member_id.in => members).count
idx = idx + 1
{
"name" => city.name,
"total" => total,
"url" => "/" + I18n.locale.to_s + page.url + "?city_id=#{city.id.to_s}#{type}"
}
end
if params[:page_id] == "hpsschool"
data = get_school_data(params, members, page)
elsif params[:page_id] == "hpsgovt"
data = get_govt_data(params, members, page)
end
data["cities"] = cities
data
end
def get_govt_data(params, members, page)
data = {}
if params[:city_id].present?
files = []
city = HpsCity.find(params[:city_id])
if !params[:type].present? || params[:type] == "proposals"
hpsfiles = HpsFile.where(:hps_member_id.in => members).order_by([:year, :desc],[:created_at, :desc]).page(params[:page]).per(10)
elsif params[:type] == "results"
hpsfiles = HpsResult.where(:hps_member_id.in => members).order_by([:year, :desc],[:created_at, :desc]).page(params[:page]).per(10)
end
hpsfiles.each do |file|
files << {
"date" => file.created_at.strftime("%Y/%m/%d"),
"title" => file.title,
"download_count" => file.download_count,
"url" => "/cuser/download?file_id=#{file.id.to_s}&type=results"
}
end
data["files"] = files
data["data"] = {
"city-name" => city.name,
"back-url" => "/" + I18n.locale.to_s + page.url
}
data["total_pages"] = hpsfiles.total_pages
else
if !params[:type].present? || params[:type] == "proposals"
hpsfiles = HpsFile.where(:hps_member_id.in => members).order_by([:year, :desc],[:created_at, :desc]).page(params[:page]).per(10)
type = "proposals"
elsif params[:type] == "results"
hpsfiles = HpsResult.where(:hps_member_id.in => members).order_by([:year, :desc],[:created_at, :desc]).page(params[:page]).per(10)
type = "results"
end
data["files"] = hpsfiles.collect do |file|
{
"date" => file.created_at.strftime("%Y/%m/%d"),
"title" => file.title,
"download_count" => file.download_count,
"url" => "/cuser/download?file_id=#{file.id.to_s}&type=proposals"
}
end
data["total_pages"] = hpsfiles.total_pages
end
data["tabs"] = get_tabs(page, params)
data
end
def get_school_data(params, schoolmembers, page)
data = {}
if params[:city_id].present?
pcity = HpsCity.find(params[:city_id])
total = 0
schools = pcity.hps_schools.collect do |school|
members = HpsMember.where(:hps_school_id => school.id.to_s).pluck(:id)
count = HpsFile.where(:hps_member_id.in => members).count
total = count + total
{
"name" => school.name,
"url_to_show" => OrbitHelper.url_to_show(school.to_param) + "?method=proposals",
"count" => count
}
end
data["schools"] = schools
data["extras"] = {
"current_city_name" => pcity.name
}
else
if !params[:type].present? || params[:type] == "proposals"
hpsfiles = HpsFile.where(:hps_member_id.in => schoolmembers).order_by([:year, :desc],[:created_at, :desc]).page(params[:page]).per(10)
type = "proposals"
elsif params[:type] == "results"
hpsfiles = HpsResult.where(:hps_member_id.in => schoolmembers).order_by([:year, :desc],[:created_at, :desc]).page(params[:page]).per(10)
type = "results"
end
data["files"] = hpsfiles.collect do |file|
{
"date" => file.created_at.strftime("%Y/%m/%d"),
"title" => file.title,
"download_count" => file.download_count,
"url" => "/cuser/download?file_id=#{file.id.to_s}&type=#{type}"
}
end
data["total_pages"] = hpsfiles.total_pages
data["tabs"] = get_tabs(page, params)
end
data
end
def decide_template
params = OrbitHelper.params
{
"page_id" => params[:page_id],
"city_id_present" => params[:city_id].present?
}
end
def proposals
params = OrbitHelper.params
school = HpsSchool.where(:uid => params[:uid]).first
members = HpsMember.where(:hps_school_id => school.id.to_s).pluck(:id)
page = Page.where(:page_id => params[:page_id]).first
schoolmembers = HpsMember.where(:user_type => 0).pluck(:id)
files = []
cities = HpsCity.all.collect do |city|
total = city.hps_files.where(:hps_member_id.in => schoolmembers).count
{
"name" => city.name,
"total" => total,
"url" => "/" + I18n.locale.to_s + page.url + "?city_id=#{city.id.to_s}"
}
end
if !params[:type].present? || params[:type] == "proposals"
hpsfiles = HpsFile.where(:hps_member_id.in => members).order_by([:year, :desc],[:created_at, :desc]).page(params[:page]).per(10)
type = "proposals"
elsif params[:type] == "results"
hpsfiles = HpsResult.where(:hps_member_id.in => members).order_by([:year, :desc],[:created_at, :desc]).page(params[:page]).per(10)
type = "results"
end
hpsfiles.each do |file|
files << {
"date" => file.created_at.strftime("%Y/%m/%d"),
"title" => file.title,
"download_count" => file.download_count,
"url" => "/cuser/download?file_id=#{file.id.to_s}&type=#{type}"
}
end
{
"files" => files,
"tabs" => get_tabs(page, params, school),
"cities" => cities,
"data" => {
"school-name" => school.name,
"back-url" => "/" + I18n.locale.to_s + page.url
},
"total_pages" => hpsfiles.total_pages
}
end
def get_tabs(page, params, school=nil)
["執行計劃書", "成果報告"].collect do |tab|
type = tab == "執行計劃書" ? "proposals" : "results"
klass = ""
if (tab == "執行計劃書" && !params[:type].present?) || (tab == "執行計劃書" && params[:type] == "proposals")
klass = "active"
elsif params[:type] == "results" && tab == "成果報告"
klass ="active"
end
city_param = params[:city_id].present? ? "&city_id=#{params[:city_id]}" : ""
if !school.nil?
link = "/" + I18n.locale.to_s + "#{page.url}/#{school.to_param}?type=#{type}#{city_param}&method=proposals"
else
link = "/" + I18n.locale.to_s + "#{page.url}?type=#{type}#{city_param}"
end
{
"name" => tab,
"link" => link,
"klass" => klass
}
end
end
def download
file_id = params[:file_id]
if params[:type] == "proposals"
file = HpsFile.find(file_id) rescue nil
elsif params[:type] == "results"
file = HpsResult.find(file_id) rescue nil
end
if !file.nil?
file.download_count = file.download_count + 1
file.save
redirect_to file.file.url and return
end
render :nothing => true
end
def login
if !current_counselor_user.nil?
redirect_to member_dash_path(current_counselor_user.account)
end
end
def logoutuser
destroy_cpanel_session
redirect_to member_login_path
end
def loginuser
user = HpsMember.where(:account => params[:username]).first rescue nil
if user.nil?
redirect_to member_login_path(:error=>"invld")
else
if user.enabled
if user.authenticate(params[:password])
create_cuser_session(user)
redirect_to member_dash_path(user.account)
else
redirect_to member_login_path(:error=>"invld")
end
else
redirect_to member_login_path(:error=>"dsbld")
end
end
end
def fileupload
@hpsfile = HpsFile.new
end
def resultupload
@hpsresult = HpsResult.new
end
def editfileupload
@hpsfile = HpsFile.find(params[:id])
end
def editresultupload
@hpsresult = HpsResult.find(params[:id])
end
def file_upload
hpsfile = HpsFile.new(hps_file_params)
hpsfile.hps_member = current_counselor_user
city = HpsCity.find(current_counselor_user.hps_city_id)
hpsfile.hps_city = city
hpsfile.save
redirect_to member_dash_path(current_counselor_user.account)
end
def result_upload
hpsresult = HpsResult.new(hps_result_params)
hpsresult.hps_member = current_counselor_user
city = HpsCity.find(current_counselor_user.hps_city_id)
hpsresult.hps_city = city
hpsresult.save
redirect_to member_dash_path(current_counselor_user.account)
end
def update_file_upload
hpsfile = HpsFile.find(params[:id])
hpsfile.update_attributes(hps_file_params)
redirect_to member_dash_path(current_counselor_user.account)
end
def update_result_upload
hpsresult = HpsResult.find(params[:id])
hpsresult.update_attributes(hps_result_params)
redirect_to member_dash_path(current_counselor_user.account)
end
def deletefileupload
hpsfile = HpsFile.find(params[:id])
hpsfile.destroy
redirect_to member_dash_path(current_counselor_user.account)
end
def deleteresultupload
hpsresult = HpsResult.find(params[:id])
hpsresult.destroy
redirect_to member_dash_path(current_counselor_user.account)
end
def show
if current_counselor_user.user_type == 0 || current_counselor_user.user_type == 1
@files = current_counselor_user.hps_files
@results = current_counselor_user.hps_results
else
@records = current_counselor_user.hps_counseling_records
end
end
def newrecord
@record = HpsCounselingRecord.new
end
def new_record_upload
record = HpsCounselingRecord.new(hps_record_params)
record.hps_member = current_counselor_user
record.save
redirect_to member_dash_path(current_counselor_user.account)
end
def get_info
@objects = []
case params[:get_info]
when "counties"
@objects = HpsCity.find(params[:id]).hps_counties.asc(:old_id)
when "schools"
@objects = HpsCounty.find(params[:id]).hps_schools.asc(:old_id)
end
render :layout => false
end
def editrecord
@record = HpsCounselingRecord.find(params[:id])
end
def update_record_upload
record = HpsCounselingRecord.find(params[:id])
record.update_attributes(hps_record_params)
redirect_to member_dash_path(current_counselor_user.account)
end
def showrecord
@record = HpsCounselingRecord.find(params[:id])
end
def deleterecord
record = HpsCounselingRecord.find(params[:id])
record.destroy
redirect_to member_dash_path(current_counselor_user.account)
end
private
def hps_file_params
params.require(:hps_file).permit!
end
def hps_result_params
params.require(:hps_result).permit!
end
def hps_record_params
params.require(:hps_counseling_record).permit!
end
end