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

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
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;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;

$selectPlaca = $_POST['selectPlaca'];
$FechaInicio = $_POST['FechaInicio'];
$FechaFin = $_POST['FechaFin'];
$Placa = $_POST['Placa'];

if ($Placa == 0 && $selectPlaca == 2) {
	$consulta= $db->query("SELECT FECH_REG,ID_VEHICULO,ID_USER,MOTIVO_TRASLADO,AREA,DETALLE_CARGA,UBI_INICIO,UBI_LLEGADA,KM_INICIAL,KM_FINAL, NUM_VALE, GALONES FROM det_veh WHERE FECH_REG BETWEEN '$FechaInicio' AND '$FechaFin' ORDER BY FECH_REG DESC"); 
} else {
    if ($selectPlaca == 1) {
       $consulta= $db->query("SELECT FECH_REG,ID_VEHICULO,ID_USER,MOTIVO_TRASLADO,AREA,DETALLE_CARGA,UBI_INICIO,UBI_LLEGADA,KM_INICIAL,KM_FINAL,(KM_FINAL - KM_INICIAL) AS KM_TOTAL,((KM_FINAL - KM_INICIAL) - KM_PROMEDIO) AS SEMAFORO, (KM_PROMEDIO * 0.10) AS RESULTADOP10,(KM_PROMEDIO * 0.06) AS RESULTADOP6,(KM_PROMEDIO * 0.05) AS RESULTADOP5, NUM_VALE, GALONES FROM det_veh WHERE FECH_REG BETWEEN '$FechaInicio' AND '$FechaFin' AND ID_VEHICULO = '$Placa' ORDER BY FECH_REG DESC"); 
    } else {
        return false;
    }
} 

$documento = new Spreadsheet();
$sheet = $documento->getActiveSheet();
$sheet->setTitle("DATA");
# Se usa para filtar los campos que uno ponga
$hojaFilter = $documento->getActiveSheet()->setAutoFilter('A10:L10');

$sheet->setCellValue('A10', 'Fecha');
$sheet->setCellValue('B10', 'Usuario');
$sheet->setCellValue('C10', 'Motivo de Traslado');
$sheet->setCellValue('D10', 'Área');
$sheet->setCellValue('E10', 'Detalle Carga');
$sheet->setCellValue('F10', 'Punto de Partida ');
$sheet->setCellValue('G10', 'Punto de Llegada ');
$sheet->setCellValue('H10', 'Kilometraje Inicial'); 
$cellCoordinate = 'I10';
$sheet->setCellValue($cellCoordinate, 'Kilometraje Final');

// Obtener el estilo de la celda
$style = $sheet->getStyle($cellCoordinate);

// Subrayar el contenido de la celda
$style->getFont()->setUnderline(\PhpOffice\PhpSpreadsheet\Style\Font::UNDERLINE_SINGLE);
$sheet->setCellValue('J10', 'Total Kilometraje'); 
$sheet->setCellValue('K10', 'Nº Vale'); 
$sheet->setCellValue('L10', 'Galones Abastecidos'); 

// Definir el rango de celdas de A10 a L10
$range = 'A10:L10';

// Aplicar un color de fondo al rango de celdas
$style = $sheet->getStyle($range);
$fill = $style->getFill();
$fill->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('F2F2F2'); // Color de fondo

// Aplicar bordes al rango de celdas
$style = $sheet->getStyle($range);
$borders = $style->getBorders();

// Establecer estilo de borde para todas las direcciones
$borders->getAllBorders()->setBorderStyle(Border::BORDER_THIN); 

$range = 'A1:B4';
$imagePath = '../../../img/logo.png'; // Ruta de la imagen que deseas insertar
$sheet->mergeCells($range);
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$drawing->setPath($imagePath)
    ->setCoordinates('A1')
    ->setResizeProportional(false)
    ->setOffsetX(35); 
$sheet->getColumnDimension('A')->setWidth(11); // Ajusta la ancho de la fila para acomodar la imagen
$sheet->getColumnDimension('B')->setWidth(29); // Ajusta la ancho de la fila para acomodar la imagen
$drawing->setWorksheet($sheet);

// Definir el rango de celdas de A1 a L4
$range = 'A1:L4';

// Aplicar bordes al rango de celdas
$style = $sheet->getStyle($range);
$borders = $style->getBorders();

// Establecer estilo de borde para todas las direcciones
$borders->getAllBorders()->setBorderStyle(Border::BORDER_THIN);

$sheet->setCellValue('A5', 'Placa');
$sheet->setCellValue('B5', $Placa);
$sheet->setCellValue('A6', 'Dia Inicial');
$sheet->setCellValue('B6', $FechaInicio);
$sheet->setCellValue('A7', 'Dia Final');
$sheet->setCellValue('B7', $FechaFin);

// Definir el rango de celdas de A10 a L10
$range = 'A5:B7';

