# fq 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 :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 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.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} # TO_DO 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.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} format.js { render :partial => 'set_join', :locals => {:user => User.current, :object_id => params[:id]} } end end def new_join # added by fq 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?)) # flash[:notice] = "" @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 @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[:course_id] (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 :back } 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{
((.|\s)*?)
}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] @bid.open_anonymous_evaluation = params[:bid][:open_anonymous_evaluation] @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] @bid.open_anonymous_evaluation = params[:bid][:open_anonymous_evaluation] @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 if @bid.comment_status == 0 @totle_size = searchStudent(@course).size @cur_size = @bid.homeworks.size elsif @bid.comment_status == 1 @totle_size = 0 @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