# # 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{
((.|\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] # 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 #