adds letter verification
This commit is contained in:
32
app/controllers/verification/letter_controller.rb
Normal file
32
app/controllers/verification/letter_controller.rb
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
class Verification::LetterController < ApplicationController
|
||||||
|
before_action :authenticate_user!
|
||||||
|
before_action :verify_resident!
|
||||||
|
before_action :verify_phone_or_email!
|
||||||
|
skip_authorization_check
|
||||||
|
|
||||||
|
def new
|
||||||
|
@letter = Letter.new(user: current_user)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@letter = Letter.new(user: current_user)
|
||||||
|
if @letter.save
|
||||||
|
redirect_to account_path, notice: t('verification.letter.create.flash.success')
|
||||||
|
else
|
||||||
|
flash.now.alert = t('verification.letter.create.alert.failure')
|
||||||
|
render :new
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def letter_params
|
||||||
|
params.require(:letter).permit()
|
||||||
|
end
|
||||||
|
|
||||||
|
def verify_phone_or_email!
|
||||||
|
unless current_user.confirmed_phone?
|
||||||
|
redirect_to verified_user_path, alert: t('verification.letter.alert.unconfirmed_personal_data')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
3
app/models/address.rb
Normal file
3
app/models/address.rb
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
class Address < ActiveRecord::Base
|
||||||
|
belongs_to :user
|
||||||
|
end
|
||||||
53
app/models/letter.rb
Normal file
53
app/models/letter.rb
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
class Letter
|
||||||
|
include ActiveModel::Model
|
||||||
|
|
||||||
|
attr_accessor :user, :address
|
||||||
|
|
||||||
|
validates :user, presence: true
|
||||||
|
validates :address, presence: true
|
||||||
|
validate :correct_address
|
||||||
|
|
||||||
|
def initialize(attrs={})
|
||||||
|
@user = attrs[:user]
|
||||||
|
end
|
||||||
|
|
||||||
|
def save
|
||||||
|
valid? &&
|
||||||
|
letter_requested! &&
|
||||||
|
update_user_address
|
||||||
|
end
|
||||||
|
|
||||||
|
def address
|
||||||
|
@address ||= UserApi.new(user).address
|
||||||
|
end
|
||||||
|
|
||||||
|
def letter_requested!
|
||||||
|
user.update(letter_requested_at: Time.now)
|
||||||
|
end
|
||||||
|
|
||||||
|
def update_user_address
|
||||||
|
user.address = Address.new(parsed_address)
|
||||||
|
user.save
|
||||||
|
end
|
||||||
|
|
||||||
|
def correct_address
|
||||||
|
errors.add(:address, "Address not found") unless address.present?
|
||||||
|
end
|
||||||
|
|
||||||
|
def parsed_address
|
||||||
|
{ postal_code: address[:codigo_postal],
|
||||||
|
street: address[:nombre_via],
|
||||||
|
street_type: address[:sigla_via],
|
||||||
|
number: address[:numero_via],
|
||||||
|
number_type: address[:nominal_via],
|
||||||
|
letter: address[:letra_via],
|
||||||
|
portal: address[:portal],
|
||||||
|
stairway: address[:escalera],
|
||||||
|
floor: address[:planta],
|
||||||
|
door: address[:puerta],
|
||||||
|
km: address[:km],
|
||||||
|
neighbourhood: address[:nombre_barrio],
|
||||||
|
district: address[:nombre_distrito] }
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -11,6 +11,7 @@ class User < ActiveRecord::Base
|
|||||||
acts_as_voter
|
acts_as_voter
|
||||||
acts_as_paranoid column: :hidden_at
|
acts_as_paranoid column: :hidden_at
|
||||||
|
|
||||||
|
has_one :address
|
||||||
has_one :administrator
|
has_one :administrator
|
||||||
has_one :moderator
|
has_one :moderator
|
||||||
has_one :organization
|
has_one :organization
|
||||||
|
|||||||
15
app/views/verification/letter/new.html.erb
Normal file
15
app/views/verification/letter/new.html.erb
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<div class="row account">
|
||||||
|
<div class="small-12 column">
|
||||||
|
|
||||||
|
<h1 class="inline-block"><%= t('verification.letter.new.title') %></h1>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<%= t('verification.letter.new.explanation') %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<%= form_for @letter, url: letter_path do |f| %>
|
||||||
|
<%= render 'shared/errors', resource: @letter %>
|
||||||
|
<%= f.submit t('verification.letter.new.submit_button') %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
Reference in New Issue
Block a user