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 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 name like '%#{chinese.join("")}%' and pinyin like '%#{pinyin.join("")}%'").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 name like '%#{chinese.join("")}%' and pinyin like '%#{pinyin.join("")}%'").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("name like '%#{chinese.join("")}%' and pinyin like '%#{pinyin.join("")}%'").reorder('CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc').page((params[:page].to_i || 1)).per(100)
        @school_count = School.where("name like '%#{chinese.join("")}%' and pinyin like '%#{pinyin.join("")}%'").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