adds letter verification

This commit is contained in:
rgarcia
2015-08-27 23:58:31 +02:00
parent 570f67195c
commit f7d22f64b6
5 changed files with 104 additions and 0 deletions

View 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
View File

@@ -0,0 +1,3 @@
class Address < ActiveRecord::Base
belongs_to :user
end

53
app/models/letter.rb Normal file
View 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

View File

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

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