Compare commits

..

2 Commits

Author SHA1 Message Date
Bilal
cc30262811 add splash page for directME 2020-07-01 12:58:03 +02:00
Bilal
252501f789 rebase; sort translations 2020-07-01 12:18:24 +02:00
113 changed files with 202 additions and 3155 deletions

View File

@@ -1,13 +0,0 @@
$(document).on("turbolinks:load", function() {
$("[data-behavior=update-required-status]").click(function(e) {
const required = !!($(this)[0] && $(this)[0].checked);
$("[data-required-tag=guardian]").each(function(index, element) {
const labelForField = element.previousSibling;
element.required = required;
labelForField.classList.add("required");
});
});
});

View File

@@ -11,7 +11,6 @@ $body-color: #4A4A4A;
$primary: #6F89FF;
$blue: #0092ff;
$red: #F9002B;
$dark-red: #CE004A;
$green: #51B61B;
$teal: #32C498;
$purple: #5139EE;

View File

@@ -69,13 +69,6 @@ label {
}
}
&.cast-me {
span:last-child {
background-color: $dark-red;
color: $white;
}
}
&.disabled {
span:last-child {
background-color: $gray-500 !important;

View File

@@ -17,7 +17,7 @@ class AccountsController < ApplicationController
if sign_in(user)
TrackAnalyticsJob.perform_later(user, user.primary_account, :track_guest_sign_up, user_agent: request.user_agent, user_ip: request.remote_ip)
SubmitHubspotFormJob.perform_later(first_name: user.first_name, last_name: user.last_name, email: user.email, company: account.name, i_m_interested_in: user.interested_product_name, form_guid: ENV["HUBSPOT_FORM_GUID"])
SubmitHubspotFormJob.perform_later(user.first_name, user.last_name, user.email, account.name, i_m_interested_in: user.interested_product_name)
redirect_to signed_in_root_path
else
redirect_to new_session_path, alert: t(".notice")

View File

@@ -1,61 +0,0 @@
class Admin::CastingSubmissionsController < Admin::ApplicationController
before_action :set_casting_submission, only: [:edit, :update, :show, :complete]
before_action :build_casting_submission, only: [:new, :create]
before_action :set_accounts, only: %i[new create edit]
def index
@casting_submissions = casting_submissions.order_by_recent.paginate(page: params[:page])
end
def create
@casting_submission.attributes = casting_submission_params
if @casting_submission.save
redirect_to [:admin, :casting_submissions], notice: t(".notice")
else
render :new
end
end
def update
if @casting_submission.update(casting_submission_params)
redirect_to [:admin, :casting_submissions], notice: t(".notice")
else
render :edit
end
end
def complete
if @casting_submission.update(interviewed_at: Time.zone.now)
redirect_to [:admin, :casting_submissions], notice: t(".notice")
else
redirect_to [:admin, :casting_submissions], notice: t(".alert")
end
end
private
def set_accounts
@accounts = accounts
end
def casting_submission_params
params.require(:casting_submission).permit(:casting_call_id, :performer_name, :interview_date, :zoom_meeting_url, :interview_recording)
end
def casting_submissions
policy_scope CastingSubmission
end
def set_casting_submission
@casting_submission = authorize policy_scope(CastingSubmission).find(params[:id])
end
def accounts
policy_scope Account
end
def build_casting_submission
@casting_submission = authorize policy_scope(CastingSubmission).build
end
end

View File

@@ -17,9 +17,7 @@ class Api::ApiController < ActionController::Base
def return_error(exception)
raise exception if Rails.env.test?
Raven.capture_exception(exception)
logger.error "==Handled======"
logger.error "==Handled======="
logger.error exception.message
logger.error exception.backtrace.join("\n")
logger.error "==Handled======="

View File

@@ -5,8 +5,6 @@ class Api::UserTokenController < Knock::AuthTokenController
# Catch exception and return JSON-formatted error
def return_error(exception)
Raven.capture_exception(exception)
logger.error "==Handled======="
logger.error exception.message
logger.error exception.backtrace.join("\n")

View File

@@ -1,75 +0,0 @@
class CastingCallsController < ApplicationController
layout "project"
before_action :set_project
before_action :build_casting_call, only: [:new, :create]
before_action :set_casting_call, only: [:show, :edit, :update, :cancel]
def index
@casting_calls = casting_calls.order_by_recent.paginate(page: params[:page])
end
def new
end
def create
@casting_call.attributes = casting_call_params_with_email
if @casting_call.save
log_create_analytics
redirect_to [@project, :casting_calls], notice: t(".notice")
else
render :new
end
end
def show
render layout: 'application'
end
def edit
end
def update
if @casting_call.update(casting_call_params)
redirect_to [@project, :casting_calls], notice: t(".notice")
else
render :edit
end
end
def cancel
@casting_call.update(cancelled_at: Time.zone.now)
redirect_to [@project, :casting_calls], notice: t(".notice")
end
private
def casting_call_params
params.require(:casting_call).permit(:title, :description, :project_description, :interview_instructions, :interview_requirements, :questions)
end
def casting_call_params_with_email
casting_call_params.merge(user_email: Current.user.email)
end
def set_project
@project = policy_scope(Project).find(params[:project_id])
end
def set_casting_call
@casting_call = authorize casting_calls.find(params[:id])
end
def casting_calls
authorize policy_scope(@project.casting_calls)
end
def build_casting_call
@casting_call = authorize @project.casting_calls.build
end
def log_create_analytics
TrackAnalyticsJob.perform_later(Current.user, Current.account, :track_create_casting_call, user_agent: request.user_agent, user_ip: request.remote_ip)
end
end

View File

@@ -1,30 +0,0 @@
class CastingSubmissionDownloadsController < ApplicationController
include ProjectContext
before_action :set_project, only: [:create]
before_action :set_casting_submission, only: :create
include ProjectLayout
def create
download = @project.downloads.create!(name: @casting_submission.zip_file_name, release_type: "CastingSubmission")
other_downloads_in_progress = @project.downloads.unfinished_desc_order.offset(1)
if other_downloads_in_progress.any?
in_progress_downloads_details = render_to_string "_other_pending_downloads", locals: { downloads: other_downloads_in_progress, release_type: "CastingSubmission" }, :layout => false
ProjectsChannel.broadcast_download_generation_update(download, in_progress_downloads_details)
else
ProjectsChannel.broadcast_download_generation_update(download, I18n.t("casting_submission_downloads.download.pending", release_type: "CastingSubmission"))
end
GenerateCastingSubmissionFilesZipJob.perform_later(@project, download, @casting_submission)
end
private
def set_casting_submission
authorize(Download)
@casting_submission = policy_scope(@project.casting_submissions).find(params[:casting_submission_id])
end
end

View File

@@ -1,30 +0,0 @@
class CastingSubmissionsController < ApplicationController
before_action :set_project
before_action :set_casting_submission, only: [:show]
include ProjectLayout
def index
@casting_submissions = casting_submissions.completed.order_by_recent.paginate(page: params[:page])
end
def show
@casting_call = @casting_submission.casting_call
@files = @casting_submission.files.order("created_at DESC").paginate(page: params[:files_page])
render layout: 'application'
end
private
def set_project
@project = policy_scope(Project).find(params[:project_id])
end
def set_casting_submission
@casting_submission = authorize casting_submissions.find(params[:id])
end
def casting_submissions
authorize policy_scope(CastingSubmission)
end
end

View File

@@ -7,7 +7,6 @@ class ContractTemplatesController < ApplicationController
before_action :set_project, except: [:destroy]
before_action :set_contract_template, only: [:destroy]
before_action :show_splash_screen, only: :index
def index
@contract_templates = contract_templates.non_archived.order_by_name.paginate(page: params[:page])
@@ -39,10 +38,6 @@ class ContractTemplatesController < ApplicationController
private
def show_splash_screen
render :splash if contract_templates.non_archived.count.zero?
end
def set_contract_template
@contract_template = authorize contract_templates.find(params[:id])
end

View File

@@ -1,14 +0,0 @@
class Public::CastingCallsController < Public::BaseController
skip_after_action :verify_authorized
before_action :set_casting_call, only: [:show]
def show
render layout: 'application'
end
private
def set_casting_call
@casting_call = CastingCall.find_by_token(params[:token])
end
end

View File

@@ -1,25 +0,0 @@
class Public::CastingSubmissionsController < Public::BaseController
skip_after_action :verify_authorized
before_action :set_casting_submission, only: [:show, :update]
def show
end
def update
if @casting_submission.update(casting_submission_params)
redirect_to casting_submission_url(token: @casting_submission.token), notice: t(".notice")
else
render :show
end
end
private
def set_casting_submission
@casting_submission = CastingSubmission.find_by_token(params[:token])
end
def casting_submission_params
params.require(:casting_submission).permit(files: [])
end
end

View File

@@ -46,7 +46,6 @@ class Public::MiscReleasesController < Public::BaseController
.permit(
person_params,
guardian_params,
questionnaire_params,
:signature_base64,
:locale,
:contract_template,
@@ -86,26 +85,6 @@ class Public::MiscReleasesController < Public::BaseController
]
end
def questionnaire_params
[
:question_1_answer,
:question_2_answer,
:question_3_answer,
:question_4_answer,
:question_5_answer,
:question_6_answer,
:question_7_answer,
:question_8_answer,
:question_9_answer,
:question_10_answer,
:question_11_answer,
:question_12_answer,
:question_13_answer,
:question_14_answer,
:question_15_answer,
]
end
def misc_release_params_with_locale
misc_release_params.merge(locale: I18n.locale)
end

View File

@@ -4,7 +4,6 @@ class TaskRequestsController < ApplicationController
before_action :set_project
before_action :build_task_request, only: [:new, :create]
before_action :set_task_request, only: [:show, :edit, :update, :cancel]
before_action :show_splash_screen, only: :index
def index
@task_requests = task_requests.order_by_recent.paginate(page: params[:page])
@@ -19,7 +18,7 @@ class TaskRequestsController < ApplicationController
if @task_request.save
log_create_analytics
taskme_url = url_for([:admin, @task_request])
SubmitHubspotFormJob.perform_later(email: @task_request.user_email, taskme_url: taskme_url, form_guid: ENV["HUBSPOT_TASK_REQUEST_FORM_GUID"])
SubmitHubspotTaskRequestFormJob.perform_later(@task_request.user_email, taskme_url)
else
render :new
end
@@ -47,10 +46,6 @@ class TaskRequestsController < ApplicationController
private
def show_splash_screen
render :splash if task_requests.count.zero?
end
def task_request_params
params.require(:task_request).permit(:description, :deadline, :time_allowed, :additional_notes, files: [])
end

View File

@@ -3,7 +3,6 @@ class VideosController < ApplicationController
before_action :set_project, only: [:index, :new, :create, :landing]
before_action :set_video, only: [:edit, :update]
before_action :show_splash_screen, only: :index
def landing
authorize Video, :new?
@@ -61,10 +60,6 @@ class VideosController < ApplicationController
private
def show_splash_screen
render :splash if videos.count.zero?
end
def set_project
@project = policy_scope(Project).find(params[:project_id])
end

View File

@@ -1,43 +0,0 @@
class GenerateCastingSubmissionFilesZipJob < ApplicationJob
queue_as :default
include Rails.application.routes.url_helpers
include ActionView::Helpers::UrlHelper
before_perform do |job|
@project = job.arguments.first
@download = job.arguments.second
@casting_submission = job.arguments.third
@download.update!(status: :pending)
end
def perform(project, download, casting_submission)
::CastingSubmissionFilesCollectionService.new(casting_submission.files, @download.name).build do |dir, files|
zipfile_name = "#{dir}/#{@download.name}.zip"
Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile|
files.each do |attachment|
zipfile.add(attachment, File.join("#{dir}/", attachment))
end
end
@download.file.attach(io: File.open(zipfile_name), filename: @download.name)
end
rescue StandardError => e
Raven.extra_context(
message: "Failed to generate download for project (##{project.id})",
release_type: "CastingSubmission"
)
@download.failure!
ProjectsChannel.broadcast_download_generation_update(@download, I18n.t("casting_submission_downloads.download.failure"))
end
after_perform do |job|
if @download.pending? && @download.file.attached?
@download.success!
downloads_folder_link = link_to("Files > Downloads", project_downloads_path(I18n.locale, @project))
download_button = link_to("Download", rails_blob_path(@download.file, disposition: "attachment", only_path: true), class: "btn btn-success", target: :_blank)
ProjectsChannel.broadcast_download_generation_update(@download, I18n.t("casting_submission_downloads.download.success", downloads_folder_link: downloads_folder_link, download_button: download_button, release_type: "Casting Submission"))
end
end
end

View File

@@ -1,11 +1,19 @@
class SubmitHubspotFormJob < ApplicationJob
queue_as :default
def perform(params = {})
return unless params[:form_guid].present?
def perform(first_name, last_name, email, company_name, additional_params = {})
hubspot_form_guid = ENV["HUBSPOT_FORM_GUID"]
return unless hubspot_form_guid.present?
form = Hubspot::Form.new("guid" => params[:form_guid])
is_form_sumitted = form.submit(params.except(:form_guid))
submission_params = {
first_name: first_name,
last_name: last_name,
email: email,
company: company_name
}.merge(additional_params)
form = Hubspot::Form.new("guid" => hubspot_form_guid)
is_form_sumitted = form.submit(submission_params)
raise StandardError.new "Failed to submit the hubspot form data: #{is_form_sumitted}" unless is_form_sumitted
end

View File

@@ -0,0 +1,18 @@
class SubmitHubspotTaskRequestFormJob < ApplicationJob
queue_as :default
def perform(user_email, taskme_url)
hubspot_task_request_form_guid = ENV["HUBSPOT_TASK_REQUEST_FORM_GUID"]
return unless hubspot_task_request_form_guid.present?
submission_params = {
email: user_email,
taskme_url: taskme_url
}
form = Hubspot::Form.new("guid" => hubspot_task_request_form_guid)
is_form_sumitted = form.submit(submission_params)
raise StandardError.new "Failed to submit the task request hubspot form data: #{is_form_sumitted}" unless is_form_sumitted
end
end

View File

@@ -4,8 +4,6 @@ class Account < ApplicationRecord
has_many :account_auths
has_many :users, through: :account_auths
has_many :projects, dependent: :destroy
has_many :casting_calls, through: :projects
has_many :casting_submissions, through: :projects
has_many :videos, through: :projects
has_many :contract_templates, through: :projects
@@ -61,8 +59,6 @@ class Account < ApplicationRecord
MedicalRelease.where(project: projects),
MiscRelease.where(project: projects),
MatchingRequest.where(project: projects),
CastingCall.where(project: projects),
self.casting_submissions,
self
])).sum(:byte_size).to_f
end
@@ -88,11 +84,7 @@ class Account < ApplicationRecord
end
def taskme_enabled?
ENV["TASKME_ENABLED"] && (plan_uid.to_s == "me_suite" || plan_uid.to_s == "taskme")
end
def castme_enabled?
plan_uid.to_s == "me_suite" || plan_uid.to_s == "castme"
plan_uid.to_s == "me_suite" || plan_uid.to_s == "taskme"
end
def plan_name
@@ -105,8 +97,6 @@ class Account < ApplicationRecord
"ReleaseME"
when "taskme"
"TaskME"
when "castme"
"CastME"
when "me_suite"
"ME Suite"
end

