refactors signature sheets

This commit is contained in:
rgarcia
2016-12-20 16:46:08 +01:00
parent 7ec6a874b6
commit 4eb700e3d4
6 changed files with 48 additions and 67 deletions

View File

@@ -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

View File

@@ -2,32 +2,25 @@ 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?
@@ -40,7 +33,6 @@ class Signature < ActiveRecord::Base
def assign_vote_to_user
signable.register_vote(user, "yes", "signature")
#Vote.create(votable: signable, voter: user, signature: self)
end
def user_exists?
@@ -57,10 +49,6 @@ class Signature < ActiveRecord::Base
end
end
def already_voted?
signable.voters.where(document_number: document_number).exists?
end
def signable
signature_sheet.signable
end

View File

@@ -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

View File

@@ -6,21 +6,21 @@
<br/>
<div>
Hay <%= @signature_sheet.signatures.valid.count %> firmas válidas
Hay <%= @signature_sheet.signatures.verified.count %> firmas válidas
</div>
<div>
Hay <%= @signature_sheet.signatures.invalid.count %> firmas inválidas
Hay <%= @signature_sheet.signatures.unverified.count %> firmas inválidas
</div>
<br/>
<% if @signature_sheet.signatures.invalid.any? %>
<% @invalid_signatures.each do |error, signatures| %>
<div><%= error %></div>
<% if @signature_sheet.signatures.verified.any? %>
<div>
<%= signatures.map(&:document_number).join(",") %>
EL PADRÓN NO PUDO VERIFICAR LA INFORMACIÓN
</div>
<div>
<%= @signature_sheet.signatures.unverified.map(&:document_number).join(",") %>
</div>
<% end %>
<% end %>
<% unless @signature_sheet.processed? %>

View File

@@ -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

View File

@@ -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