diff --git a/app/models/poll/null_result.rb b/app/models/poll/null_result.rb new file mode 100644 index 000000000..222432c7f --- /dev/null +++ b/app/models/poll/null_result.rb @@ -0,0 +1,23 @@ +class Poll::NullResult < ActiveRecord::Base + + VALID_ORIGINS = %w{ web booth } + + 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 :by_author, -> (author_id) { where(author_id: author_id) } + + before_save :update_logs + + def update_logs + if self.amount_changed? && self.amount_was.present? + self.amount_log += ":#{self.amount_was.to_s}" + self.officer_assignment_id_log += ":#{self.officer_assignment_id_was.to_s}" + self.author_id_log += ":#{self.author_id_was.to_s}" + end + end +end \ No newline at end of file diff --git a/app/models/poll/white_result.rb b/app/models/poll/white_result.rb new file mode 100644 index 000000000..5b0aa4966 --- /dev/null +++ b/app/models/poll/white_result.rb @@ -0,0 +1,23 @@ +class Poll::WhiteResult < ActiveRecord::Base + + VALID_ORIGINS = %w{ web booth } + + 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 :by_author, -> (author_id) { where(author_id: author_id) } + + before_save :update_logs + + def update_logs + if self.amount_changed? && self.amount_was.present? + self.amount_log += ":#{self.amount_was.to_s}" + self.officer_assignment_id_log += ":#{self.officer_assignment_id_was.to_s}" + self.author_id_log += ":#{self.author_id_was.to_s}" + end + end +end \ No newline at end of file diff --git a/spec/factories.rb b/spec/factories.rb index 0e94ecf88..70e3ad01c 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -466,6 +466,16 @@ FactoryGirl.define do answer { question.valid_answers.sample } end + factory :poll_white_result, class: 'Poll::WhiteResult' do + association :author, factory: :user + origin { 'web' } + end + + factory :poll_null_result, class: 'Poll::NullResult' do + association :author, factory: :user + origin { 'web' } + end + factory :officing_residence, class: 'Officing::Residence' do user document_number