module Licitacao
  class DocumentosDoAditivoDaAtaController < ApplicationController
    include ControllerConcern
    include DocumentosDoAditivoHelper

    protect_from_forgery except: :retorna_modelo

    before_action :authenticate_usuario!
    before_action :autoriza_usuario!, except: [:retorna_modelo, :modelos]
    before_action :set_aditivo_da_ata, only: [:new, :create, :retorna_modelo]
    before_action :set_documento_do_aditivo_da_ata, only: [:edit, :update, :destroy]
    before_action :disponibiliza_dependencias, only: [:new, :edit]

    # GET /licitacao/documentos_do_aditivo/new
    def new
        @documento_do_aditivo_da_ata = @aditivo_da_ata.documentos_do_aditivo_da_ata.new
    end

    # GET /licitacao/documentos_do_aditivo/1/edit
    def edit
    end

    # POST /licitacao/documentos_do_aditivo
    def create
        @documento_do_aditivo_da_ata = @aditivo_da_ata.documentos_do_aditivo_da_ata.new(documento_do_aditivo_params)
        @documento_do_aditivo_da_ata.usuario = current_usuario

        if @documento_do_aditivo_da_ata.save
            redirect_to @documento_do_aditivo_da_ata.aditivo_da_ata, notice: 'Documento do aditivo foi criado(a) com sucesso.'
        else
            disponibiliza_dependencias
            render :new
        end
    end

    # PATCH/PUT /licitacao/documentos_do_aditivo/1
    def update
        if @documento_do_aditivo_da_ata.update( documento_do_aditivo_params )
            redirect_to @documento_do_aditivo_da_ata.aditivo_da_ata, notice: 'Documento do aditivo foi atualizado(a) com sucesso.'
        else
            disponibiliza_dependencias
            render :edit
        end
    end

    # DELETE /licitacao/documentos_do_aditivo/1
    def destroy
        mensagem = apaga_e_retorna_mensagem(@documento_do_aditivo_da_ata)
        redirect_to @documento_do_aditivo_da_ata.aditivo_da_ata, mensagem
    end

    def retorna_modelo
        return if bloqueia_usuario_com_base_em 'create'
        @modelo = Licitacao::ModeloDeDocumento.find(params[:id])
        @configuracao = Configuracao.last
        @processo = @aditivo_da_ata.ata_de_registro_de_precos.processo
        @pedido = @processo.pedido

        respond_to do |format|
            format.js
        end
    end

    def modelos
        @modelos = Licitacao::ModeloDeDocumento.all

        if params[:id] == 'personalizado'
            render json: @modelos
        else
            render json: @modelos.send(params[:id])
        end
    end

    private
    def set_documento_do_aditivo_da_ata
        @documento_do_aditivo_da_ata = Licitacao::DocumentoDoAditivoDaAta.find( params[:id] )
    end

    def set_aditivo_da_ata
        @aditivo_da_ata = Licitacao::AditivoDaAta.find(params[:aditivo_da_ata_id])
    end

    def disponibiliza_dependencias
        @tipos_de_documentos_dos_aditivos = Licitacao::DocumentoDoAditivoDaAta.tipos_de_documento
        @modelos_de_documentos = []
    end

    # Permite apenas os parâmetros específicos
    def documento_do_aditivo_params
        params.require(:licitacao_documento_do_aditivo_da_ata).permit(
        :titulo_personalizado,:tipo_de_documento,:data_do_documento, :texto, :usuario_id, :aditivo_id,
        :documento, :modelo_do_documento_id, :numero
        )
    end
  end
end