@include('testata_pdf')
<?php
use Illuminate\Support\Facades\Log;

// Funzione helper per convertire un'immagine in base64
function convertImageToBase64($imagePath, $maxWidth = 300, $maxHeight = 200) {
  if(!file_exists($imagePath) || !is_readable($imagePath)) {
    return null;
  }
  
  try {
    $imageInfo = @getimagesize($imagePath);
    if($imageInfo === false) {
      return null;
    }
    
    $width = $imageInfo[0];
    $height = $imageInfo[1];
    $mimeType = $imageInfo['mime'];
    
    // Normalizza mime type
    $mimeType = str_replace('image/jpg', 'image/jpeg', $mimeType);
    
    // Calcola dimensioni ridotte
    $ratio = min($maxWidth / $width, $maxHeight / $height, 1); // max 1 per non ingrandire
    $newWidth = (int)($width * $ratio);
    $newHeight = (int)($height * $ratio);
    
    $source = null;
    switch($mimeType) {
      case 'image/jpeg':
        $source = @imagecreatefromjpeg($imagePath);
        break;
      case 'image/png':
        $source = @imagecreatefrompng($imagePath);
        break;
      case 'image/gif':
        $source = @imagecreatefromgif($imagePath);
        break;
      case 'image/webp':
        if(function_exists('imagecreatefromwebp')) {
          $source = @imagecreatefromwebp($imagePath);
        }
        break;
    }
    
    if($source === false) {
      return null;
    }
    
    $resized = imagecreatetruecolor($newWidth, $newHeight);
    
    if($mimeType === 'image/png' || $mimeType === 'image/gif') {
      imagealphablending($resized, false);
      imagesavealpha($resized, true);
      $transparent = imagecolorallocatealpha($resized, 255, 255, 255, 127);
      imagefilledrectangle($resized, 0, 0, $newWidth, $newHeight, $transparent);
    }
    
    imagecopyresampled($resized, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
    
    ob_start();
    switch($mimeType) {
      case 'image/jpeg':
        imagejpeg($resized, null, 75);
        break;
      case 'image/png':
        imagepng($resized, null, 6);
        break;
      case 'image/gif':
        imagegif($resized);
        break;
      case 'image/webp':
        if(function_exists('imagewebp')) {
          imagewebp($resized, null, 75);
        }
        break;
    }
    $imageData = ob_get_clean();
    
    imagedestroy($source);
    imagedestroy($resized);
    
    if($imageData !== false) {
      $base64 = base64_encode($imageData);
      $base64 = preg_replace('/\s+/', '', $base64);
      return 'data:' . $mimeType . ';base64,' . $base64;
    }
  } catch(\Exception $e) {
    return null;
  }
  
  return null;
}
?>
<style>
  body {
    font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
    font-size: 12px;
    line-height: 1.6;
    color: #333;
    margin: 20px;
    padding: 0;
  }
  
  h1 {
    font-size: 20px;
    font-weight: bold;
    margin: 20px 0 10px 0;
    color: #000;
  }
  
  h2 {
    font-size: 16px;
    font-weight: bold;
    margin: 30px 0 15px 0;
    color: #000;
    border-bottom: 2px solid #333;
    padding-bottom: 5px;
    page-break-after: avoid; /* Evita che il titolo rimanga sulla pagina precedente */
  }
  
  h3 {
    font-size: 14px;
    font-weight: bold;
    margin: 20px 0 10px 0;
    color: #000;
  }
  
  p {
    margin: 10px 0;
  }
  
  table {
    width: 100%;
    border-collapse: collapse;
    margin: 20px 0;
    font-size: 11px;
  }
  
  table th {
    background-color: #333;
    color: #fff;
    padding: 10px;
    text-align: left;
    font-weight: bold;
    border: 1px solid #000;
  }
  
  table td {
    padding: 10px;
    border: 1px solid #ddd;
    vertical-align: top;
  }
  
  table tr:nth-child(even) {
    background-color: #f9f9f9;
  }
  
  .section {
    margin: 30px 0;
    page-break-inside: avoid; /* Evita che la sezione venga spezzata */
  }
  
  /* Interruzione di pagina prima di ogni sezione (tranne la prima e quelle con no-page-break) */
  .section + .section:not(.no-page-break) {
    page-break-before: always;
  }
  
  /* Assicura che il titolo h2 rimanga con il contenuto della sezione */
  .section h2 {
    page-break-after: avoid;
    margin-top: 0; /* Riduce lo spazio sopra quando c'è un'interruzione di pagina */
  }
  
  /* Evita interruzioni di pagina all'interno delle tabelle */
  table {
    page-break-inside: avoid;
  }
  
  /* Evita interruzioni di pagina all'interno delle righe delle tabelle */
  table tr {
    page-break-inside: avoid;
  }
  
  /* Spazio per il footer con numerazione */
  @page {
    margin-bottom: 60px;
  }
  
  .info-row {
    margin: 10px 0;
  }
  
  .info-label {
    font-weight: bold;
    display: inline-block;
    width: 150px;
  }
  
  .info-value {
    display: inline-block;
    font-size: larger;
  }
  
  .event-image {
    max-width: 100%;
    max-height: 300px;
    margin: 10px 0;
    border: 1px solid #ddd;
  }
  
  .footer {
    margin-top: 50px;
    padding-top: 20px;
    border-top: 1px solid #ddd;
    text-align: center;
    font-size: 10px;
    color: #666;
  }
</style>

<body>
  <!-- Header -->
  <h1>Segnalazione Tecnica N. {{ $segnalazione->id }}</h1>
  <div class="d-flex justify-content-between align-items-center">
    <h3>{{ $segnalazione->reparto->label }}</h3>
    <h3>{{ $segnalazione->luogo->label }}</h3>
  </div>
  
  <div class="section">
    <div class="info-row">
      <span class="info-label">Data segnalazione:</span>
      <span class="info-value">{{ $segnalazione->created_at->format('d/m/Y H:i') }}</span>
    </div>
    
    <div class="info-row">
      <span class="info-label">Titolo:</span>
      <span class="info-value"><strong>{{ $segnalazione->titolo }}</strong></span>
    </div>
    
    <!-- @if($segnalazione->reparto)
    <div class="info-row">
      <span class="info-label">Posizione:</span>
      <span class="info-value">{{ $segnalazione->reparto->label }}, {{ $segnalazione->luogo->label }}</span>
    </div>
    @endif -->
    
    <!-- @if($segnalazione->luogo)
    <div class="info-row">
      <span class="info-label">Luogo:</span>
      <span class="info-value">{{ $segnalazione->luogo->label }}</span>
    </div>
    @endif -->
    
    <!-- @if($segnalazione->getRiferimento() != null && $segnalazione->getRiferimento() != '')
    <div class="info-row">
      <span class="info-label">Riferimento:</span>
      <span class="info-value">{{ $segnalazione->getRiferimento() }}</span>
    </div>
    @endif -->
    
    <div class="info-row">
      <span class="info-label">Stato:</span>
      <span class="info-value">{{ $configStato ? $configStato->label : 'N/A' }}</span>
    </div>
    
    @if($configPriorita)
    <div class="info-row">
      <span class="info-label">Priorità:</span>
      <span class="info-value">{{ $configPriorita->label }}</span>
    </div>
    @endif
    
    @if($configTipo)
    <div class="info-row">
      <span class="info-label">Tipo:</span>
      <span class="info-value">{{ $configTipo->label }}</span>
    </div>
    @endif
  </div>

  <!-- Descrizione -->
  @if($segnalazione->descrizione)
  <div class="section no-page-break">
    <h2>Descrizione</h2>
    <p style="white-space: pre-wrap;">{{ $segnalazione->descrizione }}</p>
  </div>
  @endif

  <!-- Cronologia Eventi -->
  @if($eventi->where('tipo', '!=', 'stato')->count() > 0)
  <div class="section">
    <h2>Cronologia Eventi</h2>
    <table>
      <thead>
        <tr>
          <th style="width: 15%;">Data/Ora</th>
          <th style="width: 12%;">Tipo</th>
          <th style="width: 73%;">Descrizione</th>
        </tr>
      </thead>
      <tbody>
        @foreach($eventi->where('tipo', '!=', 'stato') as $evento)
          <tr>
            <td style="font-weight: bold;">{{ $evento['data']->format('d/m/Y') }}<br>{{ $evento['data']->format('H:i') }}</td>
            <td>{{ ucfirst($evento['tipo']) }}</td>
            <td>
              @if($evento['tipo'] == 'creazione')
                <strong>{{ $evento['dati']['titolo'] ?? 'Segnalazione creata' }}</strong><br>
                {{ $evento['descrizione'] }}
                @if(isset($evento['dati']['priorita']) || isset($evento['dati']['tipo']))
                  <br><br>
                  @if($evento['dati']['priorita'])
                    <span style="background: #f0f0f0; padding: 3px 8px; margin-right: 5px; font-size: 10px;">Priorità: {{ $evento['dati']['priorita'] }}</span>
                  @endif
                  @if($evento['dati']['tipo'])
                    <span style="background: #f0f0f0; padding: 3px 8px; font-size: 10px;">Tipo: {{ $evento['dati']['tipo'] }}</span>
                  @endif
                @endif
              @elseif($evento['tipo'] == 'annotazione')
                {{ $evento['descrizione'] }}
                @if(isset($evento['dati']['allegati']) && count($evento['dati']['allegati']) > 0)
                  @php
                    $hasImages = false;
                    foreach($evento['dati']['allegati'] as $allegato) {
                      if($allegato['isImage'] && $allegato['path_file']) {
                        $hasImages = true;
                        break;
                      }
                    }
                  @endphp
                  @if($hasImages)
                    <br><br>
                    <span style="color: #666; font-size: 10px; font-style: italic;">[Vedi immagini in fondo al documento]</span>
                  @endif
                @endif
                @if($evento['dati']['autore'])
                  <br><br>
                  <span style="font-style: italic; color: #666; font-size: 10px;">Autore: {{ $evento['dati']['autore'] }}</span>
                @endif
              @elseif($evento['tipo'] == 'allegato')
                <strong>{{ $evento['dati']['nome'] ?? 'Allegato' }}</strong>
                @if($evento['dati']['descrizione'])
                  <br>{{ $evento['dati']['descrizione'] }}
                @endif
                @if(isset($evento['dati']['isImage']) && $evento['dati']['isImage'] && isset($evento['dati']['path_file']))
                  <br><br>
                  <span style="color: #666; font-size: 10px; font-style: italic;">[Vedi immagine in fondo al documento]</span>
                @endif
              @endif
            </td>
          </tr>
        @endforeach
      </tbody>
    </table>
  </div>
  @endif

  <!-- Allegati Segnalazione -->
  @if($segnalazione->allegatiSegnalazione->count() > 0)
  <div class="section">
    <h2>Allegati Segnalazione</h2>
    <table>
      <thead>
        <tr>
          <th>Nome File</th>
          <th>Descrizione</th>
          <th>Allegato</th>
        </tr>
      </thead>
      <tbody>
        @foreach($segnalazione->allegatiSegnalazione as $allegato)
        <tr>
          <td><strong>{{ $allegato->nome ?? 'Allegato' }}</strong></td>
          <td>{{ $allegato->descrizione ?? '-' }}</td>
          <td>
            @if($allegato->isImage() && $allegato->path_file)
              @php
                $imagePath = storage_path('app/public/allegatiSegnalazioni/' . $allegato->path_file);
                $imageBase64 = convertImageToBase64($imagePath, 200, 150);
              @endphp
              @if($imageBase64)
                <img src="{{ $imageBase64 }}" alt="{{ $allegato->nome }}" style="max-width: 200px; max-height: 150px; width: auto; height: auto; border: 1px solid #ddd;" />
              @else
                <span style="color: #999; font-size: 10px;">[Immagine non disponibile]</span>
              @endif
            @else
              <span style="color: #666; font-size: 10px;">File allegato</span>
            @endif
          </td>
        </tr>
        @endforeach
      </tbody>
    </table>
  </div>
  @endif

  <!-- Allegati Annotazioni -->
  @if($segnalazione->annotazioni->count() > 0)
    @php
      $annotazioniConAllegati = $segnalazione->annotazioni->filter(function($annotazione) {
        return $annotazione->allegatiAnnotazione->count() > 0;
      });
    @endphp
    @if($annotazioniConAllegati->count() > 0)
    <div class="section">
      <h2>Allegati Annotazioni</h2>
      <table>
        <thead>
          <tr>
            <th>Data</th>
            <th>Annotazione</th>
            <th>Allegato</th>
            <th>Autore</th>
          </tr>
        </thead>
        <tbody>
          @foreach($annotazioniConAllegati as $annotazione)
            @foreach($annotazione->allegatiAnnotazione as $allegato)
            <tr>
              <td>{{ $annotazione->created_at->format('d/m/Y H:i') }}</td>
              <td>{{ \Illuminate\Support\Str::limit($annotazione->annotazione, 80) }}</td>
              <td>
                <strong>{{ $allegato->nome ?? 'Allegato' }}</strong>
                @if($allegato->isImage() && $allegato->path_file)
                  @php
                    $imagePath = storage_path('app/public/allegatiAnnotazioni/' . $allegato->path_file);
                    $imageBase64 = convertImageToBase64($imagePath, 200, 150);
                  @endphp
                  @if($imageBase64)
                    <br><br>
                    <img src="{{ $imageBase64 }}" alt="{{ $allegato->nome }}" style="max-width: 200px; max-height: 150px; width: auto; height: auto; border: 1px solid #ddd;" />
                  @else
                    <br><br>
                    <span style="color: #999; font-size: 10px;">[Immagine non disponibile]</span>
                  @endif
                @endif
              </td>
              <td>{{ $annotazione->autore ? $annotazione->autore->fullName() : '-' }}</td>
            </tr>
            @endforeach
          @endforeach
        </tbody>
      </table>
    </div>
    @endif
  @endif

  <!-- Sezione Immagini -->
  @php
    $tutteLeImmagini = [];
    
    // Raccogli immagini dalle annotazioni
    foreach($eventi->where('tipo', '!=', 'stato') as $evento) {
      if($evento['tipo'] == 'annotazione' && isset($evento['dati']['allegati'])) {
        foreach($evento['dati']['allegati'] as $allegato) {
          if($allegato['isImage'] && $allegato['path_file']) {
            $imagePath = storage_path('app/public/allegatiAnnotazioni/' . $allegato['path_file']);
            if(file_exists($imagePath) && is_readable($imagePath)) {
              $tutteLeImmagini[] = [
                'path' => $imagePath,
                'nome' => $allegato['nome'] ?? 'Immagine',
                'descrizione' => $evento['descrizione'],
                'data' => $evento['data']->format('d/m/Y H:i'),
                'tipo' => 'annotazione',
                'autore' => $evento['dati']['autore'] ?? null
              ];
            }
          }
        }
      } elseif($evento['tipo'] == 'allegato' && isset($evento['dati']['isImage']) && $evento['dati']['isImage'] && isset($evento['dati']['path_file'])) {
        $imagePath = storage_path('app/public/allegatiSegnalazioni/' . $evento['dati']['path_file']);
        if(file_exists($imagePath) && is_readable($imagePath)) {
          $tutteLeImmagini[] = [
            'path' => $imagePath,
            'nome' => $evento['dati']['nome'] ?? 'Immagine',
            'descrizione' => $evento['dati']['descrizione'] ?? '',
            'data' => $evento['data']->format('d/m/Y H:i'),
            'tipo' => 'allegato',
            'autore' => null
          ];
        }
      }
    }
  @endphp
  
  @if(count($tutteLeImmagini) > 0)
  <div class="section">
    <h2>Immagini</h2>
    @foreach($tutteLeImmagini as $index => $img)
      <div style="margin-bottom: 30px; page-break-inside: avoid;">
        <h3 style="margin-bottom: 5px;">{{ $img['nome'] }}</h3>
        <p style="font-size: 10px; color: #666; margin-bottom: 10px;">
          Data: {{ $img['data'] }} | Tipo: {{ ucfirst($img['tipo']) }}
          @if(isset($img['autore']) && $img['autore'])
            | Autore: {{ $img['autore'] }}
          @endif
        </p>
        @if($img['descrizione'])
          <p style="margin-bottom: 10px;">{{ $img['descrizione'] }}</p>
        @endif
        <!-- Immagine -->
        @php
          $imagePath = $img['path'];
          $imageBase64 = null;
          if(file_exists($imagePath) && is_readable($imagePath)) {
            try {
              $imageInfo = @getimagesize($imagePath);
              if($imageInfo !== false) {
                // Riduciamo ulteriormente le dimensioni per DomPDF (max 400x300px)
                $maxWidth = 400;
                $maxHeight = 300;
                $width = $imageInfo[0];
                $height = $imageInfo[1];
                $mimeType = $imageInfo['mime'];
                
                // Normalizza mime type
                $mimeType = str_replace('image/jpg', 'image/jpeg', $mimeType);
                
                // Sempre ridimensiona per ridurre la dimensione del base64
                $ratio = min($maxWidth / $width, $maxHeight / $height);
                $newWidth = (int)($width * $ratio);
                $newHeight = (int)($height * $ratio);
                
                $source = null;
                switch($mimeType) {
                  case 'image/jpeg':
                    $source = @imagecreatefromjpeg($imagePath);
                    break;
                  case 'image/png':
                    $source = @imagecreatefrompng($imagePath);
                    break;
                  case 'image/gif':
                    $source = @imagecreatefromgif($imagePath);
                    break;
                  case 'image/webp':
                    if(function_exists('imagecreatefromwebp')) {
                      $source = @imagecreatefromwebp($imagePath);
                    }
                    break;
                }
                
                if($source !== false) {
                  $resized = imagecreatetruecolor($newWidth, $newHeight);
                  
                  if($mimeType === 'image/png' || $mimeType === 'image/gif') {
                    imagealphablending($resized, false);
                    imagesavealpha($resized, true);
                    $transparent = imagecolorallocatealpha($resized, 255, 255, 255, 127);
                    imagefilledrectangle($resized, 0, 0, $newWidth, $newHeight, $transparent);
                  }
                  
                  imagecopyresampled($resized, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
                  
                  ob_start();
                  switch($mimeType) {
                    case 'image/jpeg':
                      // Usa qualità più bassa (75) per ridurre dimensione base64
                      imagejpeg($resized, null, 75);
                      break;
                    case 'image/png':
                      // Usa compressione più alta (6 invece di 8)
                      imagepng($resized, null, 6);
                      break;
                    case 'image/gif':
                      imagegif($resized);
                      break;
                    case 'image/webp':
                      if(function_exists('imagewebp')) {
                        imagewebp($resized, null, 75);
                      }
                      break;
                  }
                  $imageData = ob_get_clean();
                  
                  imagedestroy($source);
                  imagedestroy($resized);
                  
                  if($imageData !== false) {
                    // Pulisci base64 da spazi/newline
                    $base64 = base64_encode($imageData);
                    $base64 = preg_replace('/\s+/', '', $base64);
                    $imageBase64 = 'data:' . $mimeType . ';base64,' . $base64;
                  }
                } else {
                  // Fallback: leggi originale se ridimensionamento fallisce
                  $imageData = @file_get_contents($imagePath);
                  if($imageData !== false) {
                    $base64 = base64_encode($imageData);
                    $base64 = preg_replace('/\s+/', '', $base64);
                    $imageBase64 = 'data:' . $mimeType . ';base64,' . $base64;
                  }
                }
              }
            } catch(\Exception $e) {
              // Ignora errori
            }
          }
        @endphp
        <div style="text-align: center; margin: 10px 0;" data-mpdf-image-path="{{ base64_encode($imagePath) }}">
          @if($imageBase64)
            <img src="{{ $imageBase64 }}" alt="{{ $img['nome'] }}" style="max-width: 500px; max-height: 350px; width: auto; height: auto; border: 1px solid #ddd;" />
          @else
            <span style="color: #999; font-size: 10px;">[Immagine non disponibile]</span>
          @endif
        </div>
      </div>
    @endforeach
  </div>
  @endif

  <!-- Footer -->
  <div class="footer">
    <p><strong>Documento generato il {{ now()->format('d/m/Y') }} alle {{ now()->format('H:i') }}</strong></p>
    <p>{{ config('app.name') }} - Sistema di Gestione Segnalazioni Tecniche</p>
  </div>
  
  <!-- Numerazione pagine usando DomPDF page_text -->
  <script type="text/php">
    if ( isset($pdf) ) {
      $font = $fontMetrics->getFont("DejaVu Sans", "regular");
      $pdf->page_text(550, $pdf->get_height() - 30, "Pagina {PAGE_NUM} di {PAGE_COUNT}", $font, 10, array(0.5, 0.5, 0.5));
    }
  </script>
</body>
</html>
