<?php

    //http://stackoverflow.com/questions/18382740/cors-not-working-php
    if (isset($_SERVER['HTTP_ORIGIN'])) {
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Max-Age: 86400');    // cache for 1 day
    }

    // Access-Control headers are received during OPTIONS requests
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
            header("Access-Control-Allow-Headers:        {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

        exit(0);
    }

    //http://stackoverflow.com/questions/15485354/angular-http-post-to-php-and-undefined
//    $postdata = file_get_contents("php://input");
//    if (isset($postdata)) {
//        $request = json_decode($postdata, true);
//    }
//    else {
//        exit(0);
//    }
    
    require('config.php');
    
    include '../jquery/comunes_php/Log.class.php'; 
    $log = new Log("app_trace", "./");
    $log->insert("Conectando ...", false, false, false);

    // Conectar la BD
    $link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die('Error de conexion con base de datos: ' . mysqli_connect_errno());
    mysqli_set_charset($link,'utf8');
    $log->insert("Conectado a la base", false, false, false);

    $perfil = mysqli_real_escape_string($link, $_REQUEST['perfil']);
    $usuario = mysqli_real_escape_string($link, $_REQUEST['usuario']);
    //$sector = mysqli_real_escape_string($link, $request['sector']);
    $log->insert("parameros perfil={$perfil} usuario={$usuario}", false, false, false);

    switch(intval($perfil)) {
        case 2:
            $filtro = " AND cc.estado_id in (1, 2)";
            break;
        case 3:
            $filtro = " AND cc.estado_id in (2, 3)";
            break;
        case 4:
            $filtro = " AND cc.estado_id in (3, 4)";
            break;
        case 5:
            $filtro = " AND cc.estado_id in (4, 5)";
            break;
        default:
            $filtro = "";
            
    }

    $orden = " ORDER BY cc.estado_id,cc.reclamos_pendientes desc, cc.id";


    // Obtengo el id del repartidor para mostrarle solo los contratos que le fueron asignados    
    $sql = "select id from repartidores where usuario_id = $usuario";

    //$myfile = fopen("logContratos.txt", "a") or die("Unable to open file!");
    //    fwrite($myfile, "\n");
    //    fwrite($myfile, "Buscando repartidor_id");
    //    fwrite($myfile, "\n");
    //    fwrite($myfile, $sql);
    //    fwrite($myfile, "\n");
    //    fclose($myfile);        
    $log->insert("antes de la consulta {$sql}" , false, false, false);
        
    $result = mysqli_query($link, $sql) or die ( "Algo ha ido mal en la consulta a la base de datos");
    $log->insert($sql, false, false, false);

    while($row = mysqli_fetch_array($result)){
        $repartidor_id = $row["id"];
    }

    // Obtengo la cantidad de meses de historia de contratos a mostrar
    $sql = "select curdate() - interval valor day as fecha " 
        .  "from parametros "
        .  "where clave='historial_contratos'";
    $log->insert($sql, false, false, false);

       
        
    $result = mysqli_query($link, $sql) or die ( "Algo ha ido mal en la consulta a la base de datos");
     $log->insert($sql, false, false, false);

    while($row = mysqli_fetch_array($result)){
        $fecha_desde = $row["fecha"];
    }
            
               
        
    // Busco los contratos
    
    $sql = "SELECT  cc.id, cc.estado_id as estado_id, estado, cc.cliente_id as cliente_id, cliente, "
    ."            cc.repartidor_id,repartidor, cc.tipo_envio_id, tipo_envio, cc.vendedor_id,  vendedor, "
    ."             get_adicionales_contrato(cc.id) as productos_pedidos, "
    ."            cc.reclamos_pendientes as reclamos, "
    ."            zona "
    ."FROM vw_contratos cc, envios_detalle ed, envios_cabecera ec "
    ."WHERE cc.estado_id in (4, 5) "
    ."AND ed.contrato_id = cc.id  "
    ."AND ec.id = ed.envio_id "
    ."AND format(ec.fecha_envio, 'ddmmyyyy') <= format(sysdate(), 'ddmmyyyy') "
    ."AND format(ec.fecha_envio, 'ddmmyyyy') >= format('$fecha_desde', 'ddmmyyyy') "
    ."AND ec.repartidor_id = ${repartidor_id} ";
    
            
    //    $myfile = fopen("logContratos.txt", "a") or die("Unable to open file!");
    //    fwrite($myfile, "\n");
    //    fwrite($myfile, "\n");
    //    fwrite($myfile, $sql);
    //    fwrite($myfile, "\n");
    //    fclose($myfile);                      
/*   
   $sql = "SELECT cc.id, cc.estado_id as estado_id, tec.nombre as estado, cc.cliente_id as cliente_id, cl.nombre as cliente, "
                . "cc.repartidor_id, re.nombre as repartidor, "
                . "cc.tipo_envio_id, te.nombre as envio, cc.vendedor_id,  ve.nombre as vendedor, "
                ." ( "
                ."     SELECT "
         ."GROUP_CONCAT( "
           ."  concat(cd.renglon_id ,') ',	(select nombre from productos p where p.id=cd.producto_id),'\n' "
       		 ."		,coalesce((select concat('  ********',nombre) from adicionales a where a.id=cda.adicional_id),' ') "
               ."    ) SEPARATOR '\n') productos_pedidos "
                 ." FROM "
                 ."  contratos_detalle cd    LEFT join contrato_detalle_adicionales cda on  cda.contrato_id = cd.contrato_id and cda.renglon_id=cd.renglon_id where cd.contrato_id =cc.id  GROUP by  cd.contrato_id "
                  ."   ) as productos_pedidos, "
		        . "(select count(*) from reclamos_contrato rc where rc.contrato_id = cc.id and rc.fin_fecha is NULL) as reclamos, "
		        . "z.nombre as zona "
        .   "FROM contratos_cabecera cc, clientes cl, tipo_estado_contratos tec, repartidores re, tipo_envios te, vendedores  ve, zonas z "
        .   "WHERE cl.id = cc.cliente_id "
        .   "AND   tec.id = cc.estado_id "
        .   "AND   re.id  = cc.repartidor_id "
        .   "AND   te.id = cc.tipo_envio_id "
        .   "AND   ve.id = cc.vendedor_id "
        .   "AND   cc.zona_id = z.id";
*/
    $sql .= $filtro;
    $sql .= $orden;


    $result = mysqli_query($link, $sql);
    $log->insert($sql, false, false, false);

    // die if SQL statement failed
    if (!$result) 
    {
        http_response_code(404);
        echo '';
        die(mysqli_error($link));
    }
    else
    {
        $items = array();
        
        while($row = mysqli_fetch_object($result)){
            array_push($items, $row);
        }
        
        
        //echo json_encode($items, JSON_NUMERIC_CHECK);
        echo json_encode($items);

    }
    mysqli_close($link);
   
 
?>
