diff --git a/app/controllers/public/appearance_releases_controller.rb b/app/controllers/public/appearance_releases_controller.rb
index 4bd3d9f..6adbdf4 100644
--- a/app/controllers/public/appearance_releases_controller.rb
+++ b/app/controllers/public/appearance_releases_controller.rb
@@ -39,8 +39,24 @@ class Public::AppearanceReleasesController < Public::BaseController
authorize appearance_releases.build(params)
end
+ def person_params
+ %i[
+ person_first_name
+ person_last_name
+ person_phone
+ person_email
+ person_photo
+ person_address_street1
+ person_address_street2
+ person_address_city
+ person_address_state
+ person_address_zip
+ person_address_country
+ ]
+ end
+
def appearance_release_params
- params.require(:appearance_release).permit(:person_address, :person_first_name, :person_last_name, :person_phone, :person_email, :person_photo,
+ params.require(:appearance_release).permit(person_params,
:guardian_address, :guardian_first_name, :guardian_last_name, :guardian_phone, :guardian_email, :guardian_photo, :minor,
:signature_base64, :person_date_of_birth,
:locale, :contract_template,)
diff --git a/app/models/appearance_release.rb b/app/models/appearance_release.rb
index 9a587c7..905538e 100644
--- a/app/models/appearance_release.rb
+++ b/app/models/appearance_release.rb
@@ -16,6 +16,17 @@ class AppearanceRelease < ApplicationRecord
has_one_attached :person_photo
+ composed_of :person_address,
+ class_name: 'Address',
+ mapping: [
+ %w[person_address_street1 street1],
+ %w[person_address_street2 street2],
+ %w[person_address_city city],
+ %w[person_address_state state],
+ %w[person_address_zip zip],
+ %w[person_address_country country]
+ ]
+
# These validations apply to all releases
validates :person_email, email: true, allow_blank: true
validates :person_first_name, :person_last_name, presence: true
@@ -73,6 +84,19 @@ class AppearanceRelease < ApplicationRecord
searchable_on %i[person_first_name person_last_name person_address person_email person_phone]
+ def person_address
+ return self.person_address_old if self.person_address_old.present?
+
+ Address.new(
+ self.person_address_street1,
+ self.person_address_street2,
+ self.person_address_city,
+ self.person_address_state,
+ self.person_address_zip,
+ self.person_address_country
+ ).to_s(format: :full)
+ end
+
# All releases must respond to the following messages
def name
person_name
diff --git a/app/views/public/appearance_releases/new.html.erb b/app/views/public/appearance_releases/new.html.erb
index ad80736..7fba394 100644
--- a/app/views/public/appearance_releases/new.html.erb
+++ b/app/views/public/appearance_releases/new.html.erb
@@ -35,8 +35,8 @@
<%= form.email_field :person_email, required: true, wrapper_class: "col-sm-6" %>
<%= form.date_field :person_date_of_birth, required: true, wrapper_class: "col-sm-6", placeholder: Date.current %>
- <%= form.text_field :person_address, required: true, wrapper_class: "col-sm-6" %>
+ <%= render "shared/address_fields", form: form, subject: "person" %>
<% end %>
<%= card_field_set_tag t(".photo.heading") do %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 7073de2..fb64905 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -330,6 +330,12 @@ en:
appearance_release:
minor: Is the person a minor?
person_address: Address
+ person_address_city: City
+ person_address_country: Country
+ person_address_state: State
+ person_address_street1: Address
+ person_address_street2: Address (Line 2)
+ person_address_zip: Zip code
person_date_of_birth: Date of birth
person_email: Email address
person_first_name: First name
diff --git a/config/locales/es.yml b/config/locales/es.yml
index be353f4..113dfdd 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -118,6 +118,11 @@ es:
guardian_address: Dirección del tutor legal
guardian_name: Nómbre del tutor legal
guardian_phone: Número de teléfono del tutor legal
+ person_address_city: City (ES)
+ person_address_country: Country (ES)
+ person_address_state: State (ES)
+ person_address_street1: Address (ES)
+ person_address_street2: Address (Line 2) (ES)
minor: El firmante es un menor
person_address: Dirección
person_email: Dirección de correo electrónico
diff --git a/db/migrate/20200615133602_rename_appearance_release_person_address_column.rb b/db/migrate/20200615133602_rename_appearance_release_person_address_column.rb
new file mode 100644
index 0000000..da38869
--- /dev/null
+++ b/db/migrate/20200615133602_rename_appearance_release_person_address_column.rb
@@ -0,0 +1,5 @@
+class RenameAppearanceReleasePersonAddressColumn < ActiveRecord::Migration[6.0]
+ def change
+ rename_column :appearance_releases, :person_address, :person_address_old
+ end
+end
diff --git a/db/migrate/20200615140920_add_address_component_fields_to_appearance_releases.rb b/db/migrate/20200615140920_add_address_component_fields_to_appearance_releases.rb
new file mode 100644
index 0000000..00abd0e
--- /dev/null
+++ b/db/migrate/20200615140920_add_address_component_fields_to_appearance_releases.rb
@@ -0,0 +1,10 @@
+class AddAddressComponentFieldsToAppearanceReleases < ActiveRecord::Migration[6.0]
+ def change
+ add_column :appearance_releases, :person_address_street1, :string
+ add_column :appearance_releases, :person_address_street2, :string
+ add_column :appearance_releases, :person_address_city, :string
+ add_column :appearance_releases, :person_address_state, :string
+ add_column :appearance_releases, :person_address_zip, :string
+ add_column :appearance_releases, :person_address_country, :string
+ end
+end