class Pca::DocumentoDaAcao < ApplicationRecord
	include TradutorConcern
	has_paper_trail

	attr_default :data_do_documento, Date.today

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

	belongs_to :acao, class_name: "Pca::Acao"
	belongs_to :usuario
	belongs_to :modelo_do_documento, class_name: "Licitacao::ModeloDeDocumento"

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

	validates :data_do_documento, sabado_ou_domingo_ou_feriado: { flexivel: false }
	validates :tipo_de_documento, immutable: true
	validates_uniqueness_of :tipo_de_documento, scope: :acao_id, if: Proc.new{ termo_de_referencia? }

	before_create :altera_titulo_do_documento

	enum tipo_de_documento: {
		termo_de_referencia: 0,
		personalizado: 1,
		outros_documentos: 99
	}

	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
