<?php
/* ---------- conexão/intervalo fixo 01‑17/04/2025 -------------- */
$pdo = new PDO("mysql:host=localhost;dbname=bihits;charset=utf8","root","");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$startObj = new DateTime('2025-04-01 00:00:00');
$endObj   = new DateTime('2025-04-17 23:59:59');

/* ---------- segmentos que tornam a diária inválida ------------- */
$segExcluidos = [
  'Cortesia - agente de viagens','Cortesia - outros',
  'Fracionado - distrato','Fracionado - semana',
  'Uso da casa - funcionário','Uso da casa - proprietário',
  'Reserva Teste','Back to home - semana (fracionado)',
  'Cortesia - influencer','Fracionado - voucher cortesia',
  'Vazias','Viagens de inspeção - cortesia'
];
/* placeholders :seg1,:seg2,... */
$segPlace=[];$params=[ ':start'=>$startObj->format('Y-m-d H:i:s'),
                       ':end'  =>$endObj->format('Y-m-d H:i:s') ];
foreach($segExcluidos as $i=>$seg){ $k=':seg'.($i+1); $segPlace[]=$k; $params[$k]=$seg; }
$notIn=implode(',',$segPlace);

/* ---------- consulta traz TODAS as diárias --------------------- */
$sql="
SELECT
  id,
  endOfDayDate            AS dataDiaria,
  originNumber            AS voucher,
  roomTypeName,
  roomingNightCount       AS RN,
  amount                  AS Diarias,
  mealPlanAmountPaxChd    AS AeB,
  amount+mealPlanAmountPaxChd AS DiariaPensao,
  /* flag de validade (1 = válida, 0 = inválida) */
  CASE WHEN dailyType='Regular' AND marketSegmentName NOT IN ($notIn) THEN 1 ELSE 0 END AS valida
FROM RoomingNights
WHERE endOfDayDate BETWEEN :start AND :end
  AND reservationStatus <> 2
ORDER BY endOfDayDate, originNumber";
$st=$pdo->prepare($sql); $st->execute($params);
$rows=$st->fetchAll(PDO::FETCH_ASSOC);

/* ---------- totais globais ------------------------------------ */
$totValid=$totInvalid=0; $totDia=$totAb=$totTot=0;
foreach($rows as $r){
    if($r['valida']){
        $totValid += $r['RN'];           // normalmente 1 por linha
        $totDia   += $r['Diarias'];
        $totAb    += $r['AeB'];
        $totTot   += $r['DiariaPensao'];
    }else{
        $totInvalid += $r['RN'];
    }
}
$ticket = $totValid ? $totTot/$totValid : 0;

/* helpers */
function f2($v){return number_format((float)$v,2,',','.');}
function f0($v){return number_format((int)$v,0,'','.');}
?>
<!DOCTYPE html><html lang="pt-BR"><head>
<meta charset="utf-8">
<title>Diárias (com GUID)</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head><body class="bg-light">
<div class="container-fluid py-4">

<h4 class="mb-4">Período: <?= $startObj->format('d/m/Y')?> – <?= $endObj->format('d/m/Y')?></h4>

<!-- cards -->
<div class="row g-4 mb-4">
  <div class="col-md-2 col-sm-6"><div class="card text-center shadow-sm"><div class="card-body">
    <h6>RN válidas</h6><h4><?=f0($totValid)?></h4>
  </div></div></div>

  <div class="col-md-2 col-sm-6"><div class="card text-center shadow-sm bg-warning-subtle"><div class="card-body">
    <h6>RN inválidas</h6><h4><?=f0($totInvalid)?></h4>
  </div></div></div>

  <div class="col-md-2 col-sm-6"><div class="card text-center shadow-sm"><div class="card-body">
    <h6>Diárias (R$)</h6><h4>R$ <?=f2($totDia)?></h4>
  </div></div></div>

  <div class="col-md-2 col-sm-6"><div class="card text-center shadow-sm"><div class="card-body">
    <h6>A &amp; B (R$)</h6><h4>R$ <?=f2($totAb)?></h4>
  </div></div></div>

  <div class="col-md-2 col-sm-6"><div class="card text-center shadow-sm"><div class="card-body">
    <h6>Total (R$)</h6><h4>R$ <?=f2($totTot)?></h4>
  </div></div></div>

  <div class="col-md-2 col-sm-6"><div class="card text-center shadow-sm"><div class="card-body">
    <h6>Ticket médio</h6><h4>R$ <?=f2($ticket)?></h4>
  </div></div></div>
</div>

<!-- tabela detalhada (1 linha = 1 GUID) -->
<div class="table-responsive shadow-sm">
<table class="table table-sm table-striped align-middle">
 <thead class="table-dark"><tr>
   <th>GUID</th>
   <th>Data</th>
   <th>Voucher</th>
   <th>Room Type</th>
   <th class="text-end">RN</th>
   <th class="text-end">Diária (R$)</th>
   <th class="text-end">A&nbsp;&amp;&nbsp;B (R$)</th>
   <th class="text-end">Total (R$)</th>
   <th class="text-center">Válida?</th>
 </tr></thead>
 <tbody>
 <?php foreach($rows as $r):?>
  <tr class="<?=$r['valida']?'':'table-warning'?>">
    <td style="font-size:0.75rem"><?=htmlspecialchars($r['id'])?></td>
    <td><?= (new DateTime($r['dataDiaria']))->format('d/m/Y') ?></td>
    <td><?= htmlspecialchars($r['voucher']) ?></td>
    <td><?= htmlspecialchars($r['roomTypeName']) ?></td>
    <td class="text-end"><?= f0($r['RN']) ?></td>
    <td class="text-end"><?= f2($r['Diarias']) ?></td>
    <td class="text-end"><?= f2($r['AeB']) ?></td>
    <td class="text-end"><?= f2($r['DiariaPensao']) ?></td>
    <td class="text-center"><?= $r['valida'] ? '✔︎':'✖︎' ?></td>
  </tr>
 <?php endforeach;?>
 </tbody>
</table>
</div>

</div></body></html>
