Just like we do in the Budget module, and in some places in the Poll and Legislation modules, we don't need to specify the class name when the name of the relation matches the name of a class in the same module.
42 lines
1.0 KiB
Ruby
42 lines
1.0 KiB
Ruby
class Poll::BallotSheet < ApplicationRecord
|
|
belongs_to :poll
|
|
belongs_to :officer_assignment
|
|
has_many :ballots
|
|
|
|
validates :data, presence: true
|
|
validates :poll_id, presence: true
|
|
validates :officer_assignment_id, presence: true
|
|
|
|
def author
|
|
officer_assignment.officer.name
|
|
end
|
|
|
|
def verify_ballots
|
|
parsed_ballots.each_with_index do |investment_ids, index|
|
|
ballot = create_ballots(investment_ids, index)
|
|
ballot.verify
|
|
end
|
|
end
|
|
|
|
def parsed_ballots
|
|
data.split(/[;\n]/)
|
|
end
|
|
|
|
private
|
|
|
|
def create_ballots(investment_ids, index)
|
|
poll_ballot = Poll::Ballot.where(ballot_sheet: self,
|
|
data: investment_ids,
|
|
external_id: index).first_or_create!
|
|
create_ballot(poll_ballot)
|
|
poll_ballot
|
|
end
|
|
|
|
def create_ballot(poll_ballot)
|
|
Budget::Ballot.where(physical: true,
|
|
user: nil,
|
|
poll_ballot: poll_ballot,
|
|
budget: poll.budget).first_or_create!
|
|
end
|
|
end
|