72 lines
2.4 KiB
Ruby
72 lines
2.4 KiB
Ruby
class Work < ActiveRecord::Base
|
||
# work_status 0:未发布/挂起 1:提交中 2:提交截止 3:启动在线评审 4:评审结束
|
||
belongs_to :user
|
||
belongs_to :contest
|
||
attr_accessible :description, :end_time, :is_delete, :is_open, :name, :publish_time, :score_open, :work_status, :work_type, :contest_id, :user_id
|
||
include ApplicationHelper
|
||
|
||
has_one :work_detail_group, :dependent => :destroy
|
||
has_one :work_detail_manual, :dependent => :destroy
|
||
has_many :contestant_work_projects, :dependent => :destroy
|
||
has_many :contestant_works, :dependent => :destroy, :conditions => "is_delete != 1"
|
||
has_many :journals_for_messages, :as => :jour, :dependent => :destroy
|
||
has_many :praise_tread, as: :praise_tread_object, dependent: :destroy
|
||
has_one :praise_tread_cache, as: :object, dependent: :destroy
|
||
# 竞赛动态
|
||
has_many :contest_acts, :class_name => 'ContestActivity',:as =>:contest_act ,:dependent => :destroy
|
||
# 竞赛消息
|
||
has_many :contest_messages, :class_name =>'ContestMessage', :as => :contest_message, :dependent => :destroy
|
||
acts_as_attachable
|
||
|
||
after_create :act_as_contest_message
|
||
after_update :update_activity
|
||
after_save :act_as_contest_activity
|
||
#after_destroy :delete_kindeditor_assets
|
||
|
||
def is_group_work?
|
||
self.work_type == 3 && self.work_detail_group
|
||
end
|
||
|
||
###添加回复
|
||
def self.add_work_jour(user, notes, id, root_id, options = {})
|
||
homework = Work.find(id)
|
||
if options.count == 0
|
||
jfm = homework.journals_for_messages.build(:user_id => user.id, :notes => notes, :reply_id => 0, :root_id => root_id)
|
||
else
|
||
jfm = homework.journals_for_messages.build(options)
|
||
end
|
||
jfm.save
|
||
jfm
|
||
end
|
||
|
||
def act_as_contest_activity
|
||
if self.contest
|
||
if self.work_status == 0
|
||
self.contest_acts.destroy_all
|
||
else
|
||
if self.contest_acts.size == 0
|
||
self.contest_acts << ContestActivity.new(:user_id => self.user_id,:contest_id => self.contest_id)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
#动态的更新
|
||
def update_activity
|
||
update_contest_activity(self.class, self.id)
|
||
update_user_activity(self.class, self.id)
|
||
end
|
||
|
||
def act_as_contest_message
|
||
if self.contest
|
||
if self.work_status == 0
|
||
self.contest_messages.destroy_all
|
||
else
|
||
self.contest.contestants.each do |m|
|
||
self.contest_messages << ContestMessage.new(:user_id => m.student_id, :contest_id => self.contest_id, :viewed => false)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|