refactors signature sheets
This commit is contained in:
@@ -21,7 +21,6 @@ class Admin::SignatureSheetsController < Admin::BaseController
|
|||||||
|
|
||||||
def show
|
def show
|
||||||
@signature_sheet = SignatureSheet.find(params[:id])
|
@signature_sheet = SignatureSheet.find(params[:id])
|
||||||
@invalid_signatures = @signature_sheet.invalid_signatures
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|||||||
@@ -2,32 +2,25 @@ class Signature < ActiveRecord::Base
|
|||||||
belongs_to :signature_sheet
|
belongs_to :signature_sheet
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
|
||||||
validate :in_census
|
validates :document_number, presence: true
|
||||||
validate :not_already_voted
|
validates :signature_sheet, presence: true
|
||||||
|
|
||||||
scope :valid, -> { where(status: 'verified') }
|
scope :verified, -> { where(verified: true) }
|
||||||
scope :invalid, -> { where.not(status: 'verified') }
|
scope :unverified, -> { where(verified: false) }
|
||||||
|
|
||||||
def in_census
|
before_save :verify
|
||||||
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
|
|
||||||
|
|
||||||
def verify
|
def verify
|
||||||
if valid?
|
if verified?
|
||||||
assign_vote
|
assign_vote
|
||||||
update_attribute(:status, 'verified')
|
verified = true
|
||||||
else
|
|
||||||
error = errors.messages[:document_number].first
|
|
||||||
update_attribute(:status, error)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
def verified?
|
||||||
|
user_exists? || in_census?
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def assign_vote
|
def assign_vote
|
||||||
if user_exists?
|
if user_exists?
|
||||||
@@ -40,7 +33,6 @@ class Signature < ActiveRecord::Base
|
|||||||
|
|
||||||
def assign_vote_to_user
|
def assign_vote_to_user
|
||||||
signable.register_vote(user, "yes", "signature")
|
signable.register_vote(user, "yes", "signature")
|
||||||
#Vote.create(votable: signable, voter: user, signature: self)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def user_exists?
|
def user_exists?
|
||||||
@@ -57,10 +49,6 @@ class Signature < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def already_voted?
|
|
||||||
signable.voters.where(document_number: document_number).exists?
|
|
||||||
end
|
|
||||||
|
|
||||||
def signable
|
def signable
|
||||||
signature_sheet.signable
|
signature_sheet.signable
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class SignatureSheet < ActiveRecord::Base
|
|||||||
validate :signable_found
|
validate :signable_found
|
||||||
|
|
||||||
def name
|
def name
|
||||||
"#{signable_name} + #{signable_id}"
|
"#{signable_name} #{signable_id}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def signable_name
|
def signable_name
|
||||||
@@ -22,19 +22,13 @@ class SignatureSheet < ActiveRecord::Base
|
|||||||
|
|
||||||
def verify_signatures
|
def verify_signatures
|
||||||
parsed_document_numbers.each do |document_number|
|
parsed_document_numbers.each do |document_number|
|
||||||
signature = signatures.new(document_number: document_number)
|
signature = signatures.create(document_number: document_number)
|
||||||
signature.save(validate: false)
|
|
||||||
signature.verify
|
|
||||||
end
|
end
|
||||||
update(processed: true)
|
update(processed: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
def invalid_signatures
|
|
||||||
signatures.invalid.group_by(&:status)
|
|
||||||
end
|
|
||||||
|
|
||||||
def parsed_document_numbers
|
def parsed_document_numbers
|
||||||
document_numbers.split(",")
|
document_numbers.split(/\W+/)
|
||||||
end
|
end
|
||||||
|
|
||||||
def signable_found
|
def signable_found
|
||||||
|
|||||||
@@ -6,21 +6,21 @@
|
|||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
Hay <%= @signature_sheet.signatures.valid.count %> firmas válidas
|
Hay <%= @signature_sheet.signatures.verified.count %> firmas válidas
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
Hay <%= @signature_sheet.signatures.invalid.count %> firmas inválidas
|
Hay <%= @signature_sheet.signatures.unverified.count %> firmas inválidas
|
||||||
</div>
|
</div>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
<% if @signature_sheet.signatures.invalid.any? %>
|
<% if @signature_sheet.signatures.verified.any? %>
|
||||||
<% @invalid_signatures.each do |error, signatures| %>
|
|
||||||
<div><%= error %></div>
|
|
||||||
<div>
|
<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>
|
</div>
|
||||||
<% end %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% unless @signature_sheet.processed? %>
|
<% unless @signature_sheet.processed? %>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ class CreateSignatureSheets < ActiveRecord::Migration
|
|||||||
create_table :signature_sheets do |t|
|
create_table :signature_sheets do |t|
|
||||||
t.references :signable, polymorphic: true
|
t.references :signable, polymorphic: true
|
||||||
t.text :document_numbers
|
t.text :document_numbers
|
||||||
t.boolean :processed
|
t.boolean :processed, default: false
|
||||||
t.references :author
|
t.references :author
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ class CreateSignatures < ActiveRecord::Migration
|
|||||||
t.references :signature_sheet
|
t.references :signature_sheet
|
||||||
t.references :user
|
t.references :user
|
||||||
t.string :document_number
|
t.string :document_number
|
||||||
t.string :status, default: nil
|
t.boolean :verified, default: false
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user