Usuario:ManuelRomero/PHP/hibridas/practica 2018 e

De WikiEducator
Saltar a: navegación, buscar

Plantilla:MRM Recursos en la Web




<?php
/**
 * Created by PhpStorm.
 * User: manuel
 * Date: 12/02/18
 * Time: 8:51
 */
 
class Api_Google
{
 
    public function __construct(){
 
 
    }
 
    static public function obtener_tareas(Google_Client $client)
    {
        $tasks = new Google_Service_Tasks($client);
        return $tasks;
    }
 
 
    /**
     * @param Google_Service_Tasks $tasks
     * @return Google_Service_Tasks_TaskList
     */
    static public function obtener_lista_tareas(Google_Service_Tasks $tasks)
    {
        $repartos = $tasks->tasklists->listTasklists();
        return $repartos;
    }
 
    static public function obtener_calendario($client){
        $calendar = new Google_Service_Calendar($client);
    }
 
    /**
     * @param $f fecha
     * add un evento en Calendar repartos
     */
    static public function add_calendar(Google_Service_Calendar $calendar, $f)
    {
 
        // La fecha es correcta creamos la entrada en Calendar
        // Insertar evento
        $evento = new Google_Service_Calendar_Event();
        $evento->setSummary("Repartos");
        // hora de comienzo
        $comienzo = new Google_Service_Calendar_EventDateTime();
        $comienzo->setDateTime("$fT09:00:00.000");
        $comienzo->setTimeZone("Europe/Madrid");
        $evento->setStart($comienzo);
        // hora de terminación
        $final = new  Google_Service_Calendar_EventDateTime();
        $final->setDateTime("$fT20:00:00.000");
        $final->setTimeZone("Europe/Madrid");
        $evento->setEnd($final);
        $createdEvent = $calendar->events->insert('primary', $evento);
    }
 
    static public function add_tarea(Google_Service_Tasks $task, $f)
    {
 
        $nuevalista = new Google_Service_Tasks_TaskList();
        $nuevalista->setTitle("Reparto $f");
        $task->tasklists->insert($nuevalista);
 
    }
 
}
<?php
 
require_once 'vendor/autoload.php';
 
 
class Autenticar
{
    /**
     * @var Google_Client
     */
    private $client;
 
    public function __construct()
    {
        $this->client = new Google_Client();
        $this->client->setAuthConfig('/var/www/repartos/config.json');
 
        // $this->client->setAccessType('offline');
        $key = "AIzaSyARLcQ5OuAlGLxvlBf7B526mqACbXR3e1Y";
        //$this->client->setDeveloperKey($key);
 
        $this->client->addScope(['https://www.googleapis.com/auth/calendar',
            'https://www.googleapis.com/auth/taskqueue',
            'https://www.googleapis.com/auth/tasks']);
 
 
        if (!(isset($_SESSION['access_token']) && $_SESSION['access_token'])) {
            $this->autenticar();
        }
        $this->client->setAccessToken($_SESSION['access_token']);
    }
 
    private  function autenticar()
    {
        if (!isset($_GET['code'])) {
            $auth_url = $this->client->createAuthUrl();
            header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
        } else {
 
            $this->client->fetchAccessTokenWithAuthCode($_GET['code']);
            $_SESSION['access_token'] = $this->client->getAccessToken();
            $redirect_uri = 'http://www.repartos.com';
            header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
        }
    }
 
    public function get_user()
    {
        return $this->client->getClientId();
    }
    public function get_client()
    {
        return $this->client;
    }
 
    /**
     * @return Google_Service_Tasks Lista de tareas
     * @description Obtenemos una lista de tareas
     */
 
    /**
     * @return Google_Service_Tasks_Tasks
     */
 
}
<?php
 
spl_autoload_register(function ($clase) {
    require_once("$clase.php");
});
 
session_start();
 
 
 
