diff --git a/app/models/issue.rb b/app/models/issue.rb index 78ffaead7..fefa6960c 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -73,6 +73,9 @@ class Issue < ApplicationRecord has_many :issue_participants, dependent: :destroy has_many :participants, through: :issue_participants has_many :show_participants, -> {joins(:issue_participants).where.not(issue_participants: {participant_type: "atme"}).distinct}, through: :issue_participants, source: :participant + has_many :show_assigners, -> {order("issue_assigners.created_at desc").limit(5)}, through: :issue_assigners, source: :assigner + has_many :show_issue_tags, -> {order("issue_tags_relates.created_at desc").limit(3)}, through: :issue_tags_relates, source: :issue_tag + has_many :comment_journals, -> {where.not(notes: nil)}, class_name: "Journal", :as => :journalized has_many :operate_journals, -> {where(notes: nil)}, class_name: "Journal", :as => :journalized diff --git a/app/models/issue_tags_relate.rb b/app/models/issue_tags_relate.rb index 8bd1486d7..13eaa780f 100644 --- a/app/models/issue_tags_relate.rb +++ b/app/models/issue_tags_relate.rb @@ -20,7 +20,7 @@ class IssueTagsRelate < ApplicationRecord after_create :increment_issue_tags_counter_cache def increment_issue_tags_counter_cache - if self.issue.issue_classify == "Issue" + if self.issue.issue_classify == "issue" IssueTag.increment_counter :issues_count, issue_tag_id else IssueTag.increment_counter :pull_requests_count, issue_tag_id diff --git a/app/models/version.rb b/app/models/version.rb index fab193b96..1e14a135c 100644 --- a/app/models/version.rb +++ b/app/models/version.rb @@ -28,8 +28,8 @@ class Version < ApplicationRecord has_many :issues, class_name: "Issue", foreign_key: "fixed_version_id" belongs_to :user, optional: true - has_many :opened_issues, -> {where(issue_classify: "Issue").where.not(status_id: 5)}, class_name: "Issue", foreign_key: :fixed_version_id - has_many :closed_issues, -> {where(issue_classify: "Issue", status_id: 5)}, class_name: "Issue", foreign_key: :fixed_version_id + has_many :opened_issues, -> {where(issue_classify: "issue").where.not(status_id: 5)}, class_name: "Issue", foreign_key: :fixed_version_id + has_many :closed_issues, -> {where(issue_classify: "issue", status_id: 5)}, class_name: "Issue", foreign_key: :fixed_version_id scope :version_includes, ->{includes(:issues, :user)} scope :closed, ->{where(status: 'closed')} diff --git a/app/services/api/v1/issues/batch_update_service.rb b/app/services/api/v1/issues/batch_update_service.rb index cf09650ce..ccf783dca 100644 --- a/app/services/api/v1/issues/batch_update_service.rb +++ b/app/services/api/v1/issues/batch_update_service.rb @@ -20,7 +20,7 @@ class Api::V1::Issues::BatchUpdateService < ApplicationService raise Error, errors.full_messages.join(", ") unless valid? ActiveRecord::Base.transaction do @issues.each do |issue| - if issue.issue_classify == "Issue" + if issue.issue_classify == "issue" Api::V1::Issues::UpdateService.call(project, issue, params, current_user) end end diff --git a/app/services/api/v1/issues/create_service.rb b/app/services/api/v1/issues/create_service.rb index ffc08eb96..b6b785188 100644 --- a/app/services/api/v1/issues/create_service.rb +++ b/app/services/api/v1/issues/create_service.rb @@ -85,7 +85,7 @@ class Api::V1::Issues::CreateService < ApplicationService priority_id: priority_id, project_issues_index: (project.get_last_project_issues_index + 1), issue_type: "1", - issue_classify: "Issue" + issue_classify: "issue" } issue_attributes.merge!({description: description}) if description.present? diff --git a/app/services/api/v1/issues/list_service.rb b/app/services/api/v1/issues/list_service.rb index c1b386345..979f50c3d 100644 --- a/app/services/api/v1/issues/list_service.rb +++ b/app/services/api/v1/issues/list_service.rb @@ -56,7 +56,7 @@ class Api::V1::Issues::ListService < ApplicationService issues = issues.where(author_id: author_id) if author_id.present? # issue_tag_ids - issues = issues.joins(:issue_tags).where(issue_tags: {id: issue_tag_ids}) unless issue_tag_ids.blank? + issues = issues.joins(:issue_tags).ransack(issue_tags_id_in_all: issue_tag_ids).result unless issue_tag_ids.blank? # milestone_id issues = issues.where(fixed_version_id: milestone_id) if milestone_id.present? @@ -68,7 +68,7 @@ class Api::V1::Issues::ListService < ApplicationService issues = issues.where(status_id: status_id) if status_id.present? # keyword - issues = issues.ransack(subject_or_description_cont: keyword).result + issues = issues.ransack(subject_or_description_cont: keyword).result if keyword.present? @total_issues_count = issues.size @closed_issues_count = issues.closed.size @@ -81,7 +81,7 @@ class Api::V1::Issues::ListService < ApplicationService issues = issues.opened end - scope = issues.includes(:priority, :issue_status, :user, :assigners, :version, :issue_tags, :comment_journals) + scope = issues.includes(:priority, :issue_status, :user, :show_assigners, :show_issue_tags, :version, :issue_tags, :comment_journals) scope = scope.reorder("#{sort_by} #{sort_direction}").distinct diff --git a/app/services/api/v1/issues/update_service.rb b/app/services/api/v1/issues/update_service.rb index 597880eb3..a120dabc7 100644 --- a/app/services/api/v1/issues/update_service.rb +++ b/app/services/api/v1/issues/update_service.rb @@ -36,14 +36,14 @@ class Api::V1::Issues::UpdateService < ApplicationService check_issue_status(status_id) if status_id.present? check_issue_priority(priority_id) if priority_id.present? check_milestone(milestone_id) if milestone_id.present? - check_issue_tags(issue_tag_ids) unless issue_tag_ids.blank? - check_assigners(assigner_ids) unless assigner_ids.blank? - check_attachments(attachment_ids) unless attachment_ids.blank? - check_atme_receivers(receivers_login) unless receivers_login.blank? + check_issue_tags(issue_tag_ids) unless issue_tag_ids.nil? + check_assigners(assigner_ids) unless assigner_ids.nil? + check_attachments(attachment_ids) unless attachment_ids.nil? + check_atme_receivers(receivers_login) unless receivers_login.nil? load_assigners(assigner_ids) load_attachments(attachment_ids) load_issue_tags(issue_tag_ids) - load_atme_receivers(receivers_login) unless receivers_login.blank? + load_atme_receivers(receivers_login) unless receivers_login.nil? try_lock("Api::V1::Issues::UpdateService:#{project.id}:#{issue.id}") @updated_issue = @issue diff --git a/app/views/api/v1/issues/_detail.json.jbuilder b/app/views/api/v1/issues/_detail.json.jbuilder index 3961270ae..a39cdde9e 100644 --- a/app/views/api/v1/issues/_detail.json.jbuilder +++ b/app/views/api/v1/issues/_detail.json.jbuilder @@ -32,7 +32,7 @@ json.author do json.nil! end end -json.assigners issue.assigners.each do |assigner| +json.assigners issue.show_assigners.each do |assigner| json.partial! "api/v1/users/simple_user", locals: {user: assigner} end json.participants issue.participants.distinct.each do |participant| diff --git a/app/views/api/v1/issues/_simple_detail.json.jbuilder b/app/views/api/v1/issues/_simple_detail.json.jbuilder index bfc2693cf..7e0d6b11f 100644 --- a/app/views/api/v1/issues/_simple_detail.json.jbuilder +++ b/app/views/api/v1/issues/_simple_detail.json.jbuilder @@ -1,7 +1,7 @@ json.(issue, :id, :subject, :project_issues_index) json.created_at issue.created_on.strftime("%Y-%m-%d %H:%M") json.updated_at issue.updated_on.strftime("%Y-%m-%d %H:%M") -json.tags issue.issue_tags.each do |tag| +json.tags issue.show_issue_tags.each do |tag| json.partial! "api/v1/issues/issue_tags/simple_detail", locals: {tag: tag} end json.status_name issue.issue_status&.name @@ -14,7 +14,7 @@ json.author do json.nil! end end -json.assigners issue.assigners.each do |assigner| +json.assigners issue.show_assigners.each do |assigner| json.partial! "api/v1/users/simple_user", locals: {user: assigner} end json.comment_journals_count issue.comment_journals.size \ No newline at end of file