module Obra
  class MedicoesDaCaixaDaObraController < ApplicationController

    include ControllerConcern
    include ObraControllersConcern

    before_action :authenticate_usuario!
    before_action :autoriza_usuario!
    before_action :set_medicao_da_caixa_da_obra, only: [:edit, :update, :destroy]
    before_action :set_medicao_da_obra, only: [:create, :new, :edit, :update]

    # GET /obra/medicoes_da_obra/1/medicoes_da_caixa_da_obra/new
    def new
      @medicao_da_caixa_da_obra = @medicao_da_obra.medicoes_da_caixa_da_obra.new
    end

    # GET /obra/medicoes_da_caixa_da_obra/1/edit
    def edit
    end

    # POST /obra/medicoes_da_obra/1/medicoes_da_caixa_da_obra
    def create
      @medicao_da_caixa_da_obra = Obra::MedicaoDaCaixaDaObra.new(medicao_da_caixa_da_obra_params)
      if @medicao_da_caixa_da_obra.save
        redirect_to contabilidade_medicao_da_obra_path(@medicao_da_caixa_da_obra.medicao_da_obra), notice: 'Datas da Medição da CEF criada com sucesso.'
      else
        render :new
      end
    end

    # PATCH/PUT /obra/medicoes_da_caixa_da_obra/1
    def update
      if @medicao_da_caixa_da_obra.update(medicao_da_caixa_da_obra_params)
        redirect_to contabilidade_medicao_da_obra_path(@medicao_da_caixa_da_obra.medicao_da_obra), notice: "Datas da Medição da CEF atualizado com sucesso."
      else
        render :edit
      end
    end

    # DELETE /obra/medicoes_da_caixa_da_obra/1
    def destroy
      mensagem = apaga_e_retorna_mensagem(@medicao_da_caixa_da_obra)
      redirect_to contabilidade_medicao_da_obra_path(@medicao_da_caixa_da_obra.medicao_da_obra), mensagem
    end

    private
    def set_medicao_da_caixa_da_obra
      @medicao_da_caixa_da_obra = Obra::MedicaoDaCaixaDaObra.find( params[:id] )
    end

    def set_medicao_da_obra
      if params[:action] == "update" || params[:action] == "edit"
        @medicao_da_obra = Obra::MedicaoDaCaixaDaObra.find( params[:id] ).medicao_da_obra
      else
        @medicao_da_obra = Contabilidade::MedicaoDaObra.find( params[:medicao_da_obra_id] )
      end
    end

    # Permite apenas os parâmetros específicos
    def medicao_da_caixa_da_obra_params
      params.require(:obra_medicao_da_caixa_da_obra).permit(:medicao_da_obra_id, :data_de_envio, :data_de_liberacao, :_destroy)
    end
  end
end
