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_paranoid column: :hidden_at
|
||||
|
||||
has_one :address
|
||||
has_one :administrator
|
||||
has_one :moderator
|
||||
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