Compare commits

..

4 Commits

Author SHA1 Message Date
Senad Uka
6a2fb533cb Directmeba 2020-06-29 10:42:08 +02:00
Senad Uka
8951667e61 Upstrream sync 2020-06-26 18:45:11 +02:00
Senad Uka
fe131491cd Upstream sync 2020-06-26 04:55:50 +02:00
Senad Uka
290dbfa48b Upstream sync 2020-06-25 08:46:11 +02:00
23 changed files with 936 additions and 87 deletions

View File

@@ -77,9 +77,43 @@ class AppearanceReleasesController < ApplicationController
results
end
def person_params
%i[
person_first_name
person_last_name
person_phone
person_email
person_photo
person_address_street1
]
end
def guardian_params
%i[
guardian_first_name
guardian_last_name
guardian_phone
guardian_email
guardian_photo
guardian_address_street1
]
end
def second_guardian_params
%i[
guardian_2_first_name
guardian_2_last_name
guardian_2_phone
guardian_2_email
guardian_2_photo
guardian_2_address_street1
]
end
def appearance_release_params
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,
params.require(:appearance_release).permit(person_params,
guardian_params, second_guardian_params,
:contract, :minor,
:applicable_medium_id, :applicable_medium_text,
:territory_id, :territory_text,
:term_id, :term_text, :person_date_of_birth,

View File

@@ -45,6 +45,9 @@ class Public::MedicalReleasesController < Public::BaseController
.require(:medical_release)
.permit(
person_params,
guardian_params,
second_guardian_params,
:minor,
:signature_base64,
:locale,
:contract_template,
@@ -60,17 +63,49 @@ class Public::MedicalReleasesController < Public::BaseController
end
def person_params
[
:person_first_name,
:person_last_name,
:person_phone,
:person_email,
:person_address_street1,
:person_address_street2,
:person_address_city,
:person_address_state,
:person_address_zip,
:person_address_country,
%i[
person_first_name
person_last_name
person_phone
person_email
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 second_guardian_params
%i[
guardian_2_first_name
guardian_2_last_name
guardian_2_phone
guardian_2_email
guardian_2_photo
guardian_2_address_street1
guardian_2_address_street2
guardian_2_address_city
guardian_2_address_state
guardian_2_address_zip
guardian_2_address_country
]
end

View File

@@ -7,6 +7,10 @@ class MedicalRelease < ApplicationRecord
include Signable
include Syncable
include PersonName
include GuardianPhotoable
include SecondGuardianPhotoable
include GuardianName
include SecondGuardianName
NUMBER_OF_CUSTOM_FIELDS = 15
@@ -31,6 +35,12 @@ class MedicalRelease < ApplicationRecord
acts_as_taggable_on :internal_tags, :tags
# These validations apply to releases being signed by a minor
with_options if: :minor? do
validates :guardian_email, email: true, allow_blank: true
validates :guardian_2_email, email: true, allow_blank: true
end
# These validations apply to releases created natively by the system (i.e. not imported from elsewhere)
with_options on: :native do
validates :signature, attached: true
@@ -63,10 +73,6 @@ class MedicalRelease < ApplicationRecord
false
end
def minor?
false
end
def contract_file_name
"#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}"
end

View File

@@ -17,17 +17,25 @@
</div>
<div class="<%= class_string("collapse" => !appearance_release.minor?) %>" data-ujs-target="guardian-fields">
<div class="form-row">
<%= form.text_field :guardian_first_name, required: appearance_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.text_field :guardian_last_name, required: appearance_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6" %>
</div>
<div class="form-row">
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6" %>
</div>
<div class="form-row">
<%= form.text_field :guardian_address_street1, wrapper_class: "col-sm-6" %>
</div>
<%= card_field_set_tag t(".guardian_info.heading") do %>
<div class="form-row">
<%= form.text_field :guardian_first_name, required: appearance_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.text_field :guardian_last_name, required: appearance_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6" %>
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6" %>
<%= form.text_field :guardian_address_street1, wrapper_class: "col-sm-6" %>
</div>
<% end %>
<%= card_field_set_tag t(".guardian_2_info.heading") do %>
<div class="form-row">
<%= form.text_field :guardian_2_first_name, wrapper_class: "col-sm-3" %>
<%= form.text_field :guardian_2_last_name, wrapper_class: "col-sm-3" %>
<%= form.phone_field :guardian_2_phone, wrapper_class: "col-sm-6" %>
<%= form.text_field :guardian_2_email, wrapper_class: "col-sm-6" %>
<%= form.text_field :guardian_2_address_street1, wrapper_class: "col-sm-6" %>
</div>
<% end %>
</div>
<% end %>
@@ -62,20 +70,36 @@
<div class="<%= class_string("collapse" => !appearance_release.minor?) %>" data-ujs-target="guardian-fields">
<div class="text-left">
<p><%= t(".photos.guardian_photo.heading") %></p>
<div class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-photo-input]">
<div id='guardian-photo-preview' class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-photo-input]">
<div class="align-items-center d-flex photo-preview img-thumbnail justify-content-center">
<span>No photo yet</span>
</div>
</div>
<% if appearance_release.guardian_photo.attached? %>
<%= javascript_tag nonce: true do %>
App.PhotoPreview.set("[data-behavior=guardian-photo-preview]", "<%= url_for(appearance_release.guardian_photo.variant(auto_orient: true, resize: '200x200')) %>");
App.PhotoPreview.set("#guardian-photo-preview", "<%= url_for(appearance_release.guardian_photo.variant(auto_orient: true, resize: '200x200')) %>");
<% end %>
<% end %>
<div class="d-inline-block">
<%= form.hidden_field :guardian_photo, value: form.object.guardian_photo.signed_id if appearance_release.guardian_photo.attached?%>
<%= form.file_field :guardian_photo, hide_label: true, data: { ujs_target: "guardian-photo-input" }, help: "PNG or JPG only", accept: appearance_release.class.face_photo_acceptable_content_types.join(",") %>
</div>
<p><%= t(".photos.guardian_2_photo.heading") %></p>
<div id='guardian-2-photo-preview' class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-2-photo-input]">
<div class="align-items-center d-flex photo-preview img-thumbnail justify-content-center">
<span>No photo yet</span>
</div>
</div>
<% if appearance_release.guardian_2_photo.attached? %>
<%= javascript_tag nonce: true do %>
App.PhotoPreview.set("#guardian-2-photo-preview", "<%= url_for(appearance_release.guardian_2_photo.variant(auto_orient: true, resize: '200x200')) %>");
<% end %>
<% end %>
<div class="d-inline-block">
<%= form.hidden_field :guardian_2_photo, value: form.object.guardian_2_photo.signed_id if appearance_release.guardian_2_photo.attached?%>
<%= form.file_field :guardian_2_photo, hide_label: true, data: { ujs_target: "guardian-2-photo-input" }, help: "PNG or JPG only", accept: appearance_release.class.face_photo_acceptable_content_types.join(",") %>
</div>
</div>
</div>
<% end %>

View File

@@ -33,7 +33,7 @@
<%= link_to "Switch View", "#", class: "btn btn-light border dropdown-toggle", role: "button", id: "dropdownMenuLink", data: { toggle: "dropdown" }, aria: { haspopup: "true", expanded: "false" } %>
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
<h5 class="dropdown-header">Live Streams</h5>
<span class="dropdown-item active"><%= fa_icon("check", text: @broadcast.name.titleize) %></span>
<%= link_to fa_icon("check", text: @broadcast.name.titleize), "#", class: "dropdown-item active" %>
<% @multi_view_broadcasts.each do |broadcast| %>
<% if broadcast.id != @broadcast.id %>
<%= link_to broadcast.name.titleize, broadcast.url, class: class_string("dropdown-item", "active" => @broadcast.id == broadcast.id) %>
@@ -159,4 +159,4 @@
</div>
</div>
</div>
<div>
</div>

View File

@@ -2,10 +2,10 @@
<%= field_set_tag content_tag(:span, t(".release_info.heading"), class: "h6 text-muted text-uppercase") do %>
<div class="form-row">
<%= form.text_field :name, wrapper_class: "col-sm-6" %>
<%= form.select :release_type, options_for_release_type_select(project, @release_type), { wrapper_class: "col-sm-6" }, data: { toggle: "collapse-select", target_show_values_mapping: { "#guardian_clause": %w(appearance talent misc), "#fee_field": %w(appearance talent location material acquired_media), "#exploitable_rights_fields": %w(appearance talent location material acquired_media), "#custom_fields": %w(medical) } }, class: "form-control custom-select" %>
<%= form.select :release_type, options_for_release_type_select(project, @release_type), { wrapper_class: "col-sm-6" }, data: { toggle: "collapse-select", target_show_values_mapping: { "#guardian_clause": %w(appearance talent misc medical), "#fee_field": %w(appearance talent location material acquired_media), "#exploitable_rights_fields": %w(appearance talent location material acquired_media), "#custom_fields": %w(medical) } }, class: "form-control custom-select" %>
</div>
<div class="form-row" id="fee_field">
<%= form.number_field :fee, min:"0", max:"99999999", step: "0.01", prepend: "$", help: "Leave at $0.00 for no-fee", wrapper_class: "col-sm-6" %>
<%= form.number_field :fee, min:"0", max:"99999999", step: "0.01", prepend: "$", wrapper_class: "col-sm-6" %>
</div>
<% end %>

View File

@@ -0,0 +1,8 @@
<p class="heading"><strong><u><%= t ".heading" %></u></strong></p>
<% (1..MedicalRelease::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
<% if contract_template.public_send("question_#{n}_text").present? %>
<p><strong><%= contract_template.public_send("question_#{n}_text") %></strong></p>
<p><%= releasable.public_send("question_#{n}_answer") %></p>
<% end %>
<% end %>

View File

@@ -39,15 +39,6 @@
<% end %>
</dl>
<% if releasable.model_name == "MedicalRelease" %>
<% (1..MedicalRelease::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
<% if contract_template.public_send("question_#{n}_text").present? %>
<p><strong><%= contract_template.public_send("question_#{n}_text") %></strong></p>
<p><%= releasable.public_send("question_#{n}_answer") %></p>
<% end %>
<% end %>
<% end %>
<% if releasable.minor? %>
<br/>
<p class="text-left"><strong>Guardian Information</strong></p>

View File

@@ -15,6 +15,13 @@
<p class="text-left"><strong>Guardian Clause</strong></p>
<%= contract_template.guardian_clause %>
<% end %>
<% if releasable.model_name == "MedicalRelease" %>
<div class="page">
<%= render "contracts/medical_questionnaire", releasable: releasable, contract_template: contract_template, preview: preview %>
</div>
<% end %>
<div class="page">
<%= render "contracts/signature_page", releasable: releasable, contract_template: contract_template, preview: preview %>
</div>

View File

@@ -18,7 +18,7 @@
<%= form.text_field :name, required: true, wrapper_class: "col-12" %>
</div>
<div class="form-row">
<%= form.text_area :description, wrapper_class: "col-12" %>
<%= form.text_area :description, required: true, wrapper_class: "col-12" %>
</div>
<%= form.form_group :categories, label: { text: "Licensed property type" } do %>
<% AcquiredMediaRelease::CATEGORIES.each do |category| %>
@@ -31,14 +31,14 @@
<%= card_field_set_tag t(".personal_info.heading") do %>
<div class="form-row">
<%= form.text_field :person_first_name, wrapper_class: "col-sm-6" %>
<%= form.text_field :person_last_name, wrapper_class: "col-sm-6" %>
<%= form.text_field :person_title, wrapper_class: "col-sm-6" %>
<%= form.phone_field :person_phone, wrapper_class: "col-sm-6", label: 'Phone' %>
<%= form.email_field :person_email, wrapper_class: "col-sm-6", label: 'Email' %>
<%= form.text_field :person_fax, wrapper_class: "col-sm-6", label: 'Fax' %>
<%= form.text_field :person_first_name, required: true, wrapper_class: "col-sm-6" %>
<%= form.text_field :person_last_name, required: true, wrapper_class: "col-sm-6" %>
<%= form.text_field :person_title, required: true, wrapper_class: "col-sm-6" %>
<%= form.phone_field :person_phone, required: true, wrapper_class: "col-sm-6", label: 'Phone' %>
<%= form.email_field :person_email, required: true, wrapper_class: "col-sm-6", label: 'Email' %>
<%= form.text_field :person_fax, required: true, wrapper_class: "col-sm-6", label: 'Fax' %>
</div>
<%= render "shared/address_fields", form: form, subject: "person" %>
<%= render "shared/address_fields", form: form, required: true, subject: "person" %>
<% end %>
<hr>

View File

@@ -17,21 +17,21 @@
<div class="form-row">
<%= form.text_field :name, required: true, wrapper_class: "col-12" %>
</div>
<%= render "shared/address_fields", form: form, subject: "" %>
<%= render "shared/address_fields", form: form, required: true, subject: "" %>
<% end %>
<hr>
<%= card_field_set_tag t(".contact_info.heading") do %>
<div class="form-row">
<%= form.text_field :person_first_name, wrapper_class: "col-sm-6" %>
<%= form.text_field :person_last_name, wrapper_class: "col-sm-6" %>
<%= form.phone_field :person_phone, wrapper_class: "col-sm-6" %>
<%= form.email_field :person_email, wrapper_class: "col-sm-6" %>
<%= form.text_field :person_company, wrapper_class: "col-sm-6" %>
<%= form.text_field :person_title, wrapper_class: "col-sm-6" %>
<%= form.text_field :person_first_name, required: true, wrapper_class: "col-sm-6" %>
<%= form.text_field :person_last_name, required: true, wrapper_class: "col-sm-6" %>
<%= form.phone_field :person_phone, required: true, wrapper_class: "col-sm-6" %>
<%= form.email_field :person_email, required: true, wrapper_class: "col-sm-6" %>
<%= form.text_field :person_company, required: true, wrapper_class: "col-sm-6" %>
<%= form.text_field :person_title, required: true, wrapper_class: "col-sm-6" %>
</div>
<%= render "shared/address_fields", form: form, subject: "person" %>
<%= render "shared/address_fields", form: form, required: true, subject: "person" %>
<% end %>
<hr>
@@ -39,9 +39,9 @@
<%= card_field_set_tag t(".filming_info.heading") do %>
<div class="form-row">
<%= form.text_field :filming_started_on, wrapper_class: "col-sm-6", class: "datepicker-control", readonly: true %>
<%= form.text_field :filming_ended_on, wrapper_class: "col-sm-6", class: "datepicker-control", readonly: true %>
<%= form.text_field :filming_hours, wrapper_class: "col-sm-12" %>
<%= form.text_field :filming_started_on, required: true, wrapper_class: "col-sm-6", class: "datepicker-control", readonly: true %>
<%= form.text_field :filming_ended_on, required: true, wrapper_class: "col-sm-6", class: "datepicker-control", readonly: true %>
<%= form.text_field :filming_hours, required: true, wrapper_class: "col-sm-12" %>
</div>
<% end %>

View File

@@ -13,6 +13,17 @@
<% end %>
<hr>
<% unless @contract_template.guardian_clause.blank? %>
<%= form.form_group :minor do %>
<%= form.check_box :minor, label: t("helpers.label.medical_release.minor"), data: { target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
<% end %>
<%= card_field_set_tag t(".guardian_clause.heading") do %>
<p><%= @contract_template.guardian_clause %></p>
<% end %>
<hr>
<% end %>
<% if (1..MedicalRelease::NUMBER_OF_CUSTOM_FIELDS).map {|n| @contract_template.public_send("question_#{n}_text").presence }.compact.any? %>
<%= card_field_set_tag t(".questionnaire.heading") do %>
@@ -44,6 +55,97 @@
<%= render "shared/photos_dropzone_fields", form: form, release: @medical_release %>
<% end %>
<% unless @contract_template.guardian_clause.blank? %>
<div class="<%= class_string("collapse" => !@medical_release.minor?) %>" data-ujs-target="guardian-fields">
<%= card_field_set_tag t(".guardian_info.heading") do %>
<div class="form-row">
<%= form.text_field :guardian_first_name, required: @medical_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.text_field :guardian_last_name, required: @medical_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.phone_field :guardian_phone, required: @medical_release.minor?, wrapper_class: "col-sm-6" %>
</div>
<div class="form-row">
<%= form.text_field :guardian_email, required: @medical_release.minor?, wrapper_class: "col-sm-6" %>
</div>
<%= render "shared/address_fields", form: form, subject: "guardian", required: @medical_release.minor? %>
<% end %>
<hr>
<%= card_field_set_tag t(".guardian_photo.heading") do %>
<div class="alert alert-warning font-weight-bold"><%= t ".guardian_photo.instructions" %></div>
<div class="text-center">
<div class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-photo-input]">
<div class="align-items-center d-flex photo-preview img-thumbnail justify-content-center">
<span><%= t ".photo.no_photo" %></span>
</div>
</div>
<div class="d-inline-block text-left">
<% if @medical_release.guardian_photo.attached? %>
<%= javascript_tag nonce: true do %>
App.PhotoPreview.set("[data-behavior=guardian-photo-preview]", "<%= url_for(@medical_release.guardian_photo.variant(auto_orient: true, resize: '200x200')) %>");
<% end %>
<% end %>
<div class="hidden-file-input">
<%= form.hidden_field :guardian_photo, value: form.object.guardian_photo.signed_id if @medical_release.guardian_photo.attached? %>
<%= form.file_field :guardian_photo, required: @medical_release.minor?, hide_label: true, data: { ujs_target: "guardian-photo-input" }, accept: @medical_release.class.face_photo_acceptable_content_types.join(","), direct_upload: true %>
</div>
<%= button_tag t(".photo.take_photo"), type: "button", class: "btn btn-lg btn-primary take-photo-button", data: { behavior: "take-guardian-photo" } %>
</div>
<p class="p-2 font-weight-bold">
<%= fa_icon "arrow-up", text: t(".photo.camera_instructions_html") %><br>
<small class="text-muted"><%= t ".photo.warning" %></small>
</p>
</div>
<% end %>
<hr>
<%= card_field_set_tag t(".guardian_2_info.heading") do %>
<div class="form-row">
<%= form.text_field :guardian_2_first_name, wrapper_class: "col-sm-3" %>
<%= form.text_field :guardian_2_last_name, wrapper_class: "col-sm-3" %>
<%= form.phone_field :guardian_2_phone, wrapper_class: "col-sm-6" %>
</div>
<div class="form-row">
<%= form.text_field :guardian_2_email, wrapper_class: "col-sm-6" %>
</div>
<%= render "shared/address_fields", form: form, subject: "guardian_2" %>
<% end %>
<hr>
<%= card_field_set_tag t(".guardian_2_photo.heading") do %>
<div class="alert alert-warning font-weight-bold"><%= t ".guardian_2_photo.instructions" %></div>
<div class="text-center">
<div class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-2-photo-input]">
<div class="align-items-center d-flex photo-preview img-thumbnail justify-content-center">
<span><%= t ".photo.no_photo" %></span>
</div>
</div>
<div class="d-inline-block text-left">
<% if @medical_release.guardian_2_photo.attached? %>
<%= javascript_tag nonce: true do %>
App.PhotoPreview.set("[data-behavior=guardian-photo-preview]", "<%= url_for(@medical_release.guardian_2_photo.variant(auto_orient: true, resize: '200x200')) %>");
<% end %>
<% end %>
<div class="hidden-file-input">
<%= form.hidden_field :guardian_2_photo, value: form.object.guardian_2_photo.signed_id if @medical_release.guardian_2_photo.attached? %>
<%= form.file_field :guardian_2_photo, hide_label: true, data: { ujs_target: "guardian-2-photo-input" }, accept: @medical_release.class.face_photo_acceptable_content_types.join(","), direct_upload: true %>
</div>
<%= button_tag t(".photo.take_photo"), type: "button", class: "btn btn-lg btn-primary take-photo-button", data: { behavior: "take-guardian-2-photo" } %>
</div>
<p class="p-2 font-weight-bold">
<%= fa_icon "arrow-up", text: t(".photo.camera_instructions_html") %><br>
<small class="text-muted"><%= t ".photo.warning" %></small>
</p>
</div>
<% end %>
<hr>
</div>
<% end %>
<%= card_field_set_tag t(".signature.heading") do %>
<%= render "shared/signature_fields", form: form %>
<% end %>

View File

@@ -123,9 +123,15 @@ en:
form:
contract_and_rights:
heading: 2 of 3 Contract & Exploitable Rights
guardian_2_info:
heading: Second Guardian Information (if company requires)
guardian_info:
heading: Guardian Information
person_details:
heading: 1 of 3 Person Details
photos:
guardian_2_photo:
heading: Second Guardian Photo
guardian_photo:
heading: Guardian Photo
heading: 3 of 3 Photo
@@ -240,6 +246,8 @@ en:
new:
heading: New Release Template
contracts:
medical_questionnaire:
heading: Medical Questionnaire
photos:
guardian_2_photo_heading: Second guardian photo
guardian_photo_heading: Guardian photo
@@ -309,6 +317,9 @@ en:
notice: The release has been updated
helpers:
help:
contract_template:
fee: Leave at $0.00 for no-fee
guardian_clause: Leave blank if not required for this contract
video:
audio_only_edl_file: If you do not upload an Audio Only EDL, the software will not generate a BiG Music Cue Sheet.
edl_file: Please follow our directions on exporting the All Tracks EDL. Failure to do so could result in inaccurate and incomplete reporting.
@@ -397,6 +408,40 @@ en:
person_name: Name
person_phone: Phone number
person_title: Title
medical_release:
guardian_2_address_city: Guardian 2 city
guardian_2_address_country: Guardian 2 country
guardian_2_address_state: Guardian 2 state
guardian_2_address_street1: Guardian 2 address
guardian_2_address_street2: Guardian 2 address (Line 2)
guardian_2_address_zip: Guardian 2 zip code
guardian_2_email: Guardian 2 email
guardian_2_first_name: Guardian 2 first name
guardian_2_last_name: Guardian 2 last name
guardian_2_phone: Guardian 2 phone
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
guardian_email: Guardian email
guardian_first_name: Guardian first name
guardian_last_name: Guardian last name
guardian_phone: Guardian phone
minor: Is the person a minor?
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
music_release:
person_address: Address
person_address_city: City
@@ -664,7 +709,7 @@ en:
destroy:
alert: The misc release has been deleted
index:
actions:
actions:
search: Search
empty: Misc Releases will appear here
table_headers:
@@ -902,6 +947,20 @@ en:
notice: Your release has been signed. Thank you!
new:
cancel: Cancel
guardian_2_info:
heading: Second Guardian Information (if company requires)
guardian_2_photo:
heading: Second Guardian Photo
instructions: >
Lastly, it's time for second guardian to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese!
guardian_clause:
heading: Guardian Clause
guardian_info:
heading: Guardian Information
guardian_photo:
heading: Guardian Photo
instructions: >
Lastly, it's time for guardian to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese!
instructions_html: >
Below is the medical release form. After scrolling down and reading the medical release form, please enter your personal information, take a photo, and press the "Submit Release" button.
legal:
@@ -910,13 +969,17 @@ en:
heading: Personal Information
instructions: Now, enter your personal information.
photo:
camera_instructions_html: Click <em>Take Photo</em> to Turn ON Camera
heading: Photos
no_photo: No photo yet
take_photo: Take Photo
warning: If your photo appears sideways, it will be autocorrected when you submit your release.
questionnaire:
heading: Questionnaire
signature:
heading: Signature
misc_releases:
create:
create:
notice: Your release has been signed. Thank you!
new:
cancel: Cancel

View File

@@ -28,7 +28,13 @@ es:
matching_started: Matching started (ES)
no_attachments: Failed to import - no attachments (ES)
form:
guardian_2_info:
heading: Second Guardian Information (if company requires) (ES)
guardian_info:
heading: Guardian Information (ES)
photos:
guardian_2_photo:
heading: Second Guardian Photo (ES)
guardian_photo:
heading: Guardian Photo (ES)
person_photo:
@@ -114,18 +120,22 @@ es:
errors_helper:
failure_message: "Los siguientes errores han impedido que se presente este %{model_name}:"
helpers:
help:
contract_template:
fee: Leave at $0.00 for no-fee (ES)
guardian_clause: Leave blank if not required for this contract (ES)
label:
appearance_release:
guardian_2_address_city: Second guardian city (ES)
guardian_2_address_country: Second guardian country (ES)
guardian_2_address_state: Second guardian state (ES)
guardian_2_address_street1: Second guardian address (ES)
guardian_2_address_street2: Second guardian address (Line 2) (ES)
guardian_2_address_zip: Second guardian zip code (ES)
guardian_2_email: Second guardian email (ES)
guardian_2_first_name: Second guardian first name (ES)
guardian_2_last_name: Second guardian last name (ES)
guardian_2_phone: Second guardian phone (ES)
guardian_2_address_city: Guardian 2 city (ES)
guardian_2_address_country: Guardian 2 country (ES)
guardian_2_address_state: Guardian 2 state (ES)
guardian_2_address_street1: Guardian 2 address (ES)
guardian_2_address_street2: Guardian 2 address (Line 2) (ES)
guardian_2_address_zip: Guardian 2 zip code (ES)
guardian_2_email: Guardian 2 email (ES)
guardian_2_first_name: Guardian 2 first name (ES)
guardian_2_last_name: Guardian 2 last name (ES)
guardian_2_phone: Guardian 2 phone (ES)
guardian_address_city: Guardian city (ES)
guardian_address_country: Guardian country (ES)
guardian_address_state: Guardian state (ES)
@@ -143,6 +153,40 @@ es:
person_email: Dirección de correo electrónico
person_name: Nómbre
person_phone: Número de teléfono
medical_release:
guardian_2_address_city: Guardian 2 city (ES)
guardian_2_address_country: Guardian 2 country (ES)
guardian_2_address_state: Guardian 2 state (ES)
guardian_2_address_street1: Guardian 2 address (ES)
guardian_2_address_street2: Guardian 2 address (Line 2) (ES)
guardian_2_address_zip: Guardian 2 zip code (ES)
guardian_2_email: Guardian 2 email (ES)
guardian_2_first_name: ""
guardian_2_last_name: ""
guardian_2_phone: ""
guardian_address_city: Guardian City (ES)
guardian_address_country: Guardian country (ES)
guardian_address_state: Guardian State (ES)
guardian_address_street1: Guardian address (ES)
guardian_address_street2: Guardian address (line 2) (ES)
guardian_address_zip: Guardian ZIP (ES)
guardian_email: Guardian email (ES)
guardian_first_name: Guardian First name (ES)
guardian_last_name: Guardian Last name (ES)
guardian_phone: Guardian Phone (ES)
minor: El firmante es un menor
person_address_city: Person City (ES)
person_address_country: Country (ES)
person_address_state: Person State (ES)
person_address_street1: Person Address (ES)
person_address_street2: Person Address (line 2) (ES)
person_address_zip: Person ZIP (ES)
person_date_of_birth: Date of birth (ES)
person_email: Email address (ES)
person_first_name: First name (ES)
person_last_name: Last name (ES)
person_name: Name (ES)
person_phone: Phone number (ES)
project:
client_name: Nómbre del cliente del proyecto
description: Descripción del proyecto
@@ -179,7 +223,7 @@ es:
new:
cancel: Cancelar
guardian_2_info:
heading: Second Guardian Information (ES)
heading: Second Guardian Information (if company requires) (ES)
guardian_2_photo:
heading: Second Guardian Photo (ES)
instructions: >
@@ -214,6 +258,27 @@ es:
new:
photo:
heading: Photos (ES)
medical_releases:
new:
guardian_2_info:
heading: Second Guardian Information (if company requires) (ES)
guardian_2_photo:
heading: Second Guardian Photo (ES)
instructions: >
(ES) Lastly, it's time for second guardian to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese! (ES)
guardian_clause:
heading: Guardian Clause (ES)
guardian_info:
heading: Gurdian Information (ES)
guardian_photo:
heading: Guardian Photo (ES)
instructions: >
(ES) Lastly, it's time for guardian to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese! (ES)
photo:
camera_instructions_html: Haga clic en <em>Take Photo</em> para encender la cámara
no_photo: No hay foto todavía
take_photo: Take Photo (ES)
warning: Si su foto aparece de lado, se corregirá automáticamente cuando actualizar la autorización
talent_releases:
new:
guardian_clause:

View File

@@ -0,0 +1,25 @@
class AddGuardiansFieldsToMedicalReleases < ActiveRecord::Migration[6.0]
def change
add_column :medical_releases, :minor, :boolean, default: false
add_column :medical_releases, :guardian_first_name, :string
add_column :medical_releases, :guardian_last_name, :string
add_column :medical_releases, :guardian_email, :string
add_column :medical_releases, :guardian_phone, :string
add_column :medical_releases, :guardian_address_street1, :string
add_column :medical_releases, :guardian_address_street2, :string
add_column :medical_releases, :guardian_address_city, :string
add_column :medical_releases, :guardian_address_state, :string
add_column :medical_releases, :guardian_address_zip, :string
add_column :medical_releases, :guardian_address_country, :string
add_column :medical_releases, :guardian_2_first_name, :string
add_column :medical_releases, :guardian_2_last_name, :string
add_column :medical_releases, :guardian_2_email, :string
add_column :medical_releases, :guardian_2_phone, :string
add_column :medical_releases, :guardian_2_address_street1, :string
add_column :medical_releases, :guardian_2_address_street2, :string
add_column :medical_releases, :guardian_2_address_city, :string
add_column :medical_releases, :guardian_2_address_state, :string
add_column :medical_releases, :guardian_2_address_zip, :string
add_column :medical_releases, :guardian_2_address_country, :string
end
end

View File

@@ -9,6 +9,20 @@ SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
--
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: -
--
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
--
-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: -
--
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
--
-- Name: fuzzystrmatch; Type: EXTENSION; Schema: -; Owner: -
--
@@ -290,7 +304,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_street1 character varying,
person_address_old character varying,
person_phone character varying,
project_id bigint,
created_at timestamp without time zone NOT NULL,
@@ -319,6 +333,7 @@ CREATE TABLE public.appearance_releases (
guardian_last_name character varying,
identifier character varying,
guardian_email character varying,
person_address_street1 character varying,
person_address_street2 character varying,
person_address_city character varying,
person_address_state character varying,
@@ -1024,7 +1039,28 @@ CREATE TABLE public.medical_releases (
question_12_answer text,
question_13_answer text,
question_14_answer text,
question_15_answer text
question_15_answer text,
minor boolean DEFAULT false,
guardian_first_name character varying,
guardian_last_name character varying,
guardian_email character varying,
guardian_phone character varying,
guardian_address_street1 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,
guardian_2_first_name character varying,
guardian_2_last_name character varying,
guardian_2_email character varying,
guardian_2_phone character varying,
guardian_2_address_street1 character varying,
guardian_2_address_street2 character varying,
guardian_2_address_city character varying,
guardian_2_address_state character varying,
guardian_2_address_zip character varying,
guardian_2_address_country character varying
);
@@ -1357,7 +1393,6 @@ CREATE TABLE public.settings (
--
CREATE SEQUENCE public.settings_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
@@ -1393,7 +1428,6 @@ CREATE TABLE public.taggings (
--
CREATE SEQUENCE public.taggings_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
@@ -1424,7 +1458,6 @@ CREATE TABLE public.tags (
--
CREATE SEQUENCE public.tags_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
@@ -3787,9 +3820,11 @@ INSERT INTO "schema_migrations" (version) VALUES
('20200612121539'),
('20200615131722'),
('20200615133602'),
('20200615140920'),
('20200616124214'),
('20200619081446'),
('20200619085823'),
('20200619134853');
('20200619134853'),
('20200622180507');

View File

@@ -16,6 +16,7 @@ FactoryBot.define do
appearance_release: true,
location_release: true,
material_release: true,
medical_release: true,
music_release: true,
talent_release: true,
video_analysis: true,

View File

@@ -28,6 +28,18 @@ RSpec.feature 'User manages contract templates', type: :feature do
expect(page).to have_content('The release template has been created')
end
scenario 'medical release template has a guardian clause field' do
visit new_project_contract_template_path(project)
fill_in 'Name', with: 'My Release Template'
select 'Medical Release', from: 'Release type'
fill_hidden guardian_clause_field, with: 'Guardian clause text'
click_on 'Create Release Template'
expect(page).to have_content('The release template has been created')
expect(ContractTemplate.last.guardian_clause.body.to_s).to match /Guardian clause text/
end
scenario 'preview new talent release template without guardian clause' do
visit new_project_contract_template_path(project)
select 'Talent Release', from: 'Release type'

View File

@@ -20,6 +20,17 @@ feature "User managing acquired_media releases" do
by "filling out the form" do
fill_in acquired_media_name_field, with: "Jane Doe"
acquired_media_category_fields
fill_in acquried_media_description_field, with: "Description"
fill_in acquried_media_owner_first_name, with: "Jane"
fill_in acquried_media_owner_last_name, with: "Doe"
fill_in acquired_media_person_title, with: "Ms."
fill_in acquired_media_person_phone, with: "555-5555-5555"
fill_in acquired_media_person_email, with: "person@example.com"
fill_in acquired_media_person_fax, with: "FAX"
fill_in acquired_media_person_address_street_1, with: "Street 1"
fill_in acquired_media_person_address_city, with: "City"
fill_in acquired_media_person_address_state, with: "State"
fill_in acquired_media_release_person_address_zip, with: "ZIP"
draw_signature file_fixture("signature.png"), "acquired_media_release_signature_base64"
end
@@ -220,6 +231,50 @@ feature "User managing acquired_media releases" do
"acquired_media_release[name]"
end
def acquried_media_description_field
"acquired_media_release[description]"
end
def acquried_media_owner_first_name
"acquired_media_release[person_first_name]"
end
def acquried_media_owner_last_name
"acquired_media_release[person_last_name]"
end
def acquired_media_person_title
"acquired_media_release[person_title]"
end
def acquired_media_person_phone
"acquired_media_release[person_phone]"
end
def acquired_media_person_email
"acquired_media_release[person_email]"
end
def acquired_media_person_fax
"acquired_media_release[person_fax]"
end
def acquired_media_person_address_street_1
"acquired_media_release[person_address_street1]"
end
def acquired_media_person_address_city
"acquired_media_release[person_address_city]"
end
def acquired_media_person_address_state
"acquired_media_release[person_address_state]"
end
def acquired_media_release_person_address_zip
"acquired_media_release[person_address_zip]"
end
def acquired_media_category_fields
find(:css, "#acquired_media_release_categories_video_footage").set(true)
find(:css, "#acquired_media_release_categories_still_photograph").set(true)

View File

@@ -194,6 +194,28 @@ feature 'User managing appearance releases' do
expect(page).to have_content 'New Jane'
end
scenario 'user can enter information for second guardian when editing non native release for minor', js: true do
appearance_release = create(:appearance_release, :non_native, :minor, project: project)
visit edit_appearance_release_path(appearance_release)
expect(page).to have_content guardian_2_first_name_field.titleize
expect(page).to have_content guardian_2_photo_heading
fill_in guardian_first_name_field, with: 'Guardian'
fill_in guardian_last_name_field, with: 'Name'
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
fill_in guardian_2_first_name_field, with: 'Second'
fill_in guardian_2_last_name_field, with: 'guardian'
attach_file guardian_2_photo_field, file_fixture('person_photo.png'), visible: :all
click_button submit_update_button
expect(page).to have_content successful_update_message
expect(AppearanceRelease.last.guardian_2_photo.attached?).to eq true
end
scenario 'progress bar shows when user imports a release', js: true do
visit project_appearance_releases_path(project)
@@ -557,6 +579,10 @@ feature 'User managing appearance releases' do
'appearance_release[guardian_photo]'
end
def guardian_2_photo_field
'appearance_release[guardian_2_photo]'
end
def person_name_field
t('helpers.label.appearance_release.person_name')
end
@@ -662,4 +688,12 @@ feature 'User managing appearance releases' do
def successful_destroy_message
'The release has been deleted'
end
def guardian_photo_heading
t 'appearance_releases.form.photos.guardian_photo.heading'
end
def guardian_2_photo_heading
t 'appearance_releases.form.photos.guardian_2_photo.heading'
end
end

View File

@@ -54,6 +54,46 @@ feature "User managing broadcasts" do
expect(page).to have_content(recording.download_file_name)
end
scenario "user can go back and forth between live session and previous sessions", js: true do
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
recording = create(:broadcast_recording, broadcast: broadcast)
visit project_broadcast_path(project, broadcast)
expect(page).to have_content broadcast.name.titleize, count: 1
expect(page).to have_content recording.download_file_name, count: 0
click_on switch_view_dropdown
expect(page).to have_content broadcast.name.titleize, count: 2
expect(page).to have_content recording.download_file_name, count: 1
live_stream_nav_item = page.find(".dropdown-item", text: broadcast.name.titleize)
recording_nav_item = page.find(".dropdown-item", text: recording.download_file_name)
expect(live_stream_nav_item[:class].include?("active")).to eq true
expect(recording_nav_item[:class].include?("active")).to eq false
click_on recording.download_file_name
expect(page).to have_content broadcast.name.titleize, count: 1
expect(page).to have_content recording.download_file_name, count: 0
expect(live_stream_nav_item[:class].include?("active")).to eq false
expect(recording_nav_item[:class].include?("active")).to eq true
click_on switch_view_dropdown
click_on broadcast.name.titleize
expect(page).to have_content broadcast.name.titleize, count: 1
expect(page).to have_content recording.download_file_name, count: 0
# Page is reloaded, we need to get dropdown items again
live_stream_nav_item = page.find(".dropdown-item", text: broadcast.name.titleize, visible: :all)
recording_nav_item = page.find(".dropdown-item", text: recording.download_file_name, visible: :all)
expect(live_stream_nav_item[:class].include?("active")).to eq true
expect(recording_nav_item[:class].include?("active")).to eq false
end
scenario "form will not submit if user clicks Add files without selected files", js: true do
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
@@ -74,9 +114,9 @@ feature "User managing broadcasts" do
new_window = window_opened_by { click_link "Multi-View" }
within_window new_window do
expect(page).to have_content("Switch View")
expect(page).to have_content switch_view_dropdown
click_on "Switch View"
click_on switch_view_dropdown
expect(page).to have_link("Broadcast 1")
expect(page).to have_link("Broadcast 2")
@@ -106,4 +146,8 @@ feature "User managing broadcasts" do
all('input[type="checkbox"]')[0].click
all('input[type="checkbox"]')[1].click
end
def switch_view_dropdown
"Switch View"
end
end

View File

@@ -19,11 +19,20 @@ feature "User managing location releases" do
by "filling out the form" do
fill_in location_name_field, with: "Benny's Burritos"
fill_in location_address_street_1, with: "Location's street address"
fill_in location_address_city, with: "Location's city"
fill_in location_address_state, with: "Location's state"
fill_in location_address_zip, with: "Location's zip"
fill_in person_first_name_field, with: "Jane"
fill_in person_last_name_field, with: "Doe"
fill_in person_phone_field, with: "555-555-5555"
fill_in person_email_field, with: "jane.doe@test.com"
fill_in person_company_field, with: "BIG"
fill_in person_title_field, with: "Ms."
fill_in person_address_street1_field, with: "100 Broadway"
fill_in person_address_city, with: "Person's City"
fill_in person_address_state, with: "Person's State"
fill_in person_address_zip, with: "Person's Zip"
fill_in filming_hours_field, with: "04:00 - 22:00"
draw_signature file_fixture("signature.png"), "location_release_signature_base64"
end
@@ -39,11 +48,20 @@ feature "User managing location releases" do
visit new_account_project_contract_template_location_release_path(project.account, project, contract_template)
fill_in location_name_field, with: "Benny's Burritos"
fill_in location_address_street_1, with: "Location's street address"
fill_in location_address_city, with: "Location's city"
fill_in location_address_state, with: "Location's state"
fill_in location_address_zip, with: "Location's zip"
fill_in person_first_name_field, with: "Jane"
fill_in person_last_name_field, with: "Doe"
fill_in person_phone_field, with: "555-555-5555"
fill_in person_email_field, with: "jane.doe@test.com"
fill_in person_company_field, with: "BIG"
fill_in person_title_field, with: "Ms."
fill_in person_address_street1_field, with: "100 Broadway"
fill_in person_address_city, with: "Person's City"
fill_in person_address_state, with: "Person's State"
fill_in person_address_zip, with: "Person's Zip"
fill_in filming_hours_field, with: "04:00 - 22:00"
draw_signature file_fixture("signature.png"), "location_release_signature_base64"
@@ -235,6 +253,22 @@ feature "User managing location releases" do
"location_release[name]"
end
def location_address_street_1
"location_release[address_street1]"
end
def location_address_city
"location_release[address_city]"
end
def location_address_state
"location_release[address_state]"
end
def location_address_zip
"location_release[address_zip]"
end
def contract_field
"location_release[contract]"
end
@@ -247,18 +281,38 @@ feature "User managing location releases" do
"location_release[person_last_name]"
end
def person_email_field
"location_release[person_email]"
end
def person_address_street1_field
"location_release[person_address_street1]"
end
def person_address_city
"location_release[person_address_city]"
end
def person_address_state
"location_release[person_address_state]"
end
def person_address_zip
"location_release[person_address_zip]"
end
def person_phone_field
"location_release[person_phone]"
end
def person_email_field
"location_release[person_email]"
end
def person_company_field
"location_release[person_company]"
end
def person_title_field
"location_release[person_title]"
end
def filming_hours_field
"location_release[filming_hours]"
end

View File

@@ -4,6 +4,125 @@ feature "User managing medical releases" do
let(:current_user) { create(:user) }
let(:project) { create(:project, members: current_user, account: current_user.primary_account) }
context "when signed out" do
scenario 'creating a release for an adult', js: true do
allow(BrayniacAI::Validation).to receive(:create).and_return(double(:validation, valid: true))
project = create(:project, members: current_user, account: current_user.primary_account)
contract_template = create(:contract_template, project: project)
visit new_account_project_contract_template_medical_release_path(project.account, project, contract_template)
fill_in person_first_name_field, with: 'Jane'
fill_in person_last_name_field, with: 'Doe'
fill_in_person_address_fields
fill_in person_phone_field, with: '555-555-5555'
fill_in person_email_field, with: 'jane.doe@test.com'
drop_file Rails.root.join(file_fixture("person_photo.png")), type: :dropzone
draw_signature file_fixture("signature.png"), "medical_release_signature_base64"
expect do
click_button submit_release_button
end.to change(MedicalRelease, :count).by(1)
expect(page).to have_content(successful_submission_message)
end
scenario 'creating a release for a minor', js: true do
allow(BrayniacAI::Validation).to receive(:create).and_return(double(:validation, valid: true))
project = create(:project, members: current_user, account: current_user.primary_account)
contract_template = create(:contract_template, project: project)
visit new_account_project_contract_template_medical_release_path(project.account, project, contract_template)
expect(page).not_to have_content guardian_information_heading.upcase
expect(page).not_to have_content guardian_photo_heading.upcase
page.check person_is_minor_checkbox
expect(page).to have_content guardian_information_heading.upcase
expect(page).to have_content guardian_photo_heading.upcase
expect(page).to have_content guardian_email_field.titleize
fill_in guardian_first_name_field, with: 'Guardian'
fill_in guardian_last_name_field, with: 'Name'
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_fields
fill_in person_phone_field, with: '555-555-5555'
fill_in person_email_field, with: 'jane.doe@test.com'
drop_file Rails.root.join(file_fixture("person_photo.png")), type: :dropzone
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
draw_signature file_fixture('signature.png'), 'medical_release_signature_base64'
fill_in guardian_email_field, with: 'invalid@email'
click_button submit_release_button
expect(page).to have_content email_validation_error_for('Guardian')
fill_in guardian_email_field, with: 'valid@email.com'
fill_in_guardian_address_fields
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
draw_signature file_fixture('signature.png'), 'medical_release_signature_base64'
click_button submit_release_button
expect(page).to have_content(successful_submission_message)
end
scenario 'creating a release for a minor with two guardians', js: true do
allow(BrayniacAI::Validation).to receive(:create).and_return(double(:validation, valid: true))
project = create(:project, members: current_user, account: current_user.primary_account)
contract_template = create(:contract_template, project: project)
visit new_account_project_contract_template_medical_release_path(project.account, project, contract_template)
expect(page).not_to have_content guardian_2_information_heading.upcase
expect(page).not_to have_content guardian_2_photo_heading.upcase
page.check person_is_minor_checkbox
expect(page).to have_content guardian_information_heading.upcase
expect(page).to have_content guardian_photo_heading.upcase
expect(page).to have_content guardian_email_field.titleize
expect(page).to have_content guardian_2_information_heading.upcase
expect(page).to have_content guardian_2_photo_heading.upcase
expect(page).to have_content guardian_2_email_field.titleize
expect(page).to have_content guardian_2_phone_field.titleize
expect(page).to have_content guardian_2_address_street1_field.titleize
fill_in guardian_first_name_field, with: 'Guardian'
fill_in guardian_last_name_field, with: 'Name'
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_fields
fill_in person_phone_field, with: '555-555-5555'
fill_in person_email_field, with: 'jane.doe@test.com'
drop_file Rails.root.join(file_fixture("person_photo.png")), type: :dropzone
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
draw_signature file_fixture('signature.png'), 'medical_release_signature_base64'
fill_in guardian_email_field, with: 'invalid@email'
click_button submit_release_button
expect(page).to have_content email_validation_error_for('Guardian')
fill_in guardian_email_field, with: 'valid@email.com'
fill_in_guardian_address_fields
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
draw_signature file_fixture('signature.png'), 'medical_release_signature_base64'
fill_in guardian_2_first_name_field, with: 'Second'
fill_in guardian_2_last_name_field, with: 'Guardian'
fill_in guardian_2_phone_field, with: '999'
click_button submit_release_button
expect(page).to have_content(successful_submission_message)
expect(MedicalRelease.last.guardian_2_first_name).to eq 'Second'
end
end
context "when signed in as account manager" do
before do
sign_in current_user
@@ -142,4 +261,139 @@ feature "User managing medical releases" do
def view_release_pdf_link_for(release)
['Download', href: medical_release_contracts_path(release, format: 'pdf')]
end
def person_first_name_field
"medical_release[person_first_name]"
end
def person_last_name_field
"medical_release[person_last_name]"
end
def person_email_field
"medical_release[person_email]"
end
def person_phone_field
"medical_release[person_phone]"
end
def submit_release_button
t 'shared.submit_release_short'
end
def successful_submission_message
"Your release was successfully submitted. Thank you."
end
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.medical_release.person_address_street1')
end
def person_address_city_field
t('helpers.label.medical_release.person_address_city')
end
def person_address_state_field
t('helpers.label.medical_release.person_address_state')
end
def person_address_zip_field
t('helpers.label.medical_release.person_address_zip')
end
def guardian_first_name_field
t('helpers.label.medical_release.guardian_first_name')
end
def guardian_last_name_field
t('helpers.label.medical_release.guardian_last_name')
end
def guardian_phone_field
t('helpers.label.medical_release.guardian_phone')
end
def guardian_email_field
t('helpers.label.medical_release.guardian_email')
end
def guardian_address_street1_field
t('helpers.label.medical_release.guardian_address_street1')
end
def guardian_address_city_field
t('helpers.label.medical_release.guardian_address_city')
end
def guardian_address_state_field
t('helpers.label.medical_release.guardian_address_state')
end
def guardian_address_zip_field
t('helpers.label.medical_release.guardian_address_zip')
end
def guardian_photo_field
'medical_release[guardian_photo]'
end
def person_is_minor_checkbox
'medical_release_minor'
end
def guardian_2_first_name_field
t('helpers.label.medical_release.guardian_2_first_name')
end
def guardian_2_last_name_field
t('helpers.label.medical_release.guardian_2_last_name')
end
def guardian_2_phone_field
t('helpers.label.medical_release.guardian_2_phone')
end
def guardian_2_email_field
t('helpers.label.medical_release.guardian_2_email')
end
def guardian_2_address_street1_field
t('helpers.label.medical_release.guardian_2_address_street1')
end
def email_validation_error_for(prefix)
"#{prefix} email is not an email"
end
def guardian_photo_heading
t 'public.medical_releases.new.guardian_photo.heading'
end
def guardian_information_heading
t 'public.medical_releases.new.guardian_info.heading'
end
def guardian_2_photo_heading
t 'public.medical_releases.new.guardian_2_photo.heading'
end
def guardian_2_information_heading
t 'public.medical_releases.new.guardian_2_info.heading'
end
end