<% if namespaced? -%> require_dependency "<%= namespaced_path %>/application_controller" <% end -%>
<% module_namespacing do -%>
<% if controller_class_name.split("::").size > 1 -%>
module <%= controller_class_name.split("::").first %>
<% end -%>
class <%= controller_class_name.split('::').last %>Controller < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_<%= class_name.demodulize.underscore %>, only: [:show, :edit, :update, :destroy]

	# GET <%= route_url %>
	def index
		@q = <%= class_name.demodulize %>.order(:id).search(params[:q])
		@<%= class_name.demodulize.underscore.pluralize %> = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	# GET <%= route_url %>/1
	def show
	end

	# GET <%= route_url %>/new
	def new
		@<%= class_name.demodulize.underscore %> = <%= orm_class.build(class_name.demodulize) %>
	end

	# GET <%= route_url %>/1/edit
	def edit
	end

	# POST <%= route_url %>
	def create
		@<%=class_name.demodulize.underscore %> = <%= orm_class.build(class_name.demodulize, "#{class_name.demodulize.underscore}_params") %>

		if @<%= class_name.demodulize.underscore %>.save
			redirect_to @<%= class_name.demodulize.underscore %>, notice: <%= "'#{human_name} foi criado(a) com sucesso.'" %>
		else
			render :new
		end
	end

	# PATCH/PUT <%= route_url %>/1
	def update
		if @<%= class_name.demodulize.underscore %>.update( <%= class_name.demodulize.underscore %>_params )
			redirect_to @<%= class_name.demodulize.underscore %>, notice: <%= "'#{human_name} foi atualizado(a) com sucesso.'" %>
		else
			render :edit
		end
	end

	# DELETE <%= route_url %>/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@<%=class_name.demodulize.underscore %>)
		redirect_to <%= index_helper %>_url, mensagem
	end

	private
	def set_<%= class_name.demodulize.underscore %>
		@<%= class_name.demodulize.underscore %> = <%= class_name.demodulize %>.find( params[:id] )
	end

	# Permite apenas os parâmetros específicos
	def <%= "#{class_name.demodulize.underscore}_params" %>
		<% if attributes_names.empty? %>
			params[:<%= class_name.demodulize.underscore %>]
		<% else -%>params.require(:<%= singular_table_name %>).permit(<%= attributes_names.map { |name| ":#{name}" }.join(', ') %>)
		<% end %>
	end
end
<% if controller_class_name.split("::").size > 1 -%>
end
<% end -%>
<% end -%>
