<?php
require('fpdf.php');


class PDF extends FPDF
{
    // Cargar los datos
    function LoadData($file)
    {
        // Leer las líneas del fichero
        $lines = file($file);
        $data = array();
        foreach ($lines as $line)
            $data[] = explode(';', trim($line));
        return $data;
    }
    function Header()
    {
        // Logo
        //   $this->Image('logo_pb.png',10,8,33);
        // Arial bold 15
        include("../../connect.php");
        $this->SetFont('Arial', 'B', 12);
        $this->Cell(45, 10, 'Horario de sucursal:');
        $this->SetFont('Arial', '', 10);
        $suc = $_POST["sucursal"];
        $fecha = $_POST["fechainicio"];
        $fecha2 = $_POST["fechafin"];
        $fecha = date_create($fecha);
        $fecha = date_format($fecha, 'd/m/Y');
        $fecha2 = date_create($fecha2);
        $fecha2 = date_format($fecha2, 'd/m/Y');
        $sql = "SELECT * FROM cat_sucursal WHERE id= $suc";
        $resultset1 = mysqli_query($conn, $sql);
        $data = array();
        $emparray = array();
        while ($row = mysqli_fetch_assoc($resultset1)) {
            $this->Cell(30, 10, $row["nombre_sucursal"]);
        }
        $this->Cell(190, 10, 'De ' . $fecha . ' A ' . $fecha2, '', 0, 'R');
        $this->Ln();
    }
    // Tabla simple
    function BasicTable($header, $data)
    {
        // Cabecera
        foreach ($header as $col)
            $this->Cell(35, 7, $col, 1);
        $this->Ln();






        // Datos
        foreach ($data as $row) {
            foreach ($row as $col)
                $this->Cell(35, 6, 'nom', 1);
            $this->Ln();
        }
    }

    // Una tabla más completa
    /*function ImprovedTable($header, $data)
    {
        // Anchuras de las columnas
        $w = array(40, 35, 45, 40);
        // Cabeceras
        for($i=0;$i<count($header);$i++)
            $this->Cell($w[$i],7,$header[$i],1,0,'C');
        $this->Ln();
        // Datos
        foreach($data as $row)
        {
            $this->Cell($w[0],6,$row[0],'LR');
            $this->Cell($w[1],6,$row[1],'LR');
            $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R');
            $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R');
            $this->Ln();
        }
        // Línea de cierre
        $this->Cell(array_sum($w),0,'','T');
    }*/

