class Contabilidade::Passagem < ApplicationRecord
	has_paper_trail
	attr_default :possui_vinculo_com_diaria, true
	attr_accessor :modalidade_de_licitacao

	belongs_to :orcamento
	belongs_to :projeto, class_name: 'Licitacao::Projeto', foreign_key: "projeto_id"
	belongs_to :unidade_orcamentaria, class_name: 'Loa::UnidadeOrcamentaria'
	belongs_to :cidade_origem, class_name: 'Base::Cidade', foreign_key: "cidade_origem_id"
	belongs_to :cidade_destino, class_name: 'Base::Cidade', foreign_key: "cidade_destino_id"
	belongs_to :contrato, class_name: 'Licitacao::Contrato', foreign_key: "contrato_id"
	belongs_to :diaria, class_name: 'Contabilidade::Diaria', foreign_key: "diaria_id"

	has_one :empenho, dependent: :restrict_with_exception
	validates_presence_of :origem, :destino, if: :internacional?
	validates_absence_of :origem, :destino, if: :nacional?
	validates_absence_of :cidade_destino_id, :cidade_origem_id, if: :internacional?
	validates_presence_of :cidade_destino_id, :cidade_origem_id, if: :nacional?
	validates_presence_of :data_volta, :historico,:classificacao, :unidade_orcamentaria_id, :data_de_cadastro, :tipo, :empresa, :valor, :trajeto, :orcamento_id, :projeto_id, :contrato_id
	validates_numericality_of :valor, greater_than: 0
	validates_presence_of :data_ida, if: Proc.new { !self.volta?}
	validates_presence_of :diaria_id, if: :possui_vinculo_com_diaria

	enum tipo: {
		terrestre: 0,
		aerea: 1,
		maritima: 2
	}

	enum classificacao:{
		nacional: 0,
		internacional: 1
	}

	enum trajeto: {
		ida: 0,
		volta: 1,
		ida_e_volta: 2
	}

	def origem_internacional
		if persisted?
			cidade_origem&.nome
		else
			self[:origem]
		end
	end

	def destino_internacional
		if persisted?
			cidade_destino&.nome
		else
			self[:destino]
		end
	end

	def destino_e_data
		if self.data_volta.nil?
			self.destino
		else
			"#{self.destino} em #{self.data_volta}"
		end
	end

	def tipo_do_trajeto_icon
		if terrestre?
			'fa fa-car'
		elsif maritima?
			'fa fa-ship'
		else
			'fa fa-plane'
		end

	end

	def origem_e_data
		if self.data_ida.nil?
			self.origem
		else
			"#{self.origem} em #{self.data_ida}"
		end
	end

	def tipo_e_classificacao
		"#{self.trajeto.humanize.capitalize} - #{self.classificacao.capitalize}"
	end
end
