Class: ProblemsController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- ProblemsController
- Defined in:
- app/controllers/problems_controller.rb
Instance Method Summary collapse
Instance Method Details
#index ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'app/controllers/problems_controller.rb', line 5 def index Problem # Are we showing ignored problems? @show_ignored = (params[:show_ignored] == "true") query = @show_ignored ? policy_scope(Problem.including_ignored) : policy_scope(Problem) # Now, which page are we on? page = params[:page] || 1 # What categories are we showing? # First, get the possible categories based on severity filter severities = params[:severity] ? Problem::CATEGORIES.select { |cat| params[:severity]&.include?(current_user.problem_severity(cat).to_s) } : nil # rubocop:disable Pundit/UsePolicyScope # Then get the category filter categories = params[:category]&.map(&:to_sym) # Now query with the intersection of the two, or if we don't have both, then whichever we do have if categories.present? || severities.present? combined = (categories.present? && severities.present?) ? (categories.intersection(severities)) : [[categories], [severities]].flatten.compact query = query.where(category: combined) end # What object types are we showing? query = query.where(problematic_type: params[:type].map(&:classify)) if params[:type] # Don't show types ignored in user settings query = query.visible(helpers.problem_settings) query = query.includes([:problematic]) @problems = query.page(page).per(params[:per_page]&.to_i || 50).order([:category, :problematic_type]).includes(problematic: [:library, :model]) # Do we have any filters at all? @filters_applied = [:show_ignored, :severity, :category, :type].any? { |k| params.has_key?(k) } # i18n-tasks-use t("activerecord.attributes.problem.category") # i18n-tasks-use t("activerecord.attributes.problem.severity") # i18n-tasks-use t("activerecord.attributes.problem.problematic_type") # i18n-tasks-use t("activerecord.attributes.problem.ignored") # i18n-tasks-use t("activerecord.attributes.problem.note") end |
#resolve ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'app/controllers/problems_controller.rb', line 51 def resolve ids = params[:id] ? [params[:id]] : params["problems"].select { |k, v| v == "1" }.keys @problems = policy_scope(Problem).where(public_id: ids) # Resolve each problem individually # Some can't be done in bulk mode, so check that bulk = @problems.count > 1 if params[:resolve] @problems.each do |problem| case problem.resolution_strategy when :show resolve_by_showing(problem) unless bulk when :edit resolve_by_editing(problem) unless bulk when :destroy (problem) when :merge resolve_by_merging(problem) when :upload resolve_by_uploading(problem) unless bulk when :convert resolve_by_converting(problem) when :organize resolve_by_organizing(problem) else raise NotImplementedError end end elsif params[:ignore] @problems.update(ignored: true) end redirect_back_or_to problems_path unless performed? end |
#update ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/controllers/problems_controller.rb', line 39 def update @problem = Problem.including_ignored.find_param(params[:id]) @problem @problem.update!(permitted_params) notice = t( (@problem.ignored ? ".ignored" : ".unignored"), # i18n-tasks-use t("problems.update.ignored") t("problems.update.unignored") name: @problem.problematic.name, message: translate("problems.%{type}.%{category}.title" % {type: @problem.problematic_type.underscore, category: @problem.category}) ) redirect_back_or_to problems_path, notice: notice end |