31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'app/services/spree_cm_commissioner/voting_leaderboards/time_range_result.rb', line 31
def call(voting_session_id:, from: nil, to: nil)
return failure(nil, I18n.t('spree_cm_commissioner.voting_leaderboards.time_range_result.invalid_range')) if invalid_range?(from, to)
ids = contestant_ids(voting_session_id)
return success(EMPTY_RESULT) if ids.empty?
scope = votes_scope(voting_session_id, from, to)
success(
counts: fill(ids, scope.group(:contestant_id).sum(:quantity)),
unique_voters: unique_voters(scope),
unique_voters_per_contestant: fill(ids, unique_voters_per_contestant(scope))
)
rescue StandardError => e
failure(nil, e.message)
end
|