class Obra::DiarioDeObra < ApplicationRecord
	include TradutorConcern

	has_paper_trail

	belongs_to :obra, required: true, class_name: 'Contabilidade::Obra'
	belongs_to :engenheiro_da_obra, required: true, class_name: 'Contabilidade::EngenheiroDaObra'

	has_many :maos_de_obra_rdo, class_name: 'Obra::MaoDeObraRdo', dependent: :destroy
	has_many :equipamentos_rdo, class_name: 'Obra::EquipamentoRdo', dependent: :destroy
	has_many :atividades_rdo, class_name: 'Obra::AtividadeRdo', dependent: :destroy
	has_many :fotos_do_diario_de_obra, class_name: "Obra::FotoDoDiarioDeObra", dependent: :destroy

	accepts_nested_attributes_for :fotos_do_diario_de_obra, reject_if: :all_blank, allow_destroy: true
	accepts_nested_attributes_for :maos_de_obra_rdo, reject_if: :all_blank, allow_destroy: true
	accepts_nested_attributes_for :equipamentos_rdo, reject_if: :all_blank, allow_destroy: true
	accepts_nested_attributes_for :atividades_rdo, reject_if: :all_blank, allow_destroy: true

	validates_associated :maos_de_obra_rdo
	validates_associated :equipamentos_rdo
	validates_associated :atividades_rdo
	validates_associated :fotos_do_diario_de_obra


	validates_presence_of :engenheiro_da_obra_id, :data_do_relatorio, :numero

	validates :maos_de_obra_rdo, uniq_nested_attributes: { atributo: :mao_de_obra_id, mensagem: "mão de obra deve ser único dentro de um diário de obra"}
	validates :equipamentos_rdo, uniq_nested_attributes: { atributo: :equipamento_id, mensagem: "equipamento deve ser único dentro de um diário de obra"}
	validate :data_durante_obra, if: Proc.new {self.data_do_relatorio.present?}

	enum tempo_manha: {
		tempo_manha_nublado: 0,
		tempo_manha_claro: 1,
		tempo_manha_ensolarado: 2,
		tempo_manha_chuvoso: 3,
		tempo_manha_quente: 4,
		tempo_manha_umido: 5,
		tempo_manha_frio: 6,
		tempo_manha_seco: 7
	}

	enum tempo_tarde: {
		tempo_tarde_nublado: 0,
		tempo_tarde_claro: 1,
		tempo_tarde_ensolarado: 2,
		tempo_tarde_chuvoso: 3,
		tempo_tarde_quente: 4,
		tempo_tarde_umido: 5,
		tempo_tarde_frio: 6,
		tempo_tarde_seco: 7
	}

	enum tempo_noite: {
		tempo_noite_nublado: 0,
		tempo_noite_claro: 1,
		tempo_noite_chuvoso: 2,
		tempo_noite_quente: 3,
		tempo_noite_umido: 4,
		tempo_noite_frio: 5,
		tempo_noite_seco: 6
	}

	enum condicao_manha: {
		condicao_manha_praticavel: 0, condicao_manha_impraticavel: 1
	}

	enum condicao_tarde: {
		condicao_tarde_praticavel: 0, condicao_tarde_impraticavel: 1
	}

	enum condicao_noite: {
		condicao_noite_praticavel: 0, condicao_noite_impraticavel: 1
	}

	def data_durante_obra
		if self.data_do_relatorio > self.obra.data_prevista_de_termino || self.data_do_relatorio < self.obra.data_de_inicio
			errors.add(:data_do_relatorio , "Deve estar dentro do prazo da Obra #{self.obra.data_de_inicio} até #{self.obra.data_prevista_de_termino} ")
		end
	end

end
