module GestaoDeEstoque
class ProgramaPorEscolasController < 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_por_escola, only: [:show, :edit, :update, :destroy]

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

	# GET /gestao_de_estoque/programa_por_escolas/1
	def show
	end

	# GET /gestao_de_estoque/programa_por_escolas/new
	def new
		@escola = GestaoDeEstoque::Escola.find_by(id: params[:escola_id]) if params[:escola_id].present?
		@programa_por_escola = ProgramaPorEscola.new
	end

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

	# POST /gestao_de_estoque/programa_por_escolas
	def create
		@programa_por_escola = ProgramaPorEscola.new(programa_por_escola_params)

		if @programa_por_escola.save
			redirect_to gestao_de_estoque_escola_path(@programa_por_escola.escola_id), notice: 'Programa por escola foi criado(a) com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /gestao_de_estoque/programa_por_escolas/1
	def update
		if @programa_por_escola.update( programa_por_escola_params )
			redirect_to @programa_por_escola, notice: 'Programa por escola foi atualizado(a) com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /gestao_de_estoque/programa_por_escolas/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@programa_por_escola)
		mensagem = {alert: "Não é possível realizar a exclusão, pois o mesmo já foi utilizado"} if mensagem[:alert].present? && mensagem[:alert].include?("foreign key")
		redirect_to gestao_de_estoque_escola_path(@programa_por_escola.escola_id), mensagem
	end

	def disponibiliza_dependencias
		@programas_escolares = GestaoDeEstoque::ProgramaEscolar.all
	end

	private
	def set_programa_por_escola
		@programa_por_escola = ProgramaPorEscola.find( params[:id] )
	end

	# Permite apenas os parâmetros específicos
	def programa_por_escola_params
		params.require(:gestao_de_estoque_programa_por_escola).permit(:escola_id, :programa_id, :data_inicial)
		
	end
end
end
