Merge branch 'master' into feature/1929#add_shift_task_usage
This commit is contained in:
@@ -8,12 +8,13 @@ class Poll::Answer < ActiveRecord::Base
|
||||
validates :question, presence: true
|
||||
validates :author, presence: true
|
||||
validates :answer, presence: true
|
||||
validates :answer, inclusion: {in: ->(a) { a.question.valid_answers }}
|
||||
validates :answer, inclusion: { in: ->(a) { a.question.valid_answers }},
|
||||
unless: ->(a) { a.question.blank? }
|
||||
|
||||
scope :by_author, ->(author_id) { where(author_id: author_id) }
|
||||
scope :by_question, ->(question_id) { where(question_id: question_id) }
|
||||
|
||||
def record_voter_participation
|
||||
Poll::Voter.create!(user: author, poll: poll)
|
||||
Poll::Voter.find_or_create_by!(user: author, poll: poll, origin: "web")
|
||||
end
|
||||
end
|
||||
@@ -7,8 +7,6 @@ class Poll
|
||||
has_many :officers, through: :officer_assignments
|
||||
has_many :voters
|
||||
has_many :partial_results
|
||||
has_many :white_results
|
||||
has_many :null_results
|
||||
has_many :total_results
|
||||
has_many :recounts
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,9 +3,7 @@ class Poll
|
||||
belongs_to :officer
|
||||
belongs_to :booth_assignment
|
||||
has_many :partial_results
|
||||
has_many :white_results
|
||||
has_many :null_results
|
||||
has_many :total_results
|
||||
has_many :recounts
|
||||
has_many :voters
|
||||
|
||||
validates :officer_id, presence: true
|
||||
|
||||
36
app/models/poll/recount.rb
Normal file
36
app/models/poll/recount.rb
Normal file
@@ -0,0 +1,36 @@
|
||||
class Poll::Recount < ActiveRecord::Base
|
||||
|
||||
VALID_ORIGINS = %w{web booth letter}.freeze
|
||||
|
||||
belongs_to :author, -> { with_hidden }, class_name: 'User', foreign_key: 'author_id'
|
||||
belongs_to :booth_assignment
|
||||
belongs_to :officer_assignment
|
||||
|
||||
validates :author, presence: true
|
||||
validates :origin, inclusion: {in: VALID_ORIGINS}
|
||||
|
||||
scope :web, -> { where(origin: 'web') }
|
||||
scope :booth, -> { where(origin: 'booth') }
|
||||
scope :letter, -> { where(origin: 'letter') }
|
||||
|
||||
scope :by_author, ->(author_id) { where(author_id: author_id) }
|
||||
|
||||
before_save :update_logs
|
||||
|
||||
def update_logs
|
||||
amounts_changed = false
|
||||
|
||||
[:white, :null, :total].each do |amount|
|
||||
next unless send("#{amount}_amount_changed?") && send("#{amount}_amount_was").present?
|
||||
self["#{amount}_amount_log"] += ":#{send("#{amount}_amount_was")}"
|
||||
amounts_changed = true
|
||||
end
|
||||
|
||||
update_officer_author if amounts_changed
|
||||
end
|
||||
|
||||
def update_officer_author
|
||||
self.officer_assignment_id_log += ":#{officer_assignment_id_was}"
|
||||
self.author_id_log += ":#{author_id_was}"
|
||||
end
|
||||
end
|
||||
@@ -1,5 +1,8 @@
|
||||
class Poll
|
||||
class Voter < ActiveRecord::Base
|
||||
|
||||
VALID_ORIGINS = %w{ web booth }
|
||||
|
||||
belongs_to :poll
|
||||
belongs_to :user
|
||||
belongs_to :geozone
|
||||
@@ -10,9 +13,13 @@ class Poll
|
||||
validates :user_id, presence: true
|
||||
|
||||
validates :document_number, presence: true, uniqueness: { scope: [:poll_id, :document_type], message: :has_voted }
|
||||
validates :origin, inclusion: { in: VALID_ORIGINS }
|
||||
|
||||
before_validation :set_demographic_info, :set_document_info
|
||||
|
||||
scope :web, -> { where(origin: 'web') }
|
||||
scope :booth, -> { where(origin: 'booth') }
|
||||
|
||||
def set_demographic_info
|
||||
return if user.blank?
|
||||
|
||||
|
||||
Reference in New Issue
Block a user