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)