<?php
function getComentariosEmpleado($idEdit, $conexion)
{
    $sqlExiste = "SELECT * FROM cat_empleado_comentario WHERE id_empleado=? ORDER BY id DESC";
    $conexion->prepare($sqlExiste);
    $conexion->bind("s", $idEdit);

    $conexion->execute();
    $comentarios = $conexion->fetch();

    if (sizeof($comentarios) > 0) {
        foreach ($comentarios as $key => $doc) {
            $comentarios[$key]['fechaM'] = fechaYMDaDMY($doc['fecha']);
        }
    }

    return $comentarios;
}

function getPerfiles($conexion)
{
    //
    $sql = "SELECT * FROM cat_perfil ORDER BY nombre ASC";
    $conexion->prepare($sql);

    $conexion->execute();
    $perfiles = $conexion->fetch();

    return $perfiles;
}

function getReceta($idProducto, $conexion)
{
    $sqlInsumos = "SELECT cat_receta.*,(SELECT codigo_producto FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'clave',(SELECT nombre_producto FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'nombre',(SELECT (SELECT nombre_unidad from cat_unidad WHERE id=cat_producto.id_unidad) as 'unidad_base' FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'ab_unidad',(SELECT (SELECT ab_unidad from cat_unidad WHERE id=cat_producto.id_unidad_produccion) as 'unidad_base' FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'unidad_produccion',(SELECT precio FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'precio',(SELECT rendimiento FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'rendimiento',(SELECT inventario FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'inventario' FROM cat_receta WHERE cat_receta.id_producto=?";
    $conexion->prepare($sqlInsumos);
    $conexion->bind("s", $idProducto);

    $conexion->execute();
    $productosEdit = $conexion->fetch();

    return $productosEdit;
}

function getProductosCliente($idEdit, $conexion)
{
    $sqlExiste = "SELECT DISTINCT id_tipo_sucursal FROM cat_sucursal WHERE id_cliente=?";
    $conexion->prepare($sqlExiste);
    $conexion->bind("s", $idEdit);

    $conexion->execute();
    $tiposSucursal = $conexion->fetch();

    $idsTipos = array();

    foreach ($tiposSucursal as $key => $value) {
        $idsTipos[$value['id_tipo_sucursal']] = $value['id_tipo_sucursal'];
    }

    //sacar los ids de productos
    $sqlProductos = "SELECT cat_producto.*,(SELECT ab_unidad FROM cat_unidad WHERE id = cat_producto.id_unidad_venta) AS 'ab_unidad_venta',(SELECT factor FROM cat_cliente_factor WHERE id_cliente=? AND id_producto=cat_producto.id_producto) AS 'factor' FROM cat_tipo_sucursal_producto INNER JOIN cat_producto ON cat_producto.id_producto=cat_tipo_sucursal_producto.id_producto WHERE cat_tipo_sucursal_producto.id_tipo_sucursal in (" . implode(',', $idsTipos) . ") GROUP BY cat_tipo_sucursal_producto.id_producto";
    $conexion->prepare($sqlProductos);
    $conexion->bind("s", $idEdit);

    $conexion->execute();
    $productosCliente = $conexion->fetch();

    if (is_array($productosCliente)) {
        foreach ($productosCliente as $key => $value) {
            $aux = ($value['precio'] * $value['factor']) / 100;
            $precio_factor = $value['precio'] + $aux;


            $productosCliente[$key]['precio_factor'] = $precio_factor;
        }
    }

    return $productosCliente;
}

function getSucursalesCliente($idEdit, $conexion)
{
    $sqlExiste = "SELECT cat_sucursal.*, (SELECT nombre FROM cat_tipo_sucursal WHERE cat_sucursal.id_tipo_sucursal=cat_tipo_sucursal.id) AS 'tipo' FROM cat_sucursal WHERE id_cliente=? ORDER BY cat_sucursal.id DESC";
    $conexion->prepare($sqlExiste);
    $conexion->bind("s", $idEdit);

    $conexion->execute();
    $sucursalesCliente = $conexion->fetch();

    return $sucursalesCliente;
}

function getRFCCliente($idEdit, $conexion)
{
    $sqlExiste = "SELECT cat_cliente_rfc.* FROM cat_cliente_rfc WHERE id_cliente=? ORDER BY cat_cliente_rfc.id DESC";
    $conexion->prepare($sqlExiste);
    $conexion->bind("s", $idEdit);

    $conexion->execute();
    $rfcCliente = $conexion->fetch();

    return $rfcCliente;
}