    // Tabla coloreada
    function FancyTable($header, $data)
    {
        // Colores, ancho de línea y fuente en negrita
        $this->SetFillColor(165, 198, 255);
        $this->SetTextColor(0);
        $this->SetDrawColor(0, 0, 0);
        $this->SetLineWidth(.3);
        $this->SetFont('', 'B');
        // Cabecera
        $w = array(35, 35, 35, 35, 35, 35, 35, 35);
        for ($i = 0; $i < count($header); $i++)
            $this->Cell($w[$i], 7, $header[$i], 1, 0, 'C', true);
        $this->Ln();


        // Restauración de colores y fuentes
        $this->SetFillColor(224, 235, 255);
        $this->SetTextColor(0);
        $this->SetFont('');
        // Datos
        $fill = false;
        foreach ($data as $row) {
            $this->Cell($w[0], 4, utf8_decode($row["nombre"]), 'LR', 0, 'L', $fill);
            $this->Cell($w[0], 4, $row["1"]["horario"], 'LR', 0, 'C', $fill);
            $this->Cell($w[0], 4, $row["2"]["horario"], 'LR', 0, 'C', $fill);
            $this->Cell($w[0], 4, $row["3"]["horario"], 'LR', 0, 'C', $fill);
            $this->Cell($w[0], 4, $row["4"]["horario"], 'LR', 0, 'C', $fill);
            $this->Cell($w[0], 4, $row["5"]["horario"], 'LR', 0, 'C', $fill);
            $this->Cell($w[0], 4, $row["6"]["horario"], 'LR', 0, 'C', $fill);
            $this->Cell($w[0], 4, $row["7"]["horario"], 'LR', 0, 'C', $fill);

            $this->Ln(4);
            $this->Cell($w[3], 4, utf8_decode($row["apellido"]), 'LR', 0, 'L', $fill);
            $this->Cell($w[3], 4, ($row["1"]["entrada"] == "00:00:00" ? "" : $row["1"]["entrada"]) . " - " . ($row["1"]["salida"] == "00:00:00" ? "" : $row["1"]["salida"]), 'LR', 0, 'C', $fill);
            $this->Cell($w[3], 4, ($row["2"]["entrada"] == "00:00:00" ? "" : $row["2"]["entrada"]) . " - " . ($row["2"]["salida"] == "00:00:00" ? "" : $row["2"]["salida"]), 'LR', 0, 'C', $fill);
            $this->Cell($w[3], 4, ($row["3"]["entrada"] == "00:00:00" ? "" : $row["3"]["entrada"]) . " - " . ($row["3"]["salida"] == "00:00:00" ? "" : $row["3"]["salida"]), 'LR', 0, 'C', $fill);
            $this->Cell($w[3], 4, ($row["4"]["entrada"] == "00:00:00" ? "" : $row["4"]["entrada"]) . " - " . ($row["4"]["salida"] == "00:00:00" ? "" : $row["4"]["salida"]), 'LR', 0, 'C', $fill);
            $this->Cell($w[3], 4, ($row["5"]["entrada"] == "00:00:00" ? "" : $row["5"]["entrada"]) . " - " . ($row["5"]["salida"] == "00:00:00" ? "" : $row["5"]["salida"]), 'LR', 0, 'C', $fill);
            $this->Cell($w[3], 4, ($row["6"]["entrada"] == "00:00:00" ? "" : $row["6"]["entrada"]) . " - " . ($row["6"]["salida"] == "00:00:00" ? "" : $row["6"]["salida"]), 'LR', 0, 'C', $fill);
            $this->Cell($w[3], 4, ($row["7"]["entrada"] == "00:00:00" ? "" : $row["7"]["entrada"]) . " - " . ($row["7"]["salida"] == "00:00:00" ? "" : $row["7"]["salida"]), 'LR', 0, 'C', $fill);
            $this->Ln();
            $fill = !$fill;
        }
        // Línea de cierre
        $this->Cell(array_sum($w), 0, '', 'T');
    }
}