// Aplicar un color de fondo al rango de celdas
$style = $sheet->getStyle($range);
$fill = $style->getFill();
$fill->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('F2F2F2'); // Color de fondo 

// Aplicar bordes al rango de celdas
$style = $sheet->getStyle($range);
$borders = $style->getBorders();

// Establecer estilo de borde para todas las direcciones
$borders->getAllBorders()->setBorderStyle(Border::BORDER_THIN);

// Centrar la columna de A5 hacia abajo
$lastRow = $sheet->getHighestRow();
$styleRange = 'A5:A' . $lastRow;
$style = $sheet->getStyle($styleRange);
$style->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$style->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);

// Centrar la columna de B10 hacia abajo
$lastRow = $sheet->getHighestRow();
$styleRange = 'B10:B' . $lastRow;
$style = $sheet->getStyle($styleRange);
$style->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$style->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);

// Fusionar la celda que cubre la fila completa y la columna completa 
$sheet->mergeCells('C1:K2');
$sheet->setCellValue('C1', 'TRANSPORTE');

// Fusionar la celda que cubre la fila completa y la columna completa 
$sheet->mergeCells('C3:K4');
$sheet->setCellValue('C3', 'BITÁCORA VEHICULAR');

$sheet->setCellValue('L1', 'Código: F-TR-01');
$sheet->setCellValue('L2', 'Versión: 01');
$sheet->setCellValue('L3', 'Fecha: 01/09/2020');
$sheet->setCellValue('L4', 'Página: 1 de 1');




// Fusionar la celda que cubre la fila completa y la columna completa 
$sheet->mergeCells('D9:J9');
$sheet->setCellValue('D9', 'Recorrido');

// Agregar un color de fondo a la celda fusionada
$style = $sheet->getStyle('D9');
$style->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('333F4F'); // Color de fondo 

// Cambiar color del texto a blanco 
$font = $style->getFont();
$font->setColor(new \PhpOffice\PhpSpreadsheet\Style\Color(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_WHITE)); // Color de fuente blanco


// Fusionar la celda que cubre la fila completa y la columna completa 
$sheet->mergeCells('K9:L9');
$sheet->setCellValue('K9', 'Control de Combustible  ');

// Agregar un color de fondo a la celda fusionada
$style = $sheet->getStyle('K9');
$style->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('333F4F'); // Color de fondo 

// Cambiar color del texto a blanco 
$font = $style->getFont();
$font->setColor(new \PhpOffice\PhpSpreadsheet\Style\Color(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_WHITE)); // Color de fuente blanco


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

while ($rowData = $consulta->fetch_assoc()) {
    $sheet->setCellValue('A' . $row, \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($rowData['FECH_REG']));  
    $sheet->getStyle('A'.$row)->getNumberFormat()->setFormatCode('dd/mm/yyyy');

    $sheet->setCellValue('B' . $row, $rowData['ID_USER']);
    $sheet->setCellValue('C' . $row, $rowData['MOTIVO_TRASLADO']);
    $sheet->setCellValue('D' . $row, $rowData['AREA']);
    $sheet->setCellValue('E' . $row, $rowData['DETALLE_CARGA']);
    $sheet->setCellValue('F' . $row, $rowData['UBI_INICIO']);
    $sheet->setCellValue('G' . $row, $rowData['UBI_LLEGADA']);
    $sheet->setCellValue('H' . $row, $rowData['KM_INICIAL']);
    $sheet->setCellValue('I' . $row, $rowData['KM_FINAL']);
    $sheet->setCellValue('J' . $row, $rowData['KM_TOTAL']);
    $sheet->setCellValue('K' . $row, $rowData['NUM_VALE']);
    $sheet->setCellValue('L' . $row, $rowData['GALONES']);


    // Aplicar bordes a cada celda en la fila actual
    $cellRange = 'A' . $row . ':L' . $row;
    $style = $sheet->getStyle($cellRange);
    $borders = $style->getBorders();
    $borders->getAllBorders()->setBorderStyle(Border::BORDER_THIN);
   
    // Incrementar el contador de fila 
    $row++;
}   

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

// Ajustar el ancho de las columnas automáticamente
$startColumn = 'C';
$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);
}

// Protege la hoja
$sheet->getProtection()->setSheet(true); // Esto protegerá la hoja en su totalidad

// Habilita el uso del autofiltro
$sheet->getProtection()->setAutoFilter(false);

// Establece el resto de las opciones en falso para deshabilitarlas
$sheet->getProtection()->setFormatCells(true);
$sheet->getProtection()->setFormatColumns(true);
$sheet->getProtection()->setFormatRows(true);
$sheet->getProtection()->setInsertColumns(true);
$sheet->getProtection()->setInsertRows(true);
$sheet->getProtection()->setSort(true);
$sheet->getProtection()->setObjects(true);
$sheet->getProtection()->setScenarios(true);

// Configura una contraseña (opcional)
$sheet->getProtection()->setPassword('regularshow');


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

$file_name = 'Reporte';

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


