-1
Contextualization
It is necessary for the user to register new locations in the project through the multiple check box. I don’t know how ajax and php process this data.
The image below shows the modal of Localities with the multi-check box. The data on the left are all registered locations and the one on the right are the locations selected by the user (will be the new registered locations). By pressing the save button the data on the right will be saved in the database.
Error:
When editing a project the following error appears:
"Undefined variable:id"
Doubt:
How to take data from new saved project locations and display in multiple check box (on the right side)?
Codes:
Html Page: edita.blade.php - modal with multiple Locality checkbox
<!--Inicio do modal de Localidades-->
<div class="modal fade modal-default" id="modalLocalidade" 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">Localidades</h4>
</div>
<div class="modal-body">
<div class="form-group col-md-18" style="display:flex">
<select multiple class="esq col-md-6" name="localidadesAtivas" required>
@foreach($localidadesAtivas as $localidadeAtiva)
<option value="{{$localidadeAtiva->id}}" {{$localidadeAtiva->id == $projeto->localidade_id ? 'selected' : ''}}>{{$localidadeAtiva->localidade}}</option>
@endforeach
</select>
<div style="display:flex; flex-direction:column">
<button class="dir">▶</button>
<button class="esq">◀</button>
</div>
<select multiple class="dir col-md-6" name="localidadesAtivasSelects">
@foreach($localidadesProjeto as $localidadeProjeto)
<option value="{{$localidadeProjeto->id}}" {{$localidadeProjeto->id == $projeto->localidade_id ? 'selected' : ''}}>{{$localidadeProjeto->localidade}}</option>
@endforeach
</select>
</div>
</div><!--Fim do modal-body-->
<div class="modal-footer">
<center>
<a id="btnSalvar" type="button" class="btn btn-primary cadNovaLocalidade" data-dismiss="modal" align="center" style="width: 300px; height: 40px">Salvar</a>
</center>
</div>
</div>
</div>
</div>
<!--Fim do modal de Localidades-->
Project Controlcontroller.php: edit method($id, Request $request)
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
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;
class ProjetoController extends Controller
{
private $projeto;
private $novoProjeto;
public $flagStatusDoc; //$autorizaDoc é uma flag que por default é false, se torna verdadeira quando a documentação é aprovada
public $flagAprovacao; //$flagAprovacao é uma flag que por default é false, se torna verdadeira quando o projeto é aprovado
//Construtor do projeto
public function __construct(Projeto $projeto)
{
$this->projeto = $projeto;
$this->flagStatusDoc = false;
$this->flagAprovacao = 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->flagStatusDoc = false;
$this->flagAprovacao = 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,
'flagStatusDoc' => $this->flagStatusDoc , 'flagAprovacao' => $this->flagAprovacao
]);
}
//Método para a consulta dos projetos
public function consulta(Request $request){
$condicoes = [];
if($request->id != null){
$condicoes[] = [DB::raw('upper(id)'), 'like', DB::raw('upper("%'.$request->get('id').'%")')];
}
if($request->nomeProjeto != null){
$condicoes[] = [DB::raw('upper(nome_projeto)'), 'like', DB::raw('upper("%'.$request->get('nomeProjeto').'%")')];
}
if($request->tipoProcesso != null){
$condicoes[] = [DB::raw('upper(tipo_processo)'), 'like', DB::raw('upper("%'.$request->get('tipoProcesso').'%")')];
}
if($request->dtInicio != null){
$condicoes[] = ['dt_inicio', '=', $request->input('dtInicio')];
}
if($request->dtFim != null){
$condicoes[] = ['dt_fim', '=', $request->input('dtFim')];
}
$request->flash(['ID','nomeProjeto', 'tipoProcesso', 'dtInicio', 'dtFim']);
$projetos = Projeto::where($condicoes)->orderBy('nome_projeto')->get();
//$rotas = Route::where($condicoes)->orderBy('rota')->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)
{
$localidadesProjeto = Localidade::join('localidades_projeto', function ($join) {
$join->on('localidade.id','=','localidades_projeto.localidade_id')
->where('localidades_projeto.projeto_id','=', $id); })->distinct()->get();
$projetoAutorizado = Projeto::findOrFail($id);
$this->flagStatusDoc = $projetoAutorizado->status_documentacao == 'A' ? true : false;
$this->flagAprovacao = 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;
$statusDocumentacao = $projetoAutorizado->status_documentacao == 'P' ? 'Pendente' : 'Autorizado';
$userAutorizaDoc = User::findOrFail($projetoAutorizado->usu_autoriza_doc_id);
$usuarioAutorizaDoc = !empty($userAutorizaDoc) ? $userAutorizaDoc->name : 'Nenhum' ;
$countLocalidadesProjeto = count(LocalidadeProjeto::where('projeto_id','=',$id)->get());
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,'statusDocumentacao'=>$statusDocumentacao,
'usuarioAutorizaDoc'=> $usuarioAutorizaDoc,'localidadesAtivas'=> $localidadesAtivas, 'flagStatusDoc' =>$this->flagStatusDoc, 'flagAprovacao' => $this->flagAprovacao,
'countLocalidadesProjeto' => $countLocalidadesProjeto, 'localidadesProjeto' => $localidadesProjeto]);
}
//Método para atualizar o Projeto
public function atualiza(Request $request)
{
$projeto = Projeto::findOrFail($request->get('numProjeto'));
$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)
{
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)){
$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();
//A variável $statusDoc consulta se o status da documentação está autorizado para o usuário logado
$statusDoc = Projeto::where('status_documentacao','=','A','and','usu_responsavel_id','=', Auth::user()->id )->get();
//A variável $flagStatusDoc é verdadeira se a $statusDoc não for nula caso ao contrário ela é verdadeira
$this->flagStatusDoc = $statusDoc != null ? true : false;
return response()
->json(['success' => 'Sucesso ao Autorizar Documentação'], 200);
} else {
return response()
->json(['error' => 'Senha Incorreta'], 422);
}
}
//Cadastra novas localidades
public function localidadesAtivas(Request $request, Projeto $projeto)
{
$projeto = $projeto->find($request->numProjeto);
if (!$projeto)
return response()->json(['error' => 'Projeto não encontrado'], 404);
$projeto->localidades_projeto()->attach($request->localidadesAtivasSelects);
return response()
->json([
'success' => 'Sucesso ao cadastrar novas localidades'
]);
}
//Este método remove o projeto
public function remove(Request $request)
{
$projeto = Projeto::find($request->id);
if (!$projeto)
return response()
->json(['error' => 'not_found'], 404);
$response = $projeto->deletar($projeto);
if($response['success'])
{
return response()
->json(['success' => $response['message']], 200);
}else
{
// Caso não delete, informa um erro inesperado
return redirect()
->json(['error' => $response['message']], 500);
}
}
}
And what should be the variable
id
that doesn’t exist?– Woss
@Andersoncarloswoss, the id variable exists in the following method, but for some reason the Laravel framework does not recognize public Function edita($id, Request $request) voltar $localityProject = Locality::Join('locality_project', Function ($Join) { $Join->on('locality.id','=','locality_locality_id') ->Where('locality_project.project_id','=', $id); })->distinct()->get(); (...)
– Ruama