|
- class Api::V1::Issues::MilestonesController < Api::V1::BaseController
- before_action :require_public_and_member_above
- before_action :load_milestone, only: [:show, :update, :destroy]
-
- # 里程碑列表
- def index
- if params[:only_name]
- @milestones = @project.versions.select(:id, :name)
- @milestones = @milestones.ransack(name_or_description_cont: params[:keyword]).result if params[:keyword].present?
- @milestones = kaminary_select_paginate(@milestones)
- else
- @milestones = @project.versions.includes(:issues, :closed_issues, :opened_issues)
- @milestones = params[:category] == "closed" ? @milestones.closed : @milestones.opening
- @milestones = @milestones.ransack(name_or_description_cont: params[:keyword]).result if params[:keyword].present?
- @milestones = kaminari_paginate(@milestones)
- end
- end
-
- def create
- @milestone = @project.versions.new(milestone_params)
- if @milestone.save!
- render_ok
- else
- render_error(@milestone.errors.full_messages.join(","))
- end
- end
-
- # 里程碑详情
- def show
- @object_results = Api::V1::Issues::Milestones::DetailIssuesService.call(@project, @milestone, query_params, current_user)
- @closed_issues_count = @object_results.closed.size
- @opened_issues_count = @object_results.opened.size
- @issues = kaminari_paginate(@object_results)
- end
-
- def update
- @milestone.attributes = milestone_params
- if @milestone.save!
- render_ok
- else
- render_error(@milestone.errors.full_messages.join(","))
- end
- end
-
- def destroy
- if @milestone.destroy!
- render_ok
- else
- render_error("删除里程碑失败!")
- end
- end
-
- private
- def milestone_params
- params.permit(:name, :description, :effective_date)
- end
-
- def query_params
- params.permit(:category, :author_id, :assigner_id, :sort_by, :sort_direction, :issue_tag_ids => [])
- end
-
- def load_milestone
- @milestone = @project.versions.find_by_id(params[:id])
- return render_not_found('里程碑不存在!') unless @milestone.present?
- end
-
- end
|