In AJAX only the "Fail" is executed, how to solve this problem?

0

Contextualization Home When the user presses the Authorize Documentation button, the Authorization mode will be prompted to select the user and enter the password, as shown in the following image.



BusinessruleHomeThedefaultstatusofthedocumentationisPendingorP.Whenuserpopulatesthe"modal" authorization, it will be validated if the user and password entered is the same as the database. If this is the case, the documentation status is set to "Authorized or A" and this data is saved to the database. And the tab data is enabled.

  

Disabled Data   

    

DataEnabled(afterpressingthebutton)  



Doubt:HomeAlthoughtheuserandpasswordenteredarethesameasthedatabase,theerror:"Error authorizing documentation" is displayed. Concerning the project-authorizeDocs file. The fail method is always executed instead of done . How do I fix this?


Method AuthorizationDocumentation of the ProjectController.php

 <?php

namespace App\Http\Controllers\Admin;
use App\User;
use App\Helpers\helpers;
use App\Models\Projeto;
use App\Models\Setor;
use App\Models\Proponente;
use App\Models\TipoProjeto;
use App\Models\Localidade;
use App\Models\ModalidadeApoio;
use App\Models\LocalidadeProjeto;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;

class ProjetoController extends Controller
{
    private $projeto;
    private $novoProjeto;
    public  $autorizaDoc;//revisar a funcionalidade desta variável

    //Construtor do projeto
    public function __construct(Projeto $projeto)
     {
         $this->projeto = $projeto;  
         $this->autorizaDoc = false;  
     }

     //Redireciona os dados do projeto para a página principal
     public function index(Request $request)
     {
         $permissao = verificarPermissao('Projetos');
         $projetos = Projeto::all();
         return view('admin.projeto.index',['projetos' => $projetos, 'permissoesPerfil' => $permissao]); 
     }

    //Este método apresenta o formulário para cadastrar um novo projeto
    public function novo()
    {
        $this->autorizaDoc = false;
        $setores = Setor::all();
        $proponentes = Proponente::all(); 
        $tipoProjetos = TipoProjeto::all(); 
        $modalidadeApoios = ModalidadeApoio::all();
        $localidades = Localidade::all(); 
        $permissoesAprovacao = verificarPermissao('Aprovação');
        $permissoesJuridico = verificarPermissao('Juridico');
        $permissoesGestaoContrato = verificarPermissao('Gestão Contratos e Convênios');
        $permissoesFinanceiro = verificarPermissao('Financeiro');
        $permissoesOcorrencia = verificarPermissao('Ocorrência'); 
        $permissoesAbas= verificarPermissao('Abas do Projeto'); 
        $permissoesDadosGeraisProj= verificarPermissao('Dados Gerais do Projeto'); 

        return view('admin.projeto.novo',
        ['permissoesAprovacao' =>  $permissoesAprovacao, 'permissoesJuridico' => $permissoesJuridico,
        'permissoesGestaoContrato' =>  $permissoesGestaoContrato , 'permissoesFinanceiro' => $permissoesFinanceiro,
        'permissoesOcorrencia'=> $permissoesOcorrencia, 'permissoesDadosGeraisProj' => $permissoesDadosGeraisProj,
        'permissoesAbas' =>  $permissoesAbas, 'setores' => $setores, 'proponentes' => $proponentes, 'tipoProjetos' => $tipoProjetos,
        'localidades' => $localidades,'modalidadeApoios' => $modalidadeApoios, 'autorizaDoc' => $this->autorizaDoc
        ]);
    }

     //Método para a consulta dos projetos
     public function consulta(Request $request){

        $condicoes = [];

        if($request->nome != null){
            $condicoes[] = [DB::raw('upper(nome_projeto)'), 'like', DB::raw('upper("%'.$request->get('nomeProjeto').'%")')];
        }

        if($request->processo != null){
            $condicoes[] = [DB::raw('upper(tipo_processo)'), 'like', DB::raw('upper("%'.$request->get('processo').'%")')];
        }

        if($request->data_inicio != null){
            $condicoes[] = ['dt_inicio', '=', $request->input('dtInicio')];


        if($request->data_final != null){
            $condicoes[] = ['dt_fim', '=', $request->input('dtFim')];
        }

        $request->flash(['nome_projeto', 'tipo_processo', 'dt_inicio', 'dt_fim']);
        $projetos = Projeto::where($condicoes)->orderBy('nome_projeto')->get();
        $permissao = verificarPermissao('Projetos');
        return view('admin.projeto.index',['projetos' => $projetos, 'permissoesPerfil' => $permissao]); 
    }

    }


      //Método para cadastrar os dados gerais do projeto 
      public function cadastro(Request $request, Projeto $projeto)
      {
        $novoProjeto =  $projeto->salvar($request->all());
        return redirect()->route('projeto.edita', $novoProjeto->id)->with('success','Sucesso ao cadastrar');;
      }



