socialforge/app/controllers/bids_controller.rb

1098 lines
36 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# # fq
#Bid功能已经废弃代码参考用
# class BidsController < ApplicationController
# #Added by young
# menu_item l(:label_homework), :only => [:edit, :udpate]
# menu_item :respond
# menu_item :course, :only => :show_courseEx
# menu_item :project, :only => [:show_project,:show_results, :new_submit_homework]
# menu_item :homework_respond, :only => :homework_respond
# menu_item :homework_statistics, :only => :homework_statistics
# menu_item :edit, :only => :edit
#
# before_filter :auth_login1, :only => [:show_courseEx]
#
# before_filter :can_show_course,only: []
# before_filter :can_show_contest,only: []
# #Ended by young
# before_filter :find_bid, :only => [:show, :show_project, :create,:destroy,:more,:back,:add,:delete,:new,:show_results,:set_reward, :add_homework, :fork, :create_fork,
# :show_course, :show_courseEx,:show_bid_project, :show_bid_user, :join_in_contest, :unjoin_in_contest, :new_join,:show_participator, :settings]
# # added by fq
# before_filter :require_login, :only => [:join_in_contest, :unjoin_in_contest]
# # end
# before_filter :require_login,:only => [:set_reward, :destroy, :add, :new, ]
#
# #before_filter :memberAccess, only: :show_project
#
# helper :watchers
# helper :attachments
# include AttachmentsHelper
# include ApplicationHelper
# include BidsHelper
#
# helper :projects
# helper :words
# helper :welcome
# helper :project_score
#
# def find_project_by_bid_id
# @bid = Bid.find(params[:id])
# @project = @bid.courses[0]
# rescue ActiveRecord::RecordNotFound
# render_404
# end
#
# def homework_ajax_modal
# @bid = Bid.find_by_id(params[:id])
# # find_bid
# respond_to do |format|
# format.js
# end
# end
#
#
# def index
# @project_type = params[:project_type]
# # Modified by nie
# # @requirement_title = "4"
# @offset, @limit = api_offset_and_limit({:limit => 10})
# if @project_type == '1'
# @bids = Bid.visible.where('reward_type = ?', 3)
# # elsif
# # @bids = Bid.visible.where('reward_type = ? or reward_type = ?', 4)
# else
# @bids = Bid.visible.where('reward_type = ?', 1)
# end
#
# @bids = @bids.like(params[:name]) if params[:name].present?
# @bid_count = @bids.count
# @bid_pages = Paginator.new @bid_count, @limit, params['page']
#
# @offset ||= @bid_pages.reverse_offset
# #added by nie
# if params[:bid_sort_type].present?
# case params[:bid_sort_type]
# when '0'
# unless @offset == 0
# @bids = @bids.offset(@offset).limit(@limit).all.reverse
# else
# limit = @bid_count % @limit
# limit = @limit if limit == 0
# @bids = @bids.offset(@offset).limit(limit).all.reverse
# end
# @s_state = 0
# when '1'
# unless @offset == 0
# @bids = @bids.reorder('bids.commit').offset(@offset).limit(@limit).all.reverse
# else
# limit = @bid_count % @limit
# limit = @limit if limit == 0
# @bids = @bids.reorder('bids.commit').offset(@offset).limit(limit).all.reverse
# end
# @s_state = 1
# when '2'
# unless @offset == 0
# @bids = @bids.offset(@offset).limit(@limit).all.reverse
# else
# limit = @bid_count % @limit
# limit = @limit if limit == 0
# @bids = @bids.offset(@offset).limit(@limit).all.reverse
# end
# @s_state = 0
# end
# else
# unless @offset == 0
# @bids = @bids.reorder('bids.commit').offset(@offset).limit(@limit).all.reverse
# else
# limit = @bid_count % @limit
# limit = @limit if limit == 0
# @bids = @bids.reorder('bids.commit').offset(@offset).limit(limit).all.reverse
# end
# @s_state = 1
# end
# #end
# end
# #huang
# def contest
#
# # Modified by nie
# # @requirement_title = "4"
# @offset, @limit = api_offset_and_limit({:limit => 10})
#
# @bids = Bid.visible.where('reward_type = ?', 2)
#
# # elsif
# # @bids = Bid.visible.where('reward_type = ? or reward_type = ?', 4)
# @bids = @bids.like(params[:name]) if params[:name].present?
# @bid_count = @bids.count
# @bid_pages = Paginator.new @bid_count, @limit, params['page']
#
# @offset ||= @bid_pages.reverse_offset
# #added by nie
# if params[:contest_sort_type].present?
# case params[:contest_sort_type]
# when '0'
# unless @offset == 0
# @bids = @bids.offset(@offset).limit(@limit).all.reverse
# else
# limit = @bid_count % @limit
# limit = @limit if limit == 0
# @bids = @bids.offset(@offset).limit(limit).all.reverse
# end
# @s_state = 0
# when '1'
# unless @offset == 0
# @bids = @bids.reorder('bids.commit').offset(@offset).limit(@limit).all.reverse
# else
# limit = @bid_count % @limit
# limit = @limit if limit == 0
# @bids = @bids.reorder('bids.commit').offset(@offset).limit(limit).all.reverse
# end
# @s_state = 1
# when '2'
# unless @offset == 0
# @bids = @bids.offset(@offset).limit(@limit).all.reverse
# else
# limit = @bid_count % @limit
# limit = @limit if limit == 0
# @bids = @bids.offset(@offset).limit(@limit).all.reverse
# end
# @s_state = 0
# end
# else
# unless @offset == 0
# @bids = @bids.reorder('bids.commit').offset(@offset).limit(@limit).all.reverse
# else
# limit = @bid_count % @limit
# limit = @limit if limit == 0
# @bids = @bids.reorder('bids.commit').offset(@offset).limit(limit).all.reverse
# end
# @s_state = 1
# end
# #end
# end
#
# def fork
# @courses = []
# @membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current))
# @membership.each do |membership|
# if membership.project.project_type == 1
# @courses << membership.project
# end
# end
# end
#
# #将某个企业外包需求选为作业,目前此功能已放弃
# def create_fork
# @homework = Bid.new
# @homework.name = params[:bid][:name]
# @homework.description = params[:bid][:description]
# @homework.reward_type = 3
# # @bid.budget = params[:bid][:budget]
# @homework.deadline = params[:bid][:deadline]
# @homework.budget = 0
# @homework.author_id = User.current.id
# @homework.commit = 0
# @homework.homework_type = 1
# @homework.is_evaluation = params[:bid][:is_evaluation]
# @homework.parent_id = @bid.id
# @homework.save_attachments(params[:attachments] || (params[:bid] && params[:bid][:uploads]))
# # @bid.
# if @homework.save
# HomeworkForCourse.create(:course_id => params[:course], :bid_id => @homework.id)
# unless @bid.watched_by?(User.current)
# if @bid.add_watcher(User.current)
# flash[:notice] = l(:label_bid_succeed)
# end
# end
# redirect_to course_for_bid_path(@homework)
# else
# @bid.safe_attributes = params[:bid]
# @courses = []
# @membership = User.current.coursememberships.all#(:conditions => Project.visible_condition(User.current))
# @membership.each do |membership|
# @courses << membership.course
# end
# render :action => 'fork'
# end
# end
#
# #有两个路由链接到此方法:/bids/:id /calls/:id但是貌似这两个路由都不能访问。。方法作用有待确认
# def show
# @user = @bid.author
# @jours = @bid.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
# @limit = 10
# @feedback_count = @jours.count
# @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
# @offset ||= @feedback_pages.offset
# @jour = @jours[@offset, @limit]
# @state = false
#
# respond_to do |format|
# layout_file = ''
# case @bid.reward_type
# when 3
# html_title(l(:label_question_student))
# layout_file = 'base_homework'
# when 1
# layout_file = 'base_bids'
# else
# layout_file = 'base_contest'
# end
# format.html {
# render :layout => layout_file
# }
# format.api
# end
# end
#
# def join_in_contest
# if @bid.reward_type == 2 && params[:course_password] == @bid.password
# JoinInContest.create(:user_id => User.current.id, :bid_id => @bid.id)
# @state = 0
# else
# @state = 1
# end
# respond_to do |format|
# format.js { render :partial => 'set_join', :locals => {:user => User.current, :object_id => params[:id]} }
# end
# end
#
# def unjoin_in_contest
# joined = JoinInContest.where('bid_id = ? and user_id = ?', @bid.id, User.current.id)
# joined.each do |join|
# join.delete
# end
# respond_to do |format|
# format.js { render :partial => 'set_join', :locals => {:user => User.current, :object_id => params[:id]} }
# end
# end
#
# def new_join
#
# end
#
# # added by bai 增加了参与者和竞赛设置
# def show_participator
# render :layout => 'base_contest'
# end
#
# #配置竞赛
# def settings
# if @bid.author.id == User.current.id
# if @bid.reward_type == 2
# @contest = Bid.find_by_reward_type(@bid.reward_type)
# render :layout => 'base_contest'
# end
# else
# render_403 :message => :notice_not_contest_setting_authorized
# end
# end
# #end
#
# # 显示课程作业,但是好像已经废弃
# def show_course
# bids = Bid.where('parent_id = ?', @bid.id)
# @courses = []
# for bid in bids
# @courses << bid.courses.first
# end
#
# respond_to do |format|
# if @bid.reward_type == 3
# format.html {
# render :layout => 'base_homework'
# }
# elsif @bid.reward_type == 1
# format.html {
# render :layout => 'base_bids'
# }
# else
# format.html {
# render :layout => 'base_contest'
# }
# end
# format.api
#
# end
# end
#
# def show_bid_project
# bids = Bid.where('parent_id = ?', @bid.id)
# @projects = []
# for bid in bids
# @projects += bid.biding_projects
# end
#
# respond_to do |format|
# if @bid.reward_type == 3
# format.html {
# render :layout => 'base_homework'
# }
# elsif @bid.reward_type == 1
# format.html {
# render :layout => 'base_bids'
# }
# else
# format.html {
# render :layout => 'base_contest'
# }
# end
# format.api
#
# end
# end
#
# def show_bid_user
# bids = Bid.where('parent_id = ?', @bid.id)
# @users = []
# for bid in bids
# for project in bid.projects
# @users += project.users
# end
# end
#
# respond_to do |format|
# if @bid.reward_type == 3
# format.html {
# render :layout => 'base_homework'
# }
# elsif @bid.reward_type == 1
# format.html {
# render :layout => 'base_bids'
# }
# else
# format.html {
# render :layout => 'base_contest'
# }
# end
# format.api
#
# end
# end
#
# def show_project
# # flash[:notice] = ""
# @membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current))
# @option = []
# @membership.each do |membership|
# unless(membership.project.project_type==1)
# if membership.user.allowed_to?(:quote_project,membership.project)
# @option << membership.project
# end
# end
# end
#
# # a = [1]
# # @project = Project.where("id in []", a)
# @user = @bid.author
# @bidding_project = @bid.biding_projects.all
# if params[:student_id].present?
# @temp = []
# @bidding_project.each do |pro|
# if pro.project && pro.project.project_status
# if /#{params[:student_id]}/ =~ pro.user.user_extensions.student_id
# @temp << pro
# end
# end
# @temp
# end
# @bidding_project = @temp
# else
# #added by nie
# @temp = []
# @bidding_project.each do |pro|
# if pro.project && pro.project.project_status
# @temp << pro
# end
# @temp
# end
# if @temp.size > 0
# @bidding_project = @temp.sort {|a,b| b.project.project_status.grade <=> a.project.project_status.grade}
# end
# #ended
# end
#
# if @bid.homework_type == 1
# @homework = HomeworkAttach.new
# #@homework_list = @bid.homeworks
# #增加作业按评分排序,
# @homework_list = @bid.homeworks.eager_load(:rate_averages, :user, :attachments).order('seems_rateable_cached_ratings.avg DESC').order("#{HomeworkAttach.table_name}.created_at ASC")
# if params[:student_id].present?
# @temp = []
# @homework_list.each do |pro|
# if /#{params[:student_id]}/ =~ pro.user.user_extensions.student_id
# @temp << pro
# end
# @temp
# end
# @homework_list = @temp
# end
# end
#
# respond_to do |format|
# if @bid.reward_type == 3
# format.html {
# render :layout => 'base_homework'
# }
# elsif @bid.reward_type == 1
# format.html {
# render :layout => 'base_bids'
# }
# else
# format.html {
# render :layout => 'base_contest'
# }
# end
# format.api
# end
# end
#
# # 显示作业课程
# # add by nwb
# def show_courseEx
#
# if (User.current.logged? && (User.current.member_of_course?(@bid.courses.first) || User.current.admin?))
# @membership = User.current.coursememberships.all(:conditions => Course.visible_condition(User.current))
# @user = @bid.author
# @bidding_project = @bid.biding_projects.all
#
# if params[:student_id].present?
# @temp = []
# @bidding_project.each do |pro|
# if pro.project && pro.project.project_status
# if /#{params[:student_id]}/ =~ pro.user.user_extensions.student_id
# @temp << pro
# end
# end
# @temp
# end
# @bidding_project = @temp
# else
# #added by nie
# @temp = []
# @bidding_project.each do |pro|
# if pro.project && pro.project.project_status
# @temp << pro
# end
# @temp
# end
# if @temp.size > 0
# @bidding_project = @temp.sort {|a,b| b.project.project_status.grade <=> a.project.project_status.grade}
# end
# #ended
# end
#
# if @bid.homework_type
# @homework = HomeworkAttach.new
# @is_teacher = is_course_teacher(User.current,@bid.courses.first)
# if @is_teacher
# all_homework_list = HomeworkAttach.find_by_sql("SELECT * FROM (SELECT homework_attaches.*,
# (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND is_teacher_score = 1 AND stars IS NOT NULL ORDER BY updated_at DESC limit 0,1) AS t_score,
# (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND is_teacher_score = 0) AS s_score
# FROM homework_attaches WHERE bid_id = #{@bid.id} ORDER BY s_score DESC,created_at ASC) AS table1
# WHERE table1.t_score IS NULL")
# @not_batch_homework = true
# @cur_type = 1
# else
# all_homework_list = HomeworkAttach.find_by_sql("SELECT homework_attaches.*,
# (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND is_teacher_score = 1 AND stars IS NOT NULL ORDER BY updated_at DESC limit 0,1) AS t_score,
# (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND is_teacher_score = 0) AS s_score,
# (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = #{User.current.id} AND is_teacher_score = #{@is_teacher ? 1 : 0}) AS m_score
# FROM homework_attaches
# INNER JOIN homework_evaluations ON homework_evaluations.homework_attach_id = homework_attaches.id
# WHERE homework_attaches.bid_id = #{@bid.id} AND homework_evaluations.user_id = #{User.current.id} ORDER BY s_score DESC")
# @is_student_batch_homework = true
# @cur_type = 4
# end
#
# @cur_page = params[:page] || 1
# # @homework_list = paginateHelper all_homework_list,10
# @homework_list = all_homework_list
# @jours_count = @bid.journals_for_messages.where('m_parent_id IS NULL').count
# if params[:student_id].present?
# @temp = []
# @homework_list.each do |pro|
# if /#{params[:student_id]}/ =~ pro.user.user_extensions.student_id
# @temp << pro
# end
# @temp
# end
# @homework_list = @temp
# end
# end
#
# respond_to do |format|
# if @bid.reward_type == 3
# format.html {
# html_title(l(:label_homework_info))
# render :layout => 'base_homework'
# }
# elsif @bid.reward_type == 1
# format.html {
# render :layout => 'base_bids'
# }
# else
# format.html {
# render :layout => 'base_contest'
# }
# end
# format.api
# end
# else
# render_403 :message => :notice_not_authorized
# end
# end
#
# ##### by huang
# def show_project_homework
# # flash[:notice] = ""
# @membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current))
# @option = []
# @membership.each do |membership|
# end
# # a = [1]
# # @project = Project.where("id in []", a)
# @user = @bid.author
# @bidding_project = @bid.biding_projects
# respond_to do |format|
# if @bid.reward_type == 3
# format.html {
# render :layout => 'base_homework'
# }
# elsif @bid.reward_type == 1
# format.html {
# render :layout => 'base_bids'
# }
# else
# format.html {
# render :layout => 'base_contest'
# }
# end
# format.api
# end
# end
#
# ###添加应标项目
# def add
# project = Project.find(params[:bid])
# bid_message = params[:bid_for_save][:bid_message]
# if BidingProject.where("project_id = ? and bid_id = ?", project.id, @bid.id).size == 0
# if BidingProject.cerate_bidding(@bid.id, project.id, bid_message)
#
# # added by bai type ==1 需求type==2 竞赛, type==3 作业
# if @bid.reward_type == 1
# flash.now[:notice] = l(:label_bidding_succeed)
#
# elsif @bid.reward_type == 2
# flash.now[:notice] = l(:label_bidding_contest_succeed)
#
# else @bid.reward_type == 3
# flash.now[:notice] = l(:label_bidding_homework_succeed)
# end
# # end
#
# end
# else
# if @bid.reward_type == 3
# flash.now[:error] = l(:label_bidding_homework_fail)
# else
# flash.now[:error] = l(:label_bidding_fail)
# end
# end
# @bidding_project = @bid.biding_projects
# respond_to do |format|
# # format.html { redirect_to_referer_or {render :text => 'Watcher added.', :layout => true}}
# # format.html
# format.html { redirect_to :back }
# format.js
# #format.api { render_api_ok }
# end
# end
#
# #删除已提交的项目作业(不删项目)
# def delete
# binding_project = params[:binding_project]
# if can_delete_project_homework(BidingProject.find(binding_project),User.current)
# if BidingProject.delete(binding_project)
# redirect_to project_for_bid_url
# else
# render_403;
# end
# end
# end
# ## 新建留言
# def create
#
# if params[:bid_message][:message].size>0
# if params[:reference_content]
# message = params[:bid_message][:message] + "\n" + params[:reference_content]
# else
# message = params[:bid_message][:message]
# @m = message
# end
# refer_user_id = params[:bid_message][:reference_user_id].to_i
# @bid.add_jour(User.current, message, refer_user_id)
# end
# @user = @bid.author
# @jours = @bid.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
# @jour = paginateHelper @jours,10
# @bid.set_commit(@feedback_count)
# respond_to do |format|
# format.js
# #format.api { render_api_ok }
# end
#
# end
#
# ##删除留言
# def destroy
# @user = @bid.author
# if User.current.admin? || User.current.id == @user.id
# JournalsForMessage.delete_message(params[:object_id])
# end
# @jours = @bid.journals_for_messages.reverse
# @limit = 10
# @feedback_count = @jours.count
# @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
# @offset ||= @feedback_pages.offset
# @jour = @jours[@offset, @limit]
#
# @bid.set_commit(@feedback_count)
# # if a_message.size > 5
# # @message = a_message[-5, 5]
# # else
# # @message = a_message
# # end
# # @message_count = a_message.count
#
# respond_to do |format|
# # format.html
# format.js
# #format.api { render_api_ok }
# end
# end
#
# #删除作业
# #by xianbo
# def homework_destroy
# @bid_to_destroy = Bid.find params[:id]
# course_url = course_homework_path(@bid_to_destroy.courses.first)
# (render_403; return false) unless User.current.admin?||User.current.id==@bid_to_destroy.author_id
# @bid_to_destroy.destroy
# respond_to do |format|
# format.html { redirect_to course_url }
# format.js
# #format.api { render_api_ok }
# end
# end
#
# #end by xianbo
# ##引用
# def new
# @jour = JournalsForMessage.find(params[:journal_id]) if params[:journal_id]
# if @jour
# user = @jour.user
# text = @jour.notes
# else
# user = @bid.author
# text = @bid.description
# end
# # Replaces pre blocks with [...]
# text = text.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]')
# @content = "> #{ll(User.current.language, :text_user_wrote, user)}\n> "
# @content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
# @id = user.id
# rescue ActiveRecord::RecordNotFound
# render_404
# end
#
# ##新建需求
# def new_bid
# @bid = Bid.new
# @bid.safe_attributes = params[:bid]
# end
#
# #huang
# def create_contest
# @bid = Bid.new
# @bid.name = params[:bid][:name]
# @bid.description = params[:bid][:description]
# @bid.reward_type = 2
# @bid.budget = params[:bid][:budget]
# @bid.deadline = params[:bid][:deadline]
# @bid.password = params[:bid][:password] #added by bai
# @bid.author_id = User.current.id
# @bid.commit = 0
# if @bid.save
# unless @bid.watched_by?(User.current)
# if @bid.add_watcher(User.current)
# flash[:notice] = l(:label_bid_succeed)
# end
# end
# redirect_to respond_url(@bid)
# else
# @bid.safe_attributes = params[:bid]
# render :action => 'new_bid'
# end
# end
#
# # added by bai
# def update_contest
# @bid = Bid.find(params[:id])
# @bid.name = params[:bid][:name]
# @bid.description = params[:bid][:description]
# @bid.reward_type = 2
# @bid.budget = params[:bid][:budget]
# @bid.deadline = params[:bid][:deadline]
# @bid.password = params[:bid][:password]
# @bid.author_id = User.current.id
# @bid.commit = 0
# if @bid.save
# unless @bid.watched_by?(User.current)
# if @bid.add_watcher(User.current)
# flash[:notice] = l(:label_bid_succeed)
# end
# end
# redirect_to respond_url(@bid)
# else
# @bid.safe_attributes = params[:bid]
# render :action => 'new_bid'
# end
# end
# #huang
# def new_contest
# @bid = Bid.new
# @bid.safe_attributes = params[:bid]
# end
#
# def create_bid
# @bid = Bid.new
# @bid.name = params[:bid][:name]
# @bid.description = params[:bid][:description]
# @bid.reward_type = 1
# @bid.budget = params[:bid][:budget]
# @bid.deadline = params[:bid][:deadline]
# @bid.author_id = User.current.id
# @bid.commit = 0
# if @bid.save
# unless @bid.watched_by?(User.current)
# if @bid.add_watcher(User.current)
# flash[:notice] = l(:label_bid_succeed)
# end
# end
# redirect_to respond_url(@bid)
# else
# @bid.safe_attributes = params[:bid]
# render :action => 'new_bid'
# end
# end
#
# def create_homework
# @bid = Bid.new
# @bid.name = params[:bid][:name]
# @bid.description = params[:bid][:description]
# @bid.is_evaluation = params[:bid][:is_evaluation]
# @bid.proportion = params[:bid][:proportion]
# @bid.evaluation_num = params[:bid][:evaluation_num]
# params[:bid][:open_anonymous_evaluation] ? @bid.open_anonymous_evaluation = 1 : @bid.open_anonymous_evaluation = 0
# @bid.reward_type = 3
# # @bid.budget = params[:bid][:budget]
# @bid.deadline = params[:bid][:deadline]
# @bid.budget = 0
# @bid.author_id = User.current.id
# @bid.commit = 0
# @bid.homework_type = 1
# @bid.save_attachments(params[:attachments] || (params[:bid] && params[:bid][:uploads]))
# # @bid.
# if @bid.save
# HomeworkForCourse.create(:course_id => params[:course_id], :bid_id => @bid.id)
# unless @bid.watched_by?(User.current)
# if @bid.add_watcher(User.current)
# flash[:notice] = l(:label_bid_succeed)
# end
# end
# redirect_to course_homework_url(params[:course_id])
# else
# @bid.safe_attributes = params[:bid]
# @homework = @bid
# @course = Course.find_by_id(params[:course_id])
# @course_id = @course.id
# #respond_to do |format|
# # format.html { redirect_to new_homework_course_path(params[:course_id]),:layout => 'base_courses'}
# # format.api { render_validation_errors(@bid) }
# #end
# render file: 'courses/new_homework', layout: 'base_courses'
# end
# end
#
# # modify by nwb\
# # 编辑作业
# def edit
# @bid = Bid.find(params[:bid_id])
# if (User.current.admin?||User.current.allowed_to?(:as_teacher,@bid.courses.first))
# @course_id = params[:course_id]
# respond_to do |format|
# format.html {
# @course = Course.find(params[:course_id])
# @user= User.find(User.current.id)
# render :layout => 'base_courses'
# }
# end
# else
# render_403
# end
# end
#
# def update
# @bid = Bid.find(params[:id])
# @course = @bid.courses.first#Project.find(params[:course_id])
# @bid.name = params[:bid][:name]
# @bid.description = params[:bid][:description]
# @bid.is_evaluation = params[:bid][:is_evaluation]
# @bid.proportion = params[:bid][:proportion]
# @bid.evaluation_num = params[:bid][:evaluation_num]
# params[:bid][:open_anonymous_evaluation] ? @bid.open_anonymous_evaluation = 1 : @bid.open_anonymous_evaluation = 0
# @bid.reward_type = 3
# @bid.deadline = params[:bid][:deadline]
# @bid.budget = 0
# #@bid.author_id = User.current.id
# @bid.commit = 0
# @bid.homework_type = 1
# @bid.save_attachments(params[:attachments] || (params[:bid] && params[:bid][:uploads]))
# if @bid.save
# flash[:notice] = l(:label_update_homework_succeed)
# redirect_to course_homework_url(@course)
# else
# @bid.safe_attributes = params[:bid]
# render :action => 'edit', :layout =>'base_courses'
# end
# end
#
# def new_submit_homework
# #render html to prepare create submit homework
# find_bid
# find_bid
# render :layout => 'base_homework'
# end
#
# def add_homework
# if User.current.logged? && (!Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.roles&Role.where('id = ? or id = ? or id =?',5, 10, 7)).size >0)
# # homework = HomeworkAttach.create(:bid_id => @bid.id, :user_id => User.current.id)
# # homework.save_attachments(params[:attachments] || (params[:bid] && params[:bid][:uploads]))
#
# if hadcommittedhomework(User.current.id, @bid.id) == true
# @homework_flag = l(:label_bidding_homework_committed)
# else
# @homework = HomeworkAttach.new
# @homework.safe_attributes = params[:homeworkattach]
# @homework.bid_id = @bid.id
# @homework.user_id = User.current.id
# @homework.save_attachments(params[:attachments])
#
# render_attachment_warning_if_needed(@homework)
#
# @homework_flag = if @homework.save
# l(:label_bidding_homework_succeed)
# else
# l(:label_bidding_homework_failed)
# end
#
# if @homework.attachments.empty?
# @homework.delete
# #flash[:error] = l(:no_attachmens_allowed)
# @homework_flag = l(:no_attachmens_allowed)
# # else
# end
# end
# end
#
# @homework_list = @bid.homeworks
# respond_to do |format|
# format.html{
# #redirect_to project_for_bid_path, notice: @homework_flag.to_s
# flash[:notice] = @homework_flag.to_s
# redirect_back_or_default(project_for_bid_path)
# }
# format.js
# end
#
# end
#
# # 作业统计
# def homework_statistics
# @course = @bid.courses.first
# @member = []
# @course.memberships.each do |member|
# unless (member.roles && Role.where('id = ? ', 3)).empty?
# @member.push member
# end
# end
# if @bid.homework_type = 1
# @student = User.where("id in (select DISTINCT user_id from #{HomeworkAttach.table_name} where bid_id = ? )", @bid.id)
# @homework_type = true
# else
#
# @homework_type = false
# end
# @user = @bid.author
# render :layout => 'base_homework'
# end
#
# def homework_respond
# @user = @bid.author
# render :layout => 'base_homework'
# end
#
# def more
# @jour = @bid.journals_for_messages
# @jour.each_with_index {|j,i| j.indice = i+1}
# @state = true
#
# respond_to do |format|
# format.html { redirect_to :back }
# format.js
# #format.api { render_api_ok }
# end
# end
#
# def back
# @jour = @bid.journals_for_messages
# @jour.each_with_index {|j,i| j.indice = i+1}
# @state = false
#
# respond_to do |format|
# format.html { redirect_to :back }
# format.js
# #format.api { render_api_ok }
# end
# end
#
# #added by william
# #used to set the bidding project reward
# def set_reward
# @b_p = nil
# @biding_project_id = nil
#
# if params[:set_reward][:reward]&&((User.current.id==@bid.author_id)||User.current.admin)
# # @bid_id = params[:id]
# @biding_project_id = params[:set_reward][:b_id]
# @b_p = BidingProject.find_by_id(@biding_project_id)
#
# # 把字段存进表中
# @b_p.update_reward(params[:set_reward][:reward].to_s)
# end
#
# respond_to do |format|
# format.js
# end
# end
#
# # added by william
# # used to manage the bid and end the bid
# def manage
#
# end
#
# # 启动匿评
# def start_anonymous_comment
# @bid = Bid.find(params[:id])
# @course = @bid.courses.first
# if(@bid.comment_status == 0)
# homeworks = @bid.homeworks
# if(homeworks && homeworks.size >= 2)
# homeworks.each_with_index do |homework, index|
# user = homework.user
# n = @bid.evaluation_num
# n = n < homeworks.size ? n : homeworks.size - 1
# assigned_homeworks = get_assigned_homeworks(homeworks, n, index)
# assigned_homeworks.each do |h|
# @homework_evaluation = HomeworkEvaluation.new(user_id: user.id, homework_attach_id: h.id)
# @homework_evaluation.save
# end
# end
# @bid.update_column('comment_status', 1)
# @statue = 1
# else
# @statue = 2
# end
# else
# @statue = 3
# end
#
# respond_to do |format|
# format.js
# end
# end
#
# def stop_anonymous_comment
# @bid = Bid.find(params[:id])
#
# @bid.update_column('comment_status', 2)
#
# respond_to do |format|
# format.js
# end
# end
#
# def alert_anonymous_comment
# @bid = Bid.find params[:id]
# @course = @bid.courses.first
# @cur_size = 0
# @totle_size = 0
# if @bid.comment_status == 0
# @totle_size = searchStudent(@course).size
# @cur_size = @bid.homeworks.size
# elsif @bid.comment_status == 1
# @bid.homeworks.map { |homework| @totle_size += homework.homework_evaluations.count}
# @cur_size = 0
# @bid.homeworks.map { |homework| @cur_size += homework.rates(:quality).where("seems_rateable_rates.is_teacher_score = 0").count}
# end
# @percent = format("%.2f",(@cur_size.to_f / ( @totle_size == 0 ? 1 : @totle_size)) * 100)
# respond_to do |format|
# format.js
# end
# end
#
# private
#
# def get_assigned_homeworks(homeworks, n, index)
# homeworks += homeworks
# homeworks[index + 1 .. index + n]
# end
#
# def find_bid
# if params[:id]
# @bid = Bid.find(params[:id], :include => [{:homeworks => :user}])
# @user = @bid.author
# end
# rescue
# render_404
# end
#
# def memberAccess
# # 是课程,则判断当前用户是否参加了课程
# return true if current_user.admin?
# #return 0 if @bid.courses.first.project_type == Project::ProjectType_project
# currentUser = User.current
# render_403 unless currentUser.member_of_course?(@bid.courses.first)
# end
#
# #验证是否显示课程
# def can_show_course
# @first_page = FirstPage.find_by_page_type('project')
# if @first_page.show_course == 2
# render_404
# end
# end
#
# #验证是否显示竞赛
# def can_show_contest
# @first_page = FirstPage.find_by_page_type('project')
# if @first_page.show_contest == 2
# render_404
# end
# end
# end
#