View File

@@ -1,18 +0,0 @@
class CastingCall < ApplicationRecord
belongs_to :project
has_many :casting_submissions, dependent: :destroy
has_secure_token
def status
if cancelled?
"Cancelled"
else
"Active"
end
end
def cancelled?
self.cancelled_at.present?
end
end

View File

@@ -1,15 +0,0 @@
class CastingSubmission < ApplicationRecord
belongs_to :casting_call
has_many_attached :files
has_one_attached :interview_recording
has_secure_token
validates :performer_name, presence: true
scope :completed, -> { where.not(interviewed_at: nil) }
def zip_file_name
"#{self.casting_call.title.parameterize}_#{self.performer_name.parameterize}_#{Time.now.strftime('%Y-%m-%d_%H-%M-%S')}"
end
end

View File

@@ -5,8 +5,6 @@ class ContractTemplate < ApplicationRecord
include Syncable
include PgSearch
NUMBER_OF_CUSTOM_FIELDS = 15
belongs_to :project
belongs_to :parent, class_name: 'ContractTemplate', optional: true
has_many :duplicates, class_name: 'ContractTemplate', foreign_key: 'parent_id'
@@ -61,8 +59,4 @@ class ContractTemplate < ApplicationRecord
def archive
update(archived_at: Time.zone.now)
end
def has_questionnaire?
(1..NUMBER_OF_CUSTOM_FIELDS).any? { |n| public_send("question_#{n}_text").presence }
end
end

View File

@@ -14,37 +14,15 @@ class MedicalRelease < ApplicationRecord
NUMBER_OF_CUSTOM_FIELDS = 15
composed_of :person_address,
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]
]
composed_of :guardian_2_address,
class_name: 'Address',
mapping: [
%w[guardian_2_address_street1 street1],
%w[guardian_2_address_street2 street2],
%w[guardian_2_address_city city],
%w[guardian_2_address_state state],
%w[guardian_2_address_zip zip],
%w[guardian_2_address_country country]
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)
]
def self.face_photo_acceptable_content_types
@@ -54,7 +32,6 @@ class MedicalRelease < ApplicationRecord
# These validations apply to all releases
validates :person_first_name, :person_last_name, presence: true
validates :person_email, email: true, allow_blank: true
validate :valid_answers
acts_as_taggable_on :internal_tags, :tags
@@ -99,15 +76,4 @@ class MedicalRelease < ApplicationRecord
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
private
def valid_answers
(1..ContractTemplate::NUMBER_OF_CUSTOM_FIELDS).each do |index|
if contract_template && contract_template["question_#{index}_text"].present? &&
public_send("question_#{index}_answer").blank?
errors.add("question_#{index}", I18n.t('medical_releases.custom_validation_errors.question_answer_is_required'))
end
end
end
end

View File

@@ -10,8 +10,6 @@ class MiscRelease < ApplicationRecord
include GuardianName
include GuardianPhotoable
NUMBER_OF_CUSTOM_FIELDS = 15
composed_of :person_address,
class_name: "Address",
mapping: [

View File

@@ -15,8 +15,6 @@ class Project < ApplicationRecord
has_many :talent_releases, dependent: :destroy
has_many :medical_releases, dependent: :destroy
has_many :misc_releases, dependent: :destroy
has_many :casting_calls, dependent: :destroy
has_many :casting_submissions, through: :casting_calls
has_many :videos, dependent: :destroy
has_many :imports, dependent: :destroy
has_many :contract_templates, dependent: :destroy

View File

@@ -1,25 +0,0 @@
class CastingCallPolicy < ApplicationPolicy
def index?
true
end
def show?
true
end
def create?
true
end
def destroy?
true
end
def update?
true
end
def cancel?
true
end
end

View File

@@ -1,29 +0,0 @@
class CastingSubmissionPolicy < ApplicationPolicy
def index?
true
end
def show?
true
end
def create?
true
end
def destroy?
true
end
def update?
true
end
def complete?
true
end
def download?
true
end
end

View File

@@ -40,8 +40,4 @@ class ProjectPolicy < ApplicationPolicy
def show_task_results?
show?
end
def show_casting_submission_results?
show?
end
end

View File

@@ -1,24 +0,0 @@
class CastingSubmissionFilesCollectionService
def initialize(files, folder_name)
@files = files
@folder_name = folder_name
end
def build
Dir.mktmpdir { |dir|
files.each do |file|
open("#{dir}/#{file.filename}", 'wb') do |tmp_file|
tmp_file << open(file.service_url.to_s).read
end
end
read_files = Dir.entries("#{dir}/").select { |f| !File.directory? f }
raise StandardError.new "Files not found." unless read_files.any?
yield(dir, read_files)
}
end
private
attr_reader :files, :folder_name
end

View File

@@ -169,24 +169,6 @@ class Analytics
)
end
end
def track_create_casting_call(user_agent:, user_ip:)
if analytics_enabled?
identify
track(
{
user_id: user.id,
event: "Casting call created",
properties: {
account: account.try(:name),
account_id: account.try(:id),
user_agent: user_agent,
ip: user_ip,
},
}
)
end
end
private

View File

@@ -10,9 +10,6 @@
<li class="nav-item">
<%= link_to fa_icon("tasks fw", text: "Task Requests"), [:admin, :task_requests], class: class_string("nav-link", "active" => controller_name == "task_requests") %>
</li>
<li class="nav-item">
<%= link_to fa_icon("video-camera fw", text: "Casting Submissions"), [:admin, :casting_submissions], class: class_string("nav-link", "active" => controller_name == "casting_submissions") %>
</li>
<li class="nav-item">
<%= link_to fa_icon("bug fw", text: "Errors"), "https://sentry.io/bigmedia/", class: "nav-link", target: :_blank %>
</li>

View File

@@ -1,26 +0,0 @@
<tr id="<%= dom_id(casting_submission) %>">
<td>
<%= casting_submission.casting_call.project.account.name.titleize %>
</td>
<td>
<%= casting_submission.casting_call.title.titleize %>
</td>
<td>
<%= casting_submission.performer_name %>
</td>
<td>
<%= casting_submission.interview_date %>
</td>
<td class="text-right">
<div class="btn-group">
<%= button_tag "Manage", class: "btn btn-light btn-sm dropdown-toggle border", data: { toggle: "dropdown", boundary: "window" }, aria: { haspopup: true, expanded: false } %>
<div class="dropdown-menu dropdown-menu-right">
<%= link_to fa_icon("video-camera", text: "View"), casting_submission_url(token: casting_submission.token), target: "_blank", class: "dropdown-item" %>
<%= link_to fa_icon("pencil", text: "Edit"), [:edit, :admin, casting_submission], class: "dropdown-item" %>
<% unless casting_submission.interviewed_at.present? %>
<%= link_to fa_icon("check", text: "Complete"), [:complete, :admin, casting_submission], method: :post, class: "dropdown-item" %>
<% end %>
</div>
</div>
</td>
</tr>

View File

@@ -1,30 +0,0 @@
<%= errors_summary_for casting_submission %>
<%= bootstrap_form_with model: model, local: true do |form| %>
<%= form.text_field :performer_name, required: true %>
<%= form.grouped_collection_select(:casting_call_id, @accounts, :casting_calls, :name, :id, :title, { prompt: "Select a Casting Call", required: true, class: "form-control custom-select" }) %>
<%= form.text_field :interview_date, class: "datepicker-control" %>
<%= form.text_field :zoom_meeting_url %>
<% unless casting_submission.new_record? %>
<%= form.file_field :interview_recording, accept: "video/*", data: { direct_upload_url: rails_direct_uploads_url, aws_bucket: ENV['AWS_BUCKET'], aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'], signer_url: multipart_signatures_url } %>
<% if casting_submission.interview_recording.attached? %>
<p>
<%= link_to casting_submission.interview_recording do %>
<%= fa_icon "file-text-o" %> <%= casting_submission.interview_recording.filename %>
<% end %>
<span class="text-muted"><%= fa_icon "long-arrow-left" %> <em>Current interview recording</em></span>
</p>
<% end %>
<% end %>
<div class="row align-items-center text-center mt-4">
<%= link_to t("shared.cancel"), [:admin, :casting_submissions], class: "col-3 text-reset" %>
<div class="col-9">
<%= form.submit class: class_string("btn btn-block", ["btn-success", "btn-primary"] => casting_submission.new_record?), data: { disable_with: t("shared.disable_with") } %>
</div>
</div>
<% end %>

View File

@@ -1,6 +0,0 @@
<div class="card shadow-sm">
<%= card_header text: "Edit Casting Submission", close_action_path: [:admin, :casting_submissions] %>
<div class="card-body">
<%= render "form", model: [:admin, @casting_submission], casting_submission: @casting_submission %>
</div>
</div>

View File

@@ -1,32 +0,0 @@
<div class="d-flex flex-row justify-content-between align-items-center mb-3">
<% if policy(CastingCall).new? %>
<%= link_to fa_icon("plus", text: t(".actions.new")), [:new, :admin, :casting_submission], class: "btn btn-primary mb-3" %>
<% end %>
</div>
<div class="border bg-white rounded shadow-sm pb-3 table-responsive">
<table class="table table-striped tr-px-4 align-all-middle">
<thead class="thead-light">
<tr>
<th>Account Name</th>
<th>Casting Call Request</th>
<th>Perfomer's Name</th>
<th>Interview Date</th>
<th></th>
</tr>
</thead>
<tbody id="users">
<% if @casting_submissions.any? %>
<%= render @casting_submissions %>
<% else %>
<tr>
<td colspan="20" class="py-4 text-center text-muted"><%= t(".empty") %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
<div id="casting_submissions_pagination" class="mt-3">
<%= will_paginate @casting_submissions %>
</div>

View File

@@ -1,6 +0,0 @@
<div class="card shadow-sm">
<%= card_header text: t(".heading"), close_action_path: [:admin, :casting_submissions] %>
<div class="card-body">
<%= render "form", model: [:admin, @casting_submission], casting_submission: @casting_submission, casting_calls: @casting_calls %>
</div>
</div>

View File

@@ -11,14 +11,12 @@
<hr class="divider-light mx-n4">
<nav>
<ul class="nav nav-pills nav-pills-dark flex-column">
<% if Current.account.taskme_enabled? %>
<li class="nav-item">
<%= link_to [project, :task_requests], class: class_string("nav-link", "active" => controller_name == "task_requests") do %>
<%= lock_icon_for(Current.account, :taskme) %>
<%= product_wordmark :task_me, class: class_string("d-inline-block", "disabled" => !Current.account.taskme_enabled?) %>
<% end %>
</li>
<% end %>
<li class="nav-item">
<%= link_to [project, :task_requests], class: class_string("nav-link", "active" => controller_name == "task_requests") do %>
<%= lock_icon_for(Current.account, :taskme) %>
<%= product_wordmark :task_me, class: class_string("d-inline-block", "disabled" => !Current.account.taskme_enabled?) %>
<% end %>
</li>
<li class="nav-item">
<%= link_to [project, :contract_templates], class: class_string("nav-link", "active" => %w(contract_templates release_template_imports).include?(controller_name)) do %>
<%= lock_icon_for Current.account, :releaseme %>
@@ -43,12 +41,6 @@
<%= product_wordmark :deliver_me, class: class_string("d-inline-block", "disabled" => !Current.account.deliverme_enabled?) %>
<% end %>
</li>
<li class="nav-item">
<%= link_to [project, :casting_calls], class: class_string("nav-link", "active" => controller_name == "casting_calls") do %>
<%= lock_icon_for(Current.account, :castme) %>
<%= product_wordmark :cast_me, class: class_string("d-inline-block", "disabled" => !Current.account.castme_enabled?) %>
<% end %>
</li>
</ul>
</nav>
<hr class="divider-light mx-n4">

View File

@@ -18,7 +18,15 @@
<div class="card-body p-0">
<div class="embed-responsive embed-responsive-16by9">
<div class="embed-responsive-item">
<iframe src="https://player.vimeo.com/video/435200320?app_id=122963" width="426" height="240" frameborder="0" allow="autoplay; fullscreen" allowfullscreen title="DirectME_How to_V5"></iframe>
<table class="w-100 h-100 bg-secondary">
<tbody>
<tr>
<td class="text-center align-middle text-white">
Video tutorial will be available soon
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>

View File

@@ -1,28 +0,0 @@
<tr>
<td>
<%= casting_call.created_at.strftime('%D') %>
</td>
<td>
<%= casting_call.title %>
</td>
<td>
<%= casting_call.status %>
</td>
<td class="text-right">
<div class="btn-group">
<%= button_tag t(".actions.manage"), class: "btn btn-light btn-sm dropdown-toggle border", data: { toggle: "dropdown", boundary: "window" }, aria: { haspopup: true, expanded: false } %>
<div class="dropdown-menu dropdown-menu-right">
<%= link_to fa_icon("link fw", text: "Copy Audition URL"), casting_call_url(casting_call.token), class: "dropdown-item", data: { behavior: "clipboard" } %>
<% if policy(casting_call).show? %>
<%= link_to fa_icon("tasks fw", text: "View"), [casting_call.project, casting_call], class: "dropdown-item", target: '_blank' %>
<% end %>
<% if policy(casting_call).edit? %>
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, casting_call.project, casting_call], class: "dropdown-item" %>
<% end %>
<% if policy(casting_call).cancel? && !casting_call.cancelled? %>
<%= link_to fa_icon("ban fw", text: "Cancel"), [:cancel, casting_call.project, casting_call], class: "dropdown-item", method: :post %>
<% end %>
</div>
</div>
</td>
</tr>

