新增:项目中所有未关联迭代工作项
This commit is contained in:
parent
8030d7db1a
commit
39423ff6ea
|
@ -0,0 +1,23 @@
|
||||||
|
class Api::Pm::SprintIssuesController < Api::Pm::BaseController
|
||||||
|
|
||||||
|
before_action :require_login, except: [:index]
|
||||||
|
def index
|
||||||
|
@issues = Api::Pm::SprintIssues::ListService.call(query_params, current_user)
|
||||||
|
@issues = kaminari_paginate(@issues)
|
||||||
|
render 'api/v1/issues/index'
|
||||||
|
end
|
||||||
|
|
||||||
|
def query_params
|
||||||
|
params.permit(
|
||||||
|
:category,
|
||||||
|
:pm_project_id,
|
||||||
|
:pm_issue_type, #需求1 任务2 缺陷3
|
||||||
|
:assigner_id,
|
||||||
|
:priority_id,
|
||||||
|
:status_id,
|
||||||
|
:keyword,
|
||||||
|
:sort_by, :sort_direction
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,54 @@
|
||||||
|
class Api::Pm::SprintIssues::ListService < ApplicationService
|
||||||
|
|
||||||
|
include ActiveModel::Model
|
||||||
|
|
||||||
|
attr_reader :category, :pm_project_id, :pm_issue_type, :assigner_id, :priority_id, :status_id, :keyword, :current_user
|
||||||
|
attr_reader :sort_by, :sort_direction
|
||||||
|
attr_accessor :queried_issues
|
||||||
|
|
||||||
|
validates :category, inclusion: { in: %w[linked unlink], message: '请输入正确的Category'}
|
||||||
|
validates :sort_by, inclusion: { in: %w[issues.created_on issues.updated_on issue_priorities.position] , message: '请输入正确的SortBy'}, allow_blank: true
|
||||||
|
validates :sort_direction, inclusion: { in: %w[asc desc], message: '请输入正确的SortDirection'}, allow_blank: true
|
||||||
|
|
||||||
|
validates :pm_project_id, :current_user, presence: true
|
||||||
|
|
||||||
|
def initialize(params, current_user = nil)
|
||||||
|
@category = params[:category] || "unlink"
|
||||||
|
@pm_project_id = params[:pm_project_id]
|
||||||
|
@pm_issue_type = params[:pm_issue_type]
|
||||||
|
@assigner_id = params[:assigner_id]
|
||||||
|
@priority_id = params[:priority_id]
|
||||||
|
@status_id = params[:status_id]
|
||||||
|
@keyword = params[:keyword]
|
||||||
|
@current_user = current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
raise Error, errors.full_messages.join(', ') unless valid?
|
||||||
|
|
||||||
|
issue_query_data
|
||||||
|
|
||||||
|
@queried_issues
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def issue_query_data
|
||||||
|
issues = @category == "unlink" ? Issue.where(pm_project_id: @pm_project_id, pm_sprint_id: nil) : Issue.where(pm_project_id: @pm_project_id).where.not(pm_sprint_id: nil)
|
||||||
|
|
||||||
|
issues = issues.where(pm_issue_type: @pm_issue_type) if @pm_issue_type.present?
|
||||||
|
|
||||||
|
issues = issues.joins(:assigners).where(users: {id: @assigner_id}) if @assigner_id.present?
|
||||||
|
|
||||||
|
issues = issues.where(priority_id: @priority_id) if @priority_id.present?
|
||||||
|
|
||||||
|
issues = issues.where(status_id: @status_id) if @status_id.present?
|
||||||
|
|
||||||
|
issues = issues.ransack(subject_cont: @keyword).result if @keyword.present?
|
||||||
|
|
||||||
|
scope = issues.includes(:priority, :issue_status, :user, :show_assigners, :show_issue_tags, :version, :comment_journals)
|
||||||
|
scope = scope.reorder("#{sort_by} #{sort_direction}").distinct
|
||||||
|
|
||||||
|
@queried_issues = scope
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
|
@ -2,7 +2,7 @@ json.total_issues_count @total_issues_count
|
||||||
json.opened_count @opened_issues_count
|
json.opened_count @opened_issues_count
|
||||||
json.closed_count @closed_issues_count
|
json.closed_count @closed_issues_count
|
||||||
json.total_count @issues.total_count
|
json.total_count @issues.total_count
|
||||||
json.has_created_issues @project.issues.size > 0
|
json.has_created_issues @project.present? ? @project.issues.size > 0 : 0
|
||||||
json.issues @issues.each do |issue|
|
json.issues @issues.each do |issue|
|
||||||
if params[:only_name].present?
|
if params[:only_name].present?
|
||||||
json.(issue, :id, :subject, :project_issues_index)
|
json.(issue, :id, :subject, :project_issues_index)
|
||||||
|
|
|
@ -21,6 +21,7 @@ defaults format: :json do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
resources :sprint_issues, only: [:index]
|
||||||
resources :projects do
|
resources :projects do
|
||||||
collection do
|
collection do
|
||||||
get :convert
|
get :convert
|
||||||
|
|
Loading…
Reference in New Issue