diff --git a/app/controllers/appearance_releases_controller.rb b/app/controllers/appearance_releases_controller.rb
index a05e958..610eea5 100644
--- a/app/controllers/appearance_releases_controller.rb
+++ b/app/controllers/appearance_releases_controller.rb
@@ -79,7 +79,7 @@ class AppearanceReleasesController < ApplicationController
def appearance_release_params
params.require(:appearance_release).permit(:contract, :guardian_address, :guardian_first_name, :guardian_last_name, :guardian_phone, :guardian_photo, :guardian_email, :minor,
- :person_address, :person_first_name, :person_last_name, :person_phone, :person_email, :person_photo,
+ :person_address_street1, :person_first_name, :person_last_name, :person_phone, :person_email, :person_photo,
:applicable_medium_id, :applicable_medium_text,
:territory_id, :territory_text,
:term_id, :term_text, :person_date_of_birth,
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..c1126ff 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
@@ -71,7 +82,18 @@ class AppearanceRelease < ApplicationRecord
scope :having_no_person_photo, -> { left_joins(:person_photo_attachment).group(:id).having('COUNT(active_storage_attachments) = 0') }
scope :with_person_name, ->(name) { where('person_first_name ILIKE ? OR person_last_name ILIKE ?', "%#{name}%") }
- searchable_on %i[person_first_name person_last_name person_address person_email person_phone]
+ searchable_on %i[
+ person_first_name
+ person_last_name
+ person_address_street1
+ person_address_street2
+ person_address_city
+ person_address_state
+ person_address_zip
+ person_address_country
+ person_email
+ person_phone
+ ]
# All releases must respond to the following messages
def name
diff --git a/app/models/sample_appearance_release.rb b/app/models/sample_appearance_release.rb
index e2e0a20..c1d7170 100644
--- a/app/models/sample_appearance_release.rb
+++ b/app/models/sample_appearance_release.rb
@@ -8,7 +8,12 @@ class SampleAppearanceRelease < AppearanceRelease
def default_attrs
{
- person_address: "Street Address, City, State Zipcode",
+ person_address_street1: "Street Address",
+ person_address_street2: "St2",
+ person_address_city: "City",
+ person_address_state: "State",
+ person_address_zip: "ZIP",
+ person_address_country: "Country",
person_first_name: "Some",
person_last_name: "Person",
person_phone: "555-555-5555",
diff --git a/app/views/appearance_releases/_form.html.erb b/app/views/appearance_releases/_form.html.erb
index 0f9d150..5e67d9d 100644
--- a/app/views/appearance_releases/_form.html.erb
+++ b/app/views/appearance_releases/_form.html.erb
@@ -13,7 +13,7 @@
<%= form.email_field :person_email, wrapper_class: "col-sm-6" %>
<%= form.date_field :person_date_of_birth, wrapper_class: "col-sm-6", placeholder: Date.current %>
- <%= form.text_field :person_address, wrapper_class: "col-sm-6" %>
+ <%= form.text_field :person_address_street1, wrapper_class: "col-sm-6" %>
!appearance_release.minor?) %>" data-ujs-target="guardian-fields">
diff --git a/app/views/public/appearance_releases/new.html.erb b/app/views/public/appearance_releases/new.html.erb
index a612e02..56d83dd 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, wrapper_class: "col-sm-6" %>
<%= form.date_field :person_date_of_birth, wrapper_class: "col-sm-6", placeholder: Date.current %>
- <%= form.text_field :person_address, 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..b02f0f4 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -329,7 +329,12 @@ en:
person_title: Title
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..7c03776 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -118,8 +118,12 @@ 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
person_name: Nómbre
person_phone: Número de teléfono
diff --git a/db/migrate/20200615133602_destructure_person_address_column_in_appearance_releases.rb b/db/migrate/20200615133602_destructure_person_address_column_in_appearance_releases.rb
new file mode 100644
index 0000000..ba88cc4
--- /dev/null
+++ b/db/migrate/20200615133602_destructure_person_address_column_in_appearance_releases.rb
@@ -0,0 +1,10 @@
+class DestructurePersonAddressColumnInAppearanceReleases < ActiveRecord::Migration[6.0]
+ def change
+ rename_column :appearance_releases, :person_address, :person_address_street1
+ 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
diff --git a/db/structure.sql b/db/structure.sql
index f6a1918..15d5f5d 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -290,7 +290,7 @@ ALTER SEQUENCE public.active_storage_blobs_id_seq OWNED BY public.active_storage
CREATE TABLE public.appearance_releases (
id bigint NOT NULL,
person_name_old character varying,
- person_address character varying,
+ person_address_street1 character varying,
person_phone character varying,
project_id bigint,
created_at timestamp without time zone NOT NULL,
@@ -318,7 +318,12 @@ CREATE TABLE public.appearance_releases (
guardian_first_name character varying,
guardian_last_name character varying,
identifier character varying,
- guardian_email character varying
+ guardian_email character varying,
+ person_address_street2 character varying,
+ person_address_city character varying,
+ person_address_state character varying,
+ person_address_zip character varying,
+ person_address_country character varying
);
@@ -3654,6 +3659,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20200610085411'),
('20200610140459'),
('20200612121539'),
-('20200615131722');
+('20200615131722'),
+('20200615133602');
diff --git a/spec/controllers/public/appearance_releases_controller_spec.rb b/spec/controllers/public/appearance_releases_controller_spec.rb
index 3130922..b1cf0c0 100644
--- a/spec/controllers/public/appearance_releases_controller_spec.rb
+++ b/spec/controllers/public/appearance_releases_controller_spec.rb
@@ -31,7 +31,7 @@ describe Public::AppearanceReleasesController do
contract_template = create(:contract_template, project: project)
sign_in(user)
- post :create, params: { account_id: user.primary_account.to_param, project_id: project, contract_template_id: contract_template, appearance_release: { person_address: "Albuquerque" } }
+ post :create, params: { account_id: user.primary_account.to_param, project_id: project, contract_template_id: contract_template, appearance_release: { person_email: "email@email.com" } }
body = CGI.unescape_html(response.body)
expect(body).to match /Person first name can't be blank/
expect(body).to match /Person last name can't be blank/
diff --git a/spec/factories/appearance_releases.rb b/spec/factories/appearance_releases.rb
index afcec4e..35986f5 100644
--- a/spec/factories/appearance_releases.rb
+++ b/spec/factories/appearance_releases.rb
@@ -11,7 +11,12 @@ FactoryBot.define do
end
trait :native do
- person_address "100 Test Lane, New York, NY 10001"
+ person_address_street1 "St1"
+ person_address_street2 "St2"
+ person_address_city "City"
+ person_address_state "State"
+ person_address_zip "ZIP"
+ person_address_country "Country"
person_phone "123-555-6789"
signature do
diff --git a/spec/features/user_managing_appearance_releases_spec.rb b/spec/features/user_managing_appearance_releases_spec.rb
index d4f8c70..dccd852 100644
--- a/spec/features/user_managing_appearance_releases_spec.rb
+++ b/spec/features/user_managing_appearance_releases_spec.rb
@@ -485,7 +485,7 @@ feature 'User managing appearance releases' do
end
def person_address_field
- t('helpers.label.appearance_release.person_address')
+ t('helpers.label.appearance_release.person_address_street1')
end
def person_email_field
diff --git a/spec/models/contract_template_preview_spec.rb b/spec/models/contract_template_preview_spec.rb
index 7cdf8ec..c191e12 100644
--- a/spec/models/contract_template_preview_spec.rb
+++ b/spec/models/contract_template_preview_spec.rb
@@ -50,7 +50,11 @@ describe ContractTemplatePreview do
'id' => nil,
'person_first_name' => 'Dummy',
'person_last_name' => 'Person',
- 'person_address' => 'Street 1, Street 2, City, State 12345, Country',
+ 'person_address_street1' => 'Street 1',
+ 'person_address_street2' => 'Street 2',
+ 'person_address_city' => 'City',
+ 'person_address_state' => 'State',
+ 'person_address_zip' => '12345',
'person_phone' => '00 111 222 333 4444',
'updated_at' => nil,
'minor' => true,
diff --git a/spec/models/excel_reports/video_reports/nat_geo_legal_binder_logs/appearance_release_log_sheet_spec.rb b/spec/models/excel_reports/video_reports/nat_geo_legal_binder_logs/appearance_release_log_sheet_spec.rb
index ce1ff5f..9b1490e 100644
--- a/spec/models/excel_reports/video_reports/nat_geo_legal_binder_logs/appearance_release_log_sheet_spec.rb
+++ b/spec/models/excel_reports/video_reports/nat_geo_legal_binder_logs/appearance_release_log_sheet_spec.rb
@@ -29,7 +29,7 @@ module ExcelReports
restriction: Restriction.last,
person_first_name: "John",
person_last_name: "Doe",
- person_address: "123 Main Street, New York, NY 10000")
+ person_address_street1: "123 Main Street, New York, NY 10000")
)
)
allow(sheet).to receive(:add_row)