module Contabilidade
	class RetornosBancariosController < ApplicationController
		include ControllerConcern
		before_action :authenticate_usuario!
		before_action :autoriza_usuario!
		before_action :disponibiliza_dependencias, only: [:show]
		before_action :set_retorno_bancario, only: [:show, :edit, :update, :destroy]

		# GET /contabilidade/retornos_bancarios
		def index
			@q = RetornoBancario.order("id desc").search(params[:q])
			if params[:numero_do_pagamento].present?
				numero = params[:numero_do_pagamento].to_i
				@retornos_bancarios = @q.result(distinct: true).joins("
					INNER JOIN contabilidade_itens_do_retorno_bancario itens on contabilidade_retornos_bancarios.id = itens.retorno_bancario_id
					INNER JOIN contabilidade_pagamentos_do_lote_bancario pag_lote_banc on pag_lote_banc.id = itens.pagamento_do_lote_bancario_id
					INNER JOIN contabilidade_lotes_bancarios lote_banc on pag_lote_banc.lote_bancario_id = lote_banc.id where lote_banc.id = #{numero}
					").paginate(page: params[:page], per_page: 10)
			else
				@retornos_bancarios = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
			end
		end

		# GET /contabilidade/retornos_bancarios/1
		def show
		end

		# GET /contabilidade/retornos_bancarios/new
		def new
			@retorno_bancario = RetornoBancario.new
		end

		# POST /contabilidade/retornos_bancarios
		def create
			@retorno_bancario = RetornoBancario.new(retorno_bancario_params)

			if @retorno_bancario.save
				redirect_to @retorno_bancario, notice: 'Retorno bancario foi criado(a) com sucesso.'
			else
				render :new
			end
		end

		private
		def set_retorno_bancario
			@retorno_bancario = RetornoBancario.find( params[:id] )
		end

		def disponibiliza_dependencias
			@retorno_bancario = RetornoBancario.find( params[:id] )
			@itens_do_retorno_bancario = @retorno_bancario.itens_do_retorno_bancario.where(codigo_de_retorno: 1)
		end

		# Permite apenas os parâmetros específicos
		def retorno_bancario_params
			params.require(:contabilidade_retorno_bancario).permit(:banco_id, :tipo, :status, :arquivo, :numero_do_pagamento)
		end
end
end
