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