diff --git a/app/controllers/appearance_releases_controller.rb b/app/controllers/appearance_releases_controller.rb index a05e958..a1e53d6 100644 --- a/app/controllers/appearance_releases_controller.rb +++ b/app/controllers/appearance_releases_controller.rb @@ -78,8 +78,8 @@ class AppearanceReleasesController < ApplicationController end 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, + params.require(:appearance_release).permit(:contract, :guardian_address_street1, :guardian_first_name, :guardian_last_name, :guardian_phone, :guardian_photo, :guardian_email, :minor, + :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..419fcd1 100644 --- a/app/controllers/public/appearance_releases_controller.rb +++ b/app/controllers/public/appearance_releases_controller.rb @@ -39,11 +39,43 @@ 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 guardian_params + %i[ + guardian_first_name + guardian_last_name + guardian_phone + guardian_email + guardian_photo + guardian_address_street1 + guardian_address_street2 + guardian_address_city + guardian_address_state + guardian_address_zip + guardian_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, - :guardian_address, :guardian_first_name, :guardian_last_name, :guardian_phone, :guardian_email, :guardian_photo, :minor, - :signature_base64, :person_date_of_birth, - :locale, :contract_template,) + params.require(:appearance_release).permit(person_params, guardian_params, + :minor, :signature_base64, + :person_date_of_birth, + :locale, :contract_template) end def appearance_release_params_with_locale diff --git a/app/models/appearance_release.rb b/app/models/appearance_release.rb index 9a587c7..078eefd 100644 --- a/app/models/appearance_release.rb +++ b/app/models/appearance_release.rb @@ -16,6 +16,29 @@ 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] + ] + + composed_of :guardian_address, + class_name: 'Address', + mapping: [ + %w[guardian_address_street1 street1], + %w[guardian_address_street2 street2], + %w[guardian_address_city city], + %w[guardian_address_state state], + %w[guardian_address_zip zip], + %w[guardian_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 +94,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..69e521e 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"> @@ -23,7 +23,7 @@ <%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6" %>
- <%= form.text_field :guardian_address, wrapper_class: "col-sm-6" %> + <%= form.text_field :guardian_address_street1, wrapper_class: "col-sm-6" %>
<% end %> diff --git a/app/views/public/appearance_releases/new.html.erb b/app/views/public/appearance_releases/new.html.erb index ad80736..99d4c40 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", required: true %> <% end %> <%= card_field_set_tag t(".photo.heading") do %> @@ -79,9 +79,7 @@
<%= form.text_field :guardian_email, required: @appearance_release.minor?, wrapper_class: "col-sm-6" %>
-
- <%= form.text_field :guardian_address, required: @appearance_release.minor?, wrapper_class: "col-sm-6" %> -
+ <%= render "shared/address_fields", form: form, subject: "guardian", required: @appearance_release.minor? %> <% end %>
diff --git a/app/views/shared/_address_fields.html.erb b/app/views/shared/_address_fields.html.erb index 6346517..51cda48 100644 --- a/app/views/shared/_address_fields.html.erb +++ b/app/views/shared/_address_fields.html.erb @@ -1,13 +1,14 @@ <% field_name_prefix = subject.present? ? "#{subject}_" : "" %> +<% required = required || false %>
- <%= form.text_field "#{field_name_prefix}address_street1", wrapper_class: "col-sm-6" %> + <%= form.text_field "#{field_name_prefix}address_street1", required: required, wrapper_class: "col-sm-6" %> <%= form.text_field "#{field_name_prefix}address_street2", wrapper_class: "col-sm-6" %>
- <%= form.text_field "#{field_name_prefix}address_city", wrapper_class: "col-sm-6" %> - <%= form.text_field "#{field_name_prefix}address_state", wrapper_class: "col-sm-3" %> - <%= form.text_field "#{field_name_prefix}address_zip", wrapper_class: "col-sm-3" %> + <%= form.text_field "#{field_name_prefix}address_city", required: required, wrapper_class: "col-sm-6" %> + <%= form.text_field "#{field_name_prefix}address_state", required: required, wrapper_class: "col-sm-3" %> + <%= form.text_field "#{field_name_prefix}address_zip", required: required, wrapper_class: "col-sm-3" %>
<%= form.form_group "#{field_name_prefix}address_country" do %> <%= form.label "#{field_name_prefix}address_country" %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 7073de2..c3bb2de 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -329,13 +329,24 @@ 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 person_last_name: Last name person_name: Name person_phone: Phone number + guardian_address_city: Guardian city + guardian_address_country: Guardian country + guardian_address_state: Guardian state + guardian_address_street1: Guardian address + guardian_address_street2: Guardian address (Line 2) + guardian_address_zip: Guardian zip code location_release: address_city: City address_country: Country diff --git a/config/locales/es.yml b/config/locales/es.yml index be353f4..ff051c7 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -115,14 +115,23 @@ es: helpers: label: appearance_release: - 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 + guardian_address_city: Guardian city (ES) + guardian_address_country: Guardian country (ES) + guardian_address_state: Guardian state (ES) + guardian_address_street1: Dirección del tutor legal + guardian_address_street2: Dirección del tutor legal (Línea 2) + guardian_address_zip: Guardian zip code (ES) project: client_name: Nómbre del cliente del proyecto description: Descripción del proyecto 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/migrate/20200616124214_destructure_guardian_address_column_in_appearance_releases.rb b/db/migrate/20200616124214_destructure_guardian_address_column_in_appearance_releases.rb new file mode 100644 index 0000000..9cb94da --- /dev/null +++ b/db/migrate/20200616124214_destructure_guardian_address_column_in_appearance_releases.rb @@ -0,0 +1,10 @@ +class DestructureGuardianAddressColumnInAppearanceReleases < ActiveRecord::Migration[6.0] + def change + rename_column :appearance_releases, :guardian_address, :guardian_address_street1 + add_column :appearance_releases, :guardian_address_street2, :string + add_column :appearance_releases, :guardian_address_city, :string + add_column :appearance_releases, :guardian_address_state, :string + add_column :appearance_releases, :guardian_address_zip, :string + add_column :appearance_releases, :guardian_address_country, :string + end +end diff --git a/db/structure.sql b/db/structure.sql index f6a1918..bc6f2ba 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -290,13 +290,13 @@ 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, updated_at timestamp without time zone NOT NULL, minor boolean DEFAULT false, - guardian_address character varying, + guardian_address_street1 character varying, guardian_name_old character varying, guardian_phone character varying, person_email character varying, @@ -318,7 +318,17 @@ 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, + guardian_address_street2 character varying, + guardian_address_city character varying, + guardian_address_state character varying, + guardian_address_zip character varying, + guardian_address_country character varying ); @@ -3654,6 +3664,8 @@ INSERT INTO "schema_migrations" (version) VALUES ('20200610085411'), ('20200610140459'), ('20200612121539'), -('20200615131722'); +('20200615131722'), +('20200615133602'), +('20200616124214'); diff --git a/spec/controllers/appearance_releases_controller_spec.rb b/spec/controllers/appearance_releases_controller_spec.rb index 7b78840..53e2be6 100644 --- a/spec/controllers/appearance_releases_controller_spec.rb +++ b/spec/controllers/appearance_releases_controller_spec.rb @@ -265,6 +265,9 @@ RSpec.describe AppearanceReleasesController, tye: :controller do def minor_appearance_release_params attributes_for(:appearance_release, :non_native, :minor_with_guardian_photo) .except(:contract) + .except(:guardian_address_street2).except(:guardian_address_city) + .except(:guardian_address_state).except(:guardian_address_zip) + .except(:guardian_address_country) .merge(contract_param, exploitable_rights_params) end diff --git a/spec/controllers/public/appearance_releases_controller_spec.rb b/spec/controllers/public/appearance_releases_controller_spec.rb index 3130922..7b2ecf2 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/ @@ -120,7 +120,19 @@ describe Public::AppearanceReleasesController do def minor_appearance_release_params(with_guardian_photo = true) minor_type = with_guardian_photo ? :minor_with_guardian_photo : :minor - attributes_for(:appearance_release, minor_type).merge(signature_param) + attributes_for(:appearance_release, minor_type) + .merge(signature_param, guardian_address_params) + end + + def guardian_address_params + { + guardian_address_street1: "St1", + guardian_address_street2: "St2", + guardian_address_city: "City", + guardian_address_state: "State", + guardian_address_zip: "ZIP", + guardian_address_country: "Country" + } end def signature_param diff --git a/spec/factories/appearance_releases.rb b/spec/factories/appearance_releases.rb index afcec4e..c656d74 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 @@ -31,7 +36,12 @@ FactoryBot.define do minor true guardian_first_name "Jamie" guardian_last_name "Doe" - guardian_address "100 Test Lane, New York, 10001" + guardian_address_street1 "St1" + guardian_address_street2 "St2" + guardian_address_city "City" + guardian_address_state "State" + guardian_address_zip "ZIP" + guardian_address_country "Country" guardian_phone "123-555-1234" guardian_email "guardian@galaxy.all" end @@ -40,9 +50,14 @@ FactoryBot.define do minor true guardian_first_name "Jamie" guardian_last_name "Doe" - guardian_address "100 Test Lane, New York, 10001" guardian_phone "123-555-1234" guardian_email "guardian@galaxy.all" + guardian_address_street1 "St1" + guardian_address_street2 "St2" + guardian_address_city "City" + guardian_address_state "State" + guardian_address_zip "ZIP" + guardian_address_country "Country" guardian_photo do path = Rails.root.join("spec", "fixtures", "files", "pratt.jpg") Rack::Test::UploadedFile.new(path, "image/jpeg") diff --git a/spec/features/user_managing_appearance_releases_spec.rb b/spec/features/user_managing_appearance_releases_spec.rb index 03cdd05..33e1eb3 100644 --- a/spec/features/user_managing_appearance_releases_spec.rb +++ b/spec/features/user_managing_appearance_releases_spec.rb @@ -19,7 +19,7 @@ feature 'User managing appearance releases' do fill_in person_first_name_field, with: 'Jane' fill_in person_last_name_field, with: 'Doe' - fill_in person_address_field, with: '123 Test Lane, New York, NY 10000' + fill_in_person_address_fields fill_in person_phone_field, with: '555-555-5555' fill_in person_email_field, with: 'jane.doe@test.com' fill_in person_date_of_birth, with: '01/01/1999' @@ -52,7 +52,7 @@ feature 'User managing appearance releases' do fill_in guardian_phone_field, with: '001101' fill_in person_first_name_field, with: 'Jane' fill_in person_last_name_field, with: 'Doe' - fill_in person_address_field, with: '123 Test Lane, New York, NY 10000' + fill_in_person_address_fields fill_in person_phone_field, with: '555-555-5555' fill_in person_email_field, with: 'jane.doe@test.com' fill_in person_date_of_birth, with: '01/01/1999' @@ -65,7 +65,7 @@ feature 'User managing appearance releases' do expect(page).to have_content('Guardian email is not an email') fill_in guardian_email_field, with: 'valid@email.com' - fill_in guardian_address_field, with: '123 Test Lane, New York, NY 10000' + fill_in_guardian_address_fields attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64' click_button submit_release_button @@ -470,8 +470,20 @@ feature 'User managing appearance releases' do 'Guardian email' end - def guardian_address_field - 'Guardian address' + def guardian_address_street1_field + t('helpers.label.appearance_release.guardian_address_street1') + end + + def guardian_address_city_field + t('helpers.label.appearance_release.guardian_address_city') + end + + def guardian_address_state_field + t('helpers.label.appearance_release.guardian_address_state') + end + + def guardian_address_zip_field + t('helpers.label.appearance_release.guardian_address_zip') end def guardian_photo_field @@ -490,8 +502,34 @@ feature 'User managing appearance releases' do t('helpers.label.appearance_release.person_last_name') end - def person_address_field - t('helpers.label.appearance_release.person_address') + def fill_in_person_address_fields + fill_in person_address_street1_field, with: "123 Test Lane" + fill_in person_address_city_field, with: "New York" + fill_in person_address_state_field, with: "NY" + fill_in person_address_zip_field, with: '1000' + end + + def fill_in_guardian_address_fields + fill_in guardian_address_street1_field, with: "124 Test Lane" + fill_in guardian_address_city_field, with: "New York" + fill_in guardian_address_state_field, with: "NY" + fill_in guardian_address_zip_field, with: '1000' + end + + def person_address_street1_field + t('helpers.label.appearance_release.person_address_street1') + end + + def person_address_city_field + t('helpers.label.appearance_release.person_address_city') + end + + def person_address_state_field + t('helpers.label.appearance_release.person_address_state') + end + + def person_address_zip_field + t('helpers.label.appearance_release.person_address_zip') 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..dee4dea 100644 --- a/spec/models/contract_template_preview_spec.rb +++ b/spec/models/contract_template_preview_spec.rb @@ -50,11 +50,19 @@ 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, - 'guardian_address' => 'Street 3, Street 4, City-2, State-2 112233, Country-2', + 'guardian_address_street1' => 'Street 3', + 'guardian_address_street2' => 'Street 4', + 'guardian_address_city' => 'City-2', + 'guardian_address_state' => 'State-2', + 'guardian_address_zip' => '112233', "guardian_first_name" => nil, "guardian_last_name" => nil, "guardian_name_old" => nil, 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)