update issue order by
This commit is contained in:
parent
a3df60b185
commit
3833816a0a
|
@ -6,8 +6,8 @@ class Api::V1::Issues::ListService < ApplicationService
|
||||||
attr_reader :milestone_id, :assigner_id, :status_id, :sort_by, :sort_direction, :current_user
|
attr_reader :milestone_id, :assigner_id, :status_id, :sort_by, :sort_direction, :current_user
|
||||||
attr_accessor :queried_issues, :total_issues_count, :closed_issues_count, :opened_issues_count
|
attr_accessor :queried_issues, :total_issues_count, :closed_issues_count, :opened_issues_count
|
||||||
|
|
||||||
validates :category, inclusion: {in: %w(all opened closed), message: "请输入正确的Category"}
|
validates :category, inclusion: {in: %w(all opened closed), message: '请输入正确的Category'}
|
||||||
validates :participant_category, inclusion: {in: %w(all aboutme authoredme assignedme atme), message: "请输入正确的ParticipantCategory"}
|
validates :participant_category, inclusion: {in: %w(all aboutme authoredme assignedme atme), message: '请输入正确的ParticipantCategory'}
|
||||||
validates :sort_by, inclusion: {in: ['issues.created_on', 'issues.updated_on', 'issues.blockchain_token_num', 'issue_priorities.position'], message: '请输入正确的SortBy'}, allow_blank: true
|
validates :sort_by, inclusion: {in: ['issues.created_on', 'issues.updated_on', 'issues.blockchain_token_num', 'issue_priorities.position'], message: '请输入正确的SortBy'}, allow_blank: true
|
||||||
validates :sort_direction, inclusion: {in: %w(asc desc), message: '请输入正确的SortDirection'}, allow_blank: true
|
validates :sort_direction, inclusion: {in: %w(asc desc), message: '请输入正确的SortDirection'}, allow_blank: true
|
||||||
validates :current_user, presence: true
|
validates :current_user, presence: true
|
||||||
|
@ -19,7 +19,7 @@ class Api::V1::Issues::ListService < ApplicationService
|
||||||
@participant_category = params[:participant_category] || 'all'
|
@participant_category = params[:participant_category] || 'all'
|
||||||
@keyword = params[:keyword]
|
@keyword = params[:keyword]
|
||||||
@author_id = params[:author_id]
|
@author_id = params[:author_id]
|
||||||
@issue_tag_ids = params[:issue_tag_ids].present? ? params[:issue_tag_ids].split(",") : []
|
@issue_tag_ids = params[:issue_tag_ids].present? ? params[:issue_tag_ids].split(',') : []
|
||||||
@milestone_id = params[:milestone_id]
|
@milestone_id = params[:milestone_id]
|
||||||
@assigner_id = params[:assigner_id]
|
@assigner_id = params[:assigner_id]
|
||||||
@status_id = params[:status_id]
|
@status_id = params[:status_id]
|
||||||
|
@ -31,7 +31,7 @@ class Api::V1::Issues::ListService < ApplicationService
|
||||||
end
|
end
|
||||||
|
|
||||||
def call
|
def call
|
||||||
raise Error, errors.full_messages.join(", ") unless valid?
|
raise Error, errors.full_messages.join(', ') unless valid?
|
||||||
# begin
|
# begin
|
||||||
issue_query_data
|
issue_query_data
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ class Api::V1::Issues::ListService < ApplicationService
|
||||||
issues = issues.where(author_id: author_id) if author_id.present?
|
issues = issues.where(author_id: author_id) if author_id.present?
|
||||||
|
|
||||||
# issue_tag_ids
|
# issue_tag_ids
|
||||||
issues = issues.ransack(issue_tags_value_cont: issue_tag_ids.sort!.join(",")).result unless issue_tag_ids.blank?
|
issues = issues.ransack(issue_tags_value_cont: issue_tag_ids.sort!.join(',')).result unless issue_tag_ids.blank?
|
||||||
|
|
||||||
# milestone_id
|
# milestone_id
|
||||||
issues = issues.where(fixed_version_id: milestone_id) if milestone_id.present?
|
issues = issues.where(fixed_version_id: milestone_id) if milestone_id.present?
|
||||||
|
@ -72,14 +72,14 @@ class Api::V1::Issues::ListService < ApplicationService
|
||||||
issues = issues.where(status_id: status_id) if status_id.present? && category != 'closed'
|
issues = issues.where(status_id: status_id) if status_id.present? && category != 'closed'
|
||||||
|
|
||||||
if begin_date&.present? || end_date&.present?
|
if begin_date&.present? || end_date&.present?
|
||||||
issues = issues.where("issues.created_on between ? and ?", begin_date&.present? ? begin_date.to_time : Time.now.beginning_of_day, end_date&.present? ? end_date.to_time.end_of_day : Time.now.end_of_day)
|
issues = issues.where('issues.created_on between ? and ?', begin_date&.present? ? begin_date.to_time : Time.now.beginning_of_day, end_date&.present? ? end_date.to_time.end_of_day : Time.now.end_of_day)
|
||||||
end
|
end
|
||||||
|
|
||||||
# keyword
|
# keyword
|
||||||
issues = issues.ransack(id_or_project_issues_index_eq: keyword).result.or(issues.ransack(subject_or_description_cont: keyword).result) if keyword.present?
|
issues = issues.ransack(id_or_project_issues_index_eq: keyword).result.or(issues.ransack(subject_or_description_cont: keyword).result) if keyword.present?
|
||||||
|
|
||||||
@total_issues_count = issues.distinct.size
|
@total_issues_count = issues.distinct.size
|
||||||
@closed_issues_count = issues.closed.distinct.size
|
@closed_issues_count = issues.closed.distinct.size
|
||||||
@opened_issues_count = issues.opened.distinct.size
|
@opened_issues_count = issues.opened.distinct.size
|
||||||
|
|
||||||
case category
|
case category
|
||||||
|
@ -88,13 +88,16 @@ class Api::V1::Issues::ListService < ApplicationService
|
||||||
when 'opened'
|
when 'opened'
|
||||||
issues = issues.opened
|
issues = issues.opened
|
||||||
end
|
end
|
||||||
|
|
||||||
if only_name.present?
|
if only_name.present?
|
||||||
scope = issues.select(:id, :subject, :project_issues_index, :updated_on, :created_on)
|
scope = issues.select(:id, :subject, :project_issues_index, :updated_on, :created_on)
|
||||||
scope = scope.reorder("#{sort_by} #{sort_direction}").distinct
|
scope = scope.reorder("#{sort_by} #{sort_direction}").distinct
|
||||||
else
|
else
|
||||||
scope = issues.includes(:priority, :issue_status, :user, :show_assigners, :show_issue_tags, :version, :comment_journals)
|
scope = issues.includes(:priority, :issue_status, :user, :show_assigners, :show_issue_tags, :version, :comment_journals)
|
||||||
scope = scope.reorder("#{sort_by} #{sort_direction}").distinct
|
scope = if sort_by == 'issue_priorities.position'
|
||||||
|
scope.reorder("issue_priorities.position #{sort_direction}, issues.created_on DESC").distinct
|
||||||
|
else
|
||||||
|
scope.reorder("#{sort_by} #{sort_direction}").distinct
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@queried_issues = scope
|
@queried_issues = scope
|
||||||
|
|
Loading…
Reference in New Issue