class Ppa::OrgaosController < ApplicationController
	include ControllerConcern
	include PpaControllersConcern

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!, except: [:relatorio_por_orgao]
	before_action :set_ppa_orgao, only: [:show, :edit, :update, :destroy]

	# GET /ppa/orgaos
	def index
		@q = Ppa::Orgao.where(ppa_id: ppa_atual.id).order(:id).ransack(query_params)
		@ppa_orgaos = @q.result.paginate(page: params[:page], per_page: 10)
	end


	def relatorio_por_orgao
		return if bloqueia_usuario_com_base_em 'show'
		@orgao = Ppa::Orgao.find( params[:orgao_id] )
	end

	# GET /ppa/orgaos/1
	def show
		@unidades_orcamentarias = @ppa_orgao.unidades_orcamentarias.order(:codigo)
	end

	# GET /ppa/orgaos/new
	def new
		@ppa_orgao = ppa_atual.orgaos.new
	end

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

	# POST /ppa/orgaos
	def create
		@ppa_orgao = ppa_atual.orgaos.new(ppa_orgao_params)
		if @ppa_orgao.save
			redirect_to @ppa_orgao, notice: 'Orgão foi criado com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /ppa/orgaos/1
	def update
		if @ppa_orgao.update(ppa_orgao_params)
			redirect_to ppa_orgaos_url, notice: 'Orgão foi atualizado com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /ppa/orgaos/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@ppa_orgao)
		redirect_to ppa_orgaos_url, mensagem
	end

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

	# Only allow a trusted parameter "white list" through.
	def ppa_orgao_params
		params.require(:ppa_orgao).permit(:ppa_id, :nome, :codigo, :sigla, :legislacao, :data_da_legislacao, :participa_da_elaboracao_do_ppa, :secretario)
	end
end
