Files
grecia/app/controllers/dashboard/successful_supports_controller.rb
Javi Martín 0ca94e5443 Add and apply Rails/FindByOrAssignmentMemoization rule
This rule was added in rubocop-rails 2.33.

At first, I wasn't very fond of this rule. It made the code less
readable even if it improved performace in some cases.

Then I realized that in the `Admin::MachineLearning::SettingComponent`
we were using `find_by` when we should be using `find_by!` instead, and
we detected that thanks to this rule.

So, only for that reason, I'm adding this rule, but I'm fine if we
remove it.
2025-11-05 11:51:23 +01:00

42 lines
1.2 KiB
Ruby

class Dashboard::SuccessfulSupportsController < Dashboard::BaseController
include Dashboard::ExpectsDateRange
include Dashboard::GroupSupports
def index
authorize! :dashboard, proposal
render json: accumulated_grouped_supports
end
private
def accumulated_grouped_supports
grouped_votes = grouped_supports(:voted_at)
grouped_votes = fill_holes(grouped_votes)
accumulate_supports(grouped_votes)
end
def supports
return [] if successful_proposal.nil?
Vote
.select("created_at + interval '#{days_diff} day' voted_at, *")
.where(votable: successful_proposal)
.where("created_at + interval '#{days_diff} day' between ? and ?",
start_date.beginning_of_day, end_date.end_of_day)
.order(created_at: :asc)
end
def successful_proposal
return @successful_proposal if defined?(@successful_proposal)
@successful_proposal = Proposal.find_by(id: Setting["proposals.successful_proposal_id"])
end
def days_diff
return 0 if successful_proposal.nil?
return 0 if proposal.published_at.nil?
(proposal.published_at.to_date - successful_proposal.published_at.to_date).to_i
end
end