diff --git a/app/controllers/admin/signature_sheets_controller.rb b/app/controllers/admin/signature_sheets_controller.rb
index 83d1e93ce..325ece443 100644
--- a/app/controllers/admin/signature_sheets_controller.rb
+++ b/app/controllers/admin/signature_sheets_controller.rb
@@ -21,7 +21,6 @@ class Admin::SignatureSheetsController < Admin::BaseController
def show
@signature_sheet = SignatureSheet.find(params[:id])
- @invalid_signatures = @signature_sheet.invalid_signatures
end
private
diff --git a/app/models/signature.rb b/app/models/signature.rb
index 3a1d197eb..37340b227 100644
--- a/app/models/signature.rb
+++ b/app/models/signature.rb
@@ -2,71 +2,59 @@ class Signature < ActiveRecord::Base
belongs_to :signature_sheet
belongs_to :user
- validate :in_census
- validate :not_already_voted
+ validates :document_number, presence: true
+ validates :signature_sheet, presence: true
- scope :valid, -> { where(status: 'verified') }
- scope :invalid, -> { where.not(status: 'verified') }
+ scope :verified, -> { where(verified: true) }
+ scope :unverified, -> { where(verified: false) }
- def in_census
- return true if user_exists?
- errors.add(:document_number, :not_in_census) unless in_census?
- end
-
- def not_already_voted
- errors.add(:document_number, :already_voted) if already_voted?
- end
+ before_save :verify
def verify
- if valid?
+ if verified?
assign_vote
- update_attribute(:status, 'verified')
- else
- error = errors.messages[:document_number].first
- update_attribute(:status, error)
+ verified = true
end
end
- private
+ def verified?
+ user_exists? || in_census?
+ end
- def assign_vote
- if user_exists?
- assign_vote_to_user
- else
- create_user
- assign_vote_to_user
- end
- end
- def assign_vote_to_user
- signable.register_vote(user, "yes", "signature")
- #Vote.create(votable: signable, voter: user, signature: self)
+ def assign_vote
+ if user_exists?
+ assign_vote_to_user
+ else
+ create_user
+ assign_vote_to_user
end
+ end
- def user_exists?
- user = User.where(document_number: document_number).exists?
- end
+ def assign_vote_to_user
+ signable.register_vote(user, "yes", "signature")
+ end
- def create_user
- user = User.where(document_number: document_number, erased_at: Time.now).create
- end
+ def user_exists?
+ user = User.where(document_number: document_number).exists?
+ end
- def in_census?
- document_types.any? do |document_type|
- CensusApi.new.call(document_type, document_number).valid?
- end
- end
+ def create_user
+ user = User.where(document_number: document_number, erased_at: Time.now).create
+ end
- def already_voted?
- signable.voters.where(document_number: document_number).exists?
+ def in_census?
+ document_types.any? do |document_type|
+ CensusApi.new.call(document_type, document_number).valid?
end
+ end
- def signable
- signature_sheet.signable
- end
+ def signable
+ signature_sheet.signable
+ end
- def document_types
- %w(1 2 3 4)
- end
+ def document_types
+ %w(1 2 3 4)
+ end
end
\ No newline at end of file
diff --git a/app/models/signature_sheet.rb b/app/models/signature_sheet.rb
index 7829833a3..a77e12098 100644
--- a/app/models/signature_sheet.rb
+++ b/app/models/signature_sheet.rb
@@ -13,7 +13,7 @@ class SignatureSheet < ActiveRecord::Base
validate :signable_found
def name
- "#{signable_name} + #{signable_id}"
+ "#{signable_name} #{signable_id}"
end
def signable_name
@@ -22,19 +22,13 @@ class SignatureSheet < ActiveRecord::Base
def verify_signatures
parsed_document_numbers.each do |document_number|
- signature = signatures.new(document_number: document_number)
- signature.save(validate: false)
- signature.verify
+ signature = signatures.create(document_number: document_number)
end
update(processed: true)
end
- def invalid_signatures
- signatures.invalid.group_by(&:status)
- end
-
def parsed_document_numbers
- document_numbers.split(",")
+ document_numbers.split(/\W+/)
end
def signable_found
diff --git a/app/views/admin/signature_sheets/show.html.erb b/app/views/admin/signature_sheets/show.html.erb
index 84f5cb672..2b57b92c5 100644
--- a/app/views/admin/signature_sheets/show.html.erb
+++ b/app/views/admin/signature_sheets/show.html.erb
@@ -6,21 +6,21 @@