# encoding: utf-8
## This helper be included in applicationHelper
module CoursesHelper
=begin
1. define TeacherRoles, StudentRoles
2. define count function
3. define search by roles
4. define search member function
=end
  TeacherRoles = [3, 4, 7, 9]
  StudentRoles = [5, 10]
  AllPeople = StudentRoles+TeacherRoles
  ## return people count
  
  # 返回x项目成员数量，即roles表中定义的所有成员
  def projectCount project    
    searchCountByRoles project, AllPeople
  end

  # 返回教师数量，即roles表中定义的Manager
  def teacherCount project
    searchCountByRoles project, TeacherRoles
    # or
    # searchTeacherAndAssistant(project).count
  end

  # 返回学生数量，即roles表中定义的Reporter
  def studentCount project
    searchCountByRoles project,StudentRoles
    # or
    # searchStudent(project).count
  end

  # =====================================================================================
  # return people list
  def searchTeacherAndAssistant project
    searchPeopleByRoles(project, TeacherRoles)
  end

  def searchStudent project
    searchPeopleByRoles(project, StudentRoles)
  end
  # =====================================================================================

  def searchCountByRoles project, roles_id
    members = searchPeopleByRoles project, roles_id
    members.count
  end

  def searchPeopleByRoles project, roles_id
    members = []
    begin
      members = project.members.joins(:member_roles).where("member_roles.role_id IN (:role_id)", {:role_id => roles_id})
    rescue Exception => e
      logger.error "[CoursesHelper] ===> #{e}"
    end
    members
  end

  #useless
  def searchMembersByRole project, role_id
    members = []
    begin
      members = project.members.joins(:member_roles).where("member_roles.role_id = :role_id", {:role_id => role_id })
    rescue Exception => e
      logger.error "[CoursesHelper] ===> #{e}"
    end
    members
  end

  def findCourseTime project
    str = ""
    begin
      @course = Course.find_by_extra(@project.identifier)
      date_format = l(:zh_date)[:formats][:default]
      if @course
        str = DateTime.parse(@course.setup_time.to_s).strftime("#{date_format}").to_s unless @course.setup_time.blank?
        str <<  '-' unless  @course.setup_time.blank?
        str <<  DateTime.parse(@course.endup_time.to_s).strftime("#{date_format}").to_s unless @course.endup_time.blank?
      end
    rescue Exception => e
      logger.error  "[CoursesHelper] ===> #{e}"
    end
    str
  end

  def get_course_term project
    str = ( project.try(:course_extra).try(:time).to_s << '.' << project.try(:course_extra).try(:term).to_s )
    str[0..-4]
  end

  def members_to_user_ids members
    people = []
    members.each { |member|
      people << member.user_id
    }
    people
  end
  # 截至到2014-03-17 这个是最终的判断课程是否过期的方法
  def course_endTime_timeout? project
    end_time_str = Course.find_by_extra(project.try(:identifier)).try(:endup_time)
    begin
      cTime = Time.parse(end_time_str.to_s)
    rescue TypeError,ArgumentError
      cTime = Time.parse("3000-01-01")
    end
    now = Time.now

    now > cTime
  end

end
