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 @@
- Hay <%= @signature_sheet.signatures.valid.count %> firmas válidas + Hay <%= @signature_sheet.signatures.verified.count %> firmas válidas
- Hay <%= @signature_sheet.signatures.invalid.count %> firmas inválidas + Hay <%= @signature_sheet.signatures.unverified.count %> firmas inválidas

-<% if @signature_sheet.signatures.invalid.any? %> - <% @invalid_signatures.each do |error, signatures| %> -
<%= error %>
+<% if @signature_sheet.signatures.verified.any? %>
- <%= signatures.map(&:document_number).join(",") %> + EL PADRÓN NO PUDO VERIFICAR LA INFORMACIÓN +
+
+ <%= @signature_sheet.signatures.unverified.map(&:document_number).join(",") %>
- <% end %> <% end %> <% unless @signature_sheet.processed? %> diff --git a/db/migrate/20161214212918_create_signature_sheets.rb b/db/migrate/20161214212918_create_signature_sheets.rb index e3f4e6a58..d34728a34 100644 --- a/db/migrate/20161214212918_create_signature_sheets.rb +++ b/db/migrate/20161214212918_create_signature_sheets.rb @@ -3,7 +3,7 @@ class CreateSignatureSheets < ActiveRecord::Migration create_table :signature_sheets do |t| t.references :signable, polymorphic: true t.text :document_numbers - t.boolean :processed + t.boolean :processed, default: false t.references :author t.timestamps end diff --git a/db/migrate/20161214233817_create_signatures.rb b/db/migrate/20161214233817_create_signatures.rb index c8c178582..fd6b53d3a 100644 --- a/db/migrate/20161214233817_create_signatures.rb +++ b/db/migrate/20161214233817_create_signatures.rb @@ -4,7 +4,7 @@ class CreateSignatures < ActiveRecord::Migration t.references :signature_sheet t.references :user t.string :document_number - t.string :status, default: nil + t.boolean :verified, default: false t.timestamps end end