class SchoolController < ApplicationController
layout 'course_base'
before_filter :require_admin , :only = > :upload_logo
before_filter :find_school , :only = > [ :destroy ]
def upload
uploaded_io = params [ :logo ]
school_id || = params [ :id ]
s1 = School . find ( school_id )
unless uploaded_io . nil?
File . open ( Rails . root . join ( 'public' , 'images' , 'school' , school_id . to_s + '.png' ) , 'wb' ) do | file |
file . write ( uploaded_io . read )
end
s1 . logo_link = '/images/school/' + school_id . to_s + '.png'
end
s1 . name = params [ :name ] unless params [ :name ] . blank?
s1 . province = params [ :province ] unless params [ :province ] . blank?
s1 . save
redirect_to admin_schools_url ( :school_name = > params [ :school_name ] )
end
def upload_logo
@school = School . find params [ :id ]
@school_name = params [ :school_name ]
render :layout = > " base_management "
end
#获取制定学校开设的课程数
def course_count school_id
School . find ( school_id ) . courses . count
end
def index
render :layout = > " base_management "
end
def get_province
@provinces = School . find_by_sql ( " select distinct province from schools " )
options = " "
@provinces . each do | p |
options << " <option value = ' #{ p . province } ' > #{ p . province } </option> "
end
# 取id取学校名
# 连接子表: 查询已添加用户的学校
school = School . select ( " id, name " ) .
joins ( " RIGHT JOIN (
SELECT DISTINCT school_id
FROM #{UserExtensions.table_name}
WHERE school_id IS NOT NULL ) AS sids ON schools . id = sids . school_id " ).
where ( " #{ School . table_name } .id IS NOT NULL " )
options_s = " "
school . each do | s |
options_s << " <li style = 'width: 33%; float: left'><a style='cursor: pointer;' id= #{ s . id } onclick='test(this.id, this.text)'> #{ s . name } </a></li> "
end
res = Hash . new
res [ :text ] = options
res [ :text_s ] = options_s
render :json = > res
end
def get_options
@school = School . where ( " province = ? " , params [ :province ] )
p = params [ :province ]
##@school = School.all
options = " "
@school . each do | s |
#options << "<option value=#{s.id}>#{s.name}</option>"
options << " <li style = 'width: 33%; float: left'><a style='cursor: pointer;' id= #{ s . id } onclick='test(this.id, this.text)'> #{ s . name } </a></li> "
end
render :text = > options
end
def get_schoollist
@school = School . where ( " province = ? " , params [ :province ] )
options = " "
@school . each do | s |
options << " <li style = 'width: 33%; float: left'><a style='cursor: pointer;' id= #{ s . id } onclick='test(this.id)'> #{ s . name } </a></li> "
end
render :text = > options
end
def search_school
q = " % #{ params [ :key_word ] . strip } % "
@school = School . where ( " name LIKE ? " , q )
@school = @school . where ( " province = ? " , params [ :province ] ) if ( params [ :province ] != '0' )
options = " "
@school . each do | s |
options << " <li style = 'width: 33%; float: left'> <a style='cursor: pointer;' id= #{ s . id } onclick='test(this.id)'> #{ s . name } </a></li> "
end
options = " <div class='flash error' id='flash_error'> #{ l ( :label_school_not_fount ) } </div> " if options . blank?
render :text = > options
end
#根据学校名字或者拼音来查询
def on_search
condition = " #{ params [ :name ] . strip } " . gsub ( " " , " " )
#将条件截断为汉字和拼音(全汉字 或者 全拼音 或者 汉字和拼音),
#获取拼音的第一次出现的位置
chinese = [ ]
pinyin = [ ]
condition . scan ( / . / ) . each_with_index do | char , index |
if char =~ / [a-zA-Z0-9] /
pinyin << char
elsif char =~ / \ ' /
else
chinese << char
end
end
if pinyin . size > 0
search_str = " name like '% #{ chinese . join ( " " ) } %' and pinyin like '% #{ pinyin . join ( " " ) } %' "
else
search_str = " name like '% #{ chinese . join ( " " ) } %' "
end
if params [ :no_school_ids ]
if ( condition == '' )
@school = School . where ( " id not in #{ params [ :no_school_ids ] } " ) . reorder ( 'CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc' ) . page ( ( params [ :page ] . to_i || 1 ) ) . per ( 100 )
@school_count = School . count
else
@school = School . where ( " id not in #{ params [ :no_school_ids ] } and #{ search_str } " ) . reorder ( 'CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc' ) . page ( ( params [ :page ] . to_i || 1 ) ) . per ( 100 )
@school_count = School . where ( " id not in #{ params [ :no_school_ids ] } and #{ search_str } " ) . count
end
else
if ( condition == '' )
@school = School . reorder ( 'CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc' ) . page ( ( params [ :page ] . to_i || 1 ) ) . per ( 100 )
@school_count = School . count
else
@school = School . where ( search_str ) . reorder ( 'CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc' ) . page ( ( params [ :page ] . to_i || 1 ) ) . per ( 100 )
@school_count = School . where ( search_str ) . count
end
end
result = [ ]
# @school.each do |sc|
# result << {:value=>sc.name,:data=>sc.id}
# end
render :json = > { :schools = > @school , :count = > @school_count } . to_json
end
#添加学校
def add_school
@school = School . new
@school . name = params [ :name ] . strip
@school . pinyin = Pinyin . t ( params [ :name ] . strip , splitter : '' )
@school . save
respond_to do | format |
format . js
end
end
#申请高校(单位) name:名称 province:省 city:市 address:地址 remarks:备注
def apply_add_school
data = { result : 0 , name :params [ :name ] , school_id : 0 }
#0 成功 1参数错误 2名称已存在 3.失败
data [ :result ] = 0
#检验参数
if params [ :name ] == " " || params [ :province ] == " " || params [ :city ] == " " || params [ :address ] == " "
data [ :result ] = 1
else
school = School . where ( " name = ' #{ params [ :name ] } ' " ) . first
if school
data [ :result ] = 2
else
school = School . new
school . name = params [ :name ] . strip
school . pinyin = Pinyin . t ( params [ :name ] . strip , splitter : '' )
school . province = params [ :province ]
school . city = params [ :city ]
school . address = params [ :address ]
#status 0未处理 1通过 2拒绝
applyschool = ApplyAddSchools . new
#用belongs_to 可以一起存数据库
applyschool . school = school
applyschool . name = school . name
applyschool . province = params [ :province ]
applyschool . city = params [ :city ]
applyschool . address = params [ :address ]
applyschool . remarks = params [ :remarks ]
applyschool . user_id = User . current . id
if applyschool . save
data [ :school_id ] = school . id
= begin
user_extention = User . current . extensions
user_extention . school_id = school . id
user_extention . save!
= end
# 向管理员发送信息
users = User . where ( :admin = > 1 )
users . each do | user |
AppliedMessage . create ( :user_id = > user . id , :status = > 0 , :applied_user_id = > User . current . id , :viewed = > 0 , :applied_id = > school . id , :applied_type = > " ApplyAddSchools " , :name = > school . name )
end
else
data [ :result ] = 3
end
end
end
render :json = > data
end
def search_repeat_schoolname
status = 0 #没有重复的
name = params [ :name ]
if name
school = School . where ( " name = ' #{ name } ' " ) . first
if school
status = 1 #有重复的
end
end
render :json = > status
end
def edit_apply_name
name = params [ :name ] || " "
status = - 1
if name != " "
applyschool = ApplyAddSchools . where ( " id=? " , params [ :id ] ) . first
applyschool . name = name . strip
if applyschool . school
applyschool . school . name = name
applyschool . school . pinyin = Pinyin . t ( name . strip , splitter : '' )
applyschool . school . save!
end
applyschool . save!
status = 0
end
render :json = > { :status = > status , :id = > params [ :id ] , :name = > name }
end
def edit_apply_address
address = params [ :address ] || " "
status = - 1
if address != " "
applyschool = ApplyAddSchools . where ( " id=? " , params [ :id ] ) . first
applyschool . address = address
applyschool . save!
status = 0
end
render :json = > { :status = > status , :id = > params [ :id ] , :address = > address }
end
def edit_apply_province
province = params [ :province ] || " "
city = params [ :city ] || " "
status = - 1
if ( province != " " ) && ( city != " " )
applyschool = ApplyAddSchools . where ( " id=? " , params [ :id ] ) . first
applyschool . province = province
applyschool . city = city
if applyschool . school
applyschool . school . province = province
applyschool . school . save!
end
applyschool . save!
if applyschool . user_id && applyschool . user_id != 0
user = User . find ( applyschool . user_id )
user_extention = user . extensions
user_extention . location = province
user_extention . location_city = city
user_extention . save!
end
status = 0
end
render :json = > { :status = > status , :id = > params [ :id ] , :province = > province , :city = > city }
end
def destroy
if @school
if UserExtensions . where ( :school_id = > @school . id ) . count == 0
School . where ( :id = > @school . id ) . destroy_all
@school . destroy
end
respond_to do | format |
format . js
end
end
end
private
def find_school
@school = School . find params [ :id ]
rescue ActiveRecord :: RecordNotFound
render_404
end
end