function getContactosCliente($idEdit, $conexion)
{
    $sqlExiste = "SELECT cat_cliente_contacto.* FROM cat_cliente_contacto WHERE id_cliente=? ORDER BY cat_cliente_contacto.id DESC";
    $conexion->prepare($sqlExiste);
    $conexion->bind("s", $idEdit);

    $conexion->execute();
    $contactosCliente = $conexion->fetch();

    return $contactosCliente;
}

function CompletaCeros($num, $dig)
{
    $result = '';
    for ($i = 0; $i < ($dig - strlen($num)); $i++)
        $result = $result . '0';
    $result = $result . $num;
    return $result;
}

function getProductosProveedor($idEdit, $conexion)
{
    $sqlExiste = "SELECT cat_proveedor_producto.*, CONCAT(cat_producto.codigo_producto , ' | ', cat_producto.nombre_producto) AS 'producto', cat_unidad.ab_unidad AS 'unidad' FROM cat_proveedor_producto INNER JOIN cat_producto ON cat_producto.id_producto=cat_proveedor_producto.id_producto INNER JOIN cat_unidad ON cat_unidad.id=cat_producto.id_unidad WHERE id_proveedor=? ORDER BY cat_proveedor_producto.id DESC";
    $conexion->prepare($sqlExiste);
    $conexion->bind("s", $idEdit);

    $conexion->execute();
    $productosEmpleados = $conexion->fetch();

    return $productosEmpleados;
}

function getCuentasProveedor($idEdit, $conexion)
{
    $sqlExiste = "SELECT cat_proveedor_cuenta.* FROM cat_proveedor_cuenta WHERE id_proveedor=? ORDER BY cat_proveedor_cuenta.id DESC";
    $conexion->prepare($sqlExiste);
    $conexion->bind("s", $idEdit);

    $conexion->execute();
    $cuentasProveedor = $conexion->fetch();

    return $cuentasProveedor;
}

function getContactosProveedor($idEdit, $conexion)
{
    $sqlExiste = "SELECT cat_proveedor_contacto.* FROM cat_proveedor_contacto WHERE id_proveedor=? ORDER BY cat_proveedor_contacto.id DESC";
    $conexion->prepare($sqlExiste);
    $conexion->bind("s", $idEdit);

    $conexion->execute();
    $contactosProveedor = $conexion->fetch();

    return $contactosProveedor;
}

function getEmpleados($conexion)
{
    //
    $sql = "SELECT * FROM cat_empleado ORDER BY nombre ASC";
    $conexion->prepare($sql);

    $conexion->execute();
    $empleados = $conexion->fetch();

    return $empleados;
}

function getCode()
{
    return 'TresArro';
}

function getDocumentosEmpleado($idEdit, $conexion)
{
    $sqlExiste = "SELECT cat_empleado_documento.*,(SELECT nombre FROM cat_documento WHERE cat_empleado_documento.id_documento=cat_documento.id) AS 'documento' FROM cat_empleado_documento WHERE id_empleado=? ORDER BY cat_empleado_documento.id DESC";
    $conexion->prepare($sqlExiste);
    $conexion->bind("s", $idEdit);

    $conexion->execute();
    $documentosEmpleado = $conexion->fetch();

    $documentosEmpleadoRegresar = array();

    if (sizeof($documentosEmpleado) > 0) {
        foreach ($documentosEmpleado as $key => $doc) {
            $documentosEmpleado[$key]['fechaM'] = fechaYMDaDMY($doc['fecha']);
            $documentosEmpleado[$key]['venceM'] = '';

            if ($doc['vence'] != '0000-00-00')
                $documentosEmpleado[$key]['venceM'] = fechaYMDaDMY($doc['vence']);

            if (!isset($documentosEmpleadoRegresar[$doc['id_documento']]))
                $documentosEmpleadoRegresar[$doc['id_documento']] = $documentosEmpleado[$key];
        }
    }

    return $documentosEmpleadoRegresar;
}

function getDepartamentos($conexion)
{
    //
    $sql = "SELECT * FROM cat_departamento ORDER BY nombre ASC";
    $conexion->prepare($sql);

    $conexion->execute();
    $departamentos = $conexion->fetch();

    return $departamentos;
}

function getPuestos($conexion)
{
    //
    $sql = "SELECT * FROM cat_puesto ORDER BY nombre ASC";
    $conexion->prepare($sql);

    $conexion->execute();
    $puestos = $conexion->fetch();

    return $puestos;
}

function getDocumentos($conexion)
{
    //
    $sql = "SELECT * FROM cat_documento ORDER BY nombre ASC";
    $conexion->prepare($sql);

    $conexion->execute();
    $documentos = $conexion->fetch();

    return $documentos;
}

