mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-03-06 04:34:06 +08:00
Fix project user assignment [SCI_5925] (#3577)
This commit is contained in:
parent
c85f5187f3
commit
6fbb22922a
2 changed files with 7 additions and 15 deletions
|
@ -22,7 +22,7 @@ class MyModuleMember
|
|||
end
|
||||
|
||||
def update(params)
|
||||
prepare_data(params)
|
||||
user_assignment(params)
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
user_assignment.update!(user_role: user_role, assigned: :manually)
|
||||
|
@ -32,7 +32,7 @@ class MyModuleMember
|
|||
|
||||
private
|
||||
|
||||
def prepare_data(params)
|
||||
def user_assignment(params)
|
||||
self.user_role_id = params[:user_role_id]
|
||||
self.user_id = params[:user_id]
|
||||
|
||||
|
|
|
@ -11,8 +11,7 @@ class ProjectMember
|
|||
validates :user, :project, presence: true, if: -> { assign }
|
||||
validates :user_role_id, presence: true, if: -> { assign }
|
||||
validate :validate_role_presence, if: -> { assign }
|
||||
validate :validate_user_project_relation_presence, if: -> { assign }
|
||||
validate :validate_user_project_assignment_presence, if: -> { assign }
|
||||
validate :validate_user_assignment_presence, if: -> { assign }
|
||||
|
||||
def initialize(user, project, current_user = nil)
|
||||
@user = user
|
||||
|
@ -25,7 +24,6 @@ class ProjectMember
|
|||
return unless assign
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
@user_project = UserProject.create!(project: @project, user: @user)
|
||||
user_role = set_user_role
|
||||
|
||||
@user_assignment = UserAssignment.create!(
|
||||
|
@ -67,12 +65,12 @@ class ProjectMember
|
|||
|
||||
def destroy
|
||||
user_assignment = UserAssignment.find_by!(assignable: @project, user: @user)
|
||||
user_project = UserProject.find_by!(project: @project, user: @user)
|
||||
user_project = UserProject.find_by(project: @project, user: @user)
|
||||
return false if last_project_owner?
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
user_assignment.destroy!
|
||||
user_project.destroy!
|
||||
user_project&.destroy!
|
||||
log_activity(:unassign_user_from_project)
|
||||
|
||||
UserAssignments::PropagateAssignmentJob.perform_later(
|
||||
|
@ -115,14 +113,8 @@ class ProjectMember
|
|||
errors.add(:user_role_id, :not_found) if UserRole.find_by(id: user_role_id).nil?
|
||||
end
|
||||
|
||||
def validate_user_project_relation_presence
|
||||
return if UserProject.find_by(project: @project, user: @user).nil?
|
||||
|
||||
errors.add(:user)
|
||||
end
|
||||
|
||||
def validate_user_project_assignment_presence
|
||||
return if UserAssignment.find_by(assignable: @project, user: @user).nil?
|
||||
def validate_user_assignment_presence
|
||||
return if UserAssignment.find_by(assignable: @project, user: @user).nil?
|
||||
|
||||
errors.add(:user_role_id, :already_present)
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue