module GestaoDeEstoque
class ProgramasEscolaresController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :disponibiliza_dependencias, only: [:index, :show, :new, :create, :edit, :update]

	before_action :set_programa_escolar, only: [:show, :edit, :update, :destroy]

	# GET /gestao_de_estoque/programa_escolar
	def index
		@q = ProgramaEscolar.order(:id).search(params[:q])
		@programas_escolares = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	# GET /gestao_de_estoque/programa_escolar/1
	def show
	end

	# GET /gestao_de_estoque/programa_escolar/new
	def new
		@programa_escolar = ProgramaEscolar.new
	end

	# GET /gestao_de_estoque/programa_escolar/1/edit
	def edit
	end

	# POST /gestao_de_estoque/programa_escolar
	def create
		@programa_escolar = ProgramaEscolar.new(programa_escolar_params)

		if @programa_escolar.save
			redirect_to @programa_escolar, notice: 'Programa escolar foi criado(a) com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /gestao_de_estoque/programa_escolar/1
	def update
		if @programa_escolar.update( programa_escolar_params )
			redirect_to @programa_escolar, notice: 'Programa escolar foi atualizado(a) com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /gestao_de_estoque/programa_escolar/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@programa_escolar)
		redirect_to @programa_escolar, mensagem
	end

	def disponibiliza_dependencias
		@programas = Loa::Acao.where('id in (?)', [5471, 5480, 5481, 5484, 5482])
	end

	private
	def set_programa_escolar
		@programa_escolar = ProgramaEscolar.find( params[:id] )
	end

	# Permite apenas os parâmetros específicos
	def programa_escolar_params
		params.require(:gestao_de_estoque_programa_escolar).permit(:acao_id, :nome, :data_inicial, :data_final)
		
	end
end
end