       //Método que  redireciona para a página de editar o  Projeto
     public function edita($id, Request $request)
     {
        $this->autorizaDoc = false;
        $usuarios = User::where('autoriza', '=', 'S')->get();
        $setores = Setor::all();
        $proponentes = Proponente::all(); 
        $tipoProjetos = TipoProjeto::all(); 
        $modalidadeApoios = ModalidadeApoio::all();
        $localidades = Localidade::all(); 
        $localidadesAtivas = Localidade::where('ativo', '=', 'S')->orderBy('localidade', 'asc')->get(); 
        $permissoesAprovacao = verificarPermissao('Aprovação');
        $permissoesJuridico = verificarPermissao('Juridico');
        $permissoesGestaoContrato = verificarPermissao('Gestão Contratos e Convênios');
        $permissoesFinanceiro = verificarPermissao('Financeiro');
        $permissoesOcorrencia = verificarPermissao('Ocorrência'); 
        $permissoesAbas= verificarPermissao('Abas do Projeto'); 
        $permissoesDadosGeraisProj= verificarPermissao('Dados Gerais do Projeto'); 
        $usuarioResponsavel = Auth::user()->name;

        return view('admin.projeto.edita', ['projeto' => Projeto::find($id), 'permissoesAprovacao' =>  $permissoesAprovacao, 'permissoesJuridico' => $permissoesJuridico,
                'permissoesGestaoContrato' =>  $permissoesGestaoContrato , 'permissoesFinanceiro' => $permissoesFinanceiro,
                'permissoesOcorrencia'=> $permissoesOcorrencia, 'permissoesDadosGeraisProj' => $permissoesDadosGeraisProj,
                'permissoesAbas' =>  $permissoesAbas, 'setores' => $setores, 'proponentes' => $proponentes, 'tipoProjetos' => $tipoProjetos, 'usuarios' => $usuarios,
                'localidades' => $localidades,'modalidadeApoios' => $modalidadeApoios, 'usuarioResponsavel'=>$usuarioResponsavel, 'localidadesAtivas'=> $localidadesAtivas,
                'autorizaDoc' =>$this->autorizaDoc]);
     }

        //Método para atualizar o Projeto
      public function atualiza(Request $request)
      {
        $projeto = Projeto::findOrFail($request->get('id'));
        $projeto->tipo_processo = $request->get('tipoProcesso');
        $projeto->processo = $request->get('numProcesso');                      
        $projeto->dt_protocolo =  $request->get('dtProtocolo');   
        $projeto->setor_origem_id = $request->get('setor');  
        $projeto->proponente_id = $request->get('proponente'); 
        $projeto->nome_projeto = $request->get('nomeProjeto');
        $projeto->dt_inicio = $request->get('dtInicio');
        $projeto->dt_fim = $request->get('dtFim');
        $projeto->dias_intercalados = $request->get('diasIntercalados'); 
        $projeto->tipo_projeto_id = $request->get('tipoProjeto'); 
        $projeto->modalidade_apoio_id = $request->get('modalidadeApoio'); 
        $projeto->localidade_id = $request->get('localidade'); 
        $projeto->valor_solicitado = $request->get('vlSolicitado');
        $projeto->arquivo_fisico = $request->get('arquivo');
        $projeto->dt_lancamento = \Carbon\Carbon::now();
        $projeto->dt_alteracao = null;
        $projeto->usu_lancamento_id = auth()->user()->id; //recebe o id do usuário logado
        $projeto->usu_responsavel_id = auth()->user()->id; //recebe o id do usuário logado

        $response =  $projeto->alterar($projeto);  

          if($response['success'])
          {
              return redirect()
                        ->route('projeto.edita',$projeto->id) 
                        ->with('success',$response['message']);
          }else
          {
              return redirect()
                        ->back()
                        ->with('error',$response['message']); 

          }

      }

        //Método para autorizar a documentação do Projeto
        public function autorizaDocumentacao(Request $request)
        {
           $usuario = User::findOrFail($request->get('idUsuario'));
           $projeto = Projeto::findOrFail($request->get('numProjeto'));
           $statusDoc =  $request->get('statusDoc');
           // $statusDoc =  'A';
            $statusDoc == 'P' ? 'A' :'A'; //Validação: se o status for pendente configura para autorizado (A)

            //Se a senha informada for igual ao do banco de dados o documento é autorizado
            if($usuario->password == $request->get('senha')){
              $this->autorizaDoc = true;
              $projeto->status_documentacao = $statusDoc;
              $response = $projeto->save();
              if($response)
              {
                return response()
                 ->json(['success' => 'Sucesso ao Autorizar Documentação '], 200);  
              }
              else{
                return redirect()
                ->json(['error' => 'Erro ao Autorizar Documentação'], 500);     
              } 
            }
            else{
               return redirect()
                ->json(['error' => 'Senha Incorreta'], 500);        
            } 

        }

