Checklist
O checklist depende da configuração de 3 entrypoints cujo suas configurações e características estão sendo detalhados abaixo.
Entry point: Tela Lista de Checklists

Filtros e exibição da lista de checklists.
Rota: /checklist Ex: https://smartos-interno.h.simova.cloud/checklist
Valores de entrada
$this->inputValues['data']; /* Data atual padrão, ou, data filtrada */
$this->inputValues['equipamento']; /* id do Equipamento filtrado */
$this->inputValues['tecnico']; /* ARRAY com o id de Técnicos filtrados */
$this->inputValues['os']; /* id da Os filtrada */
Saida::Array
A saída é composta por dois itens, o DATA
e o FILTER_DATA
, que irão retornar as informações para exibir a listagem de checklists, e os dados para as opções dos filtros. Para o FILTER_DATA
serão enviados os arrays compostos sempre pelo ID
e a DESCRICAO
, atualmente podem ser configurados os filtros para TECNICO
, OS
e EQP
.
[
"DATA" => [ /** Array com os dados que serão exibidos na listagem */
[
"SEQ_CHECKLIST" => 10, /* seq checklist */
"NOME_TEC" => "Branco", /* Nome tecnico */
"DH" => "2023-07-12 12:22:09" /* DH */
],
[
"SEQ_CHECKLIST" => 10, /* seq checklist */
"NOME_TEC" => "Branco", /* Nome tecnico */
"DH" => "2023-07-12 12:22:09" /* DH */
]
],
"FILTER_DATA" => [/** Array com os dados que serão usados nas options dos filtros */
"TECNICO" => [
[
"ID" => 12,
"DESCRICAO" => "Jorge Wagner"
],
[
"ID" => 22,
"DESCRICAO" => "Fábio Simplicio Silva"
],
],
"OS" => [
[
"ID" => 224,
"DESCRICAO" => "OS224"
],
[
"ID" => 785,
"DESCRICAO" => "OS785"
]
],
"EQP" => [
[
"ID" => 1,
"DESCRICAO" => "Caminhão"
],
[
"ID" => 2,
"DESCRICAO" => "Trator"
]
]
]
]
Entrypoint (Exemplo)
FILE_OR_DOMAIN: CHECKLIST ACTION: checklistGrid
// $_SESSION['DEBUG_MODE'] = 1;
// $this->inputValues = $_SESSION['DEBUG_PARAMS'];
//Filtros
$data_filtro = $this->inputValues['data'] ?? null;
$data_atual = date("Y-m-d H:i:s");
// $equipamento_filtro = $this->inputValues['equipamento'] ?? null;
// $tecnico_filtro = $this->inputValues['tecnico'] ?? null;
// $os_filtro = $this->inputValues['os'] ?? null;
$checklist_filtro = $this->inputValues['checklist'] ?? null;
$checklists_prospeccao = Dao::Table('apontamento_resposta_prospeccao')
->select(['SEQ_DB',
'FUNCIONARIO_SEQ_DB',
'INI_DH',
'SEQ_DB_DEVICE_CHECKLIST'
])
->whereBetween('INI_DH',$data_filtro,$data_atual)
->whereIn('SEQ_DB_DEVICE_CHECKLIST',$checklist_filtro)
->groupBy('SEQ_DB_DEVICE_CHECKLIST')
->orderBy('INI_DH','DESC')
->get();
$funcionario_fk = array_column($checklists_prospeccao,'FUNCIONARIO_SEQ_DB','FUNCIONARIO_SEQ_DB');
$funcionario_array = Dao::Table('FUNCIONARIO')->select(['SEQ_DB','CRACHA','NOME'])->whereIn('SEQ_DB',$funcionario_fk)->get();
$funcionario_list = array_column($funcionario_array,null,'SEQ_DB');
$dadosGridChecklist = [];
$funcionario = null;
$data = null;
$i=0;
foreach($checklists_prospeccao as $cp){
$funcionario_fk = $funcionario_list[$cp['FUNCIONARIO_SEQ_DB']] ?? null;
if(!empty($funcionario_fk)){
$funcionario = $funcionario_fk['CRACHA']." :: ".$funcionario_fk['NOME'];
$data = $cp['INI_DH'];
$dadosGridChecklist[$i]['SEQ_CHECKLIST'] = $cp['SEQ_DB_DEVICE_CHECKLIST'];
$dadosGridChecklist[$i]['NOME_TEC'] = $funcionario;
$dadosGridChecklist[$i]['DH'] = $data;
$i++;
}
}
$this->queryData['data']['DATA'] = $dadosGridChecklist;
Entry point: Relatório Checklist
Exibição do relatório de checklist.
Rota: /checklist/<SEQ_CHECKLIST> Ex: https://smartos-interno.h.simova.cloud/checklist/13
Entrada
$this->inputValues['checklist']; /* seq chamado na url */
Saida::Array
[
"SEQ_CHECKLIST" => 10, /* seq checklist */
"ORDEM_REPARACAO" => "OS2154ww1237",
"DH" => "2023-07-12 10:55:29",
"NOME_TEC" => "Chucky Norris",
"COTACAO" => "0,00",
"NOTE_1" => "3 desplazamiento",
"NOTE_2" => "Andrés Camacho",
"NOTE_3" => "8h labor",
"NOME" => "Ingenio La Cabaña",
"VEICULO" => "John Deere 6110J 2015",
"PLACA" => "3182903",
"VIN" => "1BM6110JTHA009297",
"SERVICO_URGENTE" => [ /* array com os itens urgentes*/
[
"SEQ_CHECKLIST_ITEM" => 1, /* seq do detalhe */
"TITULO_ITEM" => "Título do item 1", /* titulo do detalhe */
"COMMENTS" => [ /* array dos comentarios, separado por virgula se mais de 1*/
"Aqui exibe o comentário 1"
],
"QTD_FOTOS" => 2 /* quantidade de fotos que o detalhe possui*/
]
],
"SERVICO_PRONTO" => [ /* array com os itens prontos*/
[
"SEQ_CHECKLIST_ITEM" => 5,
"TITULO_ITEM" => "Título do item",
"COMMENTS" => [
"Tem que ver isso aí", "Comentário 2"
],
"QTD_FOTOS" => 2
]
],
"SERVICO_OK" => [ /* array com os itens ok*/
[
"SEQ_CHECKLIST_ITEM" => 8,
"TITULO_ITEM" => "Título do item",
"COMMENTS" => [
"Tem que ver isso aí", "Comentário 2"
],
"QTD_FOTOS" => 2
]
],
"PHOTOS" => [ /* array com todas as fotos do checklist ok*/
[
"SEQ_CHECKLIST_ITEM" => 5, /* checklist do detalhe*/
"TYPE" => 'urgent', /* tipo do detalhe */
"TITLE" => "Títulos aqui", /* titulo do detalhe */
"URL" => "assets/img/checklist/teste_img.jpg" /*url da imagem*/
]
]
]
Entrypoint (Exemplo objeto)
FILE_OR_DOMAIN: CHECKLIST ACTION: checklist
// $_SESSION['DEBUG_MODE'] = 1;
// $this->inputValues = $_SESSION['DEBUG_PARAMS'];
//Filtros
$checklist_filtro = $this->inputValues['checklist'] ?? null;
//Consulta Principal
$checklists_prospeccao = Dao::Table('apontamento_resposta_prospeccao')
->select(['SEQ_DB',
'FUNCIONARIO_SEQ_DB',
'INI_DH',
'TIPO_EQUIPAMENTO_SEQ_DB',
'GRUPO_QUESTAO_SEQ_DB',
'QUESTAO_SEQ_DB',
'TIPO_RESPOSTA_SEQ_DB',
'OS_SEQ_DB',
'CLIENTE_SEQ_DB',
'CHASSI',
'SEQ_DB_DEVICE',
'SEQ_DB_DEVICE_CHECKLIST',
'SEQ_DB_DEVICE_MASTER_SEQ_DB',
'OBSERVACAO'
])
->whereIn('SEQ_DB_DEVICE_CHECKLIST',$checklist_filtro)
->orderBy('INI_DH','DESC')
->get();
//FKs resultantes da consulta principal
$funcionario_fk = array_column($checklists_prospeccao,'FUNCIONARIO_SEQ_DB','FUNCIONARIO_SEQ_DB');
$tipo_equipamento_fk = array_column($checklists_prospeccao,'TIPO_EQUIPAMENTO_SEQ_DB','TIPO_EQUIPAMENTO_SEQ_DB');
$grupo_questao_fk = array_column($checklists_prospeccao,'GRUPO_QUESTAO_SEQ_DB','GRUPO_QUESTAO_SEQ_DB');
$questao_fk = array_column($checklists_prospeccao,'QUESTAO_SEQ_DB','QUESTAO_SEQ_DB');
$tipo_resposta_fk = array_column($checklists_prospeccao,'TIPO_RESPOSTA_SEQ_DB','TIPO_RESPOSTA_SEQ_DB');
$os_fk = array_column($checklists_prospeccao,'OS_SEQ_DB','OS_SEQ_DB');
$cliente_fk = array_column($checklists_prospeccao,'CLIENTE_SEQ_DB','CLIENTE_SEQ_DB');
$boletim_fk = array_column($checklists_prospeccao,'SEQ_DB_DEVICE_MASTER_SEQ_DB','SEQ_DB_DEVICE_MASTER_SEQ_DB');
$prospeccao_fk = array_column($checklists_prospeccao,'SEQ_DB_DEVICE','SEQ_DB_DEVICE');
$checklist_fk = array_column($checklists_prospeccao,'SEQ_DB_DEVICE_CHECKLIST','SEQ_DB_DEVICE_CHECKLIST');
//Consultas auxiliares
$apontamento_deslocamento_array = Dao::Table('APONTAMENTO_DESLOCAMENTO')->select(['SEQ_DB','OS_SEQ_DB','INI_DH','TIPO_DESLOCAMENTO','VEICULO_SEQ_DB'])->whereIsNotNull('OS_SEQ_DB')->whereRaw('TIPO_DESLOCAMENTO = 2')->whereIn('OS_SEQ_DB',$os_fk)->whereIn('SEQ_DB_DEVICE_MASTER_SEQ_DB',$boletim_fk)->get();
$veiculo_fk = array_column($apontamento_deslocamento_array,'VEICULO_SEQ_DB','VEICULO_SEQ_DB');
$apontamento_deslocamento_list = [];
foreach($apontamento_deslocamento_array as $apt){
if(!empty($apontamento_deslocamento_list[$apt['OS_SEQ_DB']]['FIM_DESLOCAMENTO'])){
$apontamento_deslocamento_list[$apt['OS_SEQ_DB']]['FIM_DESLOCAMENTO'] = $apontamento_deslocamento_list[$apt['OS_SEQ_DB']]['FIM_DESLOCAMENTO'] + 1;
}else{
$apontamento_deslocamento_list[$apt['OS_SEQ_DB']]['FIM_DESLOCAMENTO'] = 1;
}
$apontamento_deslocamento_list[$apt['OS_SEQ_DB']]['VEICULO_SEQ_DB'] = $apt['VEICULO_SEQ_DB'];
}
$apontamento_array = Dao::Table('APONTAMENTO')->select(['SEQ_DB_DEVICE_MASTER_SEQ_DB','INI_FIM_DIFF_SEC'])->whereIn('SEQ_DB_DEVICE_MASTER_SEQ_DB',$boletim_fk)->get();
$apontamento_list = [];
foreach($apontamento_array as $apt){
if(!empty($apontamento_list[$apt['SEQ_DB_DEVICE_MASTER_SEQ_DB']]['TEMPO_TRABALHADO'])){
$apontamento_list[$apt['SEQ_DB_DEVICE_MASTER_SEQ_DB']]['TEMPO_TRABALHADO'] = $apontamento_list[$apt['SEQ_DB_DEVICE_MASTER_SEQ_DB']]['TEMPO_TRABALHADO'] + $apt['INI_FIM_DIFF_SEC'];
}else{
$apontamento_list[$apt['SEQ_DB_DEVICE_MASTER_SEQ_DB']]['TEMPO_TRABALHADO'] = $apt['INI_FIM_DIFF_SEC'];
}
}
$apontamento_fotos_array = Dao::Table('APONTAMENTO_FOTO_RESPOSTA_PROSPECCAO')->select(['SEQ_DB_DEVICE_RESPOSTA_CHECKLIST','FOTO_THUMBNAIL'])->whereIn('SEQ_DB_DEVICE_RESPOSTA_CHECKLIST',$prospeccao_fk)->whereIn('SEQ_DB_DEVICE_CHECKLIST',$checklist_fk)->get();
$apontamento_fotos_list = [];
foreach($apontamento_fotos_array as $apt){
if(!empty($apontamento_fotos_list[$apt['SEQ_DB_DEVICE_RESPOSTA_CHECKLIST']]['QTD_FOTOS'])){
$apontamento_fotos_list[$apt['SEQ_DB_DEVICE_RESPOSTA_CHECKLIST']]['QTD_FOTOS'] = $apontamento_fotos_list[$apt['SEQ_DB_DEVICE_RESPOSTA_CHECKLIST']]['QTD_FOTOS'] + 1;
}else{
$apontamento_fotos_list[$apt['SEQ_DB_DEVICE_RESPOSTA_CHECKLIST']]['QTD_FOTOS'] = 1;
}
$apontamento_fotos_list[$apt['SEQ_DB_DEVICE_RESPOSTA_CHECKLIST']]['FOTOS'][] = $apt['FOTO_THUMBNAIL'];
}
$funcionario_array = Dao::Table('FUNCIONARIO')->select(['SEQ_DB','CRACHA','NOME'])->whereIn('SEQ_DB',$funcionario_fk)->get();
$funcionario_list = array_column($funcionario_array,null,'SEQ_DB');
$tipo_equipamento_array = Dao::Table('TIPO_EQUIPAMENTO')->select(['SEQ_DB','CODIGO','DESCRICAO'])->whereIn('SEQ_DB',$tipo_equipamento_fk)->get();
$tipo_equipamento_list = array_column($tipo_equipamento_array,null,'SEQ_DB');
$grupo_questao_array = Dao::Table('GRUPO_QUESTAO')->select(['SEQ_DB','DESCRICAO'])->whereIn('SEQ_DB',$grupo_questao_fk)->get();
$grupo_questao_list = array_column($grupo_questao_array,'DESCRICAO','SEQ_DB');
$questao_array = Dao::Table('QUESTAO')->select(['SEQ_DB','DESCRICAO'])->whereIn('SEQ_DB',$questao_fk)->get();
$questao_list = array_column($questao_array,'DESCRICAO','SEQ_DB');
$tipo_resposta_array = Dao::Table('TIPO_RESPOSTA')->select(['SEQ_DB','CLASSIFICACAO_RESPOSTA','DESCRICAO'])->whereIn('SEQ_DB',$tipo_resposta_fk)->get();
$tipo_resposta_list = array_column($tipo_resposta_array,null,'SEQ_DB');
$os_array = Dao::Table('OS')->select(['SEQ_DB','CODIGO'])->whereIn('SEQ_DB',$os_fk)->get();
$os_list = array_column($os_array,'CODIGO','SEQ_DB');
$veiculo_array = Dao::Table('VEICULO')->select(['SEQ_DB','PLACA','DESCRICAO'])->whereIn('SEQ_DB',$veiculo_fk)->get();
$veiculo_list = array_column($veiculo_array,null,'SEQ_DB');
$cliente_array = Dao::Table('CLIENTE')->select(['SEQ_DB','CODIGO','DESCRICAO'])->whereIn('SEQ_DB',$cliente_fk)->get();
$cliente_list = array_column($cliente_array,null,'SEQ_DB');
//Variáveis para montagem dos dados
$dados = [];
$data_hora = null;
$deslocamento = null;
$veiculo_descricao = null;
$veiculo_placa = null;
$os = null;
$cliente = null;
$grupo_questao = null;
$questao = null;
$tipo_resposta = null;
$observacao = null;
$funcionario = null;
$chassi = null;
$horas_trabalhadas = null;
$qtd_deslocamento = null;
$horas_trabalhadas = null;
$qtd_fotos = null;
$fotos = null;
$a=0;
$b=0;
$c=0;
$i=0;
$f=0;
//Montagem do array de dados
foreach($checklists_prospeccao as $check){
//Preenchimento das variáveis
$os = $os_list[$check['OS_SEQ_DB']] ?? null;
$cliente = $cliente_list[$check['CLIENTE_SEQ_DB']]['CODIGO']."::".$cliente_list[$check['CLIENTE_SEQ_DB']]['DESCRICAO'] ?? null;
$data_hora = date("d/m/Y H:i:s", strtotime($check['INI_DH']));
$funcionario = $funcionario_list[$check['FUNCIONARIO_SEQ_DB']]['CRACHA']."::".$funcionario_list[$check['FUNCIONARIO_SEQ_DB']]['NOME'] ?? null;
$deslocamento = $apontamento_deslocamento_list[$check['OS_SEQ_DB']] ?? null;
if(!empty($deslocamento)){
$qtd_deslocamento = $deslocamento['FIM_DESLOCAMENTO'];
$veiculo_descricao = $veiculo_list[$deslocamento['VEICULO_SEQ_DB']]['DESCRICAO'] ?? null;
$veiculo_placa = $veiculo_list[$deslocamento['VEICULO_SEQ_DB']]['PLACA'] ?? null;
}
$horas_trabalhadas_fk = $apontamento_list[$check['SEQ_DB_DEVICE_MASTER_SEQ_DB']]['TEMPO_TRABALHADO'] ?? null;
if(!empty($horas_trabalhadas_fk)){
$horas_trabalhadas = gmdate('H:i:s',$horas_trabalhadas_fk);
}
$chassi = $check['CHASSI'] ?? null;
$grupo_questao = $grupo_questao_list[$check['GRUPO_QUESTAO_SEQ_DB']] ?? null;
$questao = $questao_list[$check['QUESTAO_SEQ_DB']] ?? null;
$tipo_resposta = $tipo_resposta_list[$check['TIPO_RESPOSTA_SEQ_DB']] ?? null;
$observacao = $check['OBSERVACAO'] ?? null;
$fotos = $apontamento_fotos_list[$check['SEQ_DB_DEVICE']] ?? null;
$qtd_fotos = $fotos['QTD_FOTOS'] ?? 0;
$dados['SEQ_CHECKLIST'] = $check['SEQ_DB_DEVICE_CHECKLIST'];
$dados['ORDEM_REPARACAO'] = $os;
$dados['DH'] = $data_hora;
$dados['NOME_TEC'] = $funcionario;
// $dados['COTACAO'] = "0,00";
$dados['NOTE_1'] = $qtd_deslocamento;
$dados['NOTE_2'] = $cliente;
$dados['NOTE_3'] = $horas_trabalhadas;
$dados['NOME'] = $funcionario;
$dados['VEICULO'] = $veiculo_descricao;
$dados['PLACA'] = $veiculo_placa;
$dados['VIN'] = $chassi;
if($tipo_resposta['CLASSIFICACAO_RESPOSTA'] == 2){
$dados['SERVICO_URGENTE'][$a]['SEQ_CHECKLIST_ITEM'] = $check['SEQ_DB'];
$dados['SERVICO_URGENTE'][$a]['TITULO_ITEM'] = $questao;
$dados['SERVICO_URGENTE'][$a]['COMMENTS'][0] = $observacao;
$dados['SERVICO_URGENTE'][$a]['QTD_FOTOS'] = $qtd_fotos;
if(!empty($fotos)){
foreach($fotos['FOTOS'] as $foto){
$dados['PHOTOS'][$f]['SEQ_CHECKLIST_ITEM'] = $check['SEQ_DB'];
$dados['PHOTOS'][$f]['TYPE'] = 'urgent';
$dados['PHOTOS'][$f]['TITLE'] = $questao;
$dados['PHOTOS'][$f]['URL'] = $foto;
$f++;
}
}
$a++;
}else if($tipo_resposta['CLASSIFICACAO_RESPOSTA'] == 1){
$dados['SERVICO_PRONTO'][$b]['SEQ_CHECKLIST_ITEM'] = $check['SEQ_DB'];
$dados['SERVICO_PRONTO'][$b]['TITULO_ITEM'] = $questao;
$dados['SERVICO_PRONTO'][$b]['COMMENTS'][0] = $observacao;
$dados['SERVICO_PRONTO'][$b]['QTD_FOTOS'] = $qtd_fotos;
if(!empty($fotos)){
foreach($fotos['FOTOS'] as $foto){
$dados['PHOTOS'][$f]['SEQ_CHECKLIST_ITEM'] = $check['SEQ_DB'];
$dados['PHOTOS'][$f]['TYPE'] = 'ready';
$dados['PHOTOS'][$f]['TITLE'] = $questao;
$dados['PHOTOS'][$f]['URL'] = $foto;
$f++;
}
}
$b++;
}else if($tipo_resposta['CLASSIFICACAO_RESPOSTA'] == 0){
$dados['SERVICO_OK'][$c]['SEQ_CHECKLIST_ITEM'] = $check['SEQ_DB'];
$dados['SERVICO_OK'][$c]['TITULO_ITEM'] = $questao;
$dados['SERVICO_OK'][$c]['COMMENTS'][0] = $observacao;
$dados['SERVICO_OK'][$c]['QTD_FOTOS'] = $qtd_fotos;
if(!empty($fotos)){
foreach($fotos['FOTOS'] as $foto){
$dados['PHOTOS'][$f]['SEQ_CHECKLIST_ITEM'] = $check['SEQ_DB'];
$dados['PHOTOS'][$f]['TYPE'] = 'ok';
$dados['PHOTOS'][$f]['TITLE'] = $questao;
$dados['PHOTOS'][$f]['URL'] = $foto;
$f++;
}
}
$c++;
}
}
$this->queryData['data'] = $dados;
Entry point: Tela detalhes do checklist

