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_city_id => city.id).order_by([:year, :desc],[:created_at, :desc]).page(params[:page]).per(10) elsif params[:type] == "results" hpsfiles = HpsResult.where(:hps_city_id => city.id).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