function getEstados()
{
    $estados = array(
        '1' => 'Aguascalientes',
        '2' => 'Baja California',
        '3' => 'Baja California Sur',
        '4' => 'Campeche',
        '5' => 'Chiapas',
        '6' => 'Chihuahua',
        '7' => 'Coahuila de Zaragoza',
        '8' => 'Colima',
        '9' => 'Ciudad de México',
        '10' => 'Durango',
        '11' => 'Guanajuato',
        '12' => 'Guerrero',
        '13' => 'Hidalgo',
        '14' => 'Jalisco',
        '15' => 'Mexico',
        '16' => 'Michoacan de Ocampo',
        '17' => 'Morelos',
        '18' => 'Nayarit',
        '19' => 'Nuevo Leon',
        '20' => 'Oaxaca',
        '21' => 'Puebla',
        '22' => 'Queretaro de Arteaga',
        '23' => 'Quintana Roo',
        '24' => 'San Luis Potosi',
        '25' => 'Sinaloa',
        '26' => 'Sonora',
        '27' => 'Tabasco',
        '28' => 'Tamaulipas',
        '29' => 'Tlaxcala',
        '30' => 'Veracruz-Llave',
        '31' => 'Yucatan',
        '32' => 'Zacatecas'
    );

    return $estados;
}

function obtenCaracterAleatorio($arreglo)
{
    $clave_aleatoria = array_rand($arreglo, 1);    //obtén clave aleatoria
    return $arreglo[$clave_aleatoria];    //devolver ítem aleatorio
}

function obtenCaracterMd5($car)
{
    $md5Car = md5($car . Time());    //Codificar el carácter y el tiempo POSIX (timestamp) en md5
    $arrCar = str_split(strtoupper($md5Car));    //Convertir a array el md5
    $carToken = obtenCaracterAleatorio($arrCar);    //obtén un ítem aleatoriamente
    return $carToken;
}

function obtenToken($longitud)
{
    //crear alfabeto
    $mayus = "ABCDEFGHIJKMNPQRSTUVWXYZ";
    $mayusculas = str_split($mayus);    //Convertir a array
    //crear array de numeros 0-9
    $numeros = range(0, 9);
    //revolver arrays
    shuffle($mayusculas);
    shuffle($numeros);
    //Unir arrays
    $arregloTotal = array_merge($mayusculas, $numeros);
    $newToken = "";

    for ($i = 0; $i <= $longitud; $i++) {
        $miCar = obtenCaracterAleatorio($arregloTotal);
        $newToken .= obtenCaracterMd5($miCar);
    }
    return $newToken;
}

//funcion para converti fecha YYYY-MM-DD a DD/MM/YYY
function fechaYMDaDMY($fecha)
{
    $f = explode('-', $fecha);
    if (sizeof($f) == 3)
        $resultado = $f[2] . "/" . $f[1] . "/" . $f[0];
    else
        $resultado = '';

    return $resultado;
}
//funcion para converti fecha DD/MM/YYY a YYYY-MM-DD
function fechaDMYaYMD($fecha)
{
    $f = explode('/', $fecha);
    if (sizeof($f) == 3)
        $resultado = $f[2] . "-" . $f[1] . "-" . $f[0];
    else
        $resultado = '';

    return $resultado;
}

function DiasTranscurridos($fechaInicio, $fechaFin, $diasInhabiles = array())
{
    //Obtiene las fechas recibidas
    $timestamp1 = $fechaFin;
    //$timestamp2 = mktime(0, 0, 0, date('m', $fechaInicio), ( date('d', $fechaInicio) - 1 ), date('Y', $fechaInicio) );
    $timestamp2 = mktime(0, 0, 0, date('m', $fechaInicio), (date('d', $fechaInicio)), date('Y', $fechaInicio));
    //var miFecha2 = new Date(fechaini.getFullYear(), fechaini.getMonth(), fechaini.getDate() - 1);

    //resto a una fecha la otra
    $segundos_diferencia = $timestamp1 - $timestamp2;
    //echo $segundos_diferencia;

    //convierto segundos en días
    $dias_diferencia = $segundos_diferencia / (60 * 60 * 24);

    //obtengo el valor absoulto de los días (quito el posible signo negativo)
    $dias_diferencia = abs($dias_diferencia);

    //quito los decimales a los días de diferencia
    $dias_diferencia = floor($dias_diferencia);

    // quito los días inhábiles
    $habil = $dias_diferencia;
    for ($x = 1; $x <= $dias_diferencia; $x++) {
        $dfecha = mktime(0, 0, 0, date('m', $timestamp2), (date('d', $timestamp2) + $x), date('Y', $timestamp2));
        foreach ($diasInhabiles as $dinhabil)
            if (date('w', $dfecha) == $dinhabil) {
                $habil--;
                break;
            }
    }
    $dias_diferencia = $habil;

    return $dias_diferencia;
}
