<?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;


$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, do.id as IdDetalleOperacion, op.Campana, g.GNombre, op.TipoGranja, z.ZNombre, ts.TSNombre, op.Reuso, date_format(op.FechaUltimaVenta, '%d-%m-%Y') as FechaUltimaVenta,date_format(op.FechaInicioLimpieza, '%d-%m-%Y') as FechaInicioLimpieza, date_format(op.FechaInicioRecepcion, '%d-%m-%Y') as FechaInicioRecepcion, date_format(op.FechaTerminoRecepcion, '%d-%m-%Y') as FechaTerminoRecepcion,date_format(op.FechaInicioCompost, '%d-%m-%Y') as FechaInicioCompost,date_format(op.FechaTerminoCompost, '%d-%m-%Y') as FechaTerminoCompost, date_format(op.FechaTerminoLimpiezaInicial, '%d-%m-%Y') as FechaTerminoLimpiezaInicial, date_format(op.FechaInicioTumbadoCompost, '%d-%m-%Y') as FechaInicioTumbadoCompost,date_format(op.FechaTerminoTumbadoCompost, '%d-%m-%Y') as FechaTerminoTumbadoCompost,date_format(op.FechaRedDragon, '%d-%m-%Y') as FechaRedDragon,date_format(op.FechaEntregaGranja, '%d-%m-%Y') as FechaEntregaGranja,date_format(op.FechaIngresoPollosBB, '%d-%m-%Y') as FechaIngresoPollosBB,date_format(do.FechaRegistroDetalleOperacion, '%d-%m-%Y') as FechaRegistroDetalleOperacion, s.SNombre, grupo.GNombre AS Expr1, do.Jornal, do.HorasExtras, do.HorasExtrasMaquina, do.HorasMaquina, actividad.ANombre,date_format(do.FechaActividad, '%d-%m-%Y') as FechaActividad, do.CantidadTractor, do.HorasExtrasTractorista, do.JornalTractorista, op.IdSemanaInicioLimpieza, case (op.IdMesInicioLimpieza) WHEN 1 THEN 'Enero' WHEN 2 THEN 'Febrero' WHEN 3 THEN 'Marzo' WHEN 4 THEN 'Abril' WHEN 5 THEN 'Mayo' WHEN 6 THEN 'Junio' WHEN 7 THEN 'Julio' WHEN 8 THEN 'Agosto' WHEN 9 THEN 'Septiembre' WHEN 10 THEN 'Octubre' WHEN 11 THEN 'Noviembre' WHEN 12 THEN 'Diciembre' END NMes, op.IdAnioInicioLimpieza, op.TCompost, op.TPreparacionLimpieza, op.TLimpiezaInicial, op.TDescanso, op.TVacioSanitario, op.TLimpieza, op.TDescansoProduccion, case (do.IdMesIngresoRealizaActividad) WHEN 1 THEN 'Enero' WHEN 2 THEN 'Febrero' WHEN 3 THEN 'Marzo' WHEN 4 THEN 'Abril' WHEN 5 THEN 'Mayo' WHEN 6 THEN 'Junio' WHEN 7 THEN 'Julio' WHEN 8 THEN 'Agosto' WHEN 9 THEN 'Septiembre' WHEN 10 THEN 'Octubre' WHEN 11 THEN 'Noviembre' WHEN 12 THEN 'Diciembre' END NMesA FROM actividad INNER JOIN detalleoperacion do ON actividad.IdActividad = do.IdActividad INNER JOIN grupo ON do.IdGrupo = grupo.IdGrupo INNER JOIN operacion op ON do.IdOperacion = op.id INNER JOIN granja g ON op.IdGranja = g.IdGranja INNER JOIN supervisor s ON do.IdSupervisor = s.IdSupervisor INNER JOIN tiposervicio ts ON op.IdTipoServicio = ts.IdTipoServicio INNER JOIN zona z ON g.IdZona = z.IdZona INNER JOIN areagerenciaoperaciones ar ON op.IdAreaGerenciaOperaciones = ar.IdAreaGerenciaOperaciones WHERE (ar.CodigoGO = 'Lge') AND op.IdAnioInicioLimpieza IN ($OpcionesAnio) AND op.IdMesInicioLimpieza IN ($OpcionesMes) ORDER BY id;");
 

    $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:AR3');
   //TItulo
   $sheet->mergeCells('A1:AR1');
   $sheet->setCellValue('A1', 'LISTADO DE ACTIVIDADES');
   $sheet->getStyle('A1:AR1')->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:AR2')->getBorders()->getOutline()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_NONE);
    // Encabezados de columna
    $sheet->setCellValue('A3', 'OPERACIÓN');
    $sheet->setCellValue('B3', 'DETALLE');
    $sheet->setCellValue('C3', 'CAMPAÑA');
    $sheet->setCellValue('D3', 'GRANJA');
    $sheet->setCellValue('E3', 'DESTINO');
    $sheet->setCellValue('F3', 'ZONA');
    $sheet->setCellValue('G3', 'SERVICIO');
    $sheet->setCellValue('H3', 'REUSO');
    $sheet->setCellValue('I3', 'SEMANA');
    $sheet->setCellValue('J3', 'MES');
    $sheet->setCellValue('K3', 'AÑO');
    $sheet->setCellValue('L3', 'VENTA');
    $sheet->setCellValue('M3', 'I. LIMPIEZA');
    $sheet->setCellValue('N3', 'I. RECEPCION');
    $sheet->setCellValue('O3', 'T. RECEPCION');
    $sheet->setCellValue('P3', 'I. COMPOST');
    $sheet->setCellValue('Q3', 'T. COMPOST');
    $sheet->setCellValue('R3', 'I. LIMPIEZA INICIAL');
    $sheet->setCellValue('S3', 'I. T. COMPOST');
    $sheet->setCellValue('T3', 'T.T. COMPOST');
    $sheet->setCellValue('U3', 'RED DRAGON');
    $sheet->setCellValue('V3', 'E. GRANJA');
    $sheet->setCellValue('W3', 'I. POLLO BB');
    $sheet->setCellValue('X3', 'PREPARACION');
    $sheet->setCellValue('Y3', 'COMPOST');
    $sheet->setCellValue('Z3', 'LIMPIEZA');
    $sheet->setCellValue('AA3', 'DESCANSO');
    $sheet->setCellValue('AB3', 'VACIO SANITARIO');
    $sheet->setCellValue('AC3', 'LIMPIEZA');
    $sheet->setCellValue('AD3', 'D. PRODUCCION');
    $sheet->setCellValue('AE3', 'FECHA');
    $sheet->setCellValue('AF3', 'MES');
    $sheet->setCellValue('AG3', 'SUPERVISOR');
    $sheet->setCellValue('AH3', 'GRUPO');
    $sheet->setCellValue('AI3', 'ACTIVIDAD');
    $sheet->setCellValue('AJ3', 'OPERARIO');
    $sheet->setCellValue('AK3', 'H.E. OPERARIO');
    $sheet->setCellValue('AL3', 'TRACTORISTA');
    $sheet->setCellValue('AM3', 'H.E. TRACTORISTA');
    $sheet->setCellValue('AN3', 'T. JORNAL');
    $sheet->setCellValue('AO3', 'T. H.E.');
    $sheet->setCellValue('AP3', 'C. TRACTOR');
    $sheet->setCellValue('AQ3', 'H. MAQUINAS');
    $sheet->setCellValue('AR3', 'H. M. EXTRAS');



    $sheet->getStyle('A3:AR3')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('008080');
    $sheet->getStyle('A3:AR3')->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['id']);
    // 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, $rowData['IdDetalleOperacion']);
    $sheet->setCellValue('C' . $row, $rowData['Campana']);
    $sheet->setCellValue('D' . $row, $rowData['GNombre']);
    $sheet->setCellValue('E' . $row, $rowData['TipoGranja']);
    $sheet->setCellValue('F' . $row, $rowData['ZNombre']);
    $sheet->setCellValue('G' . $row, $rowData['TSNombre']);
    $sheet->setCellValue('H' . $row, $rowData['Reuso']);
    $sheet->setCellValue('I' . $row, $rowData['IdSemanaInicioLimpieza']);
    // Define the color for the row
    $rowColor = 'afeeee'; // Change the color as desired
    $cellStyle = $sheet->getStyle('I' . $row);
    $cellStyle->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB($rowColor);
    //
    $sheet->setCellValue('J' . $row, $rowData['NMes']);
    // Define the color for the row
    $rowColor = 'afeeee'; // Change the color as desired
    $cellStyle = $sheet->getStyle('j' . $row);
    $cellStyle->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB($rowColor);
    //
    $sheet->setCellValue('K' . $row, $rowData['IdAnioInicioLimpieza']);
    // Define the color for the row
    $rowColor = 'afeeee'; // Change the color as desired
    $cellStyle = $sheet->getStyle('K' . $row);
    $cellStyle->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB($rowColor);
    //
    $sheet->setCellValue('L' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaUltimaVenta']));
    $sheet->getStyle('L'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('M' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaInicioLimpieza']));
    $sheet->getStyle('M'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('N' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaInicioRecepcion']));
    $sheet->getStyle('N'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('O' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaTerminoRecepcion']));
    $sheet->getStyle('O'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('P' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaInicioCompost']));
    $sheet->getStyle('P'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('Q' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaTerminoCompost']));
    $sheet->getStyle('Q'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('R' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaTerminoLimpiezaInicial']));
    $sheet->getStyle('R'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('S' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaInicioTumbadoCompost']));
    $sheet->getStyle('S'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('T' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaTerminoTumbadoCompost']));
    $sheet->getStyle('T'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('U' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaRedDragon']));
    $sheet->getStyle('U'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('V' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaEntregaGranja']));
    $sheet->getStyle('V'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('W' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaIngresoPollosBB']));
    $sheet->getStyle('W'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    $sheet->setCellValue('X' . $row, $rowData['TPreparacionLimpieza']);
    $sheet->setCellValue('Y' . $row, $rowData['TCompost']);
    $sheet->setCellValue('Z' . $row, $rowData['TLimpiezaInicial']);
    $sheet->setCellValue('AA' . $row, $rowData['TDescanso']);
    $sheet->setCellValue('AB' . $row, $rowData['TVacioSanitario']);
    $sheet->setCellValue('AC' . $row, $rowData['TLimpieza']);
    $sheet->setCellValue('AD' . $row, $rowData['TDescansoProduccion']);
    $sheet->setCellValue('AE' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FechaActividad']));
    $sheet->getStyle('AE'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');
    // Define the color for the row
    $rowColor = 'afeeee'; // Change the color as desired
    $cellStyle = $sheet->getStyle('AE' . $row);
    $cellStyle->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB($rowColor);
    //
    $sheet->setCellValue('AF' . $row, $rowData['NMesA']);
    $sheet->setCellValue('AG' . $row, $rowData['SNombre']);
    $sheet->setCellValue('AH' . $row, $rowData['Expr1']);
    $sheet->setCellValue('AI' . $row, $rowData['ANombre']);
    $sheet->setCellValue('AJ' . $row, $rowData['Jornal']);
    // Define the color for the row
    $rowColor = 'afeeee'; // Change the color as desired
    $cellStyle = $sheet->getStyle('AJ' . $row);
    $cellStyle->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB($rowColor);
    //
    $sheet->setCellValue('AK' . $row, $rowData['HorasExtras']);
    $sheet->setCellValue('AL' . $row, $rowData['JornalTractorista']);
    // Define the color for the row
    $rowColor = 'afeeee'; // Change the color as desired
    $cellStyle = $sheet->getStyle('AL' . $row);
    $cellStyle->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB($rowColor);
    //
    $sheet->setCellValue('AM' . $row, $rowData['HorasExtrasTractorista']);

    // Sumar el valor de TJORNAL 
    $sumTJornal= $rowData['Jornal'] += $rowData['JornalTractorista'];
    $sheet->setCellValue('AN' . $row, $sumTJornal);
    // Define the color for the row
    $rowColor = 'afeeee'; // Change the color as desired
    $cellStyle = $sheet->getStyle('AN' . $row);
    $cellStyle->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB($rowColor);
    //
    // Sumar el valor de THE 
    $sumTHE= $rowData['HorasExtras'] += $rowData['HorasExtrasTractorista'];
    $sheet->setCellValue('AO' . $row, $sumTHE);

    $sheet->setCellValue('AP' . $row, $rowData['CantidadTractor']);
    // Define the color for the row
    $rowColor = 'afeeee'; // Change the color as desired
    $cellStyle = $sheet->getStyle('AP' . $row);
    $cellStyle->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB($rowColor);
    //
    $sheet->setCellValue('AQ' . $row, $rowData['HorasMaquina']);
    $sheet->setCellValue('AR' . $row, $rowData['HorasExtrasMaquina']);

    // Incrementar el contador de fila 
    $row++;

}   

    

    

    // Centrar el texto en las celdas combinadas (horizontal y vertical)
    $style = $sheet->getStyle('A3:AR' . ($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 = 'AR';

    $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', 'AR') as $column) {
        $sheet->getColumnDimension($column)->setAutoSize(true);
    }

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

      $file_name = 'RptRegistro';

      $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('../actividad.php',false);
      }
      

    } else {

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



?>



