0
I’m developing a Checklist modal where the new protocol data will be registered. Each item attribute will be informed by the user and this information will be recorded in the table checklist_protocolo
of the database.
But information such as item description and Checklist model is consulted from other tables in the database. The model’s information (table checklist_modelo
) I was able to click on the modal, but the item description information (table checklist_item
) I could not, because it is necessary to iterate it inside the loop and the data are coming out duplicated.
How to solve this problem? Follow the images that illustrate the problem.
Modal Checklists
Modal Checklists [ERROR] - duplicate data
Follow the excerpts of the codes responsible for executing this functionality.
Edit method of the Projectocontroller.php class:
//Método que redireciona para a página de editar o Projeto
public function edita($id, Request $request)
{
$projetoCriado = Projeto::findOrFail($id);
$this->flagStatusDoc = $projetoCriado->status_documentacao == 'A' ? true : false;
$this->flagAprovacao = $projetoCriado->situacao_projeto == 'AP' ? true : false;
$this->flagStatusPagamento = $projetoCriado->usu_auto_pag_id != null && $projetoCriado->dt_pag_autorizado != null ? true : false;
$flagHabilitaEmenda = $projetoCriado->valor_interno == 0 ? false : true;
$flagHabilitaTabsFinanceiro = $projetoCriado->projeto_atividade_id == null && $projetoCriado->elemento_despesa_id == null && $projetoCriado->fonte_recurso_id == null
&& $projetoCriado->dt_ordenador == null && $projetoCriado->valor_ordenador == 0 ? false : true;
$usuarios = User::where('autoriza', '=', 'S')->get(); // armazena todos os usuários que tem permissão de autorização (autoriza = S)
$usuariosAtivos = User::all(); // armazena todos os usuários cadastrados no sistema
$setores = Setor::all();
$proponentes = Proponente::all();
$tipoProjetos = TipoProjeto::all();
$modalidadeApoios = ModalidadeApoio::all();
$ocorrencias = DB::table('ocorrencias')
->join('users', 'users.id', '=', 'ocorrencias.usuario_id')
->where('ocorrencias.projeto_id','=', $id )
->select('ocorrencias.id', 'ocorrencias.origem', 'ocorrencias.tipo', 'users.name', 'ocorrencias.descricao', 'ocorrencias.dt_ocorrencia' )
->get();
$categoriaInstrumentos = CategoriaInstrumento::all();
$modalidadeLicitacoes = ModalidadeLicitacao::all();
$historicoErratas = HistoricoErrata::where('projeto_id', '=', $id)->get();
$historicoNotificacoes = HistoricoNotificacao::where('projeto_id', '=', $id)->get();
$projetoAtividades = ProjetoAtividade::all();
$elementoDespesas = ElementoDespesa::all();
$fonteRecursos = FonteRecurso::all();
$detalhamentoEmpenhos = DetalhamentoEmpenho::where('projeto_id', '=', $id)->get();
$detalhamentoLiquidacoes = DetalhamentoLiquidacao::where('projeto_id', '=', $id)->get();
$detalhamentoPagamentos = DetalhamentoPagamento::where('projeto_id', '=', $id)->get();
$detalhamentoEmendas = DetalhamentoEmenda::where('projeto_id', '=', $id)->get();
$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');
//Variáveis da funcionalidade "Movimentar Projeto"
$movimentacaoResponsavel = MovimentacaoResponsavel::where('projeto_id', '=',$id)->orderBy('dt_movimentacao','desc')->first();
$usuarioDestino = empty($movimentacaoResponsavel) ? Auth::user() : User::where('id','=', $movimentacaoResponsavel->usu_destino_id)->first();
$usuarioResponsavel = $usuarioDestino;
$checklistsModelo = ChecklistModelo::all();
$checklistsEstrutura = ChecklistEstrutura::all();
$checklistsEstruturaModelo = ChecklistModelo::whereIn('id', $checklistsEstrutura->pluck('modelo_id'))->get();
$statusDocumentacao = $projetoCriado->status_documentacao == 'P' ? 'Pendente' : 'Autorizado';
$statusProjeto = $projetoCriado->situacao_projeto;
switch ($statusProjeto){
case 'AA':
$statusProjeto = 'Aguardando Autorização';
break;
case 'AP':
$statusProjeto = 'Aprovado';
break;
case 'CS':
$statusProjeto = 'Cancelado Suspenso';
break;
case 'RP':
$statusProjeto = 'Reprovado';
break;
default:
$statusProjeto = 'Aguardando Autorização';
break;
}
$userAutorizaDoc = User::find($projetoCriado->usu_autoriza_doc_id);
$usuarioAutorizaDoc = $userAutorizaDoc == null ? 'Indefinido' : $userAutorizaDoc->name ;
$userAutorizaProjeto = User::find($projetoCriado->usu_situacao_id);
$usuarioAutorizaProjeto = $userAutorizaProjeto == null ? 'Indefinido' : $userAutorizaProjeto->name ;
$userAutorizaPagamento = User::find($projetoCriado->usu_auto_pag_id);
$usuarioAutorizaPagamento = $userAutorizaPagamento == null ? 'Indefinido' : $userAutorizaPagamento->name ;
$countLocalidadesProjeto = count(LocalidadeProjeto::where('projeto_id','=',$id)->distinct()->get());
$localidadesProjeto = Localidade::join('localidades_projeto', function ($join) use ($id) {
$join->on('localidade.id','=','localidades_projeto.localidade_id')
->where('localidades_projeto.projeto_id','=', $id ); })->distinct()->get();
//Variáveis da aba de Aprovação
$valorEmenda = DB::table('emendas_detalhes')
->where('projeto_id', $id)
->sum('valor');
$valorAprovado = $valorEmenda + $projetoCriado->valor_aprovado_total;
$checklistsItens = ChecklistItem::all();
//Variáveis da aba de Financeiro
$valorEmpenho = DB::table('detalhamento_empenho')
->where('projeto_id', $id)
->sum('valor_empenho');
$valorLiquidacao = DB::table('detalhamento_liquidacao')
->where('projeto_id', $id)
->sum('valor_liquidacao');
$valorPagamento = DB::table('detalhamento_pagamento')
->where('projeto_id', $id)
->sum('valor_pagamento');
//Contador do Checklist de Protocolo
$countChecklistProtocolo = count(ChecklistProtocolo::where('projeto_id','=', $id)->distinct()->get());
$checklistProtocolo = ChecklistProtocolo::where('projeto_id','=', $id)->distinct()->get();
$arrayChecklistProtocolo = [];
$arrayChecklistProtocolo = (array) array_values($checklistProtocolo->toArray());
//Modelo do Protocolo
$modelo = ChecklistModelo::where( 'id','=',$arrayChecklistProtocolo[0]['modelo_id'])->distinct()->get();
$modeloProtocolo = (array) array_values($modelo->toArray());
//Consulta de todos os 'id' de itens do modelo selecionado
$itens_id = DB::table('checklist_estrutura')
->where('checklist_estrutura.modelo_id','=', $modeloProtocolo[0]['id'])
->select('checklist_estrutura.itens_id' )
->get();
//Converte o conjunto de dados para Array
$array_itens_id = (array) array_values($itens_id->toArray());
$arrayIdItens = [];
foreach ($array_itens_id as $item) {
$arrayIdItens[] = $item->itens_id;
}
//Consulta de todos as descrições do itens (descricao_item) do modelo selecionado
$array_descricao_item = DB::table('checklist_itens')->whereIn('id',$arrayIdItens)->get();
$arrayItens = [];
$arrayItens = (array) array_values($array_descricao_item->toArray());
//dd($arrayItens);
// dd($checklistProtocolo);
/*
foreach ($checklistProtocolo as $chktProtocolo) {
$protocolo = new stdClass;
$protocolo->projeto_id = $arrayChecklistProtocolo ;
$protocolo->modelo_id = $modeloProtocolo[0]['id'];
$protocolo->modelo_nome = $modeloProtocolo[0]['modelo'] ;
$protocolo->item = $chktProtocolo->item;
$protocolo->item_descricao_id = $chktProtocolo->item_descricao_id ;
$protocolo->item_nome = "bffff";
$protocolo->sim_nao = $chktProtocolo->sim_nao;
$protocolo->nao_atende = $chktProtocolo->nao_atende ;
$protocolo->dt_validade = $chktProtocolo->dt_validade ;
$protocolo->pagina_documento = $chktProtocolo->pagina_documento ;
$protocolo->observacao = $chktProtocolo->observacao ;
} */
// foreach ($array_descricao_item as $itens) {
// dd($protocolo->projeto_id);
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, 'usuariosAtivos' => $usuariosAtivos,
'localidades' => $localidades,'modalidadeApoios' => $modalidadeApoios, 'usuarioResponsavel'=>$usuarioResponsavel,'statusDocumentacao'=>$statusDocumentacao,
'usuarioAutorizaDoc' => $usuarioAutorizaDoc,'localidadesAtivas'=> $localidadesAtivas,'flagHabilitaEmenda'=> $flagHabilitaEmenda, 'flagHabilitaTabsFinanceiro' => $flagHabilitaTabsFinanceiro,
'flagStatusDoc' =>$this->flagStatusDoc, 'flagAprovacao' => $this->flagAprovacao, 'flagStatusPagamento' => $this->flagStatusPagamento,
'countLocalidadesProjeto' => $countLocalidadesProjeto, 'localidadesProjeto' => $localidadesProjeto, 'statusProjeto' => $statusProjeto, 'usuarioAutorizaProjeto' => $usuarioAutorizaProjeto,
'usuarioAutorizaPagamento' => $usuarioAutorizaPagamento, 'categoriaInstrumentos' => $categoriaInstrumentos, 'modalidadeLicitacoes' => $modalidadeLicitacoes,
'historicoErratas' => $historicoErratas, 'historicoNotificacoes' => $historicoNotificacoes, 'checklistsEstruturaModelo' => $checklistsEstruturaModelo,
'projetoAtividades' => $projetoAtividades, 'elementoDespesas' => $elementoDespesas, 'fonteRecursos' => $fonteRecursos,
'detalhamentoEmpenhos' => $detalhamentoEmpenhos, 'detalhamentoLiquidacoes' => $detalhamentoLiquidacoes, 'detalhamentoPagamentos' => $detalhamentoPagamentos,
'detalhamentoEmendas' => $detalhamentoEmendas , 'valorEmenda' => $valorEmenda, 'valorAprovado' => $valorAprovado, 'valorEmpenho' => $valorEmpenho,
'valorLiquidacao' => $valorLiquidacao, 'valorPagamento' => $valorPagamento, 'ocorrencias' => $ocorrencias, 'countChecklistProtocolo' => $countChecklistProtocolo,
'checklistsModelos' => $checklistsModelo, 'checklistsEstruturas' => $checklistsEstrutura, 'checklistsItens' => $checklistsItens,
'checklistsProtocolos' => $checklistProtocolo,'arrayItens' => $arrayItens, 'modeloProtocolo' => $modeloProtocolo]);
}
Page edita.blade.php: I tried to put the variable break
conditional to exit the item description name but an error occurred.
<!--Inicio do modal de Checklist do Projeto-->
<div class="modal fade modal-default" id="modalChecklist" aria-hidden="true" aria-labelledby="examplePositionCenter"
role="dialog" tabindex="-1">
<div class="modal-dialog2 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">Checklists</h4>
</div>
<div class="form-group col-md-4">
<input type="hidden" id="idProjeto" name="idProjeto" value="{{$projeto->id}}">
<input type="hidden" id="idModeloProcesso" name="idModeloProcesso" value="{{$modeloProtocolo[0]['id']}}">
<label class="control-label">Modelo</label>
<input type="text" class="form-control" name="modeloProcesso" value="{{$modeloProtocolo[0]['modelo']}}" disabled>
</div>
<div class="modal-body">
<div class="form-group col-md-18">
<input type="hidden" id="idProjeto" name="idProjeto" value="{{$projeto->id}}">
<table id="checklist" class="table table-hover table-striped table-responsive toggle-arrow-tiny" >
<caption></caption>
<thead>
<tr>
<th>Item</th>
<th>Descrição</th>
<th>Sim/Não</th>
<th>Não Atende</th>
<th>Data de Validade</th>
<th>Página do Documento</th>
<th>Observações </th>
<th class="text-center"></th>
</tr>
</thead>
<tbody id="bodyUsers">
@foreach($checklistsProtocolos as $checklistProtocolo)
@foreach($arrayItens as $item)
<tr>
<td><input type="text" class="form-control" name="item_protocolo" value="{{$checklistProtocolo->item}}" size ="2"></td>
<td>{{$item->id == $checklistProtocolo->item_descricao_id ? $item->descricao_item : break }}</td>
<td><input type="checkbox" name="simNao_protocolo"{{$checklistProtocolo->sim_nao == null ? '' : 'checked'}}></td>
<td><input type="checkbox" name="naoAtende_protocolo" {{$checklistProtocolo->nao_atende == null ? '' : 'checked'}} ></td>
<td><input type="date" class="form-control" name="dtValidade_protocolo" value="{{$checklistProtocolo->dt_validade}}"></td>
<td><input type="text" class="form-control" name="paginaDoc_protocolo" value="{{$checklistProtocolo->pagina_documento}}" size ="1"></td>
<td><input type="text" class="form-control" name="paginaDoc_protocolo" value="{{$checklistProtocolo->observacao}}" size ="1"></td>
</tr>
@endforeach
@endforeach
</tbody>
</table>
</div>
</div><!--Fim do modal-body-->
<div class="modal-footer">
<center>
<a id="btnSalvarChecklist" type="button" class="btn btn-primary salvarChecklist" data-dismiss="modal" align="center" style="width: 300px; height: 40px">Salvar</a>
</center>
</div>
</div>
</div>
</div>
<!--Fim do modal do Checklist do Projeto-->
Appserviceprovider.php class
The command break
is not supported in the Laravel version I am using, right within the method boot()
class AppServieProvider
i define the following function.
public Function boot() { Blade::Directive('break', Function() { Return ""; }); }
<?php
namespace App\Providers;
use Blade;
//use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
/* public function boot()
{
//
} */
public function boot()
{
Blade::directive('break', function() { return "<?php break; ?>"; });
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
ERROR: but error shown in this image occurred.
Which version of the Laravel are you using? apparently looks like 5.6, I’m sure?
– Alvaro Alves
Hello @Alvaroalves, the Laravel Framework version is 5.5.28
– Ruama