diff options
Diffstat (limited to 'app/services/todos/destroy/project_private_service.rb')
-rw-r--r-- | app/services/todos/destroy/project_private_service.rb | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/app/services/todos/destroy/project_private_service.rb b/app/services/todos/destroy/project_private_service.rb index e00d10c3780..a1ca0d8543c 100644 --- a/app/services/todos/destroy/project_private_service.rb +++ b/app/services/todos/destroy/project_private_service.rb @@ -7,27 +7,32 @@ module Todos attr_reader :project - # rubocop: disable CodeReuse/ActiveRecord def initialize(project_id) - @project = Project.find_by(id: project_id) + @project = Project.find_by_id(project_id) + end + + def execute + return unless todos_to_remove? + + delete_todos end - # rubocop: enable CodeReuse/ActiveRecord private - override :todos - # rubocop: disable CodeReuse/ActiveRecord + def delete_todos + authorized_users = ProjectAuthorization.select(:user_id).for_project(project_ids) + + todos.not_in_users(authorized_users).delete_all + end + def todos - Todo.where(project_id: project.id) + Todo.for_project(project.id) end - # rubocop: enable CodeReuse/ActiveRecord - override :project_ids def project_ids project.id end - override :todos_to_remove? def todos_to_remove? project&.private? end |