You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							2.8 KiB
						
					
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							2.8 KiB
						
					
					
				class Poll < ActiveRecord::Base
 | 
						|
  #attr_accessible :closed_at, :polls_group_id, :polls_name, :polls_status, :polls_type, :published_at, :user_id
 | 
						|
  include Redmine::SafeAttributes
 | 
						|
  
 | 
						|
  belongs_to :user
 | 
						|
  has_many :poll_questions, :dependent => :destroy,:order => "#{PollQuestion.table_name}.question_number"
 | 
						|
  has_many :poll_users, :dependent => :destroy
 | 
						|
  has_many :users, :through => :poll_users #该文件被哪些用户提交答案过
 | 
						|
  # 添加课程的poll动态
 | 
						|
  has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy
 | 
						|
  # 课程动态
 | 
						|
  has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy
 | 
						|
  after_create :act_as_activity, :act_as_course_activity
 | 
						|
  # 课程消息
 | 
						|
  has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy
 | 
						|
  after_save :act_as_course_message, :act_as_activity, :act_as_course_activity
 | 
						|
 | 
						|
  acts_as_event :title => Proc.new {|o| "#{l(:label_course_poll)}: #{o.polls_name}" },
 | 
						|
               :description => :polls_description,
 | 
						|
               :datetime => :published_at,
 | 
						|
               :author => :user,
 | 
						|
               :url => Proc.new {|o| {:controller => 'poll', :action => 'show', :id => o.id}}
 | 
						|
 | 
						|
  acts_as_activity_provider :type => 'polls',
 | 
						|
                            #:permission => :view_course_polls,
 | 
						|
                            :find_options => {:select => "#{Poll.table_name}.*",
 | 
						|
                                              :joins => "LEFT JOIN #{Course.table_name}  ON ( #{Poll.table_name}.polls_type='Course' AND #{Poll.table_name}.polls_status= 2 AND #{Poll.table_name}.polls_group_id = #{Course.table_name}.id )"},
 | 
						|
                            :timestamp => "#{self.table_name}.published_at",
 | 
						|
                            :author_key => :user_id
 | 
						|
 | 
						|
  def act_as_activity
 | 
						|
     self.acts << Activity.new(:user_id => self.user_id)
 | 
						|
  end
 | 
						|
 | 
						|
  #课程动态公共表记录
 | 
						|
  def act_as_course_activity
 | 
						|
    if self.polls_type == "Course"
 | 
						|
      if self.polls_status == 2 #问卷是发布状态
 | 
						|
        self.course_acts << CourseActivity.new(:user_id => self.user_id,:course_id => self.polls_group_id)
 | 
						|
      elsif self.polls_status == 1 #问卷是新建状态
 | 
						|
        self.course_acts.destroy_all
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  # 发布问卷,出了发布者外,其他人都能收到消息通知
 | 
						|
  def act_as_course_message
 | 
						|
    if self.polls_type == "Course"
 | 
						|
      if self.polls_status == 2 #问卷是发布状态
 | 
						|
        Course.find(self.polls_group_id).members.each do |m|
 | 
						|
          if m.user_id != self.user_id
 | 
						|
            self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.polls_group_id, :viewed => false)
 | 
						|
          end
 | 
						|
        end
 | 
						|
      elsif self.polls_status == 1 #问卷是新建状态
 | 
						|
        self.course_messages.destroy_all
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
end
 |