@ -1,5 +1,30 @@
class HomeworkAttachController < ApplicationController
###############################
#判断当前角色权限时需先找到当前操作的project
before_filter :find_project_by_bid_id , :only = > [ :new ]
before_filter :find_project_by_hoemwork_id , :only = > [ :edit , :update , :destroy , :show , :add_homework_users , :destory_homework_users ]
#判断当前角色是否有操作权限
#勿删 before_filter :authorize, :only => [:new,:edit,:update,:destroy]
def find_project_by_bid_id
@bid = Bid . find ( params [ :id ] )
@project = @bid . courses [ 0 ]
rescue ActiveRecord :: RecordNotFound
render_404
end
def find_project_by_hoemwork_id
@homework = HomeworkAttach . find ( params [ :id ] )
@project = @homework . bid . courses [ 0 ]
end
#获取作业的成员
def get_homework_member homework
@hoemwork_users = users_for_homework ( @homework )
@members = members_for_homework ( @homework , @hoemwork_users , params [ :q ] )
@members = paginateHelper @members , 10
end
def index
@homeworks = HomeworkAttach . all
respond_to do | format |
@ -8,17 +33,48 @@ class HomeworkAttachController < ApplicationController
end
end
def add_users users
if users != nil && users . count > 0
users . each do | user |
@homework . homework_users . build ( :user_id = > user . id )
#作业添加成员(参与人员)
def add_homework_users
if User . current . admin? || User . current . member_of? ( @homework . bid . courses . first )
#@homework = HomeworkAttach.find(params[:id])
if params [ :membership ]
if params [ :membership ] [ :user_ids ]
attrs = params [ :membership ] . dup
user_ids = attrs . delete ( :user_ids )
user_ids . each do | user_id |
@homework . homework_users . build ( :user_id = > user_id )
end
end
end
@homework . save
get_homework_member @homework
respond_to do | format |
format . js
end
else
render_403 :message = > :notice_not_authorized
end
end
#作业删除成员(参与人员)
def destory_homework_users
#@homework = HomeworkAttach.find(params[:id])
if User . current . admin? || User . current . member_of? ( @homework . bid . courses . first )
homework_user = @homework . homework_users . where ( " user_id = #{ params [ :user_id ] } " ) . first
homework_user . destroy
get_homework_member @homework
respond_to do | format |
format . js
end
else
render_403 :message = > :notice_not_authorized
end
end
def create
#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)
bid = Bid . find params [ :bid_id ]
if User . current . admin? || User . current . member_of? ( bid . courses . first )
if bid . homeworks . where ( " user_id = ? " , User . current ) . count == 0
user_id = params [ :user_id ]
bid_id = params [ :bid_id ]
sta = 0
@ -32,7 +88,7 @@ class HomeworkAttachController < ApplicationController
:bid_id = > bid_id
}
#@bid = Bid.find bid_id
#@homework_list = @bid.homeworks
@homework = HomeworkAttach . new ( options )
@ -45,27 +101,80 @@ class HomeworkAttachController < ApplicationController
format . json { head :no_content }
end
else
render_403 :message = > :notice_not_authorized
end
else
render_403 :message = > :notice_has_homework
end
else
render_403 :message = > :notice_not_authorized
end
#end
end
def new
@homework = HomeworkAttach . new
@bid = Bid . find ( params [ :id ] )
if User . current . admin? || User . current . member_of? ( @bid . courses . first )
#该课程的学生的集合(新建不实现功能:添加成员)
#@members = @bid.courses.first.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and user_id <> #{User.current.id}", {:role_id => [5, 10]})
#@members = paginateHelper @members,10
#@all_user = []
#@bid.courses.first.members.each do |member|
# @all_user << member.user
#end
@homework = HomeworkAttach . new
#@homework_user = members_for_homework(@homework) + User.current
#@members = @all_user - @homework_user
respond_to do | format |
format . html # new.html.erb
format . json { render json : @homework }
end
else
render_403 :message = > :notice_not_authorized
end
end
#获取作业成员的集合
def get_homework_member_list
@homework = HomeworkAttach . find ( params [ :bid_id ] )
course = @homework . bid . courses . first
if User . current . admin? || User . current . member_of? ( course )
get_homework_member @homework
else
raise " error "
end
respond_to do | format |
format . js
end
end
#获取指定作业的所有成员
def users_for_homework homework
homework . nil? ? [ ] : ( homework . users + [ homework . user ] )
end
#获取可选成员列表
#homework: 作业
#users: 该作业所有成员
#q:模糊匹配的用户的昵称
def members_for_homework homework , users , q
homework . bid . courses . first . members . joins ( :member_roles ) . where ( " member_roles.role_id IN (:role_id) and user_id not in (:users) " , { :role_id = > [ 5 , 10 ] , :users = > users } ) . joins ( :user ) . where ( " users.login like '% #{ q } %' " )
end
def edit
@homework = HomeworkAttach . find ( params [ :id ] )
#@homework = HomeworkAttach.find(params[:id])
if User . current . admin? || User . current . member_of? ( @homework . bid . courses . first )
#@members = @homework.bid.courses.first.members.joins(:member_roles).where("member_roles.role_id IN (:role_id)", {:role_id => [5, 10]})
get_homework_member @homework
else
render_403 :message = > :notice_not_authorized
end
end
def update
@homework = HomeworkAttach . find ( params [ :id ] )
#@homework = HomeworkAttach.find(params[:id])
course = @homework . bid . courses . first
if User . current . admin? || User . current . member_of? ( course )
name = params [ :homework_name ]
description = params [ :homework_description ]
@homework . name = name
@ -80,10 +189,14 @@ class HomeworkAttachController < ApplicationController
end
else
end
else
render_403 :message = > :notice_not_authorized
end
end
def destroy
@homework = HomeworkAttach . find ( params [ :id ] )
#@homework = HomeworkAttach.find(params[:id])
if User . current . admin? || User . current == @homework
if @homework . destroy
respond_to do | format |
format . html { redirect_to project_for_bid_path @homework . bid }
@ -91,11 +204,15 @@ class HomeworkAttachController < ApplicationController
end
else
end
else
render_403 :message = > :notice_not_authorized
end
end
#显示作业信息
def show
@homework = HomeworkAttach . find ( params [ :id ] )
#@homework = HomeworkAttach.find(params[:id])
if User . current . admin? || User . current . member_of? ( @homework . bid . courses . first )
# 打分统计
stars_reates = @homework .
rates ( :quality )
@ -109,6 +226,10 @@ class HomeworkAttachController < ApplicationController
@stars_status_map [ " star #{ star_status . stars . to_i } " . to_sym ] =
percent_m . to_s + " % "
end
#是否已经进行过评价
@has_evaluation = stars_reates . where ( " rater_id = ? " , User . current ) . count > 0
#是否开启互评功能
@is_evaluation = @homework . bid . is_evaluation == 1 || @homework . bid . is_evaluation == nil
@limit = 10
@jours = @homework . journals_for_messages . where ( " is_comprehensive_evaluation is null " ) . order ( " created_on DESC " )
@feedback_count = @jours . count
@ -116,6 +237,9 @@ class HomeworkAttachController < ApplicationController
@offset || = @feedback_pages . offset
@jour = @jours [ @offset , @limit ]
@comprehensive_evaluation = @homework . journals_for_messages . where ( " is_comprehensive_evaluation is not null " ) . order ( " created_on DESC " )
else
render_403 :message = > :notice_not_authorized
end
end
#删除留言