<?php 
require_once('../../../includes/load.php');
require_once('../../../vendor/autoload.php');
 

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Calculation\DateTime;


$OpcionesAnio = $_POST['opciones'];
$OpcionesMes = $_POST['opciones1'];

// Verificar si se seleccionaron opciones
if (!empty($OpcionesAnio) && !empty($OpcionesMes)) {
    // Crear la parte de la consulta SQL con el IN
    $OpcionesAnio = implode(',', array_map('intval', $OpcionesAnio));
    $OpcionesMes = implode(',', array_map('intval', $OpcionesMes));


    // Realizar la consulta SELECT con el IN
    $consulta = $db->query("SELECT op.id, a.NombreActivo, g.GNombre, pm.id, pm.SemanaMI, date_format(pm.FechaRegistroProduccionMI, '%d-%m-%Y') as FechaRegistroProduccionMI, z.ZNombre, a.PotenciaActivo, pm.DespachoMI, pm.HorasExtrasMI, pm.HorasProduccion, implemento.NombreImplemento, pm.HorometroInicial, pm.HorometroFinal, ts.NombreTipoServicioMI FROM produccionmi pm INNER JOIN operacion op ON pm.IdOperacion = op.id INNER JOIN granja g ON op.IdGranja = g.IdGranja INNER JOIN activo a ON pm.IdActivo = a.id INNER JOIN zona z ON g.IdZona = z.IdZona INNER JOIN implemento ON pm.IdImplemento = implemento.id INNER JOIN tiposerviciomi ts ON pm.IdTipoServicioMI = ts.IdTipoServicioMI WHERE pm.AnioProduccionMI IN ($OpcionesAnio) AND pm.MesProduccionMI IN ($OpcionesMes) ORDER BY pm.FechaRegistroProduccionMI DESC;");
 

    $documento = new Spreadsheet();

    $sheet = $documento->getActiveSheet();
    # Se usa para ponerle un titulo a la hoja de excel 
    $sheet->setTitle("TABLERO");
    # Se usa para filtar los campos que uno ponga
	$hojaDeProductos = $documento->getActiveSheet()->setAutoFilter('A3:L3');
   //TItulo
   $sheet->mergeCells('A1:L1');
   $sheet->setCellValue('A1', 'LISTADO DE PRODUCCION MI');
   $sheet->getStyle('A1:L1')->getFont()->setSize(20)->setBold(true); // Establece el color en blanco (código RGB hexadecimal para
   // Quitar los bordes exteriores de la tabla
   $sheet->getStyle('A1:L2')->getBorders()->getOutline()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_NONE);
    // Encabezados de columna
    $sheet->setCellValue('A3', 'Semana');
    $sheet->setCellValue('B3', 'Producción');
    $sheet->setCellValue('C3', 'Zona');
    $sheet->setCellValue('D3', 'Granja');
    $sheet->setCellValue('E3', 'Maquinaria');
    $sheet->setCellValue('F3', 'Potencia ');
    $sheet->setCellValue('G3', 'Despacho Gln');
    $sheet->setCellValue('H3', 'Operador(Hrs)');
    $sheet->setCellValue('I3', 'H.I.');
    $sheet->setCellValue('J3', 'H.F.');
    $sheet->setCellValue('K3', 'Servicio');
    $sheet->setCellValue('L3', 'Implemento');


    $sheet->getStyle('A3:L3')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('008080');
    $sheet->getStyle('A3:L3')->getFont()->setBold(true)->getColor()->setRGB('FFFFFF'); // Establece el color en blanco (código RGB hexadecimal para blanco: FFFFFF)

    $row = 4; // Fila inicial para los datos

    // Variable auxiliar para rastrear el año anterior y el mes anterior
    $anteriorAnio = null;
    $anteriorMes = null;
  
    $filaVaciaAnio = false;
    $filaVaciaMes = false;
   
    $mergeStartRowAnio = null;
    $mergeStartRowMes = null;

    $sumTJornal = 0;
    $sumTHE = 0;

  

// Recorrer los resultados y agregar los datos a la tabla
while ($rowData = $consulta->fetch_assoc()) {
          
    // Agregar los datos a las celdas correspondientes
    $sheet->setCellValue('A' . $row, $rowData['SemanaMI']);
    // Define the color for the row
    $rowColor = 'afeeee'; // Change the color as desired
    $cellStyle = $sheet->getStyle('A' . $row);
    $cellStyle->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB($rowColor);
    //
    $sheet->setCellValue('B' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaRegistroProduccionMI']));
    $sheet->getStyle('B'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('C' . $row, $rowData['ZNombre']);
    $sheet->setCellValue('D' . $row, $rowData['GNombre']);
    $sheet->setCellValue('E' . $row, $rowData['NombreActivo']);
    $sheet->setCellValue('F' . $row, $rowData['PotenciaActivo']);
    $sheet->setCellValue('G' . $row, $rowData['DespachoMI']);
    // Define the color for the row
    $rowColor = 'afeeee'; // Change the color as desired
    $cellStyle = $sheet->getStyle('G' . $row);
    $cellStyle->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB($rowColor);
    //
    $sheet->setCellValue('H' . $row, $rowData['HorasProduccion']);
    $sheet->setCellValue('I' . $row, $rowData['HorometroInicial']);
    $sheet->setCellValue('J' . $row, $rowData['HorometroFinal']);
    $sheet->setCellValue('K' . $row, $rowData['NombreTipoServicioMI']);
    $sheet->setCellValue('L' . $row, $rowData['NombreImplemento']);
   
    // Incrementar el contador de fila 
    $row++;

}   
   

    

    

    // Centrar el texto en las celdas combinadas (horizontal y vertical)
    $style = $sheet->getStyle('A3:L' . ($row - 1));
    $style->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
    $style->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);

    // Ajustar el ancho de las columnas automáticamente
    $startColumn = 'A';
    $endColumn = 'L';

    $startIndex = Coordinate::columnIndexFromString($startColumn);
    $endIndex = Coordinate::columnIndexFromString($endColumn);

    for ($columnIndex = $startIndex; $columnIndex <= $endIndex; $columnIndex++) {
        $column = Coordinate::stringFromColumnIndex($columnIndex);
        $sheet->getColumnDimension($column)->setAutoSize(true);
    }

    // Ajustar el ancho de las columnas automáticamente
    foreach (range('A', 'L') as $column) {
        $sheet->getColumnDimension($column)->setAutoSize(true);
    }

      $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($documento, 'Xlsx');

      $file_name = 'RptListadoMI';

      $writer->save($file_name);

      header('Content-Type: application/x-www-form-urlencoded');

      header('Content-Transfer-Encoding: Binary');

      header("Content-disposition: attachment; filename=\"".$file_name.".xlsx\"");

      readfile($file_name);

      unlink($file_name);
      exit;
      if($writer= true){
        $session->msg("s", "Se Creo el reporte");
       redirect('../listadomi.php',false);
      }
      

    } else {

      $session->msg("d", "No se seleccionaron opciones");
       echo display_msg($msg);
       redirect('../listadomi.php',false);
    }



?>