View File

@@ -1,24 +0,0 @@
<%= errors_summary_for casting_call %>
<%= bootstrap_form_with model: model, url: [@project, @casting_call, show_chat: true], local: true do |form| %>
<div class="alert alert-info text-center text-md-left">
<%= fa_icon "info-circle" %>
<strong><%= t '.info_message' %></strong>
</div>
<%= form.text_field :title %>
<%= form.text_area :description %>
<%= form.text_area :project_description %>
<%= field_set_tag t(".headings.chatbot") do %>
<%= form.text_area :interview_instructions, rows: 6 %>
<%= form.text_area :questions, rows: 8 %>
<%= form.text_area :interview_requirements, rows: 6 %>
<% end %>
<div class="row align-items-center text-center mt-4">
<%= link_to t("shared.cancel"), [project, :casting_calls], class: "col-3 text-reset" %>
<div class="col-9">
<%= form.submit class: class_string("btn btn-block", ["btn-success", "btn-primary"] => casting_call.new_record?), data: { disable_with: t("shared.disable_with") } %>
</div>
</div>
<% end %>

View File

@@ -1,6 +0,0 @@
<div class="card shadow-sm">
<%= card_header text: t(".heading"), close_action_path: [@project, :casting_calls] %>
<div class="card-body">
<%= render "form", model: [@project, @casting_call], casting_call: @casting_call, project: @project %>
</div>
</div>

View File

@@ -1,37 +0,0 @@
<%= product_wordmark :cast_me, class: "small mb-3" %>
<div class="row">
<div class="col-md-12">
<div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3">
<% if policy(CastingCall).new? %>
<%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :casting_call], class: "btn btn-primary mb-2" %>
<% end %>
</div>
</div>
</div>
<div class="border bg-white rounded shadow-sm pb-3 table-responsive">
<table class="table table-striped tr-px-4 align-all-middle">
<thead class="thead-light">
<tr>
<th><%= t(".table_headers.casting_call_created_on") %></th>
<th><%= t(".table_headers.casting_call_title") %></th>
<th><%= t(".table_headers.casting_call_status") %></th>
<th></th>
</tr>
</thead>
<tbody id="casting_calls">
<% if @casting_calls.any? %>
<%= render @casting_calls %>
<% else %>
<tr>
<td colspan="20" class="py-4 text-center text-muted"><%= t(".empty") %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
<div id="casting_calls_pagination" class="mt-3">
<%= will_paginate @casting_calls %>
</div>

View File

@@ -1,6 +0,0 @@
<div class="card shadow-sm">
<%= card_header text: t(".heading"), close_action_path: [@project, :casting_calls] %>
<div class="card-body">
<%= render "form", model: [@project, @casting_call], casting_call: @casting_call, project: @project %>
</div>
</div>

View File

@@ -1,38 +0,0 @@
<% content_for :header do %>
<header class="container-fluid py-3 border-bottom sticky-top bg-light">
<div class="row align-items-center justify-content-center">
<div class="col-4 text-center">
<%= product_wordmark(:cast_me, class: 'navbar-brand') %>
</div>
</div>
</header>
<% end %>
<div class="card shadow-sm">
<%= card_header text: @casting_call.title, close_action_path: [@project, :casting_calls] %>
<div class="card-body">
<div class="row">
<div class="col-md-6 col-sm-12">
<dl>
<%= description_list_pair_for @casting_call, :title, append: ":" %>
<%= description_list_pair_for @casting_call, :description, append: ":" %>
<%= description_list_pair_for @casting_call, :project_description, append: ":" %>
<%= description_list_pair_for @casting_call, :created_at, append: ":" %>
</dl>
</div>
<div class="col-md-6 col-sm-12">
<dl>
<%= description_list_pair_for @casting_call, :status, append: ":" %>
<%= description_list_pair_for @casting_call, :interview_instructions, append: ":" %>
<%= description_list_pair_for @casting_call, :interview_requirements, append: ":" %>
<%= description_list_pair_for @casting_call, :questions, append: ":" %>
</dl>
</div>
</div>
<% unless @casting_call.cancelled? %>
<div class="row align-items-center justify-content-center mt-3">
<%= link_to "Schedule an Audition", ENV["CASTME_AUDITION_BOOKING_URL"], target: "_blank", class: "btn btn-primary" %>
</div>
<% end %>
</div>
</div>

View File

@@ -1,17 +0,0 @@
<p>Your <%= release_type.titleize %> files are being prepared for download. You will be notified when it's ready.
</p>
<p class="mt-3">The following downloads are also in progress:</p>
<ul>
<% downloads.each do |download| %>
<% if download.release_type == "reports"%>
<li><%= download.release_type.titleize %> (as of <%= time_ago_in_words(download.created_at) %> ago)
</li>
<% elsif download.release_type == "CastingSubmission"%>
<li><%= download.release_type.titleize %> files (as of <%= time_ago_in_words(download.created_at) %> ago)
</li>
<% else %>
<li><%= download.release_type.titleize %> contracts (as of <%= time_ago_in_words(download.created_at) %> ago)
</li>
<% end %>
<% end %>
</ul>

View File

@@ -1,27 +0,0 @@
<tr id="<%= dom_id(casting_submission) %>">
<td>
<%= casting_submission.casting_call.project.account.name.titleize %>
</td>
<td>
<%= casting_submission.casting_call.title&.titleize %>
</td>
<td>
<%= casting_submission.performer_name %>
</td>
<td>
<%= casting_submission.interviewed_at %>
</td>
<td class="text-right">
<div class="btn-group">
<%= button_tag "Manage", class: "btn btn-light btn-sm dropdown-toggle border", data: { toggle: "dropdown", boundary: "window" }, aria: { haspopup: true, expanded: false } %>
<div class="dropdown-menu dropdown-menu-right">
<% if policy(CastingSubmission).show? %>
<%= link_to fa_icon("video-camera", text: "View"), [@project, casting_submission], target: "_blank", class: "dropdown-item" %>
<% end %>
<% if policy(CastingSubmission).download? %>
<%= link_to fa_icon("download", text: "Download"), [@project, :casting_submission_downloads, casting_submission_id: casting_submission.id], method: :post, remote: true, class: "dropdown-item" %>
<% end %>
</div>
</div>
</td>
</tr>

View File

@@ -1,12 +0,0 @@
<li class="my-2" id="<%= dom_id(file) %>">
<% if file.variable? %>
<%= link_to image_tag(file.variant(resize_and_pad: [300, 300, background: "#F7F8F9"]), class: "bg-light img-thumbnail img-fluid"), file, target: "_blank" %>
<% else %>
<div class="border rounded bg-light text-muted d-flex justify-content-center align-items-center fix-h-and-w">
<%= link_to file, target: "_blank" do %>
<%= fa_icon("file", style: "font-size: 2rem") %>
<div class="mt-2"><%= file.filename %></div>
<% end %>
</div>
<% end %>
</li>

View File

@@ -1,14 +0,0 @@
<div class="overflow-auto mh-30">
<ul class="list-unstyled d-flex flex-column align-items-center text-center" id="casting_submission_file_list_<%= casting_submission.id %>">
<% if files.present? %>
<%= render partial: "casting_submissions/file", collection: files %>
<% else %>
<li class="my-3">
Files will appear here.
</li>
<% end %>
</ul>
<div class="d-flex mt-2 justify-content-center" id="casting_submission_files_pagination_<%= casting_submission.id %>">
<%= will_paginate(files, param_name: 'files_page', params: { active_files_tab: casting_submission.id }) if files.present? %>
</div>
</div>

View File

@@ -1,15 +0,0 @@
<% if casting_submission.interview_recording.present? %>
<div id="casting_submission_video" class="embed-responsive-item"></div>
<% else %>
<div id="casting_submission_video" class="embed-responsive-item">
<table class="w-100 h-100 bg-secondary">
<tbody>
<tr>
<td class="text-center align-middle text-white">
Video player will appear here when the interview recording is available.
</td>
</tr>
</tbody>
</table>
</div>
<% end %>

View File

@@ -1,26 +0,0 @@
<div class="border bg-white rounded shadow-sm pb-3 table-responsive">
<table class="table table-striped tr-px-4 align-all-middle">
<thead class="thead-light">
<tr>
<th>Account Name</th>
<th>Casting Call Request</th>
<th>Perfomer's Name</th>
<th>Interviewed At</th>
<th></th>
</tr>
</thead>
<tbody id="users">
<% if @casting_submissions.any? %>
<%= render @casting_submissions %>
<% else %>
<tr>
<td colspan="20" class="py-4 text-center text-muted"><%= t(".empty") %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
<div id="casting_submissions_pagination" class="mt-3">
<%= will_paginate @casting_submissions %>
</div>

View File

@@ -1,79 +0,0 @@
<% content_for :header do %>
<header class="container-fluid py-3 border-bottom sticky-top bg-light">
<div class="row align-items-center justify-content-center">
<div class="col-4 text-center">
<%= product_wordmark(:cast_me, class: 'navbar-brand') %>
</div>
</div>
</header>
<% end %>
<div class="row">
<div class="col-lg-8 col-md-12 mb-3">
<div class="card shadow-sm">
<div class="card-header">
<div class="d-flex justify-content-start flex-column">
<h1 class="h2 mb-1"><%= @casting_submission.performer_name %></h1>
<h1 class="h6 mb-1"><%= @casting_call.title %></h1>
</div>
</div>
<div class="card-body p-0">
<div class="embed-responsive embed-responsive-16by9">
<%= render partial: 'casting_submissions/video', locals: { casting_submission: @casting_submission } %>
<% if @casting_submission.interview_recording.present? %>
<%= javascript_tag nonce: true do %>
new Clappr.Player({
parentId: '#casting_submission_video',
source: "<%= rails_blob_url(@casting_submission.interview_recording, host: AppHost.new.domain_with_port) %>",
width: '100%',
height: '100%',
mute: true,
autoPlay: true,
hlsMinimumDvrSize: 1
});
<% end %>
<% end %>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-12 mb-3">
<div class="card shadow-sm mb-3">
<div class="card-header">
<ul class="nav nav-tabs card-header-tabs">
<li class="nav-item">
<%= link_to "Home", "#home", class: class_string("nav-link", "active" => !params[:active_tab].present?), data: { toggle: "tab" } %>
</li>
<li class="nav-item">
<%= link_to "Files", "#files", class: class_string("nav-link", "active" => params[:active_tab] == "files"), data: { toggle: "tab" } %>
</li>
</ul>
</div>
<div class="card-body p-3">
<div class="tab-content">
<div class="<%= class_string("tab-pane fade show", "active" => !params[:active_tab].present?) %>" id="home">
<div class="row">
<div class="col-md-12">
<dl>
<%= description_list_pair_for @casting_call, :title, append: ":" %>
<%= description_list_pair_for @casting_call, :status, append: ":" %>
<%= description_list_pair_for @casting_call, :created_at, append: ":" %>
<%= description_list_pair_for @casting_call, :description, append: ":" %>
<%= description_list_pair_for @casting_call, :project_description, append: ":" %>
<%= description_list_pair_for @casting_call, :interview_instructions, append: ":" %>
<%= description_list_pair_for @casting_call, :interview_requirements, append: ":" %>
<%= description_list_pair_for @casting_call, :questions, append: ":" %>
</dl>
</div>
</div>
</div>
<div class="<%= class_string("tab-pane fade show", "active" => params[:active_tab] == 'files') %>" id="files">
<div class="tab-pane fade show active" id="files_casting_submission_<%= @casting_submission.id %>">
<%= render partial: 'casting_submissions/files_section', locals: { casting_submission: @casting_submission, files: @files } %>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -2,7 +2,7 @@
<%= 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 medical), "#fee_field": %w(appearance talent location material acquired_media), "#exploitable_rights_fields": %w(appearance talent location material acquired_media), "#custom_fields": %w(medical misc) } }, 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: "$", wrapper_class: "col-sm-6" %>

View File

@@ -1,50 +0,0 @@
<div class="d-flex flex-row">
<div class="d-flex flex-column">
<%= product_wordmark :release_me, prefix: t('.headings.welcome'), class: "h2" %>
<p class="text-muted"><%= t '.headings.subtitle' %>
</div>
<%= link_to t(".actions.book_demo"), 'https://meetings.hubspot.com/bray2', class: "btn btn-primary border align-self-center h-50 ml-auto mr-2 pb-2", target: '_blank' %>
<% if policy(ContractTemplate).new? %>
<%= link_to t(".actions.create_template"), [:new, @project, :contract_template], class: "btn btn-success border align-self-center h-50 pb-2" %>
<% end %>
</div>
<hr>
<div class="pt-2">
<div class="row">
<div class="col">
<div class="card-body p-0">
<div class="embed-responsive embed-responsive-16by9">
<div class="embed-responsive-item">
<iframe src="https://player.vimeo.com/video/435200486?app_id=122963" width="426" height="240" frameborder="0" allow="autoplay; fullscreen" allowfullscreen title="ReleaseME_How to_V5"></iframe>
</div>
</div>
</div>
</div>
<div class="col">
<div class="row">
<div class="col">
<h3><%= t '.headings.how_it_works' %></h3>
<ol>
<li><%= t '.list_items.create_releases' %></li>
<li><%= t '.list_items.download_mobile_app' %></li>
<li><%= t '.list_items.print_QR_code' %></li>
<li><%= t '.list_items.releases_automatically_organized' %></li>
</ol>
</div>
</div>
<div class="row">
<div class="col">
<h3><%= t '.headings.benefits' %></h3>
<ul class="fa-ul ml-5">
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.all_releases_available'))) %>
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.manage_large_audience'))) %>
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.add_tags_and_notes'))) %>
</ul>
</div>
</div>
</div>
</div>
</div>

View File