Exibe as imagens e detalhes do item.
Rota: checklist/<SEQ_CHECKLIST>/detail/<SEQ_DETALHE> Ex: https://smartos-interno.h.simova.cloud/checklist/10/details/5
Entrada
$this->inputValues['checklist']; /*seq do checklist vindo da url*/
$this->inputValues['detail']; /*seq do detalhe vindo da url*/
Saida::Array
[
"SEQ_CHECKLIST" => 10,
"SEQ_CHECKLIST_ITEM" => 23,
"TYPE" => 'ok', /* urgent, ready, ou ok*/
"TITLE" => "Luces de servicio delanteras (altas y bajas)",
"COMMENTS" => [
"Tem que ver isso aí", "Comentário 2"
],
"PHOTOS" => [
[
"URL" => "assets/img/checklist/teste_img.jpg",
"PHOTO_TITLE" => "Vehículo: John Deere 6110j 2015",
"PHOTO_SUBTITLE" => "Hora de Carga Certificada: 27/01/2023 7:46 p.m."
],
[
"URL" => "assets/img/checklist/teste_img1.jpg",
"PHOTO_TITLE" => "Vehículo: John Wick 2015",
"PHOTO_SUBTITLE" => "Hora de Carga Certificada: 20/10/2023 7:46 p.m."
]
]
];
Entrypoint (Exemplo - kurosu.h.simova.cloud)
FILE_OR_DOMAIN: CHECKLIST ACTION: checklistDetail
// $_SESSION['DEBUG_MODE'] = 1;
// $this->inputValues = $_SESSION['DEBUG_PARAMS'];
//Filtros
$checklist_filtro = $this->inputValues['checklist'] ?? null;
$details_filtro = $this->inputValues['detail'] ?? null;
//Consulta Principal
$checklists_prospeccao = Dao::Table('apontamento_resposta_prospeccao')
->select(['SEQ_DB',
'FUNCIONARIO_SEQ_DB',
'INI_DH',
'TIPO_EQUIPAMENTO_SEQ_DB',
'GRUPO_QUESTAO_SEQ_DB',
'QUESTAO_SEQ_DB',
'TIPO_RESPOSTA_SEQ_DB',
'OS_SEQ_DB',
'CLIENTE_SEQ_DB',
'CHASSI',
'SEQ_DB_DEVICE',
'SEQ_DB_DEVICE_CHECKLIST',
'SEQ_DB_DEVICE_MASTER_SEQ_DB',
'OBSERVACAO'
])
->whereIn('SEQ_DB_DEVICE_CHECKLIST',$checklist_filtro)
->whereIn('SEQ_DB',$details_filtro)
->orderBy('INI_DH','DESC')
->get();
//FKs resultantes da consulta principal
$grupo_questao_fk = array_column($checklists_prospeccao,'GRUPO_QUESTAO_SEQ_DB','GRUPO_QUESTAO_SEQ_DB');
$questao_fk = array_column($checklists_prospeccao,'QUESTAO_SEQ_DB','QUESTAO_SEQ_DB');
$tipo_resposta_fk = array_column($checklists_prospeccao,'TIPO_RESPOSTA_SEQ_DB','TIPO_RESPOSTA_SEQ_DB');
$prospeccao_fk = array_column($checklists_prospeccao,'SEQ_DB_DEVICE','SEQ_DB_DEVICE');
$checklist_fk = array_column($checklists_prospeccao,'SEQ_DB_DEVICE_CHECKLIST','SEQ_DB_DEVICE_CHECKLIST');
//Consultas auxiliares
$apontamento_fotos_array = Dao::Table('APONTAMENTO_FOTO_RESPOSTA_PROSPECCAO')->select(['SEQ_DB_DEVICE_RESPOSTA_CHECKLIST','FOTO_THUMBNAIL'])->whereIn('SEQ_DB_DEVICE_RESPOSTA_CHECKLIST',$prospeccao_fk)->whereIn('SEQ_DB_DEVICE_CHECKLIST',$checklist_fk)->get();
$apontamento_fotos_list = [];
foreach($apontamento_fotos_array as $apt){
if(!empty($apontamento_fotos_list[$apt['SEQ_DB_DEVICE_RESPOSTA_CHECKLIST']]['QTD_FOTOS'])){
$apontamento_fotos_list[$apt['SEQ_DB_DEVICE_RESPOSTA_CHECKLIST']]['QTD_FOTOS'] = $apontamento_fotos_list[$apt['SEQ_DB_DEVICE_RESPOSTA_CHECKLIST']]['QTD_FOTOS'] + 1;
}else{
$apontamento_fotos_list[$apt['SEQ_DB_DEVICE_RESPOSTA_CHECKLIST']]['QTD_FOTOS'] = 1;
}
$apontamento_fotos_list[$apt['SEQ_DB_DEVICE_RESPOSTA_CHECKLIST']]['FOTOS'][] = $apt['FOTO_THUMBNAIL'];
}
$grupo_questao_array = Dao::Table('GRUPO_QUESTAO')->select(['SEQ_DB','DESCRICAO'])->whereIn('SEQ_DB',$grupo_questao_fk)->get();
$grupo_questao_list = array_column($grupo_questao_array,'DESCRICAO','SEQ_DB');
$questao_array = Dao::Table('QUESTAO')->select(['SEQ_DB','DESCRICAO'])->whereIn('SEQ_DB',$questao_fk)->get();
$questao_list = array_column($questao_array,'DESCRICAO','SEQ_DB');
$tipo_resposta_array = Dao::Table('TIPO_RESPOSTA')->select(['SEQ_DB','CLASSIFICACAO_RESPOSTA','DESCRICAO'])->whereIn('SEQ_DB',$tipo_resposta_fk)->get();
$tipo_resposta_list = array_column($tipo_resposta_array,null,'SEQ_DB');
//Variáveis para montagem dos dados
$dados = [];
$grupo_questao = null;
$questao = null;
$tipo_resposta = null;
$observacao = null;
$fotos = null;
$a=0;
//Montagem do array de dados
foreach($checklists_prospeccao as $check){
//Preenchimento das variáveis
$grupo_questao = $grupo_questao_list[$check['GRUPO_QUESTAO_SEQ_DB']] ?? null;
$questao = $questao_list[$check['QUESTAO_SEQ_DB']] ?? null;
$tipo_resposta = $tipo_resposta_list[$check['TIPO_RESPOSTA_SEQ_DB']] ?? null;
$observacao = $check['OBSERVACAO'] ?? null;
$fotos = $apontamento_fotos_list[$check['SEQ_DB_DEVICE']] ?? null;
$dados['SEQ_CHECKLIST'] = $check['SEQ_DB_DEVICE_CHECKLIST'];
$dados['SEQ_CHECKLIST_ITEM'] = $check['SEQ_DB'];
if($tipo_resposta['CLASSIFICACAO_RESPOSTA'] == 2){
$dados['TYPE'] = 'urgent';
}else if($tipo_resposta['CLASSIFICACAO_RESPOSTA'] == 1){
$dados['TYPE'] = 'ready';
}else if($tipo_resposta['CLASSIFICACAO_RESPOSTA'] == 0){
$dados['TYPE'] = 'ok';
}
$dados['TITLE'] = $questao;
$dados['COMMENTS'][0] = $observacao;
if(!empty($fotos)){
foreach($fotos['FOTOS'] as $foto){
$dados['PHOTOS'][$a]['URL'] = $foto;
$dados['PHOTOS'][$a]['PHOTO_TITLE'] = $tipo_resposta['DESCRICAO'];
$dados['PHOTOS'][$a]['PHOTO_SUBTITLE'] = '';
$a++;
}
}
}
$this->queryData['data'] = $dados;