D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
crsys
/
Filename :
teste_agenda_med.php
back
Copy
<?php $conn = new mysqli("localhost:3308","root","","crsys"); if ($conn->connect_error) { die("Erro de conexão: " . $conn->connect_error); } $sql = "SELECT f.id, f.nome funcionario, DATE(a.data_inicio) AS data_raw FROM crsys.gre_funcionario f LEFT JOIN crsys.gre_agenda a ON f.id = a.funcionario_id AND a.tarefa IN (7,8) AND a.sit_fase_id IN (1,2) AND a.data_inicio BETWEEN '2026-03-01' AND '2026-03-13' WHERE f.cargo_id = 13 GROUP BY f.id, f.nome, DATE(a.data_inicio) ORDER BY f.nome, DATE(a.data_inicio)"; $result = $conn->query($sql); $agenda = []; while($row = $result->fetch_assoc()){ $func = $row['funcionario']; $id = $row['id']; $data = $row['data_raw']; $agenda[$func]['id'] = $id; $agenda[$func]['datas'][$data] = true; } $data_inicio = "2026-03-10"; $data_fim = "2026-03-31"; $data_agenda = "2026-03-10"; $inicioPeriodo = new DateTime($data_inicio); $fimPeriodo = new DateTime($data_fim); $fimPeriodo->modify('+1 day'); function getDiasUteis($inicio,$fim){ $periodo = new DatePeriod($inicio,new DateInterval('P1D'),$fim); $dias=[]; foreach ($periodo as $data){ $dia_semana = (int)$data->format('w'); if($dia_semana!=0 && $dia_semana!=6){ $dias[] = clone $data; } } return $dias; } $dias_uteis = getDiasUteis($inicioPeriodo,$fimPeriodo); $dias_semana_pt = ['dom','seg','ter','qua','qui','sex','sab']; ?> <style> #tableAgenda { border-collapse:collapse; font-size:11px; width:auto; table-layout:auto; } #tableAgenda td,#tableAgenda th { border:1px solid #999; padding:2px; text-align:center; min-width:20px; } #tableAgenda .funcionario{ text-align:left; font-weight:bold; min-width:120px; width:auto; } #tableAgenda .ativo{background:#555;color:#fff;} #tableAgenda .verde{background:#28a745;color:#fff;} #tableAgenda .amarelo{background:#ffc107;} #tableAgenda .vermelho{background:#dc3545;color:#fff;} #tableAgenda .selecionado{outline:2px solid #000;} #tableAgenda .data-header{padding:0;} #tableAgenda .col-data{ display:flex; flex-direction:column; align-items:center; justify-content:center; width:22px; } #tableAgenda .col-data .ds{font-size:10px;line-height:1;} #tableAgenda .col-data .dd{font-size:12px;font-weight:bold;line-height:1;} #tableAgenda .col-data .mm{font-size:10px;line-height:1;} #tableAgenda .data-header span{display:block;line-height:1.05;font-size:10px;text-align:center;} #tableAgenda .data-dia{font-weight:bold;font-size:12px;} #tableAgenda td.clicavel:hover{filter:brightness(0.9);cursor:pointer;} </style> <div style="overflow-x:auto"> <table id="tableAgenda"> <thead> <tr> <th colspan="<?php echo count($dias_uteis)+1; ?>">AGENDA MEDIDORES</th> </tr> <tr> <th>Medidor</th> <?php $contadorVerde = 0; $contadorAmarelo = 0; foreach($dias_uteis as $data){ $dataSQL = $data->format('Y-m-d'); $classe = ''; if($dataSQL >= $data_agenda){ if($contadorVerde < 3){ $classe = 'verde'; $contadorVerde++; }elseif($contadorAmarelo < 2){ $classe = 'amarelo'; $contadorAmarelo++; }else{ $classe = 'vermelho'; } } $indice=(int)$data->format('w'); echo "<th class='data-header $classe'> <div class='col-data'> <div class='ds'>".$dias_semana_pt[$indice]."</div> <div class='dd'>".$data->format('d')."</div> <div class='mm'>".$data->format('m')."</div> </div> </th>"; } ?> </tr> </thead> <tbody> <?php foreach($agenda as $func=>$info): $idFunc = (int)$info['id']; $datas = $info['datas'] ?? []; $nomeJS = htmlspecialchars(json_encode($func), ENT_QUOTES, 'UTF-8'); ?> <tr> <td class="funcionario"><?= htmlspecialchars($func) ?></td> <?php foreach($dias_uteis as $data){ $dataSQL = $data->format('Y-m-d'); if(isset($datas[$dataSQL])){ echo "<td class='ativo'></td>"; }else{ $podeClicar = ($dataSQL >= $data_agenda); if($podeClicar){ echo "<td class='clicavel' onclick=\"clicarAgendaTableAgenda(this, $idFunc, '$dataSQL', $nomeJS)\"></td>"; }else{ echo "<td></td>"; } } } ?> </tr> <?php endforeach; ?> </tbody> </table> </div> <script> function clicarAgendaTableAgenda(el, funcionarioId, data, nome){ // limpa seleção anterior somente na tableAgenda document.querySelectorAll('#tableAgenda .selecionado').forEach(td=>{ td.classList.remove('selecionado','verde'); }); // mantém a clicada verde el.classList.add('verde','selecionado'); console.log("Funcionário:", nome); console.log("ID:", funcionarioId); console.log("Data:", data); } </script>