diff --git a/app/services/api/v1/issues/list_service.rb b/app/services/api/v1/issues/list_service.rb index 820f708e2..b267647e7 100644 --- a/app/services/api/v1/issues/list_service.rb +++ b/app/services/api/v1/issues/list_service.rb @@ -60,13 +60,31 @@ class Api::V1::Issues::ListService < ApplicationService issues = issues.where(author_id: author_id) if author_id.present? # issue_tag_ids - issues = issues.ransack(issue_tags_value_cont: issue_tag_ids.sort!.join(',')).result unless issue_tag_ids.blank? + if issue_tag_ids.present? + if issue_tag_ids.include?('-1') + issues = issues.where(issue_tags_value: nil).or(issues.where(issue_tags_value: "")) + else + issues = issues.ransack(issue_tags_value_cont: issue_tag_ids.sort!.join(',')).result + end + end # milestone_id - issues = issues.where(fixed_version_id: milestone_id) if milestone_id.present? + if milestone_id.present? + if milestone_id.to_i == -1 + issues = issues.where(fixed_version_id: nil) + else + issues = issues.where(fixed_version_id: milestone_id) + end + end # assigner_id - issues = issues.joins(:assigners).where(users: {id: assigner_id}) if assigner_id.present? + if assigner_id.present? + if assigner_id.to_i == -1 + issues = issues.left_joins(:assigners).where(users: {id: nil}) + else + issues = issues.joins(:assigners).where(users: {id: assigner_id}) + end + end # status_id issues = issues.where(status_id: status_id) if status_id.present? && category != 'closed'