$usuario = new Autenticar();
 
 
$tareas = Api_Google::obtener_tareas($usuario->get_client());
$repartos = Api_Google::obtener_lista_tareas($tareas);
 
$calendar = Api_Google::obtener_calendario($usuario->get_client());
 
 
//$repartos = $control->obtener_repartos($lista_tareas);
 
switch ($_GET['accion']) {
    case "Crear Nueva Lista de Reparto":
//Si no está vacío el titulo creamos una nueva lista de reparto
        if (!empty($_GET['fechaReparto'])) {
            // Crear una nueva lista de reparto
            try {
                // Vamos a analizar la fecha que obtememos a ver si es válida
//                $f = explode("/", $_GET['fechaReparto']);
//                if (checkdate($f))
                $f = $_GET['fechaReparto'];
                $f=date("Y-m-d",strtotime($f));
                var_dump($f);
                Api_Google::add_calendar($calendar, $f);
 
                Api_Google::add_tarea($tareas, $f);
            } catch (Exception $e) {
                echo "<h1>Error " . $e->getMessage() . "</h1>";
 
            }
        }
        break;
    case "Crear Nueva Lista de Reparto":
        break;
    case "borrar lista":
        break;
    case "borrar tarea":
        break;
}
 
 
?>
 
<!DOCTYPE html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Ejemplo Tema 8: Rutas de reparto</title>
    <link href="estilo.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div class="contenedor">
    <div class="encabezado">
        <h1>Rutas de reparto</h1>
        <form id="nuevoreparto" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
            <fieldset>
                <input type='hidden' name='accion' value='nuevalista'/>
                <input type='submit' id='crearnuevotitulo' name="accion" value='Crear Nueva Lista de Reparto'/>
                <label for='nuevotitulo'>Fecha de reparto:</label>
                <input type='date' name='fechaReparto' id='fechaReparto'/>
            </fieldset>
        </form>
    </div>
    <div class="contenido">
        <?php
        foreach ($repartos['items'] as $reparto) {
            // Excluyendo la lista por defecto de Google Tasks
            if ($reparto['id'] == $id_defecto)
                continue;
            print '<div id="' . $reparto['id'] . '">';
            print '<span class="titulo">' . $reparto['title'] . '</span>';
            $idreparto = "'" . $reparto['id'] . "'";
            print '<span class="accion">(<a href="#" onclick="ordenarReparto(' . $idreparto . ');">Ordenar</a>)</span>';
            print '<span class="accion">(<a href="#" onclick="nuevoEnvio(' . $idreparto . ');">Nuevo Envío</a>)</span>';
            print '<span class="accion">(<a href="' . $_SERVER['PHP_SELF'] . '?accion=borrarlista&reparto=' . $reparto['id'] . '">Borrar</a>)</span>';
            print '<ul>';
 
            // Cogemos de la lista de reparto las tareas de envío
            $envios = $tareas->tasks->listTasks($reparto['id']);
            // Por si no hay tareas de envío en la lista
            if (!empty($envios['items'])) {
                foreach ($envios['items'] as $envio) {
                    // Creamos un elemento para cada una de las tareas de envío
                    $idenvio = "'" . $envio['id'] . "'";
                    print '<li title="' . $envio['notes'] . '" id="' . $idenvio . '">' . $envio['title'] . ' (' . $envio['notes'] . ')';
                    $coordenadas = "'" . $envio['notes'] . "'";
                    print '<span class="accion">  (<a href="#" onclick="abrirMaps(' . $coordenadas . ');">Ver mapa</a>)</span>';
                    print '<span class="accion">  (<a href="' . $_SERVER['PHP_SELF'] . '?accion=borrartarea&reparto=' . $reparto['id'] . '&envio=' . $envio['id'] . '">Borrar</a>)</span>';
                    print '</li>';
                }
            }
            print '</ul>';
            print '</div>';
        }
 
        ?>
    </div>
    <div class="pie">
        <?php print $error; ?>
    </div>
</div>
</body>
</html>