        //Finalizar o método
        public function cadastroLocalidadesAtivas(Request $request)
        {
            $novosLocalidades =  $projeto->salvar($request->get('numProjeto'),$request>get('localidadesAtivasSelect')) ;



        }
}



Code in Ajax: project-authorizeDocs.js

  $(document).on('click', '#btnAutorizar', function () {
  $('#numProjeto').val($(this).data('numProjeto'));
  $('#statusDoc').val($(this).data('statusDoc'));
  $('#idUsuario').val($(this).data('idUsuario'));
  $('#senha').val($(this).data('senha'));
});

//Ajax para autorizar documentação , e atualizar a página após a ação
$('.autorizaDocumentacao').click(function () {
  var numProjeto = $('#numProjeto').val();
  var statusDoc = $('#statusDoc').val();
  var idUsuario = $('#idUsuario').val();
  var senha     = $('#senha').val();

  $.ajaxSetup({
      headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      }
  }); 

  $.ajax({
      url: "/projetos/autorizaDocumentacao",
     // url:  "http://localhost:8000/projetos/autorizaDocumentacao",
      type: "POST",
       data: {numProjeto:numProjeto,statusDoc:statusDoc,idUsuario:idUsuario, senha:senha},
     //data: "numProjeto=numProjeto&statusDoc=statusDoc&idUsuario=idUsuario&senha=senha",
      dataType: "html"
  }).done(function (response) {
      console.log(response);
      if (response.success) {    
       $("#statusDoc").val( $('option:contains("Autorizado")').val() );// muda o status da documentação

       setTimeout(() => {
            alert ('Eu entrei aqui');
            window.location.reload();
        }, 4000);
      }
      else {
         alert(response.error);
      }   
  }).fail(function () {
     alert ("Erro ao autorizar documentação");

  });

  return false;
});



Authorization Modal: edita.blade.php

<!--Inicio do modal de Autorizar Documentação--> 
<div class="modal fade modal-default" id="modalAutorizarDocs" aria-hidden="true" aria-labelledby="examplePositionCenter"
   role="dialog" tabindex="-1">
   <div class="modal-dialog modal-center">
      <div class="modal-content">
         <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">×</span>
            </button>
            <h4 class="modal-title">Autorização</h4>
         </div>
         <div class="modal-body">
            <div class="form-group col-md-18" style="text-align:center">
               <select class="form-control" name="idUsuario"  required>
                  <option value="">Usuário Autorização</option>
                  @foreach($usuarios as $usuario)
                  <option value="{{$usuario->id}}" {{old('usuario') == $usuario->id ? 'selected' : ''}}>{{$usuario->name}}</option>
                  @endforeach
               </select>
               <br/>
               <input type="password" class="form-control" name="senha"  placeholder="Senha"/>
            </div>
         </div>
         <div class="modal-footer">
            <center>
               <a type="button" class="btn btn-primary autorizaDocumento" data-dismiss="modal"  align="center" style="width: 300px; height: 40px">Autorizar</a>
            </center>
         </div>
      </div>
   </div>
</div>
<!--Fim do modal de Autorizar Documentação-->


Conditional responsible for enabling and disabling tab data: edita.blade.php Home The authorizeDoc flag must be true for the data to be enabled (edita.blade.php page) , as shown in the following image.



ResponseTab





Aba Headers

    
asked by anonymous 12.04.2018 / 21:44

2 answers

0

The password must be compared with the encryption function. Follows the AuthorizationDocumentation method of the ProjectController.php class updated. So I was running the fail function of ajax because the passwords were different (the bank password was encrypted and the form's password had no encryption).

//Método para autorizar a documentação do Projeto
        public function autorizaDocumentacao(Request $request)
        {
            if (!$usuario = User::findOrFail($request->get('idUsuario')))
            return response()->json(['error' => 'Usuário não encontrado'], 404);

            if (!$projeto = Projeto::findOrFail($request->get('numProjeto')))
                return response()->json(['error' => 'Projeto não encontrado'], 404);

              $statusDoc =  $request->statusDoc;

            if (Hash::check($request->get('senha'), $usuario->password)){
                $this->autorizaDoc = true;
                $projeto->status_documentacao = $statusDoc; //muda o status da documentação para "A"
                $projeto->usu_autoriza_doc_id = $usuario->id;//id do usuário que autorizou a documentação
            // $usuarioAutorizaDocs = $usuario->name; // nome do usuário que autorizou a documentação
                $projeto->save();

                return response()
                        ->json(['success' => 'Sucesso ao Autorizar Documentação',
                                'autorizaDoc' =>  $this->autorizaDoc], 200); 
            } else {
                return response()
                            ->json(['error' => 'Senha Incorreta'], 422);
            } 
        }
    
24.04.2018 / 16:03
0

Try to see and treat the error returned from fail, something like:

  ...
  }).fail(function (e) {
     console.error(e);
     alert ("Erro ao autorizar documentação");
  });

    
24.04.2018 / 16:38