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