class Licitacao::DocumentoDaCotacaoDoPedido < ApplicationRecord
	include TradutorConcern
	has_paper_trail

	attr_default :data_do_documento, Date.today
	attr_default :tipo_de_documento, :cotacao_por_email

	attr_accessor :lei

	has_attached_file :documento
	validates_attachment_content_type :documento, content_type: ['application/pdf']
	validates_attachment_size :documento, in: 0..5.megabytes

	belongs_to :usuario
	belongs_to :pessoa_do_pedido, class_name: "Licitacao::PessoaDoPedido"
	belongs_to :modelo_do_documento, class_name: "Licitacao::ModeloDeDocumento"

	validates_presence_of :usuario_id, :tipo_de_documento, :pessoa_do_pedido_id
	validates_presence_of :documento, unless: Proc.new{ |documento_da_cotacao| documento_da_cotacao.texto.present? }
	validates_presence_of :titulo_personalizado, if: Proc.new{ |documento_da_cotacao| documento_da_cotacao.tipo_de_documento == "personalizado" }
	validates_absence_of :texto, if: Proc.new{ |documento_da_cotacao| documento_da_cotacao.documento.present? }

	validates :data_do_documento, sabado_ou_domingo_ou_feriado: { flexivel: false }
	validates :tipo_de_documento, immutable: true

	before_create :altera_titulo_do_documento

	enum tipo_de_documento: {
		cotacao_por_email: 0,
		personalizado: 1
	}

	def titulo
		if self.personalizado?
			self.titulo_personalizado.try(:upcase)
		else
			self.localizar(:tipo_de_documento).try(:humanize).try(:upcase) + self.titulo_do_modelo.to_s
		end
	end

	def titulo_do_modelo
		if self.modelo_do_documento && self.modelo_do_documento.titulo
			" - " + self.modelo_do_documento.try(:titulo)
		end
	end

	private

	def altera_titulo_do_documento
		self.titulo_personalizado ||= self.modelo_do_documento.try(:titulo)
	end
end
