|
|
|
|
####by fq
|
|
|
|
|
=begin
|
|
|
|
|
bid一类多用,根据reward_type字段分类
|
|
|
|
|
reward_type == 1 企业众包需求
|
|
|
|
|
reward_type == 2 创新竞赛
|
|
|
|
|
reward_type == 3 课程中布置的作业
|
|
|
|
|
|
|
|
|
|
homework_type作业类型
|
|
|
|
|
homework_type == 1 文件提交
|
|
|
|
|
homework_type == 2 Project提交
|
|
|
|
|
=end
|
|
|
|
|
class Bid < ActiveRecord::Base
|
|
|
|
|
# Enterprise = 1
|
|
|
|
|
# Contest = 2
|
|
|
|
|
# Homework = 3
|
|
|
|
|
# HomeworkFile = 1
|
|
|
|
|
# HomeworkProject = 2
|
|
|
|
|
# attr_accessible :author_id, :budget, :deadline, :name, :description, :homework_type, :password
|
|
|
|
|
# include Redmine::SafeAttributes
|
|
|
|
|
# include ApplicationHelper
|
|
|
|
|
# has_many_kindeditor_assets :assets, :dependent => :destroy
|
|
|
|
|
# belongs_to :author, :class_name => 'User', :foreign_key => :author_id
|
|
|
|
|
# belongs_to :course
|
|
|
|
|
# has_many :biding_projects, :dependent => :destroy
|
|
|
|
|
# has_many :projects, :through => :biding_projects
|
|
|
|
|
# has_many :courses_member, :class_name => 'User', :through => :courses
|
|
|
|
|
# has_many :journals_for_messages, :as => :jour, :dependent => :destroy
|
|
|
|
|
# has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy
|
|
|
|
|
# has_many :homework_for_courses, :dependent => :destroy
|
|
|
|
|
# has_many :courses, :through => :homework_for_courses, :source => :course
|
|
|
|
|
# has_many :homeworks, :class_name => 'HomeworkAttach', :dependent => :destroy
|
|
|
|
|
# has_many :homework_evaluations, :through => :homeworks
|
|
|
|
|
# has_many :join_in_contests, :dependent => :destroy
|
|
|
|
|
# has_many :praise_tread, as: :praise_tread_object, dependent: :destroy
|
|
|
|
|
# # has_many :fork_homework, :class_name => 'Bid', :conditions => "#{Bid.table_name}.parent_id = #{id}"
|
|
|
|
|
# acts_as_attachable
|
|
|
|
|
#
|
|
|
|
|
# NAME_LENGTH_LIMIT = 60
|
|
|
|
|
# DESCRIPTION_LENGTH_LIMIT = 3000
|
|
|
|
|
# validates :name, length: {maximum: NAME_LENGTH_LIMIT}, presence: true
|
|
|
|
|
# validates :description, length: {maximum: DESCRIPTION_LENGTH_LIMIT}
|
|
|
|
|
# validates :author_id, presence: true
|
|
|
|
|
# validates :deadline, presence: true, format: {:with => /^[\d]{4}[-][\d]{1,2}[-][\d]{1,2}$/}
|
|
|
|
|
# validates :name, length: {maximum: NAME_LENGTH_LIMIT}
|
|
|
|
|
# validates :budget, format: { with: ->(p) { if p.reward_type == 1 then /^(\d+)$|^(\d+).([0-9]{2})|^(\d+).([0-9]{1})$/
|
|
|
|
|
# elsif p.reward_type == 3 then /^(\d+)$|^(\d+).([0-9]{1})$/ end } }
|
|
|
|
|
#
|
|
|
|
|
# validate :validate_user
|
|
|
|
|
# validate :validate_reward_type
|
|
|
|
|
# after_create :act_as_activity
|
|
|
|
|
# after_destroy :delete_kindeditor_assets
|
|
|
|
|
# scope :visible, lambda {|*args|
|
|
|
|
|
# nil
|
|
|
|
|
# }
|
|
|
|
|
#
|
|
|
|
|
# scope :like, lambda {|arg|
|
|
|
|
|
# if arg.blank?
|
|
|
|
|
# where(nil)
|
|
|
|
|
# else
|
|
|
|
|
# pattern = "%#{arg.to_s.strip.downcase}%"
|
|
|
|
|
# where("LOWER(id) LIKE :p OR LOWER(name) LIKE :p OR LOWER(description) LIKE :p", :p => pattern)
|
|
|
|
|
# end
|
|
|
|
|
# }
|
|
|
|
|
#
|
|
|
|
|
# scope :course_visible, lambda {|*args|
|
|
|
|
|
# includes(:courses).where(Course.allowed_to_condition(args.shift || User.current, :view_homeworks, *args))
|
|
|
|
|
# }
|
|
|
|
|
#
|
|
|
|
|
# acts_as_watchable
|
|
|
|
|
# acts_as_taggable
|
|
|
|
|
#
|
|
|
|
|
# acts_as_event :title => Proc.new {|o| "#{l(:label_course_homework)} ##{o.id}: #{o.name}" },
|
|
|
|
|
# :description => :description,
|
|
|
|
|
# :author => :author,
|
|
|
|
|
# :url => Proc.new {|o| {:controller => 'bids', :action => 'show', :id => o.id}}
|
|
|
|
|
#
|
|
|
|
|
# acts_as_activity_provider :type => 'homeworks',
|
|
|
|
|
# :author_key => :author_id
|
|
|
|
|
#
|
|
|
|
|
# acts_as_activity_provider :find_options => {:include => [:projects, :author]},
|
|
|
|
|
# :author_key => :author_id
|
|
|
|
|
#
|
|
|
|
|
# safe_attributes 'name',
|
|
|
|
|
# 'description',
|
|
|
|
|
# 'budget',
|
|
|
|
|
# 'deadline',
|
|
|
|
|
# 'homework_type',
|
|
|
|
|
# 'reward_type',
|
|
|
|
|
# 'password'
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# # safe_attributes 'name',
|
|
|
|
|
# # 'description',
|
|
|
|
|
# # 'deadline'
|
|
|
|
|
# def add_jour(user, notes, reference_user_id = 0, options = {})
|
|
|
|
|
# if options.count == 0
|
|
|
|
|
# jfm = JournalsForMessage.new(:user_id => user.id, :notes => notes, :reply_id => reference_user_id)
|
|
|
|
|
# self.journals_for_messages << jfm
|
|
|
|
|
# jfm
|
|
|
|
|
# else
|
|
|
|
|
# jfm = self.journals_for_messages.build(options)
|
|
|
|
|
# jfm.save
|
|
|
|
|
# jfm
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
#
|
|
|
|
|
# def self.creat_bids(budget, deadline, name, description=nil, reward_type)
|
|
|
|
|
# self.create(:author_id => User.current.id, :budget => budget,
|
|
|
|
|
# :deadline => deadline, :name => name, :description => description, :commit => 0, :reward_type => reward_type)
|
|
|
|
|
# # self.acts << Activity.new(:user_id => self.author_id)
|
|
|
|
|
# end
|
|
|
|
|
#
|
|
|
|
|
# def update_bids(budget, deadline, name, description=nil)
|
|
|
|
|
# if(User.current.id == self.author_id)
|
|
|
|
|
# self.name = name
|
|
|
|
|
# self.budget = budget
|
|
|
|
|
# self.deadline = deadline
|
|
|
|
|
# self.description = description
|
|
|
|
|
# self.save
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
#
|
|
|
|
|
# def delete_bids
|
|
|
|
|
# unless self.nil?
|
|
|
|
|
# if User.current.id == self.author_id
|
|
|
|
|
# self.destroy
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
#
|
|
|
|
|
# def set_commit(commit)
|
|
|
|
|
# self.update_attribute(:commit, commit)
|
|
|
|
|
# end
|
|
|
|
|
#
|
|
|
|
|
# private
|
|
|
|
|
#
|
|
|
|
|
# def validate_user
|
|
|
|
|
# errors.add :author_id, :invalid if author.nil? || !author.active?
|
|
|
|
|
# end
|
|
|
|
|
#
|
|
|
|
|
# def validate_reward_type
|
|
|
|
|
# errors.add :reward_type, :invalid if self.reward_type == 0
|
|
|
|
|
# end
|
|
|
|
|
#
|
|
|
|
|
# def act_as_activity
|
|
|
|
|
# self.acts << Activity.new(:user_id => self.author_id)
|
|
|
|
|
# end
|
|
|
|
|
#
|
|
|
|
|
# # used to validate weather the user is the creater of the bid
|
|
|
|
|
# # added by william
|
|
|
|
|
# def validate_bid_manager(user_id)
|
|
|
|
|
# unless user_id.nil?
|
|
|
|
|
# if self.author_id == user_id
|
|
|
|
|
# return true
|
|
|
|
|
# else
|
|
|
|
|
# return false
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
# end
|
|
|
|
|
#
|
|
|
|
|
# # Time 2015-04-01 14:19:06
|
|
|
|
|
# # Author lizanle
|
|
|
|
|
# # Description 删除对应课程通知的图片资源
|
|
|
|
|
# def delete_kindeditor_assets
|
|
|
|
|
# delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::BID
|
|
|
|
|
# end
|
|
|
|
|
end
|