# frozen_string_literal: true

module Releasable
  extend ActiveSupport::Concern

  included do
    belongs_to :project, touch: true
    belongs_to :contract_template, optional: true
  end

  def release_number
    @release_number ||= ReleaseNumber.new(self).value
  end

  def signed_on
    if respond_to?(:signed_at) && signed_at.present?
      signed_at.strftime('%D')
    else
      created_at.strftime('%D')
    end
  end

  def fill_with_dummy_data(previewed_contract_template)
    self.contract_template = previewed_contract_template
    self.project_id = contract_template.project_id
    self.created_at = DateTime.current
    self.name = 'Dummy Name' if has_attribute? :name
    self.person_first_name = 'Dummy' if has_attribute? :person_first_name
    self.person_last_name = 'Person' if has_attribute? :person_last_name
    if has_attribute? :person_date_of_birth
      self.person_date_of_birth = DateTime.current
    end
    if has_attribute? :person_address_street1
      self.person_address_street1 = 'Street 1'
    end
    if has_attribute? :person_address_street2
      self.person_address_street2 = 'Street 2'
    end
    self.person_address_city = 'City' if has_attribute? :person_address_city
    self.person_address_state = 'State' if has_attribute? :person_address_state
    self.person_address_zip = 12_345 if has_attribute? :person_address_zip
    if has_attribute? :person_address_country
      self.person_address_country = 'Country'
    end
    if has_attribute? :person_address
      self.person_address = 'Street 1, Street 2, City, State 12345, Country'
    end
    self.person_phone = '00 111 222 333 4444' if has_attribute? :person_phone
    self.person_email = 'email@email.com' if has_attribute? :person_email
    self.description = 'Dummy description' if has_attribute? :description
    self.filming_started_on = DateTime.current if has_attribute? :filming_started_on
    self.filming_ended_on = DateTime.current if has_attribute? :filming_ended_on
    return if contract_template.guardian_clause.blank?

    self.guardian_name = 'Guardian name' if has_attribute? :guardian_name
    if has_attribute? :guardian_address
      self.guardian_address = 'Street 3, Street 4, City-2, State-2 112233, Country-2'
    end
    self.guardian_address_street1 = 'Street 3' if has_attribute? :guardian_address_street1
    self.guardian_address_street2 = 'Street 4' if has_attribute? :guardian_address_street2
    self.guardian_address_city = 'City-2' if has_attribute? :guardian_address_city
    self.guardian_address_state = 'State-2' if has_attribute? :guardian_address_state
    self.guardian_address_zip = '112233' if has_attribute? :guardian_address_zip
    self.guardian_address_country = 'Country-2' if has_attribute? :guardian_address_country
    self.guardian_phone = '00 123 456 7890' if has_attribute? :guardian_phone
    self.guardian_email = 'guardian.email@mail.com' if has_attribute? :guardian_email
    self.minor = true if has_attribute? :minor

  end
end
