2020-05-31 22:38:19 +02:00
|
|
|
class LocationRelease < ApplicationRecord
|
|
|
|
|
include Confirmable
|
|
|
|
|
include Contractable
|
|
|
|
|
include Exploitable
|
|
|
|
|
include Notable
|
|
|
|
|
include Photoable
|
|
|
|
|
include Releasable
|
|
|
|
|
include Searchable
|
|
|
|
|
include Signable
|
|
|
|
|
include Syncable
|
|
|
|
|
include Taggable
|
|
|
|
|
include PersonName
|
2020-07-14 14:10:30 +02:00
|
|
|
include CsvExportable
|
2020-07-20 13:28:40 +00:00
|
|
|
include Approvable
|
2020-07-27 10:17:56 +00:00
|
|
|
include Amendmenable
|
2020-07-14 14:10:30 +02:00
|
|
|
|
|
|
|
|
class << self
|
|
|
|
|
def custom_csv_exportable_headers
|
2020-08-20 06:50:51 +02:00
|
|
|
%i[location_info owner_info amendment_signed_column]
|
2020-07-14 14:10:30 +02:00
|
|
|
end
|
|
|
|
|
end
|
2020-05-31 22:38:19 +02:00
|
|
|
|
|
|
|
|
composed_of :address,
|
|
|
|
|
mapping: [
|
|
|
|
|
%w(address_street1 street1),
|
|
|
|
|
%w(address_street2 street2),
|
|
|
|
|
%w(address_city city),
|
|
|
|
|
%w(address_state state),
|
|
|
|
|
%w(address_zip zip),
|
|
|
|
|
%w(address_country country)
|
|
|
|
|
]
|
|
|
|
|
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)
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
validates :name, presence: true
|
|
|
|
|
validates :person_email, email: true, allow_blank: true
|
|
|
|
|
validate :end_date_after_start_date
|
|
|
|
|
|
|
|
|
|
with_options on: :native do
|
|
|
|
|
validates :person_first_name, :person_last_name, presence: true
|
|
|
|
|
validates :signature, attached: true
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
searchable_on %i[
|
|
|
|
|
name
|
|
|
|
|
address_street1 address_street2 address_city address_state address_zip address_country
|
|
|
|
|
person_address_street1 person_address_street2 person_address_city person_address_state person_address_zip person_address_country
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
def contact_person
|
|
|
|
|
@contact_person ||= Contact.new(person_name, person_address, person_email, person_phone)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def minor?
|
|
|
|
|
false
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def uses_edl?
|
|
|
|
|
true
|
|
|
|
|
end
|
|
|
|
|
|
2020-08-20 06:50:51 +02:00
|
|
|
def location_info
|
|
|
|
|
compact_contact_info(name: name, address: address)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def amendment_signed_column
|
|
|
|
|
if amendment_signable?
|
|
|
|
|
amendment_signed?
|
|
|
|
|
else
|
|
|
|
|
I18n.t('location_releases.csv.no_amendment_clause')
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2020-05-31 22:38:19 +02:00
|
|
|
private
|
|
|
|
|
|
|
|
|
|
def end_date_after_start_date
|
|
|
|
|
return true if filming_ended_on.blank? || filming_started_on.blank?
|
|
|
|
|
|
|
|
|
|
if filming_ended_on < filming_started_on
|
|
|
|
|
errors.add(:filming_ended_on, "must be after the filming started on date")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|