function pdfsalir($data)
{
    include("../../connect.php");
    $suc = $_POST["sucursal"];
    $fecha = $_POST["fechainicio"];
    $fecha2 = $_POST["fechafin"];

    $pdf = new PDF('L', 'mm', 'A4');
    // Títulos de las columnas
    $header = array('Empleado/Dia', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo');
    // Carga de datos
    // $data = $pdf->LoadData('paises.txt'); 
    $pdf->AddPage();

    $pdf->SetFont('Arial', '', 10);



    $pdf->Ln();
    $pdf->FancyTable($header, $data);
    $pdf->Ln();



    $sql = "SELECT * from tbl_comentario_horario  where id_sucursal = '$suc' and fecha BETWEEN '$fecha' and '$fecha2'";
    mysqli_query($conn, "SET NAMES 'utf8'");
    $resultset1 = mysqli_query($conn, $sql);

    if (mysqli_num_rows($resultset1) != 0) {

        $pdf->Cell(0, 10, utf8_decode(""), 0, 0, 'FJ', false);
        $pdf->Ln();
        $pdf->Cell(0, 4, utf8_decode("Comentarios : "), 0, 0, 'L', false);
        $pdf->Ln();
        $i = 1;
        while ($row = mysqli_fetch_assoc($resultset1)) {
            $cantidad_caracteres = strlen($row["comentario"]);
            if ($cantidad_caracteres > 168) {
                $pdf->Cell(0, 4, utf8_decode($i . ".- " . substr($row["comentario"], 0, 169)), 0, 0, 'L', false);
                $pdf->Ln();
                $pdf->Cell(0, 4, utf8_decode("" . substr($row["comentario"], 169, -1)), 0, 0, 'L', false);
            } else {
                $pdf->Cell(0, 4, utf8_decode($i . ".- " . $row["comentario"]), 0, 0, 'L', false);
                $pdf->Ln();
            }



            $i++;
        }
    }





    $pdf->Output('F', 'archivo.pdf', FALSE);
    echo ('archivo.pdf');
}

function Datos()
{
    include("../../connect.php");
    $suc = $_GET["sucursal"];
    $fecha = $_GET["fechainicio"];
    $fecha2 = $_GET["fechafin"];



    $sql = "SELECT `numEmp`,SUBSTRING(min(`marcaje`),11,6) entrada,if(SUBSTRING(min(`marcaje`),11,6) = SUBSTRING(max(`marcaje`),11,6),'',SUBSTRING(max(`marcaje`),11,6))  salida, (ELT(WEEKDAY(`marcaje`) + 1, 'lunes', 'martes', 'miercoles', 'jueves', 'viernes', 'sabado', 'dimingo')) as dia FROM `registro`  
        where WEEKOFYEAR(`marcaje`) = WEEKOFYEAR('$fecha') and YEAR(`marcaje`) = YEAR('$fecha') and numEmp in (select numero from cat_empleado where id_sucursal ='$suc')
        GROUP by `numEmp`,(ELT(WEEKDAY(`marcaje`) + 1, 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo'))";



    $sql = "SELECT `numEmp`,SUBSTRING(min(`marcaje`),11,6) entrada,
        cat_empleado.nombre,concat(ap_paterno,' ') apellido,cat_horarios.nombre horario,
        if(SUBSTRING(min(`marcaje`),11,6) = SUBSTRING(max(`marcaje`),11,6),' ******',SUBSTRING(max(`marcaje`),11,6))  salida, (ELT(WEEKDAY(`marcaje`) + 1, 'lunes', 'martes', 'miercoles', 'jueves', 'viernes', 'sabado', 'dimingo')) as dia FROM `registro`
        
        left join cat_empleado on cat_empleado.numero = numEmp
        left join tbl_horarios on cat_empleado.id =tbl_horarios.idEmpleado 
        left join cat_horarios on tbl_horarios.idHora =cat_horarios.id
        where WEEKOFYEAR(`marcaje`) = WEEKOFYEAR('$fecha') and YEAR(`marcaje`) = YEAR('$fecha') and numEmp in (select numero from cat_empleado where id_sucursal ='$suc')
        GROUP by `numEmp`,(ELT(WEEKDAY(`marcaje`) + 1, 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo'))";
    mysqli_query($conn, "SET NAMES 'utf8'");
    $resultset1 = mysqli_query($conn, $sql);
    $data = array();
    $emparray = array();
    while ($row = mysqli_fetch_assoc($resultset1)) {
        $emparray[] = $row;
    }
    if ($emparray != null) {
        $data =  array();
        $NumDentro = array();
        $numero = -1;

        foreach ($emparray as &$valor) {
            $resultSearch = false;
            $resultSearch = in_array($valor["numEmp"], $NumDentro);

            $datoUno =
                array(
                    "numEmp" => $valor["numEmp"],
                    "Nombre" => $valor["nombre"],
                    "apellido" => $valor["apellido"],
                    "lunes" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    ),
                    "martes" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    ),
                    "miercoles" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    ),
                    "jueves" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    ),
                    "viernes" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    ),
                    "sabado" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    ),
                    "domingo" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    )
                );
            if ($resultSearch) {
                /*   $data[$numero]["lunes"]  =array(
                            "horario"=>$valor["horario"],
                            "entrada"=>$valor["entrada"],
                            "salida"=>$valor["salida"]
                        );     */
                switch ($valor["dia"]) {
                    case 'lunes':
                        $data[$numero]["lunes"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'martes':
                        $data[$numero]["martes"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'miercoles':
                        $data[$numero]["miercoles"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'jueves':
                        $data[$numero]["jueves"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'viernes':
                        $data[$numero]["viernes"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'sabado':
                        $data[$numero]["sabado"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'domingo':
                        $data[$numero]["domingo"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                }
            } else {


                switch ($valor["dia"]) {
                    case 'lunes':
                        $datoUno["lunes"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'martes':
                        $datoUno["martes"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'miercoles':
                        $datoUno["miercoles"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'jueves':
                        $datoUno["jueves"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'viernes':
                        $datoUno["viernes"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'sabado':
                        $datoUno["sabado"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'domingo':
                        $datoUno["domingo"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                }
                array_push($data, $datoUno);
                array_push($NumDentro, $valor["numEmp"]);
                $numero = $numero + 1;
                //  echo $numero;
            }


            //  echo print_r($NumDentro)."<br><br><br>";

        }


        // echo print_r($data)."456<br><br><br>";


    } else {
        $data = array("nodatos" => "1");
    }
}

$json = json_decode($_POST["json"], true);
//echo $json;
pdfsalir($json);
