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.
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