class Ppa::ObjetivosController < ApplicationController
	include ControllerConcern
	include PpaControllersConcern

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_ppa_objetivo, only: [:show, :edit, :update, :destroy]
	before_action :disponibiliza_dependencias, only: [:index, :edit, :new]

	# GET /ppa/objetivos
	def index
		@q = Ppa::Objetivo.order(:id).search(params[:q])
		@ppa_objetivos = @q.result.paginate(page: params[:page], per_page: 10)
	end

	# GET /ppa/objetivos/1
	def show
	end

	# GET /ppa/objetivos/new
	def new
		programa = Ppa::Programa.find( params[:programa_id] )
			@ppa_objetivo = programa.objetivos.build
	end

	# GET /ppa/objetivos/1/edit
	def edit
	end

	# POST /ppa/objetivos
	def create 		
		@ppa_objetivo = Ppa::Objetivo.new(ppa_objetivo_params) 		
		if @ppa_objetivo.save 			
			if manter_form_apos_cadastro? 			
			redirect_path = { action: :new, programa_id: @ppa_objetivo.programa.id } 	
			else 			
			redirect_path = @ppa_objetivo.programa 		
			end 			
		redirect_to redirect_path, notice: 'Objetivo foi criado com sucesso.'
		else 		
			disponibiliza_dependencias 			
			render :new 	
		end 
	end 

	# PATCH/PUT /ppa/objetivos/1
	def update
		if @ppa_objetivo.update(ppa_objetivo_params)
			redirect_to @ppa_objetivo.programa, notice: 'Objetivo foi atualizado com sucesso.'
		else
			disponibiliza_dependencias
			render :edit
		end
	end

	# DELETE /ppa/objetivos/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@ppa_objetivo)
		if mensagem[:alert].present?
			redirect_to @ppa_objetivo, mensagem
		else
			redirect_to @ppa_objetivo.programa, mensagem
		end
	end

	private
	# Use callbacks to share common setup or constraints between actions.
	def set_ppa_objetivo
		@ppa_objetivo = Ppa::Objetivo.find(params[:id])
	end

	# Only allow a trusted parameter "white list" through.
	def ppa_objetivo_params
		params.require(:ppa_objetivo).permit(:orgao_id, :programa_id, :descricao, :codigo)
	end

	def disponibiliza_dependencias
		@orgaos = Ppa::Orgao.where(ppa_id: ppa_atual.id).order(:nome)
	end
end
