parent
6a2a82d30e
commit
28978b88b2
@ -1,131 +1,131 @@
|
|||||||
####by fq
|
####by fq
|
||||||
class Bid < ActiveRecord::Base
|
class Bid < ActiveRecord::Base
|
||||||
attr_accessible :author_id, :budget, :deadline, :name, :description, :homework_type, :password
|
attr_accessible :author_id, :budget, :deadline, :name, :description, :homework_type, :password
|
||||||
include Redmine::SafeAttributes
|
include Redmine::SafeAttributes
|
||||||
|
|
||||||
belongs_to :author, :class_name => 'User', :foreign_key => :author_id
|
belongs_to :author, :class_name => 'User', :foreign_key => :author_id
|
||||||
belongs_to :course
|
belongs_to :course
|
||||||
has_many :biding_projects, :dependent => :destroy
|
has_many :biding_projects, :dependent => :destroy
|
||||||
has_many :projects, :through => :biding_projects
|
has_many :projects, :through => :biding_projects
|
||||||
has_many :projects_member, :class_name => 'User', :through => :projects
|
has_many :projects_member, :class_name => 'User', :through => :projects
|
||||||
has_many :journals_for_messages, :as => :jour, :dependent => :destroy
|
has_many :journals_for_messages, :as => :jour, :dependent => :destroy
|
||||||
has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy
|
has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy
|
||||||
has_many :homework_for_courses, :dependent => :destroy
|
has_many :homework_for_courses, :dependent => :destroy
|
||||||
has_many :courses, :through => :homework_for_courses, :source => :project
|
has_many :courses, :through => :homework_for_courses, :source => :project
|
||||||
has_many :homeworks, :class_name => 'HomeworkAttach', :dependent => :destroy
|
has_many :homeworks, :class_name => 'HomeworkAttach', :dependent => :destroy
|
||||||
has_many :join_in_contests, :dependent => :destroy
|
has_many :join_in_contests, :dependent => :destroy
|
||||||
# has_many :fork_homework, :class_name => 'Bid', :conditions => "#{Bid.table_name}.parent_id = #{id}"
|
# has_many :fork_homework, :class_name => 'Bid', :conditions => "#{Bid.table_name}.parent_id = #{id}"
|
||||||
|
|
||||||
|
|
||||||
acts_as_attachable
|
acts_as_attachable
|
||||||
|
|
||||||
NAME_LENGTH_LIMIT = 60
|
NAME_LENGTH_LIMIT = 60
|
||||||
DESCRIPTION_LENGTH_LIMIT = 250
|
DESCRIPTION_LENGTH_LIMIT = 250
|
||||||
|
|
||||||
validates_length_of :name, :maximum => NAME_LENGTH_LIMIT
|
validates_length_of :name, :maximum => NAME_LENGTH_LIMIT
|
||||||
validates_length_of :description, :maximum => DESCRIPTION_LENGTH_LIMIT
|
validates_length_of :description, :maximum => DESCRIPTION_LENGTH_LIMIT
|
||||||
validates_presence_of :author_id, :name, :deadline
|
validates_presence_of :author_id, :name, :deadline
|
||||||
# validates_presence_of :deadline, :message => 'test'
|
# validates_presence_of :deadline, :message => 'test'
|
||||||
# validates_format_of :deadline, :with =>
|
# validates_format_of :deadline, :with =>
|
||||||
validates_format_of :deadline, :with => /^[\d]{4}[-][\d]{1,2}[-][\d]{1,2}$/
|
validates_format_of :deadline, :with => /^[\d]{4}[-][\d]{1,2}[-][\d]{1,2}$/
|
||||||
validates_format_of :budget, :with => /^(\d+)$|^(\d+).([0-9]{2})|^(\d+).([0-9]{1})$/,
|
validates_format_of :budget, :with => /^(\d+)$|^(\d+).([0-9]{2})|^(\d+).([0-9]{1})$/,
|
||||||
:if => Proc.new { |p| p.reward_type == 1 }
|
:if => Proc.new { |p| p.reward_type == 1 }
|
||||||
validates_format_of :budget, :with => /^(\d+)$|^(\d+).([0-9]{1})$/, :if => Proc.new { |p| p.reward_type == 3 }
|
validates_format_of :budget, :with => /^(\d+)$|^(\d+).([0-9]{1})$/, :if => Proc.new { |p| p.reward_type == 3 }
|
||||||
validate :validate_user
|
validate :validate_user
|
||||||
validate :validate_reward_type
|
validate :validate_reward_type
|
||||||
after_create :act_as_activity
|
after_create :act_as_activity
|
||||||
|
|
||||||
scope :visible, lambda {|*args|
|
scope :visible, lambda {|*args|
|
||||||
nil
|
nil
|
||||||
}
|
}
|
||||||
|
|
||||||
scope :like, lambda {|arg|
|
scope :like, lambda {|arg|
|
||||||
if arg.blank?
|
if arg.blank?
|
||||||
where(nil)
|
where(nil)
|
||||||
else
|
else
|
||||||
pattern = "%#{arg.to_s.strip.downcase}%"
|
pattern = "%#{arg.to_s.strip.downcase}%"
|
||||||
where("LOWER(id) LIKE :p OR LOWER(name) LIKE :p OR LOWER(description) LIKE :p", :p => pattern)
|
where("LOWER(id) LIKE :p OR LOWER(name) LIKE :p OR LOWER(description) LIKE :p", :p => pattern)
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
acts_as_watchable
|
acts_as_watchable
|
||||||
acts_as_taggable
|
acts_as_taggable
|
||||||
|
|
||||||
acts_as_event :title => Proc.new {|o| "#{l(:label_requirement)} ##{o.id}: #{o.name}" },
|
acts_as_event :title => Proc.new {|o| "#{l(:label_requirement)} ##{o.id}: #{o.name}" },
|
||||||
:description => :description,
|
:description => :description,
|
||||||
:author => :author,
|
:author => :author,
|
||||||
:url => Proc.new {|o| {:controller => 'bids', :action => 'show', :id => o.id}}
|
:url => Proc.new {|o| {:controller => 'bids', :action => 'show', :id => o.id}}
|
||||||
|
|
||||||
acts_as_activity_provider :find_options => {:include => [:projects, :author]},
|
acts_as_activity_provider :find_options => {:include => [:projects, :author]},
|
||||||
:author_key => :author_id
|
:author_key => :author_id
|
||||||
|
|
||||||
safe_attributes 'name',
|
safe_attributes 'name',
|
||||||
'description',
|
'description',
|
||||||
'budget',
|
'budget',
|
||||||
'deadline',
|
'deadline',
|
||||||
'homework_type',
|
'homework_type',
|
||||||
'reward_type',
|
'reward_type',
|
||||||
'password'
|
'password'
|
||||||
|
|
||||||
|
|
||||||
# safe_attributes 'name',
|
# safe_attributes 'name',
|
||||||
# 'description',
|
# 'description',
|
||||||
# 'deadline'
|
# 'deadline'
|
||||||
def add_jour(user, notes, reference_user_id = 0)
|
def add_jour(user, notes, reference_user_id = 0)
|
||||||
self.journals_for_messages << JournalsForMessage.new(:user_id => user.id, :notes => notes, :reply_id => reference_user_id)
|
self.journals_for_messages << JournalsForMessage.new(:user_id => user.id, :notes => notes, :reply_id => reference_user_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.creat_bids(budget, deadline, name, description=nil, reward_type)
|
def self.creat_bids(budget, deadline, name, description=nil, reward_type)
|
||||||
self.create(:author_id => User.current.id, :budget => budget,
|
self.create(:author_id => User.current.id, :budget => budget,
|
||||||
:deadline => deadline, :name => name, :description => description, :commit => 0, :reward_type => reward_type)
|
:deadline => deadline, :name => name, :description => description, :commit => 0, :reward_type => reward_type)
|
||||||
# self.acts << Activity.new(:user_id => self.author_id)
|
# self.acts << Activity.new(:user_id => self.author_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_bids(budget, deadline, name, description=nil)
|
def update_bids(budget, deadline, name, description=nil)
|
||||||
if(User.current.id == self.author_id)
|
if(User.current.id == self.author_id)
|
||||||
self.name = name
|
self.name = name
|
||||||
self.budget = budget
|
self.budget = budget
|
||||||
self.deadline = deadline
|
self.deadline = deadline
|
||||||
self.description = description
|
self.description = description
|
||||||
self.save
|
self.save
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete_bids
|
def delete_bids
|
||||||
unless self.nil?
|
unless self.nil?
|
||||||
if User.current.id == self.author_id
|
if User.current.id == self.author_id
|
||||||
self.destroy
|
self.destroy
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_commit(commit)
|
def set_commit(commit)
|
||||||
self.update_attribute(:commit, commit)
|
self.update_attribute(:commit, commit)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def validate_user
|
def validate_user
|
||||||
errors.add :author_id, :invalid if author.nil? || !author.active?
|
errors.add :author_id, :invalid if author.nil? || !author.active?
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_reward_type
|
def validate_reward_type
|
||||||
errors.add :reward_type, :invalid if self.reward_type == 0
|
errors.add :reward_type, :invalid if self.reward_type == 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def act_as_activity
|
def act_as_activity
|
||||||
self.acts << Activity.new(:user_id => self.author_id)
|
self.acts << Activity.new(:user_id => self.author_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
# used to validate weather the user is the creater of the bid
|
# used to validate weather the user is the creater of the bid
|
||||||
# added by william
|
# added by william
|
||||||
def validate_bid_manager(user_id)
|
def validate_bid_manager(user_id)
|
||||||
unless user_id.nil?
|
unless user_id.nil?
|
||||||
if self.author_id == user_id
|
if self.author_id == user_id
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in new issue