module Base
	class AgenciasController < ApplicationController
		include ControllerConcern
		before_action :authenticate_usuario!
		before_action :autoriza_usuario!
		before_action :set_agencia, only: [:show, :edit, :update, :destroy]
		before_action :disponibiliza_dependencias, only: [:new, :edit, :create, :update]

		# GET /base/agencias
		def index
			@q = Base::Agencia.order(:id).search(params[:q])
			@agencias = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
		end

		# GET /base/agencias/1
		def show
		end

		# GET /base/agencias/new
		def new
			@agencia = contexto_atual.agencias.new
		end

		# GET /base/agencias/1/edit
		def edit
		end

		# POST /base/agencias
		def create
			@agencia = contexto_atual.agencias.new( agencia_params )

			if @agencia.save
				redirect_to @agencia, notice: 'Agência foi criada com sucesso.'
			else
				render :new
			end
		end

		# PATCH/PUT /base/agencias/1
		def update
			if @agencia.update( agencia_params )
				redirect_to @agencia, notice: 'Agência foi atualizada com sucesso.'
			else
				render :edit
			end
		end

		# DELETE /base/agencias/1
		def destroy
			mensagem = apaga_e_retorna_mensagem(@agencia)
			redirect_to base_agencias_url( @agencia.orcamento.to_param ), mensagem
		end

		private
		def set_agencia
			@agencia = Agencia.find( params[:id] )
		end

		def disponibiliza_dependencias
			@bancos = Base::Banco.all
			@estados = Base::Estado.all
		end

		# Permite apenas os parâmetros específicos
		def agencia_params
			params.require(:base_agencia).permit(:nome, :numero_da_agencia, :cep, :bairro,
				:logradouro, :numero_do_logradouro, :telefone, :email, :complemento,
				:cidade_id, :banco_id, :tipo_de_envio
			)
		end
	end
end
