class Base::Agencia < ApplicationRecord
	has_paper_trail

	belongs_to :orcamento, required: true
	belongs_to :banco, required: true
	belongs_to :cidade

	has_many :contas_bancarias, dependent: :restrict_with_exception, inverse_of: :agencia

	validates_presence_of :numero_da_agencia, :banco_id, :orcamento_id
	validates_presence_of :tipo_de_envio

	validates_length_of :nome, maximum: 80
	validates_length_of :numero_da_agencia, minimum: 4, maximum: 6
	validates_length_of :cep, is: 8, allow_blank: true
	validates_length_of :bairro, maximum: 255
	validates_length_of :logradouro, maximum: 255
	validates_length_of :numero_do_logradouro, maximum: 5
	validates_length_of :telefone, is: 10, allow_blank: true
	validates_length_of :email, maximum: 50
	validates_length_of :complemento, maximum: 255

	validates_format_of :email,:with => /\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z/, allow_blank: true

	attr_default :tipo_de_envio, :arquivo

	enum tipo_de_envio: {
		relatorio: 1,
		arquivo: 2
	}

	def exibe_agencia_banco
		banco.present? ? "#{numero_da_agencia.to_s} / #{banco.nome}" : "#{numero_da_agencia.to_s}"
	end

	def telefone_formatado
		formatado = ''
		if telefone.to_s.strip.length == 10
			p1, p2, p3 = telefone.match(/(\d{2})\.?(\d{4})\.?(\d{4})/i).captures
			formatado = "(#{p1})#{p2}-#{p3}"
		elsif telefone.to_s.strip.length == 11
			p1, p2, p3 = telefone.match(/(\d{2})\.?(\d{5})\.?(\d{4})/i).captures
			formatado = "(#{p1})#{p2}-#{p3}"
		else
			formatado = telefone
		end
		return formatado
	end

	def cep_formatado
		formatado = ""
		if cep.to_s.strip.length == 8
			p1, p2 = cep.match(/(\d{5})\-?(\d{3})/i).captures
			formatado = "#{p1}-#{p2}"
		else
			formatado = cep
		end
		return formatado
	end
end