@@ -1,8 +1,8 @@
<p class="heading"><strong><u><%= t ".heading.#{releasable.model_name.param_key}" %></u></strong></p>
<p class="heading"><strong><u><%= t ".heading" %></u></strong></p>
<% (1..releasable.class::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
<% (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 %>

View File

@@ -16,9 +16,9 @@
<%= contract_template.guardian_clause %>
<% end %>
<% if releasable.model_name.in? %w(MedicalRelease MiscRelease) %>
<% if releasable.model_name == "MedicalRelease" %>
<div class="page">
<%= render "contracts/questionnaire", releasable: releasable, contract_template: contract_template, preview: preview %>
<%= render "contracts/medical_questionnaire", releasable: releasable, contract_template: contract_template, preview: preview %>
</div>
<% end %>

View File

@@ -21,11 +21,6 @@
<%= link_to t("projects.show.tasks"), [@project, :tasks], class: "text-decoration-none text-reset stretched-link" %>
<% end %>
<% end %>
<% if policy(Project).show_casting_submission_results? %>
<%= render "folder_card" do %>
<%= link_to t("projects.show.casting_submissions"), [@project, :casting_submissions], class: "text-decoration-none text-reset stretched-link" %>
<% end %>
<% end %>
</div>
<hr/>

View File

@@ -16,7 +16,7 @@
<% unless @contract_template.guardian_clause.blank? %>
<%= form.form_group :minor do %>
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { behavior: "update-required-status", target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
<% end %>
<%= card_field_set_tag t(".guardian_clause.heading") do %>
@@ -72,12 +72,12 @@
<div class="<%= class_string("collapse" => !@appearance_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: @appearance_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
<%= form.text_field :guardian_last_name, required: @appearance_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
<%= form.phone_field :guardian_phone, required: @appearance_release.minor?, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
<%= form.text_field :guardian_email, required: @appearance_release.minor?, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
<%= 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, required: @appearance_release.minor?, wrapper_class: "col-sm-6" %>
<%= form.text_field :guardian_email, required: @appearance_release.minor?, wrapper_class: "col-sm-6" %>
</div>
<%= render "shared/address_fields", form: form, subject: "guardian", required: @appearance_release.minor?, data: { required_tag: "guardian" } %>
<%= render "shared/address_fields", form: form, subject: "guardian", required: @appearance_release.minor? %>
<% end %>
<hr>

View File

@@ -1,29 +0,0 @@
<% content_for :header do %>
<header class="container-fluid py-3 border-bottom sticky-top bg-light">
<div class="row align-items-center justify-content-center">
<div class="col-4 text-center">
<%= product_wordmark(:cast_me, class: 'navbar-brand') %>
</div>
</div>
</header>
<% end %>
<div class="card shadow-sm">
<%= card_header text: @casting_call.title %>
<div class="card-body">
<div class="row">
<div class="col-12">
<dl>
<%= description_list_pair_for @casting_call, :title, append: ":" %>
<%= description_list_pair_for @casting_call, :description, append: ":" %>
<%= description_list_pair_for @casting_call, :project_description, append: ":" %>
</dl>
</div>
</div>
<% unless @casting_call.cancelled? %>
<div class="row align-items-center justify-content-center mt-3">
<%= link_to "Schedule an Audition", ENV["CASTME_AUDITION_BOOKING_URL"], target: "_blank", class: "btn btn-primary" %>
</div>
<% end %>
</div>
</div>

View File

@@ -1,51 +0,0 @@
<div class="card shadow-sm">
<%= card_header text: "Casting submission details" %>
<div class="card-body">
<div class="row">
<div class="col-lg-12">
<dl>
<%= description_list_pair_for @casting_submission, :performer_name, append: ":" %>
<%= description_list_pair_for @casting_submission, :interview_date, append: ":" %>
</dl>
</div>
</div>
<h6>INTERVIEW FILES:</h6>
<hr/>
<div class="row">
<div class="col-lg-12">
<div class="card shadow-sm">
<%= card_header text: t(".heading") %>
<div class="card-body">
<%= errors_summary_for @casting_submission %>
<%= bootstrap_form_with model: @casting_submission, url: casting_submission_path(token: @casting_submission.token), local: true do |form| %>
<div class="field d-none">
<%= form.label :files %>
<%= form.file_field :files, disable: true, direct_upload: true, multiple: true, id: "casting_call_interivew_files", hide_label: true %>
<% @casting_submission.files.each do |file| %>
<% unless file.persisted? %>
<%= hidden_field_tag "#{@casting_submission.model_name.param_key}[files][]", file.signed_id %>
<% end %>
<% end %>
</div>
<div class="dropzone field border-dashed"
data-accepted-files="audio/*,image/*,video/*"
data-behavior="dropzone"
data-file-input-id="casting_call_interivew_files"
data-existing-files="<%= mock_photos_json(@casting_submission.files) %>"
data-placeholder="<%= dropzone_placeholder_message_for(@casting_submission) %>"
data-submit-button="#submit_folder"></div>
<div class="mt-5">
<%= form.button t(".update"), class: "btn btn-block btn-lg btn-success", data: { disable_with: t("shared.disable_with") } %>
</div>
<% end %>
</div>
</div>
</div>
</div>
<div class="row align-items-center justify-content-center mt-3">
<%= link_to "Start Interview", @casting_submission.zoom_meeting_url, target: "_blank", class: "btn btn-primary" %>
</div>
</div>
</div>

View File

@@ -16,7 +16,7 @@
<% unless @contract_template.guardian_clause.blank? %>
<%= form.form_group :minor do %>
<%= form.check_box :minor, label: t("helpers.label.medical_release.minor"), data: { behavior: "update-required-status", target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
<%= 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 %>
@@ -30,7 +30,7 @@
<% (1..MedicalRelease::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
<% if @contract_template.public_send("question_#{n}_text").present? %>
<div class="form-row">
<%= form.text_area "question_#{n}_answer", required: true, wrapper_class: "col-sm-12", label: @contract_template.public_send("question_#{n}_text") %>
<%= form.text_area "question_#{n}_answer", wrapper_class: "col-sm-12", label: @contract_template.public_send("question_#{n}_text") %>
</div>
<% end %>
<% end %>
@@ -59,12 +59,14 @@
<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", data: { required_tag: "guardian" } %>
<%= form.text_field :guardian_last_name, required: @medical_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
<%= form.phone_field :guardian_phone, required: @medical_release.minor?, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
<%= form.text_field :guardian_email, required: @medical_release.minor?, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
<%= 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>
<%= render "shared/address_fields", form: form, subject: "guardian", required: @medical_release.minor?, data: { required_tag: "guardian" } %>
<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>

View File

@@ -11,7 +11,7 @@
<% unless @contract_template.guardian_clause.blank? %>
<%= form.form_group :minor do %>
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { behavior: "update-required-status", target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
<% end %>
<%= card_field_set_tag t(".guardian_clause.heading") do %>
@@ -20,19 +20,6 @@
<hr>
<% end %>
<% if @contract_template.has_questionnaire? %>
<%= card_field_set_tag t(".questionnaire.heading") do %>
<% (1..MiscRelease::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
<% if @contract_template.public_send("question_#{n}_text").present? %>
<div class="form-row">
<%= form.text_area "question_#{n}_answer", wrapper_class: "col-sm-12", label: @contract_template.public_send("question_#{n}_text") %>
</div>
<% end %>
<% end %>
<% end %>
<hr>
<% end %>
<%= card_field_set_tag t(".personal_info.heading") do %>
<div class="alert alert-warning font-weight-bold"><%= t ".personal_info.instructions" %></div>
<div class="form-row">
@@ -56,12 +43,14 @@
<div class="<%= class_string("collapse" => !@misc_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: @misc_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
<%= form.text_field :guardian_last_name, required: @misc_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
<%= form.text_field :guardian_first_name, required: @misc_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.text_field :guardian_last_name, required: @misc_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6" %>
</div>
<%= render "shared/address_fields", form: form, subject: "guardian", data: { required_tag: "guardian" } %>
<div class="form-row">
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6" %>
</div>
<%= render "shared/address_fields", form: form, subject: "guardian" %>
<% end %>
<hr>

View File

@@ -16,7 +16,7 @@
<% unless @contract_template.guardian_clause.blank? %>
<%= form.form_group :minor do %>
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { behavior: "update-required-status", target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
<% end %>
<%= card_field_set_tag t(".guardian_clause.heading") do %>
@@ -46,12 +46,12 @@
<div class="<%= class_string("collapse" => !@talent_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: @talent_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
<%= form.text_field :guardian_last_name, required: @talent_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
<%= form.text_field :guardian_first_name, required: @talent_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.text_field :guardian_last_name, required: @talent_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" %>
</div>
<%= render "shared/address_fields", form: form, subject: "guardian", data: { required_tag: "guardian" } %>
<%= render "shared/address_fields", form: form, subject: "guardian" %>
<% end %>
<hr>

View File

@@ -1,15 +1,14 @@
<% field_name_prefix = subject.present? ? "#{subject}_" : "" %>
<% required = required || false %>
<% data = data || nil %>
<div class="form-row">
<%= form.text_field "#{field_name_prefix}address_street1", required: required, wrapper_class: "col-sm-6", data: data %>
<%= 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" %>
</div>
<div class="form-row">
<%= form.text_field "#{field_name_prefix}address_city", required: required, wrapper_class: "col-sm-6", data: data %>
<%= form.text_field "#{field_name_prefix}address_state", required: required, wrapper_class: "col-sm-3", data: data %>
<%= form.text_field "#{field_name_prefix}address_zip", required: required, wrapper_class: "col-sm-3", data: data %>
<%= 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" %>
</div>
<%= form.form_group "#{field_name_prefix}address_country" do %>
<%= form.label "#{field_name_prefix}address_country" %>

View File

@@ -1,15 +0,0 @@
<% if params[:show_chat] %>
<%= javascript_include_tag "//js.hs-scripts.com/7344617.js", defer: "defer", async: true, id: "hs-script-loader" %>
<%= javascript_tag nonce: true do %>
function onConversationsAPIReady() {
window.HubSpotConversations.widget.load({ widgetOpen: true });
window.HubSpotConversations.widget.open();
}
if (window.HubSpotConversations) {
onConversationsAPIReady();
} else {
window.hsConversationsOnReady = [onConversationsAPIReady];
}
<% end %>
<% end %>

View File

@@ -1,2 +1,15 @@
<%= render "shared/initiate_hubspot_chat" %>
<p class="alert alert-success p-3 lead text-center"><%= t '.success_message' %></p>
<% if params[:show_chat] %>
<%= javascript_include_tag "//js.hs-scripts.com/7344617.js", defer: "defer", async: true, id: "hs-script-loader" %>
<%= javascript_tag nonce: true do %>
function onConversationsAPIReady() {
window.HubSpotConversations.widget.load({ widgetOpen: true });
window.HubSpotConversations.widget.open();
}
if (window.HubSpotConversations) {
onConversationsAPIReady();
} else {
window.hsConversationsOnReady = [onConversationsAPIReady];
}
<% end %>
<% end %>
<p class="alert alert-success p-3 lead text-center"><%= t '.success_message' %></p>

View File

@@ -1,58 +0,0 @@
<div class="d-flex flex-row">
<div class="d-flex flex-column">
<%= product_wordmark :task_me, prefix: t('.headings.welcome'), class: "h2" %>
<p class="text-muted"><%= t '.headings.subtitle' %>
</div>
<%= link_to t(".actions.book_demo"), 'https://meetings.hubspot.com/bray2', class: "btn btn-primary border align-self-center h-50 ml-auto mr-2 pb-2", target: '_blank' %>
<% if policy(TaskRequest).new? %>
<%= link_to t(".actions.create_task_request"), [:new, @project, :task_request], class: "btn btn-success border align-self-center h-50 pb-2" %>
<% end %>
</div>
<hr>
<div class="pt-2">
<div class="row">
<div class="col">
<div class="card-body p-0">
<div class="embed-responsive embed-responsive-16by9">
<div class="embed-responsive-item">
<table class="w-100 h-100 bg-secondary">
<tbody>
<tr>
<td class="text-center align-middle text-white">
Video tutorial will be available soon
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col">
<div class="row">
<div class="col">
<h3><%= t '.headings.how_it_works' %></h3>
<ol>
<li><%= t '.list_items.enter_task_request' %></li>
<li><%= t '.list_items.state_deadline' %></li>
<li><%= t '.list_items.enter_number_of_hours' %></li>
<li><%= t '.list_items.virtual_assistant_delivers_task' %></li>
</ol>
</div>
</div>
<div class="row">
<div class="col">
<h3><%= t '.headings.benefits' %></h3>
<ul class="fa-ul ml-5">
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.reduces_need_for_full_time_staff'))) %>
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.reduces_workload'))) %>
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.spend_per_task'))) %>
</ul>
</div>
</div>
</div>
</div>
</div>

View File

@@ -1,51 +0,0 @@
<div class="d-flex flex-row">
<div class="d-flex flex-column">
<%= product_wordmark :deliver_me, prefix: t('.headings.welcome'), class: "h2" %>
<p class="text-muted"><%= t '.headings.subtitle' %>
</div>
<%= link_to t(".actions.book_demo"), 'https://meetings.hubspot.com/bray2', class: "btn btn-primary border align-self-center h-50 ml-auto mr-2 pb-2", target: '_blank' %>
<% if policy(Video).new? %>
<%= link_to t(".actions.upload_video"), [:new, @project, :video], class: "btn btn-success border align-self-center h-50 pb-2" %>
<% end %>
</div>
<hr>
<div class="pt-2">
<div class="row">
<div class="col">
<div class="card-body p-0">
<div class="embed-responsive embed-responsive-16by9">
<div class="embed-responsive-item">
<iframe src="https://player.vimeo.com/video/435200434?app_id=122963" width="426" height="240" frameborder="0" allow="autoplay; fullscreen" allowfullscreen title="DeliverME_How to_V5"></iframe>
</div>
</div>
</div>
</div>
<div class="col">
<div class="row">
<div class="col">
<h3><%= t '.headings.how_it_works' %></h3>
<ol>
<li><%= t '.list_items.import_video' %></li>
<li><%= t '.list_items.import_EDLs' %></li>
<li><%= t '.list_items.AI_generates_documents' %></li>
<li><%= t '.list_items.download_documents' %></li>
</ol>
</div>
</div>
<div class="row">
<div class="col">
<h3><%= t '.headings.benefits' %></h3>
<ul class="fa-ul ml-5">
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.reduces_labor_cost'))) %>
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.more_accurate'))) %>
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.simplifies_cue_sheets'))) %>
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.production_elements_logs'))) %>
</ul>
</div>
</div>
</div>
</div>
</div>

View File

@@ -70,9 +70,6 @@ en:
person_phone: Phone
person_photo: Photo
signed_on: Date
casting_call:
interview_instructions: Welcome message
interview_requirements: Goodbye message
location_release:
person_company: Company
person_email: Email
@@ -100,22 +97,6 @@ en:
application:
header:
sign_out: Sign Out
casting_submissions:
complete:
notice: The casting submission has been completed
create:
notice: The casting submission has been created
index:
actions:
new: Create Casting Submission
empty: Casting submissions will appear here
mark_as_completed:
alert: Failed to mark casting submission as completed
notice: The casting submission has been marked as completed
new:
heading: New Casting Submission
update:
notice: The casting submission has been updated
task_requests:
index:
empty: Task requests will appear here
@@ -247,42 +228,6 @@ en:
bulk_taggings:
new_bulk_tag_modal:
submit: Add
casting_calls:
cancel:
notice: The casting call request has been cancelled successfully
casting_call:
actions:
manage: Manage
create:
notice: The casting call request has been created successfully.
edit:
heading: Edit Casting Call
form:
headings:
chatbot: Chatbot Instructions
info_message: After submitting this casting call request, you'll be connected via chat with a ME Suite representative.
index:
actions:
new: Create Casting Call
empty: Casting calls will appear here
table_headers:
casting_call_created_on: Created On
casting_call_status: Status
casting_call_title: Casting Title
new:
heading: New Casting Call
update:
notice: The casting call request has been updated
casting_submission_downloads:
download:
failure: Your download could not be generated.
pending: "Your %{release_type} files are being prepared for download. You will be notified when it's ready."
success: "Your %{release_type} files are ready. Download now, or retrieve later in the %{downloads_folder_link} folder. %{download_button}"
casting_submissions:
index:
empty: Casting Submission results will appear here.
show:
empty: Casting Submission files and recorded meeetings will appear here.
contract_downloads:
download:
failure: Your download could not be generated.
@@ -306,7 +251,7 @@ en:
archived_notice: The release template has been archived
form:
custom_fields:
heading: Questionnaire
heading: Medical Questionnaire
instructions: Please list the questions you wish the signer to answer. Any unused question fields will be hidden.
exploitable_rights:
heading: Exploitable Rights
@@ -325,24 +270,9 @@ en:
signed_release_count: No. Signed Releases
new:
heading: New Release Template
splash:
actions:
book_demo: Schedule a Demo
create_template: Create New Release Template
headings:
benefits: Benefits
how_it_works: How It Works
subtitle: The easiest way to create and manage releases.
welcome: Welcome to
list_items:
add_tags_and_notes: Add tags and notes to releases for added organization and searchability
all_releases_available: All release types available including Covid Medical, Appearance, Location and more
create_releases: Create releases for your video shoot
download_mobile_app: Download the ME Suite mobile app
manage_large_audience: Easily manage large audiences with the crowd control feature
print_QR_code: Print out release QR codes
releases_automatically_organized: Releases are automatically organized as theyre submitted
contracts:
medical_questionnaire:
heading: Medical Questionnaire
photos:
guardian_2_photo_heading: Second guardian photo
guardian_photo_heading: Guardian photo
@@ -352,10 +282,6 @@ en:
minor_photos_heading:
one: Minor photo
other: Minor photos
questionnaire:
heading:
medical_release: Medical Questionnaire
misc_release: Questionnaire
signature_page:
heading: Signature Page
instructions: "By signing this signature page, as of the date listed below, I hereby agree, acknowledge and accept the terms and conditions listed in this %{releasable_name}."
@@ -416,10 +342,6 @@ en:
notice: The release has been updated
helpers:
help:
casting_call:
interview_instructions: This is the first message the chatbot, BiGGiE, will send. Please include all information and instructions you wish the person to read prior to starting the casting interview.
interview_requirements: Please enter a final message and include any post-interview instructions (for example, submitting a headshot, additional photos, videos, etc).
questions: Please list, one-by-one, all of the questions you wish the chatbot, BiGGiE, to ask the person.
contract_template:
fee: Leave at $0.00 for no-fee
guardian_clause: Leave blank if not required for this contract
@@ -478,13 +400,6 @@ en:
person_last_name: Last name
person_name: Name
person_phone: Phone number
casting_call:
description: Casting search description
interview_instructions: Welcome message
interview_requirements: Goodbye message
project_description: Project description
questions: Questions
title: Casting search title
location_release:
address_city: City
address_country: Country
@@ -554,30 +469,6 @@ en:
person_last_name: Last name
person_name: Name
person_phone: Phone number
misc_release:
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
@@ -734,8 +625,6 @@ en:
broadcast:
create: Create Live Stream
update: Save Changes
casting_submission:
create: Create Casting Submission
contract_template:
create: Create Release Template
directory:
@@ -840,8 +729,6 @@ en:
update:
notice: The material release has been updated
medical_releases:
custom_validation_errors:
question_answer_is_required: answer is required
destroy:
alert: The medical release has been deleted
index:
@@ -999,7 +886,6 @@ en:
show:
acquired_media_release: Acquired Media Releases (%{count})
appearance_release: Appearance Releases (%{count})
casting_submissions: Casting Submissions
downloads: Downloads
location_release: Location Releases (%{count})
material_release: Material Releases (%{count})
@@ -1062,12 +948,6 @@ en:
broadcasts:
show:
alert: That broadcast is no longer available
casting_submissions:
show:
heading: Files
update: Upload
update:
notice: Your files have been uploaded successfully
location_releases:
create:
notice: Your release has been signed. Thank you!
@@ -1162,8 +1042,6 @@ en:
instructions: Now, enter your personal information.
photo:
heading: Photos
questionnaire:
heading: Questionnaire
signature:
heading: Signature
talent_releases:
@@ -1244,7 +1122,6 @@ en:
ago: ago
back: Back
cancel: Cancel
cast_me: Cast
clear: Clear
close: Close
csv: CSV
@@ -1343,23 +1220,6 @@ en:
heading: New Task Request
show:
empty: Attached files will appear here.
splash:
actions:
book_demo: Schedule a Demo
create_task_request: Create Task Request
headings:
benefits: Benefits
how_it_works: How It Works
subtitle: Pay-by-the-hour, digitally-enabled remote assistants
welcome: Welcome to
list_items:
enter_number_of_hours: Enter the number of hours you want the task worked on
enter_task_request: Enter your task request
reduces_need_for_full_time_staff: Reduces need to hire full-time staff
reduces_workload: Reduces workload for current staff
spend_per_task: Spend as little as $60 per task
state_deadline: State your deadline
virtual_assistant_delivers_task: Virtual assistant delivers task via TaskME portal
task_request:
actions:
manage: Manage
@@ -1431,24 +1291,6 @@ en:
new:
heading: Upload Video
subheading: 2 of 2 Files
splash:
actions:
book_demo: Schedule a Demo
upload_video: Upload New Video
headings:
benefits: Benefits
how_it_works: How It Works
subtitle: Automate your deliverable documents
welcome: Welcome to
list_items:
AI_generates_documents: AI generates deliverable documents
download_documents: Download deliverable documents
import_EDLs: Import your EDLs
import_video: Import your video
more_accurate: More accurate than human-generated reports
production_elements_logs: Production Elements Logs, and more
reduces_labor_cost: Reduces labor costs
simplifies_cue_sheets: Simplifies Music Cue Sheets, Graphic Cue Sheets
update:
notice: The video has been updated
video:

View File

@@ -89,23 +89,6 @@ es:
heading: Legal (ES)
release_info:
heading: Release Info (ES)
splash:
actions:
book_demo: Schedule a Demo (ES)
create_template: Create New Release Template (ES)
headings:
benefits: ""
how_it_works: How It Works (ES)
subtitle: The easiest way to create and manage releases. (ES)
welcome: Welcome to (ES)
list_items:
add_tags_and_notes: Add tags and notes to releases for added organization and searchability (ES)
all_releases_available: All release types available including Covid Medical, Appearance, Location and more (ES)
create_releases: Create releases for your video shoot (ES)
download_mobile_app: Download the ME Suite mobile app (ES)
manage_large_audience: Easily manage large audiences with the crowd control feature (ES)
print_QR_code: Print out release QR codes (ES)
releases_automatically_organized: Releases are automatically organized as theyre submitted (ES)
contracts:
photos:
guardian_2_photo_heading: Second guardian photo (ES)
@@ -272,8 +255,6 @@ es:
broadcast:
create: Create Live Stream (ES)
update: Save Changes (ES)
casting_submission:
create: Create casting submission (ES)
create: 'Crear %{model}'
update: 'Actualizar %{model}'
location_releases:
@@ -284,9 +265,6 @@ es:
form:
photos:
dropzone_label: Tap to take a photo of Licensed Material (optional) (ES)
medical_releases:
custom_validation_errors:
question_answer_is_required: answer is required (ES)
public:
appearance_releases:
create:
@@ -399,44 +377,8 @@ es:
index:
table_headers:
task_request_description: Description (ES)
splash:
actions:
book_demo: Schedule a Demo (ES)
create_task_request: Create Task Request
headings:
benefits: Benefits (ES)
how_it_works: How It Works (ES)
subtitle: Pay-by-the-hour, digitally-enabled remote assistants (ES)
welcome: Welcome to (ES)
list_items:
enter_number_of_hours: Enter the number of hours you want the task worked on (ES)
enter_task_request: Enter your task request (ES)
reduces_need_for_full_time_staff: Reduces need to hire full-time staff (ES)
reduces_workload: Reduces workload for current staff (ES)
spend_per_task: Spend as little as $60 per task (ES)
state_deadline: State your deadline (ES)
virtual_assistant_delivers_task: Virtual assistant delivers task via TaskME portal (ES)
task_request:
actions:
manage: Manage (ES)
open_deliverable: Open Deliverable (ES)
read_more: read more (ES)
videos:
splash:
actions:
book_demo: Schedule a Demo (ES)
upload_video: Upload New Video (ES)
headings:
benefits: Benefits (ES)
how_it_works: How It Works (ES)
subtitle: Automate your deliverable documents (ES)
welcome: Welcome to (ES)
list_items:
AI_generates_documents: AI generates deliverable documents (ES)
download_documents: Download deliverable documents (ES)
import_EDLs: Import your EDLs (ES)
import_video: Import your video (ES)
more_accurate: More accurate than human-generated reports (ES)
production_elements_logs: Production Elements Logs, and more (ES)
reduces_labor_cost: Reduces labor costs (ES)
simplifies_cue_sheets: Simplifies Music Cue Sheets, Graphic Cue Sheets (ES)

View File

@@ -32,9 +32,6 @@ Rails.application.routes.draw do
resource :masquerade, only: :create
end
resources :task_requests, only: [:index, :edit, :update, :show]
resources :casting_submissions do
post :complete, on: :member
end
root to: "accounts#index", as: :signed_in_root
end
@@ -69,7 +66,6 @@ Rails.application.routes.draw do
resource :contract_downloads, only: [:create]
resources :downloads, only: [:index, :destroy]
resource :report_downloads, only: [:create]
resource :casting_submission_downloads, only: [:create]
resources :videos, only: [:index, :new, :create, :edit, :update] do
collection do
get :landing
@@ -109,13 +105,7 @@ Rails.application.routes.draw do
post :cancel
end
end
resources :casting_calls, except: :destroy do
member do
post :cancel
end
end
resources :tasks, only: :index
resources :casting_submissions, only: [:index, :show]
end
resource :profile, only: [:show, :update]
resources :videos, only: [] do
@@ -144,8 +134,6 @@ Rails.application.routes.draw do
resources :broadcasts, param: :token, only: [:show, :update] do
resource :zoom_meeting, only: [:show]
end
resources :casting_calls, param: :token, only: [:show]
resources :casting_submissions, param: :token, only: [:show, :update]
end
RELEASES = [:acquired_media_releases, :appearance_releases, :talent_releases, :material_releases, :location_releases]

View File

@@ -1,17 +0,0 @@
class CreateCastingCalls < ActiveRecord::Migration[6.0]
def change
create_table :casting_calls do |t|
t.references :project
t.string :title
t.string :user_email
t.text :description
t.text :project_description
t.text :interview_instructions
t.text :interview_requirements
t.text :questions
t.datetime :cancelled_at
t.timestamps
end
end
end

View File

@@ -1,12 +0,0 @@
class CreateCastingCallInterviews < ActiveRecord::Migration[6.0]
def change
create_table :casting_call_interviews do |t|
t.references :casting_call, foreign_key: true
t.string :performer_name
t.string :zoom_meeting_url
t.datetime :interview_date
t.timestamps
end
end
end

View File

@@ -1,20 +0,0 @@
class AddQuestionAnswersToMiscReleases < ActiveRecord::Migration[6.0]
def change
add_column :misc_releases, :question_1_answer, :text
add_column :misc_releases, :question_2_answer, :text
add_column :misc_releases, :question_3_answer, :text
add_column :misc_releases, :question_4_answer, :text
add_column :misc_releases, :question_5_answer, :text
add_column :misc_releases, :question_6_answer, :text
add_column :misc_releases, :question_7_answer, :text
add_column :misc_releases, :question_8_answer, :text
add_column :misc_releases, :question_9_answer, :text
add_column :misc_releases, :question_10_answer, :text
add_column :misc_releases, :question_11_answer, :text
add_column :misc_releases, :question_12_answer, :text
add_column :misc_releases, :question_13_answer, :text
add_column :misc_releases, :question_14_answer, :text
add_column :misc_releases, :question_15_answer, :text
end
end

View File

@@ -1,6 +0,0 @@
class AddTokenToCastingCalls < ActiveRecord::Migration[6.0]
def change
add_column :casting_calls, :token, :string
add_index :casting_calls, :token, unique: true
end
end

View File

@@ -1,6 +0,0 @@
class AddTokenToCastingCallInterviews < ActiveRecord::Migration[6.0]
def change
add_column :casting_call_interviews, :token, :string
add_index :casting_call_interviews, :token, unique: true
end
end

View File

@@ -1,5 +0,0 @@
class AddInterviewedAtToCastingCallInterview < ActiveRecord::Migration[6.0]
def change
add_column :casting_call_interviews, :interviewed_at, :datetime
end
end

View File

@@ -1,5 +0,0 @@
class RenameCastingCallInterviewsToCastingSubmissions < ActiveRecord::Migration[6.0]
def change
rename_table :casting_call_interviews, :casting_submissions
end
end

View File

@@ -555,82 +555,6 @@ CREATE SEQUENCE public.broadcasts_id_seq
ALTER SEQUENCE public.broadcasts_id_seq OWNED BY public.broadcasts.id;
--
-- Name: casting_calls; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.casting_calls (
id bigint NOT NULL,
project_id bigint,
title character varying,
user_email character varying,
description text,
project_description text,
interview_instructions text,
interview_requirements text,
questions text,
cancelled_at timestamp without time zone,
created_at timestamp(6) without time zone NOT NULL,
updated_at timestamp(6) without time zone NOT NULL,
token character varying
);
--
-- Name: casting_calls_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.casting_calls_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: casting_calls_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.casting_calls_id_seq OWNED BY public.casting_calls.id;
--
-- Name: casting_submissions; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.casting_submissions (
id bigint NOT NULL,
casting_call_id bigint,
performer_name character varying,
zoom_meeting_url character varying,
interview_date timestamp without time zone,
created_at timestamp(6) without time zone NOT NULL,
updated_at timestamp(6) without time zone NOT NULL,
token character varying,
interviewed_at timestamp without time zone
);
--
-- Name: casting_submissions_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.casting_submissions_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: casting_submissions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.casting_submissions_id_seq OWNED BY public.casting_submissions.id;
--
-- Name: composers; Type: TABLE; Schema: public; Owner: -
--
@@ -1177,22 +1101,7 @@ CREATE TABLE public.misc_releases (
signed_at timestamp without time zone,
minor boolean DEFAULT false,
created_at timestamp(6) without time zone NOT NULL,
updated_at timestamp(6) without time zone NOT NULL,
question_1_answer text,
question_2_answer text,
question_3_answer text,
question_4_answer text,
question_5_answer text,
question_6_answer text,
question_7_answer text,
question_8_answer text,
question_9_answer text,
question_10_answer text,
question_11_answer text,
question_12_answer text,
question_13_answer text,
question_14_answer text,
question_15_answer text
updated_at timestamp(6) without time zone NOT NULL
);
@@ -2039,20 +1948,6 @@ ALTER TABLE ONLY public.broadcast_recordings ALTER COLUMN id SET DEFAULT nextval
ALTER TABLE ONLY public.broadcasts ALTER COLUMN id SET DEFAULT nextval('public.broadcasts_id_seq'::regclass);
--
-- Name: casting_calls id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.casting_calls ALTER COLUMN id SET DEFAULT nextval('public.casting_calls_id_seq'::regclass);
--
-- Name: casting_submissions id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.casting_submissions ALTER COLUMN id SET DEFAULT nextval('public.casting_submissions_id_seq'::regclass);
--
-- Name: composers id; Type: DEFAULT; Schema: public; Owner: -
--
@@ -2374,22 +2269,6 @@ ALTER TABLE ONLY public.broadcasts
ADD CONSTRAINT broadcasts_pkey PRIMARY KEY (id);
--
-- Name: casting_calls casting_calls_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.casting_calls
ADD CONSTRAINT casting_calls_pkey PRIMARY KEY (id);
--
-- Name: casting_submissions casting_submissions_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.casting_submissions
ADD CONSTRAINT casting_submissions_pkey PRIMARY KEY (id);
--
-- Name: composers composers_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
@@ -2807,34 +2686,6 @@ CREATE INDEX index_broadcasts_on_project_id ON public.broadcasts USING btree (pr
CREATE UNIQUE INDEX index_broadcasts_on_token ON public.broadcasts USING btree (token);
--
-- Name: index_casting_calls_on_project_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX index_casting_calls_on_project_id ON public.casting_calls USING btree (project_id);
--
-- Name: index_casting_calls_on_token; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX index_casting_calls_on_token ON public.casting_calls USING btree (token);
--
-- Name: index_casting_submissions_on_casting_call_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX index_casting_submissions_on_casting_call_id ON public.casting_submissions USING btree (casting_call_id);
--
-- Name: index_casting_submissions_on_token; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX index_casting_submissions_on_token ON public.casting_submissions USING btree (token);
--
-- Name: index_composers_on_music_release_id; Type: INDEX; Schema: public; Owner: -
--
@@ -3432,14 +3283,6 @@ ALTER TABLE ONLY public.bookmarks
ADD CONSTRAINT fk_rails_15735b7db8 FOREIGN KEY (video_id) REFERENCES public.videos(id);
--
-- Name: casting_submissions fk_rails_1583f69fbb; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.casting_submissions
ADD CONSTRAINT fk_rails_1583f69fbb FOREIGN KEY (casting_call_id) REFERENCES public.casting_calls(id);
--
-- Name: acquired_media_releases fk_rails_15b450b040; Type: FK CONSTRAINT; Schema: public; Owner: -
--
@@ -4043,13 +3886,6 @@ INSERT INTO "schema_migrations" (version) VALUES
('20200619085823'),
('20200619134853'),
('20200622180507'),
('20200625144713'),
('20200626044744'),
('20200701121237'),
('20200702152130'),
('20200706193123'),
('20200706230803'),
('20200707070522'),
('20200714175331');
('20200625144713');

View File

@@ -54,16 +54,14 @@ RSpec.describe AccountsController, type: :controller do
end
it "enqueues hubspot form submission job" do
ENV["HUBSPOT_FORM_GUID"] = "form_guid"
expect {
post :create, params: params
}.to have_enqueued_job(SubmitHubspotFormJob).with(
first_name: "John",
last_name: "Doe",
email: "test_user+1@test.com",
company: "Test Dev account",
i_m_interested_in: "DirectME",
form_guid: "form_guid"
"John",
"Doe",
"test_user+1@test.com",
"Test Dev account",
i_m_interested_in: "DirectME"
)
end
end

View File

@@ -1,114 +0,0 @@
require "rails_helper"
RSpec.describe Admin::CastingSubmissionsController, type: :controller do
let!(:current_user) { create(:user, :admin) }
before do
sign_in(current_user)
end
describe "#index" do
it "returns a successful response" do
get :index
expect(response).to be_successful
end
end
describe "#new" do
it "returns a successful response" do
get :new
expect(response).to be_successful
end
it "assigns user, accounts" do
get :new
expect(assigns(:casting_submission)).not_to be_nil
expect(assigns(:accounts)).to eq Account.all
end
end
describe "#create" do
it "does create a new record" do
expect {
post :create, params: { casting_submission: casting_submission_params }
}.to change(CastingSubmission, :count)
end
end
describe "#edit" do
let(:casting_submission) { create(:casting_submission) }
it "returns a successful response" do
get :edit, params: { id: casting_submission }
expect(response).to be_successful
end
it "assigns casting submission" do
get :edit, params: { id: casting_submission }
expect(assigns(:casting_submission)).to eq casting_submission
end
end
describe "#update" do
let(:casting_submission) { create(:casting_submission) }
it "redirects to casting submissions page" do
patch :update, params: { id: casting_submission, casting_submission: update_params }
expect(response).to be_redirect
expect(response).to redirect_to admin_casting_submissions_path
end
it "sets a flash notice" do
patch :update, params: { id: casting_submission, casting_submission: update_params }
expect(flash.notice).to eq "The casting submission has been updated"
end
it "updates casting submission" do
patch :update, params: { id: casting_submission, casting_submission: update_params }
expect(casting_submission.reload.zoom_meeting_url).to eq new_zoom_meeting_url
end
end
describe "#complete" do
let(:casting_submission) { create(:casting_submission) }
it "sets interviewed_at on casting submission" do
expect(casting_submission.interviewed_at).to be_nil
post :complete, params: { id: casting_submission }
expect(casting_submission.reload.interviewed_at).not_to be_nil
end
end
private
def casting_submission_params
casting_call = create(:casting_call)
attributes_for(:casting_submission).except(:interviewed_at).merge(casting_call_id: casting_call.id)
end
def update_params
{
zoom_meeting_url: new_zoom_meeting_url
}
end
def new_zoom_meeting_url
"https://s01web.zoom.us/j/11111?pwd=Ab123Cq34"
end
def invalid_meeting_url_flash_error
t 'casting_submissions.validation_errors.invalid_meeting_url'
end
end

View File

@@ -1,120 +0,0 @@
require 'rails_helper'
RSpec.describe CastingCallsController, type: :controller do
render_views
let(:user) { create(:user) }
let(:account) { user.primary_account }
let(:project) { create(:project, account: user.primary_account) }
before do
sign_in user
end
describe "#index" do
it "responds successfully" do
get :index, params: { project_id: project }
expect(response).to be_successful
end
it "renders content" do
create(:casting_call, project: project)
get :index, params: { project_id: project }
expect(response.body).to have_link "Create Casting Call"
expect(response.body).to have_content "Active"
end
context "when there are many records" do
it "paginates the table" do
create_list(:casting_call, 20, project: project)
get :index, params: { project_id: project }
expect(response.body).to have_link("2", href: project_casting_calls_path(project, page: 2))
end
end
end
describe "#new" do
it "responds successfully" do
get :new, params: { project_id: project }
expect(response).to be_successful
expect(assigns(:casting_call)).to be_a_new(CastingCall)
expect(response).to render_template(:new)
end
end
describe "#create" do
it "does create a new record" do
expect {
post :create, params: { project_id: project.id, casting_call: casting_call_params }
}.to change(CastingCall, :count)
end
it "logs an event" do
expect {
post :create, params: { project_id: project.id, casting_call: casting_call_params }
}.to have_enqueued_job(TrackAnalyticsJob).with(user, account, :track_create_casting_call, user_agent: "Rails Testing", user_ip: "0.0.0.0")
end
end
describe "#update" do
let!(:casting_call) { create(:casting_call, project: project, description: "My description" ) }
it "updates casting call request" do
patch :update, params: { project_id: project.id, id: casting_call.id, casting_call: update_params }
expect(casting_call.reload.description).to eq("This is updated description")
end
end
describe "#show" do
let!(:casting_call) { create(:casting_call, project: project, description: "Casting Call Request") }
it "responds successfully" do
get :show, params: { project_id: project.id, id: casting_call.id }
expect(response).to be_successful
expect(assigns(:casting_call)).to eq(casting_call)
end
it "renders content" do
get :show, params: { project_id: project.id, id: casting_call.id }
expect(response.body).to have_content "Casting Call Request"
expect(response.body).to have_content "Active"
end
end
describe "#cancel" do
let!(:casting_call) { create(:casting_call, project: project, description: "Casting Call to be Cancelled") }
it "responds with redirect" do
post :cancel, params: { project_id: project.id, id: casting_call.id }
expect(response).to be_redirect
expect(response).to redirect_to(project_casting_calls_path(project))
expect(flash.notice).not_to be_nil
end
it "updates the status to 'Cancelled'" do
expect {
post :cancel, params: { project_id: project.id, id: casting_call.id }
}.to change { casting_call.reload.status }.from("Active").to("Cancelled")
end
end
private
def casting_call_params
attributes_for(:casting_call).except(:status, :user_email)
end
def update_params
{ description: "This is updated description" }
end
end

View File

@@ -1,58 +0,0 @@
require "rails_helper"
RSpec.describe CastingSubmissionDownloadsController, type: :controller do
render_views
let(:current_user) { create(:user) }
let(:project) { create(:project, :discovery_client, account: current_user.primary_account) }
let(:casting_call) { create(:casting_call, project: project, title: "My Title") }
let(:casting_submission) { create(:casting_submission, casting_call: casting_call, performer_name: "John Doe") }
before do
sign_in current_user
end
describe "#create" do
it "enqueues zip file generation job" do
expect {
post :create, params: { project_id: project.id, casting_submission_id: casting_submission.id }, format: :js
}.to have_enqueued_job(GenerateCastingSubmissionFilesZipJob)
end
it "creates a download record with 'not_started' status" do
expect {
post :create, params: { project_id: project.id, casting_submission_id: casting_submission.id }, format: :js
}.to change(Download, :count).by(1)
expect(Download.last.status).to eq('not_started')
end
context "When there is no existing job" do
it "shows a notification to user" do
allow(ProjectsChannel).to receive(:broadcast_download_generation_update).with(be_kind_of(Download), I18n.t("casting_submission_downloads.download.pending", release_type: "CastingSubmission"))
post :create, params: { project_id: project.id, casting_submission_id: casting_submission.id }, format: :js
expect(ProjectsChannel).to have_received(:broadcast_download_generation_update).with(be_kind_of(Download), I18n.t("casting_submission_downloads.download.pending", release_type: "CastingSubmission"))
end
end
context "When there are existing jobs" do
let(:appearance_release_download) { create(:download, project_id: project.id, name: "#{project.name.parameterize}_appearance-releases") }
let(:acquired_media_release_download) { create(:download, project_id: project.id, name: "#{project.name.parameterize}_acquired-media-releases", release_type: "AcquiredMediaRelease") }
before do
allow(Download).to receive_message_chain(:unfinished_desc_order, :offset).and_return([acquired_media_release_download, appearance_release_download])
allow(ProjectsChannel).to receive(:broadcast_download_generation_update)
end
it "shows names of other contracts in the notification, which are in progress" do
broadcast_message = "<p>Your Casting Submission files are being prepared for download. You will be notified when it's ready.\n</p>\n<p class=\"mt-3\">The following downloads are also in progress:</p> \n<ul>\n <li>Acquired Media Release contracts (as of less than a minute ago)\n </li>\n <li>Appearance Release contracts (as of less than a minute ago)\n </li>\n</ul>\n"
post :create, params: { project_id: project.id, casting_submission_id: casting_submission.id }, format: :js
expect(ProjectsChannel).to have_received(:broadcast_download_generation_update).with(be_kind_of(Download), broadcast_message)
end
end
end
end

View File

@@ -1,44 +0,0 @@
require "rails_helper"
RSpec.describe CastingSubmissionsController, type: :controller do
render_views
let(:user) { create(:user) }
let(:account) { user.primary_account }
let(:project) { create(:project, account: user.primary_account) }
let(:casting_call) { create(:casting_call, project: project, title: "My Interview") }
before do
sign_in(user)
end
describe "#index" do
it "returns a successful response" do
get :index, params: { project_id: project }
expect(response).to be_successful
end
it "only shows completed submissions" do
create(:casting_submission, casting_call: casting_call, interviewed_at: Time.zone.now, performer_name: "John Doe")
create(:casting_submission, casting_call: casting_call, interviewed_at: nil, performer_name: "Jane Doe")
get :index, params: { project_id: project }
expect(response.body).to have_content("John Doe")
expect(response.body).not_to have_content("Jane Doe")
end
end
describe "#show" do
let!(:casting_submission) { create(:casting_submission, :with_files, casting_call: casting_call, interviewed_at: Time.zone.now, performer_name: "Jane Doe") }
it "shows files of casting submission" do
get :show, params: { project_id: project, id: casting_submission.id }
expect(response.body).to have_content(casting_submission.performer_name)
expect(response.body).to have_content(casting_submission.casting_call.title)
expect(response.body).to have_content(casting_submission.casting_call.project_description)
end
end
end

View File

@@ -19,7 +19,7 @@ describe ContractTemplatesController do
expect(response).to be_successful
end
it 'renders content if there are contract templates' do
it 'renders content' do
contract_template = create(:contract_template,
name: 'My Contract Template', fee: 50, release_type: 'appearance',
project: project)
@@ -39,11 +39,10 @@ describe ContractTemplatesController do
end
context 'when there are no contract templates' do
it 'renders splash screen' do
it 'renders an empty message' do
get :index, params: { project_id: project }
expect(response.body).to have_link "Create New Release Template"
expect(response.body).to have_link schedule_demo
expect(response.body).to have_content('Release Templates will appear here')
end
end
@@ -51,7 +50,6 @@ describe ContractTemplatesController do
let(:current_user) { create(:user, :associate) }
it 'does not show the new contract template button' do
create(:contract_template, project: project)
get :index, params: { project_id: project }
expect(response.body).not_to have_link('Create New Release Template')
@@ -168,8 +166,4 @@ describe ContractTemplatesController do
restriction_text: 'restrictions'
}
end
def schedule_demo
t 'contract_templates.splash.actions.book_demo'
end
end

View File

@@ -1,25 +0,0 @@
require 'rails_helper'
RSpec.describe Public::CastingCallsController, type: :controller do
render_views
describe "#show" do
let(:casting_call) { create(:casting_call) }
it "responds successfully" do
get :show, params: { token: casting_call.token }
expect(response).to be_successful
expect(assigns(:casting_call)).to eq(casting_call)
end
it "shows casting call details" do
get :show, params: { token: casting_call.token }
expect(response.body).to have_content(casting_call.title)
expect(response.body).to have_content(casting_call.description)
expect(response.body).to have_content(casting_call.project_description)
expect(response.body).to have_link("Schedule an Audition")
end
end
end

View File

@@ -1,44 +0,0 @@
require 'rails_helper'
RSpec.describe Public::CastingSubmissionsController, type: :controller do
render_views
describe "#show" do
let(:casting_submission) { create(:casting_submission) }
it "responds successfully" do
get :show, params: { token: casting_submission.token }
expect(response).to be_successful
expect(assigns(:casting_submission)).to eq(casting_submission)
end
it "shows casting call interview details" do
get :show, params: { token: casting_submission.token }
expect(response.body).to have_content(casting_submission.performer_name)
expect(response.body).to have_content(casting_submission.interview_date)
expect(response.body).to have_link("Start Interview")
end
end
describe "#update" do
let(:casting_submission) { create(:casting_submission) }
it "responds successfully" do
patch :update, params: { token: casting_submission.token, casting_submission: casting_submission_params }
expect(response).to redirect_to casting_submission_url(token: casting_submission.token)
expect(flash.notice).to be_present
end
end
private
def casting_submission_params
path = Rails.root.join("spec", "fixtures", "files", "contract.pdf")
file = Rack::Test::UploadedFile.new(path, "application/pdf")
{ files: [file]}
end
end

View File

@@ -19,29 +19,14 @@ RSpec.describe Public::MedicalReleasesController, type: :controller do
end
it "displays validation errors" do
contract_template = create(:contract_template,
project: project,
question_1_text: "Question 1",
question_2_text: "Question 2"
)
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,
medical_release: {
person_address_city: "Albuquerque",
question_2_answer: "Answer 2"
}
}
post :create, params: { account_id: user.primary_account.to_param, project_id: project, contract_template_id: contract_template, medical_release: { person_address_city: "Albuquerque" } }
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/
expect(body).to match />can't be blank</
expect(body).to match /Question 1 #{question_answer_validation_error}/
expect(body).not_to match /Question 2 #{question_answer_validation_error}/
end
it "responds with success " do
@@ -83,8 +68,4 @@ RSpec.describe Public::MedicalReleasesController, type: :controller do
{ signature_base64: data_uri }
end
def question_answer_validation_error
t 'medical_releases.custom_validation_errors.question_answer_is_required'
end
end

View File

@@ -18,14 +18,7 @@ RSpec.describe TaskRequestsController, type: :controller do
expect(response).to be_successful
end
it "renders splash page if there are no task requests" do
get :index, params: { project_id: project }
expect(response.body).to have_link "Create Task Request"
expect(response.body).to have_link schedule_demo
end
it "renders task requests table if there are task requests" do
it "renders content" do
create(:task_request, project: project, description: "Another Request")
get :index, params: { project_id: project }
@@ -71,7 +64,7 @@ RSpec.describe TaskRequestsController, type: :controller do
it "submits data to hubspot form" do
expect {
post :create, params: { project_id: project.id, task_request: task_request_params }
}.to have_enqueued_job(SubmitHubspotFormJob)
}.to have_enqueued_job(SubmitHubspotTaskRequestFormJob)
end
end
@@ -133,8 +126,4 @@ RSpec.describe TaskRequestsController, type: :controller do
def update_params
{ description: "This is updated description" }
end
def schedule_demo
t 'task_requests.splash.actions.book_demo'
end
end

View File

@@ -20,7 +20,6 @@ RSpec.describe VideosController, type: :controller do
end
it "has a search form" do
create(:video, project: project)
get :index, params: { project_id: project }
expect(response.body).to have_button("search-button")
@@ -44,7 +43,7 @@ RSpec.describe VideosController, type: :controller do
end
it "renders content if there are existing videos" do
it "renders content" do
video = create(:video, project: project, name: "My Video", number: "001", created_at: 1.day.ago)
get :index, params: { project_id: project }
@@ -59,11 +58,10 @@ RSpec.describe VideosController, type: :controller do
end
context "when there are no records" do
it "renders splash screen" do
it "renders an empty message" do
get :index, params: { project_id: project }
expect(response.body).to have_link "Upload New Video"
expect(response.body).to have_link schedule_demo
expect(response.body).to have_content("Videos will appear here")
end
end
@@ -279,8 +277,4 @@ RSpec.describe VideosController, type: :controller do
def video_update_params
attributes_for(:video, :with_graphics_only_edl_file, :with_audio_only_edl_file, name: "Test Video").except(:file)
end
def schedule_demo
t 'videos.splash.actions.book_demo'
end
end

View File

@@ -1,16 +0,0 @@
FactoryBot.define do
factory :casting_call do
association :project
user_email 'test@email.com'
title 'Casting Call Title'
description "Casting call description"
project_description "Casting call project description"
interview_instructions "Interview instructions"
interview_requirements "Interview requirements"
questions "Questions"
trait :cancelled do
cancelled_at { Time.zone.now }
end
end
end

View File

@@ -1,17 +0,0 @@
FactoryBot.define do
factory :casting_submission do
association :casting_call
performer_name 'John Doe'
zoom_meeting_url 'https://us04web.zoom.us/j/1111111111?pwd=aDZCS1dzZ2lWdDZJcHBhVnNIclB4QT03'
interview_date { 10.days.from_now }
interviewed_at { nil }
trait :with_files do
files { [Rack::Test::UploadedFile.new('spec/fixtures/files/location_photo.png', 'image/png')] }
end
trait :with_interview_recording do
interview_recording { Rack::Test::UploadedFile.new('spec/fixtures/files/video_file.mp4', 'video/mp4') }
end
end
end

View File

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

View File

@@ -1,129 +0,0 @@
require "rails_helper"
feature "Admin managing casting submissions" do
let(:current_user) { create(:user, admin: true, email: "user@test.com") }
let(:project) { create(:project, account: current_user.primary_account, name: "Test Project") }
before do
sign_in current_user
end
scenario "when creating new casting call interview - interview recording field is not visible" do
visit admin_casting_submissions_path
click_on create_casting_submission_button
expect(page).to have_content new_casting_submission_heading
expect(page).not_to have_field interview_recording_field
end
scenario "admin can upload interview recording video when editing casting call interview" do
cc = create(:casting_call)
cci = create(:casting_submission, casting_call: cc)
expect(CastingSubmission.last.interview_recording).not_to be_attached
visit edit_admin_casting_submission_path(cci)
expect(page).to have_content edit_casting_submission_heading
expect(page).to have_field interview_recording_field
expect(page).not_to have_content current_interview_recording_label
attach_file interview_recording_field, Rails.root.join(file_fixture('video_file.mp4'))
click_on update_casting_submission_button
expect(page).to have_content casting_submission_updated_message
expect(CastingSubmission.last.interview_recording).to be_attached
end
scenario "when editing casting call interview with already uploaded interview video, interview recording file name link is shown below file field" do
cc = create(:casting_call)
cci = create(:casting_submission, :with_interview_recording, casting_call: cc)
expect(CastingSubmission.last.interview_recording).to be_attached
visit edit_admin_casting_submission_path(cci)
expect(page).to have_content edit_casting_submission_heading
expect(page).to have_content current_interview_recording_label
expect(page).to have_link CastingSubmission.last.interview_recording.attachment.blob.filename.to_s
end
scenario "when admin opens view page for casting submission, it does not fail if zoom meeting URL is invalid" do
cc = create(:casting_call)
cci = create(:casting_submission, casting_call: cc, zoom_meeting_url: "anything")
visit admin_casting_submissions_path
click_on manage_button
click_link view_link
expect(page).to have_content casting_submission_details_header
expect(page).to have_content interview_files_label
expect(page).to have_content cci.performer_name
end
private
def create_casting_submission_button
t 'admin.casting_submissions.index.actions.new'
end
def new_casting_submission_heading
t 'admin.casting_submissions.new.heading'
end
def edit_casting_submission_heading
'Edit Casting Submission'
end
def update_casting_submission_button
'Update Casting submission'
end
def submit_casting_submission_form
t 'helpers.submit.casting_submission.create'
end
def zoom_meeting_url_invalid_error
t 'casting_submissions.validation_errors.invalid_meeting_url'
end
def performer_name_field
'casting_submission[performer_name]'
end
def zoom_meeting_url_field
'casting_submission[zoom_meeting_url]'
end
def casting_call_field
'casting_submission[casting_call_id]'
end
def casting_submission_updated_message
t 'admin.casting_submissions.update.notice'
end
def interview_recording_field
'casting_submission[interview_recording]'
end
def current_interview_recording_label
'Current interview recording'
end
def manage_button
'Manage'
end
def view_link
'View'
end
def casting_submission_details_header
'Casting submission details'
end
def interview_files_label
'INTERVIEW FILES:'
end
end

View File

@@ -13,7 +13,6 @@ feature "User imports release templates", type: :feature do
end
scenario "importing two existing templates into a project" do
create(:contract_template, project: project)
visit project_contract_templates_path(project)
click_on "Import Release Template"
select_templates([project_one_template.id, project_two_template.id])
@@ -32,7 +31,6 @@ feature "User imports release templates", type: :feature do
end
scenario "searching for a template", js: true do
create(:contract_template, project: project)
visit project_contract_templates_path(project)
click_on "Import Release Template"
fill_in "query", with: "Second"

View File

@@ -11,13 +11,6 @@ RSpec.feature 'User manages contract templates', type: :feature do
sign_in(current_user)
end
scenario 'splash page is shown if tehre are no contract templates' do
visit project_contract_templates_path(project)
expect(page).to have_content schedule_demo
expect(page).to have_content create_release_template
end
scenario 'creating a new release template' do
visit new_project_contract_template_path(project)
@@ -32,7 +25,7 @@ RSpec.feature 'User manages contract templates', type: :feature do
select 'None', from: 'Restriction'
click_on 'Create Release Template'
expect(page).to have_content(create_contract_template_success_message)
expect(page).to have_content('The release template has been created')
end
scenario 'medical release template has a guardian clause field' do
@@ -43,28 +36,10 @@ RSpec.feature 'User manages contract templates', type: :feature do
fill_hidden guardian_clause_field, with: 'Guardian clause text'
click_on 'Create Release Template'
expect(page).to have_content(create_contract_template_success_message)
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 'misc release templates has guardian clause and questionnaire', js: true do
visit new_project_contract_template_path(project)
fill_in 'Name', with: 'My Misc Release'
select 'Misc Release', from: 'Release type'
expect(page).to have_selector('label', text: 'Guardian Clause')
MiscRelease::NUMBER_OF_CUSTOM_FIELDS.times do |n|
expect(page).to have_field(question_field(n+1))
end
fill_in_trix 'contract_template_guardian_clause', with: 'Guardian clause text'
fill_in question_field(1), with: 'How much experience do you have in the industry?'
click_on 'Create Release Template'
expect(page).to have_content(create_contract_template_success_message)
end
scenario 'preview new talent release template without guardian clause' do
visit new_project_contract_template_path(project)
select 'Talent Release', from: 'Release type'
@@ -168,13 +143,13 @@ RSpec.feature 'User manages contract templates', type: :feature do
scenario 'Should not allow negative fees' do
fill_in 'Fee', with: '-200'
click_on 'Create Release Template'
expect(page).not_to have_content(create_contract_template_success_message)
expect(page).not_to have_content('The release template has been created')
end
scenario 'Should not allow fees with more than 9 digits' do
fill_in 'Fee', with: '9999999999'
click_on 'Create Release Template'
expect(page).not_to have_content(create_contract_template_success_message)
expect(page).not_to have_content('The release template has been created')
end
end
@@ -248,20 +223,12 @@ RSpec.feature 'User manages contract templates', type: :feature do
let(:current_user) { create(:user, :associate) }
it 'does not show management buttons for release templates' do
create(:contract_template, project: project)
visit project_contract_templates_path(project)
expect(page).not_to have_content('Create New Release Template')
expect(page).not_to have_content(import_template_button)
expect(page).not_to have_content('Delete')
end
it 'does not show create release button on splash page' do
visit project_contract_templates_path(project)
expect(page).to have_content schedule_demo
expect(page).not_to have_content create_release_template
end
end
context 'When the user is account manager' do
@@ -275,13 +242,6 @@ RSpec.feature 'User manages contract templates', type: :feature do
click_on 'Manage'
expect(page).to have_content('Archive')
end
it 'does not show create release button on splash page' do
visit project_contract_templates_path(project)
expect(page).to have_content schedule_demo
expect(page).to have_content create_release_template
end
end
private
@@ -310,23 +270,7 @@ RSpec.feature 'User manages contract templates', type: :feature do
'contract_template_guardian_clause_trix_input_contract_template'
end
def create_contract_template_success_message
'The release template has been created'
end
def question_field(n)
"Question #{n} text"
end
def fill_hidden(id, with:)
find(:xpath, "//input[@id='#{id}']", visible: false).set with
end
def schedule_demo
t 'contract_templates.splash.actions.book_demo'
end
def create_release_template
t 'contract_templates.splash.actions.create_template'
end
end

View File

@@ -30,24 +30,6 @@ feature 'User managing appearance releases' do
expect(page).to have_content(successful_submission_message)
end
scenario "creating a release for a minor - guardian fields are required when minor checkbox is checked", js: true do
contract_template = create(:contract_template, project: project)
visit new_account_project_contract_template_appearance_release_path(project.account, project, contract_template)
all('input[data-required-tag="guardian"]').each do |field|
expect(field['required']).to eq 'false'
expect(field).not_to be_visible
end
page.check person_is_minor_checkbox
all('input[data-required-tag="guardian"]').each do |field|
expect(field['required']).to eq 'true'
expect(field).to be_visible
end
end
scenario 'creating a release for a minor', js: true do
allow(BrayniacAI::Validation).to receive(:create).and_return(double(:validation, valid: true))
@@ -68,7 +50,6 @@ feature 'User managing appearance releases' do
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 guardian_email_field, with: 'valid@email.com'
fill_in person_first_name_field, with: 'Jane'
fill_in person_last_name_field, with: 'Doe'
fill_in_person_address_fields
@@ -79,6 +60,11 @@ feature 'User managing appearance releases' do
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
fill_in guardian_email_field, with: 'invalid@email'
click_button submit_release_button
expect(page).to have_content('Guardian email is not an email')
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'), 'appearance_release_signature_base64'
@@ -113,7 +99,6 @@ feature 'User managing appearance releases' do
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 guardian_email_field, with: 'valid@email.com'
fill_in person_first_name_field, with: 'Jane'
fill_in person_last_name_field, with: 'Doe'
fill_in_person_address_fields
@@ -124,6 +109,11 @@ feature 'User managing appearance releases' do
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
fill_in guardian_email_field, with: 'invalid@email'
click_button submit_release_button
expect(page).to have_content('Guardian email is not an email')
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'), 'appearance_release_signature_base64'

View File

@@ -1,155 +0,0 @@
require "rails_helper"
feature "User managing casting calls" do
let(:current_user) { create(:user) }
let(:project) { create(:project, account: current_user.primary_account) }
before :each do
sign_in current_user
end
scenario "casting calls table is visible" do
visit project_casting_calls_path(project)
expect(page).to have_content "Created On"
expect(page).to have_content "Title"
expect(page).to have_content "Status"
end
scenario "sees list of casting calls" do
visit project_casting_calls_path(project)
expect(page).to have_content no_casting_calls_label
casting_call = create(:casting_call, project: project)
visit project_casting_calls_path(project)
expect(page).not_to have_content no_casting_calls_label
expect(page).to have_content casting_call.created_at.try(:strftime, '%D')
expect(page).to have_content casting_call.title
expect(page).to have_content casting_call.status
end
scenario "can create casting call requests" do
visit project_casting_calls_path(project)
expect(page).to have_content no_casting_calls_label
click_on add_new_casting_call_label
fill_in title_field, with: "Casting Title"
fill_in description_field, with: "Description"
fill_in project_description_field, with: "Project Description"
fill_in interview_instructions_field, with: "Welcome Message"
fill_in interview_requirements_field, with: "Goodbye Message"
fill_in questions_field, with: "Questions"
click_on "Create Casting call"
expect(page).to have_content("The casting call request has been created successfully.")
end
scenario "can update casting call requests" do
create(:casting_call, title: "Title", project: project)
visit project_casting_calls_path(project)
click_on manage_button
click_on "Edit"
fill_in title_field, with: "New Title"
click_on "Update Casting call"
expect(page).to have_content("The casting call request has been updated")
end
scenario "can cancel a casting call request" do
create(:casting_call, title: "Title", project: project)
visit project_casting_calls_path(project)
click_on manage_button
click_on "Cancel"
expect(page).to have_content("The casting call request has been cancelled")
end
scenario "can open casting call details" do
cc = create(:casting_call, title: "Dummy title", project: project)
visit project_casting_calls_path(project)
click_on manage_button
click_on view_button
expect(page).to have_content cc.title
expect(page).to have_content cc.description
expect(page).to have_content cc.project_description
expect(page).to have_content cc.created_at
expect(page).to have_content cc.status
expect(page).to have_content cc.interview_instructions
expect(page).to have_content cc.interview_requirements
expect(page).to have_content cc.questions
end
context "when signed out" do
scenario "user opens public accessible casting call URL" do
cc = create(:casting_call, title: "Dummy title", project: project)
sign_out
public_url = "/casting_calls/#{cc.token}"
visit public_url
expect(page).to have_content cc.title
expect(page).to have_content cc.description
expect(page).to have_content cc.project_description
expect(page).not_to have_content cc.created_at
expect(page).not_to have_content cc.status
expect(page).not_to have_content cc.interview_instructions
expect(page).not_to have_content cc.interview_requirements
expect(page).not_to have_content cc.questions
end
end
private
def no_casting_calls_label
"Casting calls will appear here"
end
def manage_button
t "casting_calls.casting_call.actions.manage"
end
def view_button
'View'
end
def add_new_casting_call_label
t "casting_calls.index.actions.new"
end
def title_field
t "helpers.label.casting_call.title"
end
def description_field
t "helpers.label.casting_call.description"
end
def project_description_field
t "helpers.label.casting_call.project_description"
end
def interview_instructions_field
t "helpers.label.casting_call.interview_instructions"
end
def interview_requirements_field
t "helpers.label.casting_call.interview_requirements"
end
def questions_field
t "helpers.label.casting_call.questions"
end
end

View File

@@ -28,24 +28,6 @@ feature "User managing medical releases" do
expect(page).to have_content(successful_submission_message)
end
scenario "creating a release for a minor - guardian fields are required when minor checkbox is checked", js: true do
contract_template = create(:contract_template, project: project)
visit new_account_project_contract_template_medical_release_path(project.account, project, contract_template)
all('input[data-required-tag="guardian"]').each do |field|
expect(field['required']).to eq 'false'
expect(field).not_to be_visible
end
page.check person_is_minor_checkbox
all('input[data-required-tag="guardian"]').each do |field|
expect(field['required']).to eq 'true'
expect(field).to be_visible
end
end
scenario 'creating a release for a minor', js: true do
allow(BrayniacAI::Validation).to receive(:create).and_return(double(:validation, valid: true))
@@ -65,7 +47,6 @@ feature "User managing medical releases" do
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 guardian_email_field, with: "valid@email.com"
fill_in person_first_name_field, with: 'Jane'
fill_in person_last_name_field, with: 'Doe'
fill_in_person_address_fields
@@ -75,6 +56,11 @@ feature "User managing medical releases" do
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'
@@ -108,7 +94,6 @@ feature "User managing medical releases" do
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 guardian_email_field, with: "valid@email.com"
fill_in person_first_name_field, with: 'Jane'
fill_in person_last_name_field, with: 'Doe'
fill_in_person_address_fields
@@ -118,6 +103,11 @@ feature "User managing medical releases" do
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'
@@ -131,43 +121,6 @@ feature "User managing medical releases" do
expect(page).to have_content(successful_submission_message)
expect(MedicalRelease.last.guardian_2_first_name).to eq 'Second'
end
scenario 'when signing release, question answers are required', js: true do
project = create(:project, members: current_user, account: current_user.primary_account)
contract_template = create(:contract_template,
project: project,
question_1_text: 'Question 1',
question_2_text: 'Question 2'
)
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'
draw_signature file_fixture("signature.png"), "medical_release_signature_base64"
expect do
click_button submit_release_button
end.to change(MedicalRelease, :count).by(0)
expect(page).not_to have_content(successful_submission_message)
fill_in answer_field_for_question(1), with: 'Answer 1'
draw_signature file_fixture("signature.png"), "medical_release_signature_base64"
expect do
click_button submit_release_button
end.to change(MedicalRelease, :count).by(0)
expect(page).not_to have_content(successful_submission_message)
fill_in answer_field_for_question(2), with: 'Answer 2'
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
end
context "when signed in as account manager" do
@@ -443,8 +396,4 @@ feature "User managing medical releases" do
def guardian_2_information_heading
t 'public.medical_releases.new.guardian_2_info.heading'
end
def answer_field_for_question(number)
"medical_release[question_#{number}_answer]"
end
end

View File

@@ -4,52 +4,6 @@ feature "User managing misc 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
project = create(:project, members: current_user, account: current_user.primary_account)
contract_template = create(:misc_release_contract_template,
question_1_text: "Question 1",
project: project)
visit new_account_project_contract_template_misc_release_path(project.account, project, contract_template)
expect(page).to have_content("QUESTIONNAIRE")
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'
fill_in question_1_field, with: "Answer 1"
drop_file Rails.root.join(file_fixture("person_photo.png")), type: :dropzone
draw_signature file_fixture("signature.png"), "misc_release_signature_base64"
expect do
click_button submit_release_button
end.to change(MiscRelease, :count).by(1)
expect(page).to have_content(successful_submission_message)
end
scenario "creating a release for a minor - guardian fields are required when minor checkbox is checked", js: true do
contract_template = create(:contract_template, project: project)
visit new_account_project_contract_template_misc_release_path(project.account, project, contract_template)
all('input[data-required-tag="guardian"]').each do |field|
expect(field['required']).to eq 'false'
expect(field).not_to be_visible
end
page.check person_is_minor_checkbox
all('input[data-required-tag="guardian"]').each do |field|
expect(field['required']).to eq 'true'
expect(field).to be_visible
end
end
end
context "when signed in as account manager" do
before do
sign_in current_user
@@ -71,52 +25,6 @@ feature "User managing misc releases" do
click_link *view_release_pdf_link_for(native_release)
expect(content_type).to eq('application/pdf')
end
scenario 'viewing the contract PDF' do
misc_release = create(:misc_release,
:native,
contract_template: build(:misc_release_contract_template, question_1_text: 'Q1'),
question_1_answer: 'A1',
project: project,
person_first_name: 'Jane',
person_last_name: 'Doe',
tag_list: 'Woman, Brunette',
notes: [
build(:note,
content: 'Note 1',
user: build(:user, email: 'jane.doe@test.com'),
email: 'jane.doe@test.com',
created_at: DateTime.new(2020, 2, 21, 12, 0, 0)),
build(:note,
content: 'Note 2',
user: build(:user, email: 'john.doe@test.com'),
email: 'john.doe@test.com',
created_at: DateTime.new(2020, 2, 20, 11, 0, 0))
])
sign_in(current_user)
visit project_misc_releases_path(project)
click_link *view_release_pdf_link_for(misc_release)
expect(content_type).to eq('application/pdf')
expect(content_disposition).to include('inline')
expect(pdf_filename).to include('doe-jane')
expect(pdf_body).to have_content('Jane Doe')
expect(pdf_body).to have_content('NOTES')
expect(pdf_body).to have_content('Note 1')
expect(pdf_body).to have_content('jane.doe@test.com')
expect(pdf_body).to have_content('2/21/20 12:00 PM')
expect(pdf_body).to have_content('Note 2')
expect(pdf_body).to have_content('john.doe@test.com')
expect(pdf_body).to have_content('2/20/20 11:00 AM')
expect(pdf_body).to have_content('TAGS')
expect(pdf_body).to have_content('Woman')
expect(pdf_body).to have_content('Brunette')
expect(pdf_body).not_to have_content('Guardian Email')
expect(pdf_body).to have_content('QUESTIONNAIRE')
expect(pdf_body).to have_content('Q1')
expect(pdf_body).to have_content('A1')
end
end
context "when the user is manager(project manager)" do
@@ -144,59 +52,4 @@ feature "User managing misc releases" do
def view_release_pdf_link_for(release)
['Download', href: misc_release_contracts_path(release, format: 'pdf')]
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 person_address_street1_field
t('helpers.label.misc_release.person_address_street1')
end
def person_address_city_field
t('helpers.label.misc_release.person_address_city')
end
def person_address_state_field
t('helpers.label.misc_release.person_address_state')
end
def person_address_zip_field
t('helpers.label.misc_release.person_address_zip')
end
def person_first_name_field
t('helpers.label.misc_release.person_first_name')
end
def person_last_name_field
t('helpers.label.misc_release.person_last_name')
end
def person_email_field
t('helpers.label.misc_release.person_email')
end
def person_phone_field
t('helpers.label.misc_release.person_phone')
end
def question_1_field
'misc_release[question_1_answer]'
end
def submit_release_button
t 'shared.submit_release_long'
end
def successful_submission_message
"Your release was successfully submitted. Thank you."
end
def person_is_minor_checkbox
'misc_release_minor'
end
end

Some files were not shown because too many files have changed in this diff Show More