|
|
|
@ -17,10 +17,11 @@
|
|
|
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
|
|
|
|
|
|
class MembersController < ApplicationController
|
|
|
|
|
helper :users
|
|
|
|
|
model_object Member
|
|
|
|
|
before_filter :find_model_object, :except => [:index, :create, :autocomplete]
|
|
|
|
|
before_filter :find_model_object, :except => [:index, :create, :autocomplete, :allow_to_join_project, :refused_allow_to_join_project]
|
|
|
|
|
#before_filter :find_model_object_contest, :except => [:index, :create, :autocomplete]
|
|
|
|
|
before_filter :find_project_from_association, :except => [:index, :create, :autocomplete]
|
|
|
|
|
before_filter :find_project_from_association, :except => [:index, :create, :autocomplete, :allow_to_join_project, :refused_allow_to_join_project]
|
|
|
|
|
before_filter :find_project_by_project_id, :only => [:index, :create, :autocomplete]
|
|
|
|
|
before_filter :authorize
|
|
|
|
|
accept_api_auth :index, :show, :create, :update, :destroy
|
|
|
|
@ -49,6 +50,59 @@ class MembersController < ApplicationController
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 同意消息中申请加入项目
|
|
|
|
|
# 之所以role不在参数中传送是考虑到安全问题
|
|
|
|
|
# status(1:申请的消息;2:已操作过该消息(包括同意或者拒绝,消息状态更新);3:决绝消息;4:被拒人收到消息;5:拒绝者收到消息;6:同意后申请人收到消息;7:同意后批准人收到消息)
|
|
|
|
|
def allow_to_join_project
|
|
|
|
|
@applied_message = AppliedMessage.find(params[:applied_message_id])
|
|
|
|
|
applied_project = @applied_message.applied
|
|
|
|
|
user = User.find(@applied_message.applied_user_id)
|
|
|
|
|
project = Project.find(applied_project.project_id)
|
|
|
|
|
|
|
|
|
|
# applied_project = AppliedProject.where(:project_id => params[:project_id], :user_id => params[:user_id]).first
|
|
|
|
|
# @applied_message = AppliedMessage.find(params[:applied_id])
|
|
|
|
|
if user.member_of?(project)
|
|
|
|
|
@flash_message = "您已经是项目成员了"
|
|
|
|
|
@applied_message.update_attribute(:status, 2)
|
|
|
|
|
else
|
|
|
|
|
ap_role = applied_project.try(:role)
|
|
|
|
|
if ap_role
|
|
|
|
|
begin
|
|
|
|
|
members = []
|
|
|
|
|
user_grades = []
|
|
|
|
|
project_info = []
|
|
|
|
|
members << Member.new(:role_ids => ["#{ap_role}"], :user_id => params[:user_id])
|
|
|
|
|
user_grades << UserGrade.new(:user_id => params[:user_id], :project_id => params[:project_id])
|
|
|
|
|
role = Role.find(ap_role)
|
|
|
|
|
project_info << ProjectInfo.new(:project_id => params[:project_id], :user_id => params[:user_id]) if role.allowed_to?(:is_manager)
|
|
|
|
|
project.members << members
|
|
|
|
|
project.project_infos << project_info
|
|
|
|
|
project.user_grades << user_grades unless user_grades.first.user_id.nil?
|
|
|
|
|
# 添加成功后,申请人收到消息
|
|
|
|
|
AppliedMessage.create(:user_id => params[:send_id], :applied_type => "AppliedProject", :applied_id => applied_project.id ,:status => 6, :viewed => true, :applied_user_id => params[:user_id])
|
|
|
|
|
# 添加成功后,批准人收到消息
|
|
|
|
|
AppliedMessage.create(:user_id => params[:user_id], :applied_type => "AppliedProject", :applied_id => applied_project.id ,:status => 7, :viewed => true, :applied_user_id => params[:send_id])
|
|
|
|
|
rescue Exception => e
|
|
|
|
|
puts e
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 同意消息中拒绝加入项目
|
|
|
|
|
# params[:user_id]为申请者ID
|
|
|
|
|
# params[:send_id]为拒绝人ID
|
|
|
|
|
# status(1:申请的消息;2:已操作过该消息(包括同意或者拒绝,消息状态更新);3:拒绝消息;4:被拒人收到消息;5:拒绝者收到消息;6:同意后申请人收到消息;7:同意后批准人收到消息)
|
|
|
|
|
def refused_allow_to_join_project
|
|
|
|
|
@applied_message = AppliedMessage.find(params[:applied_message_id])
|
|
|
|
|
@applied_message.update_attribute(:status, 3)
|
|
|
|
|
applied_project = @applied_message.applied
|
|
|
|
|
# 发送消息给被拒者,user_id对应的收到信息的用户
|
|
|
|
|
AppliedMessage.create(:user_id => @applied_message.applied_user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,:status => 4, :viewed => true, :applied_user_id => @applied_message.user_id)
|
|
|
|
|
# 发送消息给拒绝者
|
|
|
|
|
AppliedMessage.create(:user_id => @applied_message.user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,:status => 5, :viewed => true, :applied_user_id => @applied_message.applied_user_id)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def create
|
|
|
|
|
if params[:refusal_button]
|
|
|
|
|
members = []
|
|
|
|
|