From 7008073000d87453a6bf22bd9916e03dee372000 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Thu, 17 Sep 2020 15:36:01 -0300
Subject: [PATCH 01/20] Issue #46 - Se agrega post de Visita

---
 .../Http/Controllers/VisitasController.php    | 14 ++++++++--
 .../app/Repositorios/GuzzleHttpRequest.php    |  5 ++--
 visitas/app/Repositorios/TupaApi.php          | 26 ++++++++++++-------
 visitas/routes/web.php                        |  2 +-
 4 files changed, 33 insertions(+), 14 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index fe20c9fb..4e89b3be 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -35,19 +35,29 @@ class VisitasController extends Controller
         //TODO: Cambiar con los datos que retorna la api
         $codigoQrEjemplo = $this->generar_qr("www.unam.edu.ar/visitas", "124", "tosv2");
         $codigoqr = $codigoQrEjemplo;
-        
+
         //$codigoqr = $datos->codigoqr;
         $nombre =$datos->nombre;
         $apellido =$datos->apellido;
         $dni=$datos->dni;
-        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni'));
+        $TyC = $this->visitas->getToS();
+        $TyC=$TyC[0]['contenido'];
+        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni','TyC'));
     }
 
     private function generar_qr(string $link = null, string $idVisitante = null, string $idTOS)
     {
+
         if (isset($link) && isset($idVisitante) && isset($idTOS)) {
             $url = $link . "/" . $idVisitante . "/" . $idTOS;
             return \QrCode::size(300)->generate($url);
         }
     }
+
+    /*Este metodo devolveria Ruta al archivo pdf*/
+    function getTyCVigentePDF(){
+        $TyC = $this->visitas->getPdfTyC();
+        $TyC=$TyC[0]['contenido'];
+        return $TyC;
+    }
 }
diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index d9c44a19..d767746b 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -16,11 +16,12 @@ class GuzzleHttpRequest
     public function get($url,$auth)
     {
         $response = $this->client->request('GET', $url,$auth);
-        return json_decode($response->getBody()->getContents());
+        return json_decode($response->getBody(),true);
     }
 
     public function post($url,$datos)
     {
-        $this->client->request('POST', $url,$datos);
+        $response = $this->client->request('POST', $url,$datos);
+        return json_decode($response->getBody(),true);
     }
 }
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index 03045f9a..655b3391 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -59,29 +59,30 @@ class TupaApi extends GuzzleHttpRequest
     }
 
 
-    public function getCredenciales(){
+    public function getCredAPI(){
         $this->credenciales = json_decode(env('CREDENCIALES_API_BASIC_TUPA'));
         $this->setUser($this->credenciales[0][0]);
         $this->setPass($this->credenciales[0][1]);
         $this->setUrlApi($this->credenciales[0][2]);
     }
 
-    public function getVisitantes()
+    public function getToS()
     {
-
-        $url = $this->getUrlApi() . '/vistantes';
+        $this->getCredApi();
+        $url = $this->getUrlApi() . '/terminos-condiciones';
         $auth = ['auth' => [$this->getUser(), $this->getPass()]];
         return $this->get($url, $auth);
     }
 
-    public function getVisitante($id)
+    public function getPdfPase($id)
     {
         return $this->get("visitantes/{$id}");
     }
 
+
     public function postVisitante($visita=array())
     {
-        $this->getCredenciales();
+        $this->getCredApi();
         $url = $this->getUrlApi() . '/visitantes';
 
         $datos = array (
@@ -133,9 +134,16 @@ class TupaApi extends GuzzleHttpRequest
         );
 
         $datos = ['body' => json_encode($datos), 'auth' => [$this->getUser(), $this->getPass()]];
-        $this->post($url,$datos);
-
+        $visita = $this->post($url,$datos);
+        $this->postVisita($visita['respuesta']);
+        return $visita;
     }
 
-
+    function postVisita($id){
+        $this->getCredApi();
+        $tos = $this->getToS();
+        $url = $this->getUrlApi() . 'visitas/'.$id;
+        $datos = ['body' => json_encode(['terminos_condiciones'=>$tos[0]['codigo'],'sede'=>'1','tipo_visitante'=>'EXTERNO']), 'auth' => [$this->getUser(), $this->getPass()]];
+        $this->post($url,$datos);
+    }
 }
diff --git a/visitas/routes/web.php b/visitas/routes/web.php
index 9f4effc4..3394704e 100644
--- a/visitas/routes/web.php
+++ b/visitas/routes/web.php
@@ -22,7 +22,7 @@ Route::match(['get', 'post'],'/solicitudPase', 'VisitasController@solicitudPase'
 
 Route::post('/visitas','VisitasController@altaVisita')->name('visita_crear');
 
-Route::get('/acreditacionCOVID19', 'VisitasController@acreditar')->name('acreditacion');
+Route::get('/pdf-tyc', 'VisitasController@getTyCVigentePDF')->name('pdf-tyc');
 
 //Route::resource('visitas', 'VisitasController');
 
-- 
GitLab


From 076a93d54a713dca42ff3adfac9b4924d4db5ffe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Fri, 18 Sep 2020 10:50:19 -0300
Subject: [PATCH 02/20] Issue #46 - avances conexion con api

---
 .../Http/Controllers/VisitasController.php    | 31 +++++++++----------
 visitas/app/Providers/AppServiceProvider.php  |  3 +-
 .../app/Repositorios/GuzzleHttpRequest.php    | 14 +++++++++
 visitas/app/Repositorios/TupaApi.php          | 29 ++++++++---------
 visitas/routes/web.php                        |  3 +-
 5 files changed, 47 insertions(+), 33 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index 4e89b3be..e769e5b4 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -26,23 +26,25 @@ class VisitasController extends Controller
 
     public function altaVisita(Request $request)
     {
-        $this->visitas->postVisitante($request);
-        return $this->acreditar($request);
+        $visita = $this->visitas->postVisitante($request);
+        return $this->acreditar($visita);
     }
 
-    public function acreditar($datos=null)
+    public function acreditar($id)
     {
-        //TODO: Cambiar con los datos que retorna la api
         $codigoQrEjemplo = $this->generar_qr("www.unam.edu.ar/visitas", "124", "tosv2");
         $codigoqr = $codigoQrEjemplo;
+        $dv = $this->visitas->getVisitante($id['respuesta']);
+        $nombre = $dv['datos_personales']['nombre'];
+        $apellido = $dv['datos_personales']['apellido'];
+        $dni = $dv['datos_personales']['documentos'][0]['numero'];
+        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni'));
+    }
 
-        //$codigoqr = $datos->codigoqr;
-        $nombre =$datos->nombre;
-        $apellido =$datos->apellido;
-        $dni=$datos->dni;
-        $TyC = $this->visitas->getToS();
-        $TyC=$TyC[0]['contenido'];
-        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni','TyC'));
+    public function getPDFTyCVigente()
+    {
+        $id = $this->visitas->getToS();
+        return $this->visitas->getPDFToS($id[0]["codigo"]);
     }
 
     private function generar_qr(string $link = null, string $idVisitante = null, string $idTOS)
@@ -54,10 +56,5 @@ class VisitasController extends Controller
         }
     }
 
-    /*Este metodo devolveria Ruta al archivo pdf*/
-    function getTyCVigentePDF(){
-        $TyC = $this->visitas->getPdfTyC();
-        $TyC=$TyC[0]['contenido'];
-        return $TyC;
-    }
+
 }
diff --git a/visitas/app/Providers/AppServiceProvider.php b/visitas/app/Providers/AppServiceProvider.php
index 9222ee9d..42d3da74 100644
--- a/visitas/app/Providers/AppServiceProvider.php
+++ b/visitas/app/Providers/AppServiceProvider.php
@@ -15,8 +15,9 @@ class AppServiceProvider extends ServiceProvider
     public function register()
     {
         $this->app->singleton('GuzzleHttp\Client',function(){
+            $credenciales = json_decode(env('CREDENCIALES_API_BASIC_TUPA'));
             return new Client([
-                'base_uri' => 'http://localhost:9002/api/v1/',
+                'base_uri' => $credenciales[0][0],
             ]);
         });
     }
diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index d767746b..d0f74eb4 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -15,6 +15,7 @@ class GuzzleHttpRequest
     }
     public function get($url,$auth)
     {
+
         $response = $this->client->request('GET', $url,$auth);
         return json_decode($response->getBody(),true);
     }
@@ -24,4 +25,17 @@ class GuzzleHttpRequest
         $response = $this->client->request('POST', $url,$datos);
         return json_decode($response->getBody(),true);
     }
+    public function  getFile($url,$auth)    {
+        $resource = fopen('tycCovid19.pdf', 'w');
+        /*return  $this->client->request('GET', $url, [
+            'headers' => [
+                'Authorization'=> 'Basic ' . $auth,
+                'Content-Type' => 'application/pdf'
+            ],
+            'sink' => $resource,
+        ]);*/
+        return $this->client->request('GET', $url,$auth);
+    }
+
 }
+
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index 655b3391..bcc69db8 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -58,7 +58,6 @@ class TupaApi extends GuzzleHttpRequest
         $this->urlApi = $urlApi;
     }
 
-
     public function getCredAPI(){
         $this->credenciales = json_decode(env('CREDENCIALES_API_BASIC_TUPA'));
         $this->setUser($this->credenciales[0][0]);
@@ -66,6 +65,14 @@ class TupaApi extends GuzzleHttpRequest
         $this->setUrlApi($this->credenciales[0][2]);
     }
 
+    public function getVisitante($id){
+        $url = $this->getUrlApi() . '/visitantes/'.$id;
+        $auth = ['auth' => [$this->getUser(), $this->getPass()]];
+        return $this->get($url, $auth);
+    }
+    /*
+     *
+     * */
     public function getToS()
     {
         $this->getCredApi();
@@ -74,12 +81,16 @@ class TupaApi extends GuzzleHttpRequest
         return $this->get($url, $auth);
     }
 
-    public function getPdfPase($id)
+    public function getPDFToS($id)
     {
-        return $this->get("visitantes/{$id}");
+        $this->getCredApi();
+        $url = $this->getUrlApi() . "terminos-condiciones/{$id}/archivo";
+        //$auth = base64_encode("{$this->getUser()}:{$this->getPass()}");
+        $auth = ['auth' => [$this->getUser(), $this->getPass()]];
+        dd($this->getFile($url, $auth));
+       //return $this->getFile($url, $auth);
     }
 
-
     public function postVisitante($visita=array())
     {
         $this->getCredApi();
@@ -132,18 +143,8 @@ class TupaApi extends GuzzleHttpRequest
                         ),
                 ),
         );
-
         $datos = ['body' => json_encode($datos), 'auth' => [$this->getUser(), $this->getPass()]];
         $visita = $this->post($url,$datos);
-        $this->postVisita($visita['respuesta']);
         return $visita;
     }
-
-    function postVisita($id){
-        $this->getCredApi();
-        $tos = $this->getToS();
-        $url = $this->getUrlApi() . 'visitas/'.$id;
-        $datos = ['body' => json_encode(['terminos_condiciones'=>$tos[0]['codigo'],'sede'=>'1','tipo_visitante'=>'EXTERNO']), 'auth' => [$this->getUser(), $this->getPass()]];
-        $this->post($url,$datos);
-    }
 }
diff --git a/visitas/routes/web.php b/visitas/routes/web.php
index 3394704e..acd1b8e9 100644
--- a/visitas/routes/web.php
+++ b/visitas/routes/web.php
@@ -22,7 +22,8 @@ Route::match(['get', 'post'],'/solicitudPase', 'VisitasController@solicitudPase'
 
 Route::post('/visitas','VisitasController@altaVisita')->name('visita_crear');
 
-Route::get('/pdf-tyc', 'VisitasController@getTyCVigentePDF')->name('pdf-tyc');
+Route::get('/pdf-tyc', 'VisitasController@getPDFTyCVigente')->name('pdf-tyc');
+
 
 //Route::resource('visitas', 'VisitasController');
 
-- 
GitLab


From 11933946eb4f0984af61ba1e0e55c0804f52325d Mon Sep 17 00:00:00 2001
From: Fernando Alvez <fernando.alvez@campus.unam.edu.ar>
Date: Wed, 16 Sep 2020 11:35:25 -0300
Subject: [PATCH 03/20] Related #53 #50 Recurso aceptar terminos y condiciones,
 Recurso Pase

PUT para aceptacion del termino y condicion
Generacion de QR
Generacion de PDF del pase
GET para obtener el QR del pase
GET para obtener el PDF del pase
---
 api-backend/composer.json                     |   4 +-
 api-backend/composer.lock                     | 568 +++++++++++++++---
 .../Backend/API/Endpoints/v1/pases/pases.php  |  66 ++
 .../terminos_condiciones.php                  |  72 ++-
 .../1.0/20200908120213_visitante.php          |   1 +
 .../UNAM/Tupa/Core/Errors/PaseNotFound.php    |  12 +
 .../Manager/ManagerTerminosCondiciones.php    | 122 ++++
 .../Tupa/Core/Negocio/TerminosCondiciones.php |  55 ++
 8 files changed, 803 insertions(+), 97 deletions(-)
 create mode 100644 api-backend/src/UNAM/Tupa/Backend/API/Endpoints/v1/pases/pases.php
 create mode 100644 core/src/UNAM/Tupa/Core/Errors/PaseNotFound.php

diff --git a/api-backend/composer.json b/api-backend/composer.json
index 9ac2a11c..2215fe81 100644
--- a/api-backend/composer.json
+++ b/api-backend/composer.json
@@ -28,7 +28,9 @@
     "symfony/cache": "~4.3.5",
     "symfony/config": "~4.3.5",
     "siu/queue": "^1.0.1",
-    "enqueue/redis": "^0.9"
+    "enqueue/redis": "^0.9",
+    "simplesoftwareio/simple-qrcode": "^3.0.0",
+    "Dompdf/Dompdf": "^0.8"
   },
 
   "autoload": {
diff --git a/api-backend/composer.lock b/api-backend/composer.lock
index 1161681b..6051008b 100644
--- a/api-backend/composer.lock
+++ b/api-backend/composer.lock
@@ -4,20 +4,112 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "75f61bfef04ce5e19896083e59865a37",
+    "content-hash": "f6a53286744442fa2f136d0b108a5794",
     "packages": [
+        {
+            "name": "bacon/bacon-qr-code",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Bacon/BaconQrCode.git",
+                "reference": "eaac909da3ccc32b748a65b127acd8918f58d9b0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/eaac909da3ccc32b748a65b127acd8918f58d9b0",
+                "reference": "eaac909da3ccc32b748a65b127acd8918f58d9b0",
+                "shasum": ""
+            },
+            "require": {
+                "dasprid/enum": "^1.0",
+                "ext-iconv": "*",
+                "php": "^7.1"
+            },
+            "require-dev": {
+                "phly/keep-a-changelog": "^1.4",
+                "phpunit/phpunit": "^6.4",
+                "squizlabs/php_codesniffer": "^3.1"
+            },
+            "suggest": {
+                "ext-imagick": "to generate QR code images"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "BaconQrCode\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-2-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Ben Scholzen 'DASPRiD'",
+                    "email": "mail@dasprids.de",
+                    "homepage": "http://www.dasprids.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "BaconQrCode is a QR code generator for PHP.",
+            "homepage": "https://github.com/Bacon/BaconQrCode",
+            "time": "2018-04-25T17:53:56+00:00"
+        },
+        {
+            "name": "dasprid/enum",
+            "version": "1.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/DASPRiD/Enum.git",
+                "reference": "6ccc0d7141a7f149e3c56cb0ce5f05d9152cfd07"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/6ccc0d7141a7f149e3c56cb0ce5f05d9152cfd07",
+                "reference": "6ccc0d7141a7f149e3c56cb0ce5f05d9152cfd07",
+                "shasum": ""
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^7 | ^8 | ^9",
+                "squizlabs/php_codesniffer": "^3.4"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "DASPRiD\\Enum\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-2-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Ben Scholzen 'DASPRiD'",
+                    "email": "mail@dasprids.de",
+                    "homepage": "https://dasprids.de/",
+                    "role": "Developer"
+                }
+            ],
+            "description": "PHP 7.1 enum implementation",
+            "keywords": [
+                "enum",
+                "map"
+            ],
+            "time": "2020-07-30T16:37:13+00:00"
+        },
         {
             "name": "doctrine/cache",
-            "version": "1.10.1",
+            "version": "1.10.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/cache.git",
-                "reference": "35a4a70cd94e09e2259dfae7488afc6b474ecbd3"
+                "reference": "13e3381b25847283a91948d04640543941309727"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/cache/zipball/35a4a70cd94e09e2259dfae7488afc6b474ecbd3",
-                "reference": "35a4a70cd94e09e2259dfae7488afc6b474ecbd3",
+                "url": "https://api.github.com/repos/doctrine/cache/zipball/13e3381b25847283a91948d04640543941309727",
+                "reference": "13e3381b25847283a91948d04640543941309727",
                 "shasum": ""
             },
             "require": {
@@ -100,7 +192,75 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-05-27T16:24:54+00:00"
+            "time": "2020-07-07T18:54:01+00:00"
+        },
+        {
+            "name": "dompdf/dompdf",
+            "version": "v0.8.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dompdf/dompdf.git",
+                "reference": "db91d81866c69a42dad1d2926f61515a1e3f42c5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/dompdf/dompdf/zipball/db91d81866c69a42dad1d2926f61515a1e3f42c5",
+                "reference": "db91d81866c69a42dad1d2926f61515a1e3f42c5",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-mbstring": "*",
+                "phenx/php-font-lib": "^0.5.2",
+                "phenx/php-svg-lib": "^0.3.3",
+                "php": "^7.1"
+            },
+            "require-dev": {
+                "mockery/mockery": "^1.3",
+                "phpunit/phpunit": "^7.5",
+                "squizlabs/php_codesniffer": "^3.5"
+            },
+            "suggest": {
+                "ext-gd": "Needed to process images",
+                "ext-gmagick": "Improves image processing performance",
+                "ext-imagick": "Improves image processing performance",
+                "ext-zlib": "Needed for pdf stream compression"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-develop": "0.7-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Dompdf\\": "src/"
+                },
+                "classmap": [
+                    "lib/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-2.1"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Ménager",
+                    "email": "fabien.menager@gmail.com"
+                },
+                {
+                    "name": "Brian Sweeney",
+                    "email": "eclecticgeek@gmail.com"
+                },
+                {
+                    "name": "Gabriel Bull",
+                    "email": "me@gabrielbull.com"
+                }
+            ],
+            "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
+            "homepage": "https://github.com/dompdf/dompdf",
+            "time": "2020-08-30T22:54:22+00:00"
         },
         {
             "name": "enqueue/dsn",
@@ -449,16 +609,16 @@
         },
         {
             "name": "monolog/monolog",
-            "version": "1.25.4",
+            "version": "1.25.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Seldaek/monolog.git",
-                "reference": "3022efff205e2448b560c833c6fbbf91c3139168"
+                "reference": "1817faadd1846cd08be9a49e905dc68823bc38c0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/3022efff205e2448b560c833c6fbbf91c3139168",
-                "reference": "3022efff205e2448b560c833c6fbbf91c3139168",
+                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1817faadd1846cd08be9a49e905dc68823bc38c0",
+                "reference": "1817faadd1846cd08be9a49e905dc68823bc38c0",
                 "shasum": ""
             },
             "require": {
@@ -532,7 +692,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-05-22T07:31:27+00:00"
+            "time": "2020-07-23T08:35:51+00:00"
         },
         {
             "name": "paragonie/constant_time_encoding",
@@ -641,26 +801,103 @@
             ],
             "time": "2018-07-02T15:55:56+00:00"
         },
+        {
+            "name": "phenx/php-font-lib",
+            "version": "0.5.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PhenX/php-font-lib.git",
+                "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8",
+                "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8",
+                "shasum": ""
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "FontLib\\": "src/FontLib"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Ménager",
+                    "email": "fabien.menager@gmail.com"
+                }
+            ],
+            "description": "A library to read, parse, export and make subsets of different types of font files.",
+            "homepage": "https://github.com/PhenX/php-font-lib",
+            "time": "2020-03-08T15:31:32+00:00"
+        },
+        {
+            "name": "phenx/php-svg-lib",
+            "version": "v0.3.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PhenX/php-svg-lib.git",
+                "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
+                "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
+                "shasum": ""
+            },
+            "require": {
+                "sabberworm/php-css-parser": "^8.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^5.5|^6.5"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Svg\\": "src/Svg"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Ménager",
+                    "email": "fabien.menager@gmail.com"
+                }
+            ],
+            "description": "A library to read, parse and export to PDF SVG files.",
+            "homepage": "https://github.com/PhenX/php-svg-lib",
+            "time": "2019-09-11T20:02:13+00:00"
+        },
         {
             "name": "phpoption/phpoption",
-            "version": "1.7.4",
+            "version": "1.7.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/schmittjoh/php-option.git",
-                "reference": "b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3"
+                "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3",
-                "reference": "b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3",
+                "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/994ecccd8f3283ecf5ac33254543eb0ac946d525",
+                "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525",
                 "shasum": ""
             },
             "require": {
                 "php": "^5.5.9 || ^7.0 || ^8.0"
             },
             "require-dev": {
-                "bamarni/composer-bin-plugin": "^1.3",
-                "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0"
+                "bamarni/composer-bin-plugin": "^1.4.1",
+                "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0 || ^8.0 || ^9.0"
             },
             "type": "library",
             "extra": {
@@ -704,7 +941,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-06-07T10:40:07+00:00"
+            "time": "2020-07-20T17:29:33+00:00"
         },
         {
             "name": "pimple/pimple",
@@ -1070,6 +1307,115 @@
             ],
             "time": "2020-02-21T04:36:14+00:00"
         },
+        {
+            "name": "sabberworm/php-css-parser",
+            "version": "8.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
+                "reference": "d217848e1396ef962fb1997cf3e2421acba7f796"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796",
+                "reference": "d217848e1396ef962fb1997cf3e2421acba7f796",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.2"
+            },
+            "require-dev": {
+                "codacy/coverage": "^1.4",
+                "phpunit/phpunit": "~4.8"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Sabberworm\\CSS": "lib/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Raphael Schweikert"
+                }
+            ],
+            "description": "Parser for CSS Files written in PHP",
+            "homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser",
+            "keywords": [
+                "css",
+                "parser",
+                "stylesheet"
+            ],
+            "time": "2020-06-01T09:10:00+00:00"
+        },
+        {
+            "name": "simplesoftwareio/simple-qrcode",
+            "version": "3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/SimpleSoftwareIO/simple-qrcode.git",
+                "reference": "151dd397426d9a6c0507c96e61ddd2ca1290ce1e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/SimpleSoftwareIO/simple-qrcode/zipball/151dd397426d9a6c0507c96e61ddd2ca1290ce1e",
+                "reference": "151dd397426d9a6c0507c96e61ddd2ca1290ce1e",
+                "shasum": ""
+            },
+            "require": {
+                "bacon/bacon-qr-code": "2.0.0",
+                "ext-gd": "*",
+                "php": ">=7.2"
+            },
+            "require-dev": {
+                "mockery/mockery": "~1",
+                "phpunit/phpunit": "~9"
+            },
+            "suggest": {
+                "ext-imagick": "Allows the generation of PNG QrCodes.",
+                "illuminate/support": "Allows for use within Laravel."
+            },
+            "type": "library",
+            "extra": {
+                "laravel": {
+                    "providers": [
+                        "SimpleSoftwareIO\\QrCode\\ServiceProvider"
+                    ],
+                    "aliases": {
+                        "QrCode": "SimpleSoftwareIO\\QrCode\\Facade"
+                    }
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "SimpleSoftwareIO\\QrCode\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Simple Software LLC",
+                    "email": "support@simplesoftware.io"
+                }
+            ],
+            "description": "Simple QrCode is a QR code generator made for Laravel.",
+            "homepage": "http://www.simplesoftware.io",
+            "keywords": [
+                "Simple",
+                "generator",
+                "laravel",
+                "qrcode",
+                "wrapper"
+            ],
+            "time": "2020-06-02T20:41:21+00:00"
+        },
         {
             "name": "siu-toba/jwt-util",
             "version": "v1.0.3",
@@ -1438,20 +1784,20 @@
         },
         {
             "name": "symfony/cache-contracts",
-            "version": "v1.1.7",
+            "version": "v1.1.10",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/cache-contracts.git",
-                "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1"
+                "reference": "8d5489c10ef90aa7413e4921fc3c0520e24cbed7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/af50d14ada9e4e82cfabfabdc502d144f89be0a1",
-                "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1",
+                "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/8d5489c10ef90aa7413e4921fc3c0520e24cbed7",
+                "reference": "8d5489c10ef90aa7413e4921fc3c0520e24cbed7",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.1.3",
                 "psr/cache": "^1.0"
             },
             "suggest": {
@@ -1461,6 +1807,10 @@
             "extra": {
                 "branch-alias": {
                     "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
                 }
             },
             "autoload": {
@@ -1492,7 +1842,21 @@
                 "interoperability",
                 "standards"
             ],
-            "time": "2019-10-04T21:43:27+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:08:58+00:00"
         },
         {
             "name": "symfony/config",
@@ -1560,16 +1924,16 @@
         },
         {
             "name": "symfony/console",
-            "version": "v4.4.10",
+            "version": "v4.4.13",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "326b064d804043005526f5a0494cfb49edb59bb0"
+                "reference": "b39fd99b9297b67fb7633b7d8083957a97e1e727"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/326b064d804043005526f5a0494cfb49edb59bb0",
-                "reference": "326b064d804043005526f5a0494cfb49edb59bb0",
+                "url": "https://api.github.com/repos/symfony/console/zipball/b39fd99b9297b67fb7633b7d8083957a97e1e727",
+                "reference": "b39fd99b9297b67fb7633b7d8083957a97e1e727",
                 "shasum": ""
             },
             "require": {
@@ -1647,20 +2011,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-05-30T20:06:45+00:00"
+            "time": "2020-09-02T07:07:21+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v4.4.10",
+            "version": "v4.4.13",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "b27f491309db5757816db672b256ea2e03677d30"
+                "reference": "27575bcbc68db1f6d06218891296572c9b845704"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/b27f491309db5757816db672b256ea2e03677d30",
-                "reference": "b27f491309db5757816db672b256ea2e03677d30",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/27575bcbc68db1f6d06218891296572c9b845704",
+                "reference": "27575bcbc68db1f6d06218891296572c9b845704",
                 "shasum": ""
             },
             "require": {
@@ -1711,24 +2075,24 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-05-30T18:50:54+00:00"
+            "time": "2020-08-21T17:19:37+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v4.4.10",
+            "version": "v4.4.13",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "5729f943f9854c5781984ed4907bbb817735776b"
+                "reference": "2a78590b2c7e3de5c429628457c47541c58db9c7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/5729f943f9854c5781984ed4907bbb817735776b",
-                "reference": "5729f943f9854c5781984ed4907bbb817735776b",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/2a78590b2c7e3de5c429628457c47541c58db9c7",
+                "reference": "2a78590b2c7e3de5c429628457c47541c58db9c7",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.1.3"
             },
             "type": "library",
             "extra": {
@@ -1774,20 +2138,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-03-27T16:54:36+00:00"
+            "time": "2020-08-17T09:56:45+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.17.1",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "2edd75b8b35d62fd3eeabba73b26b8f1f60ce13d"
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/2edd75b8b35d62fd3eeabba73b26b8f1f60ce13d",
-                "reference": "2edd75b8b35d62fd3eeabba73b26b8f1f60ce13d",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
                 "shasum": ""
             },
             "require": {
@@ -1799,7 +2163,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.17-dev"
+                    "dev-master": "1.18-dev"
                 },
                 "thanks": {
                     "name": "symfony/polyfill",
@@ -1850,20 +2214,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-06-06T08:46:27+00:00"
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.17.1",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "7110338d81ce1cbc3e273136e4574663627037a7"
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7110338d81ce1cbc3e273136e4574663627037a7",
-                "reference": "7110338d81ce1cbc3e273136e4574663627037a7",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
                 "shasum": ""
             },
             "require": {
@@ -1875,7 +2239,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.17-dev"
+                    "dev-master": "1.18-dev"
                 },
                 "thanks": {
                     "name": "symfony/polyfill",
@@ -1927,20 +2291,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-06-06T08:46:27+00:00"
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/polyfill-php73",
-            "version": "v1.17.1",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php73.git",
-                "reference": "fa0837fe02d617d31fbb25f990655861bb27bd1a"
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fa0837fe02d617d31fbb25f990655861bb27bd1a",
-                "reference": "fa0837fe02d617d31fbb25f990655861bb27bd1a",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
                 "shasum": ""
             },
             "require": {
@@ -1949,7 +2313,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.17-dev"
+                    "dev-master": "1.18-dev"
                 },
                 "thanks": {
                     "name": "symfony/polyfill",
@@ -2003,20 +2367,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-06-06T08:46:27+00:00"
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/polyfill-php80",
-            "version": "v1.17.1",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php80.git",
-                "reference": "4a5b6bba3259902e386eb80dd1956181ee90b5b2"
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4a5b6bba3259902e386eb80dd1956181ee90b5b2",
-                "reference": "4a5b6bba3259902e386eb80dd1956181ee90b5b2",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981",
                 "shasum": ""
             },
             "require": {
@@ -2025,7 +2389,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.17-dev"
+                    "dev-master": "1.18-dev"
                 },
                 "thanks": {
                     "name": "symfony/polyfill",
@@ -2083,24 +2447,24 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-06-06T08:46:27+00:00"
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/process",
-            "version": "v4.4.10",
+            "version": "v4.4.13",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/process.git",
-                "reference": "c714958428a85c86ab97e3a0c96db4c4f381b7f5"
+                "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/c714958428a85c86ab97e3a0c96db4c4f381b7f5",
-                "reference": "c714958428a85c86ab97e3a0c96db4c4f381b7f5",
+                "url": "https://api.github.com/repos/symfony/process/zipball/65e70bab62f3da7089a8d4591fb23fbacacb3479",
+                "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.1.3"
             },
             "type": "library",
             "extra": {
@@ -2146,24 +2510,24 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-05-30T20:06:45+00:00"
+            "time": "2020-07-23T08:31:43+00:00"
         },
         {
             "name": "symfony/service-contracts",
-            "version": "v1.1.8",
+            "version": "v1.1.9",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/service-contracts.git",
-                "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf"
+                "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffc7f5692092df31515df2a5ecf3b7302b3ddacf",
-                "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b776d18b303a39f56c63747bcb977ad4b27aca26",
+                "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.1.3",
                 "psr/container": "^1.0"
             },
             "suggest": {
@@ -2173,6 +2537,10 @@
             "extra": {
                 "branch-alias": {
                     "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
                 }
             },
             "autoload": {
@@ -2204,24 +2572,38 @@
                 "interoperability",
                 "standards"
             ],
-            "time": "2019-10-14T12:27:06+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-06T13:19:58+00:00"
         },
         {
             "name": "symfony/var-exporter",
-            "version": "v4.4.10",
+            "version": "v4.4.13",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-exporter.git",
-                "reference": "f311af6e44fefedbd4f1e23e97607ef0f917bfcc"
+                "reference": "09f0aec4b8bfc25c1dd306e6203cf055c9886560"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-exporter/zipball/f311af6e44fefedbd4f1e23e97607ef0f917bfcc",
-                "reference": "f311af6e44fefedbd4f1e23e97607ef0f917bfcc",
+                "url": "https://api.github.com/repos/symfony/var-exporter/zipball/09f0aec4b8bfc25c1dd306e6203cf055c9886560",
+                "reference": "09f0aec4b8bfc25c1dd306e6203cf055c9886560",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.1.3"
             },
             "require-dev": {
                 "symfony/var-dumper": "^4.4.9|^5.0.9"
@@ -2278,20 +2660,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-06-01T01:10:09+00:00"
+            "time": "2020-07-05T09:39:30+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v4.4.10",
+            "version": "v4.4.13",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a"
+                "reference": "e2a69525b11a33be51cb00b8d6d13a9258a296b1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a",
-                "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/e2a69525b11a33be51cb00b8d6d13a9258a296b1",
+                "reference": "e2a69525b11a33be51cb00b8d6d13a9258a296b1",
                 "shasum": ""
             },
             "require": {
@@ -2351,7 +2733,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-05-20T08:37:50+00:00"
+            "time": "2020-08-26T08:30:46+00:00"
         },
         {
             "name": "unam-ar/tupa-core",
@@ -2388,22 +2770,22 @@
         },
         {
             "name": "vlucas/phpdotenv",
-            "version": "v3.6.6",
+            "version": "v3.6.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/vlucas/phpdotenv.git",
-                "reference": "4669484ccbc38fe7c4e0c50456778f2010566aad"
+                "reference": "2065beda6cbe75e2603686907b2e45f6f3a5ad82"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/4669484ccbc38fe7c4e0c50456778f2010566aad",
-                "reference": "4669484ccbc38fe7c4e0c50456778f2010566aad",
+                "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2065beda6cbe75e2603686907b2e45f6f3a5ad82",
+                "reference": "2065beda6cbe75e2603686907b2e45f6f3a5ad82",
                 "shasum": ""
             },
             "require": {
                 "php": "^5.4 || ^7.0 || ^8.0",
                 "phpoption/phpoption": "^1.5.2",
-                "symfony/polyfill-ctype": "^1.16"
+                "symfony/polyfill-ctype": "^1.17"
             },
             "require-dev": {
                 "ext-filter": "*",
@@ -2457,7 +2839,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-06-02T14:08:54+00:00"
+            "time": "2020-07-14T19:04:52+00:00"
         }
     ],
     "packages-dev": [],
diff --git a/api-backend/src/UNAM/Tupa/Backend/API/Endpoints/v1/pases/pases.php b/api-backend/src/UNAM/Tupa/Backend/API/Endpoints/v1/pases/pases.php
new file mode 100644
index 00000000..cd13ccc5
--- /dev/null
+++ b/api-backend/src/UNAM/Tupa/Backend/API/Endpoints/v1/pases/pases.php
@@ -0,0 +1,66 @@
+<?php
+
+use SIUToba\rest\rest;
+use UNAM\Tupa\Backend\API\Factory;
+use UNAM\Tupa\Core\Errors\PaseNotFound;
+
+class pases
+{
+    /**
+     * Se consume en GET /pases/{id}/pdf.
+     *
+     * @summary Retorna el PDF del pase
+     * @responses 200 {"string"} PDF del pase
+     * @responses 404 No existe el recurso
+     * @responses 500 Error interno del servidor
+     */
+    public function get_pdf_list($id_visitante)
+    {
+        try {
+            $managerTC = Factory::getManagerTerminosCondiciones();
+            $managerVisitante = Factory::getManagerVisitante();
+            $visitante = $managerVisitante->getVisitante($id_visitante);
+
+            if (!isset($visitante)) {
+                rest::response()->not_found();
+            }
+
+            $url = Factory::getConfiguracion()->getUrlPortalInstitucion() . "/visitas/" . $id_visitante;
+            $managerTC->generarPDF($url, $visitante);
+        } catch (PaseNotFound $e) {
+            Factory::getMainLogger()->error($e->getMessage());
+            rest::response()->not_found();
+        } catch (Exception $e) {
+            Factory::getMainLogger()->error($e->getMessage());
+            rest::response()->error_negocio('Error interno del servidor', 500);
+        }
+    }
+
+    /**
+     * Se consume en GET /pases/{id}/qr.
+     *
+     * @summary Retorna el QR del pase
+     * @responses 200 {"string"} QR del pase
+     * @responses 404 No existe el recurso
+     * @responses 500 Error interno del servidor
+     * @param $id_visitante
+     * @throws \SIUToba\rest\lib\rest_error
+     */
+    public function get_qr_list($id_visitante)
+    {
+        try {
+            $manager = Factory::getManagerTerminosCondiciones();
+
+            $pase = $manager->getPaseQr($id_visitante);
+
+            if (!empty($pase)) {
+                rest::response()->get([base64_encode($pase[0])]);
+            } else {
+                rest::response()->not_found();
+            }
+        } catch (Exception $e) {
+            Factory::getMainLogger()->error($e->getMessage());
+            rest::response()->error_negocio('Error interno del servidor', 500);
+        }
+    }
+}
diff --git a/api-backend/src/UNAM/Tupa/Backend/API/Endpoints/v1/terminos_condiciones/terminos_condiciones.php b/api-backend/src/UNAM/Tupa/Backend/API/Endpoints/v1/terminos_condiciones/terminos_condiciones.php
index d67f4122..e034f569 100644
--- a/api-backend/src/UNAM/Tupa/Backend/API/Endpoints/v1/terminos_condiciones/terminos_condiciones.php
+++ b/api-backend/src/UNAM/Tupa/Backend/API/Endpoints/v1/terminos_condiciones/terminos_condiciones.php
@@ -7,6 +7,7 @@ use SIUToba\rest\rest;
 use UNAM\Tupa\Backend\API\Factory;
 use UNAM\Tupa\Core\Errors\TerminosCondicionesNotFound;
 use UNAM\Tupa\Core\Filtros\Filtro;
+use UNAM\Tupa\Core\Negocio\Externos\Visita;
 
 class terminos_condiciones implements SIUToba\rest\lib\modelable
 {
@@ -49,9 +50,30 @@ class terminos_condiciones implements SIUToba\rest\lib\modelable
             'archivo' => array('type' => 'string',),
         ];
 
+        $terminos_condiciones_aceptar = [
+            'tipo_visitante' => array(
+                'type' => 'string',
+                'required' => true,
+                'enum' => Visita::tipos(),
+                '_validar' => array(
+                    rest_validador::OBLIGATORIO,
+                    rest_validador::TIPO_ENUM => Visita::tipos(),
+                ),
+            ),
+            'visitante' => array(
+                'type' => 'string',
+                '_validar' => array(
+                    rest_validador::OBLIGATORIO,
+                )
+            )
+        ];
+
+
         return ['TerminosCondiciones' => $terminos_condiciones,
                 'TerminosCondicionesEdit' => $terminos_condiciones_edit,
-                'TerminosCondicionesArchivo' => $terminos_condiciones_archivo];
+                'TerminosCondicionesArchivo' => $terminos_condiciones_archivo,
+                'TerminosCondicionesAceptar'=> $terminos_condiciones_aceptar
+            ];
     }
 
     protected function get_spec_usuario($tipo = 'TerminosCondiciones')
@@ -176,7 +198,6 @@ class terminos_condiciones implements SIUToba\rest\lib\modelable
             header('Content-Type: application/octet-stream');
             header("Content-type: application/pdf");
             header('Content-Disposition: attachment; filename=download.pdf');
-            //header('Content-Disposition: inline');
             header('Content-Transfer-Encoding: binary');
             header('Expires: 0');
             header('Cache-Control: must-revalidate');
@@ -266,7 +287,7 @@ class terminos_condiciones implements SIUToba\rest\lib\modelable
      *
      * @summary Actualiza el archivo de un termino y condición
      * @param_body $archivo string [required] archivo de un termino y condición
-     * @responses 200 {"$ref": "UsuarioMostrar"} Usuario modificado
+     * @responses 200 {"$ref": "TerminosCondicionesArchivo"} Terminos Condiciones Archivo
      * @responses 404 No se pudo encontrar el termino y condición
      * @responses 400 Error en los datos ingresados para el termino y condición.
      * @responses 500 Error el sistema no tiene permisos para modificar el archivo en el sistema de archivos
@@ -303,6 +324,51 @@ class terminos_condiciones implements SIUToba\rest\lib\modelable
         }
     }
 
+    /**
+     * Se consume en PUT /terminos-condiciones/{codigo}/aceptar.
+     *
+     * @summary Actualiza la aceptación de un termino y condición para un visitante
+     * @param_body $visitante TerminosCondicionesAceptar [required] id del visitante
+     * @responses 200 {"$ref": "TerminosCondicionesAceptar"} Terminos Condiciones Aceptar
+     * @responses 404 No se pudo encontrar el termino y condición
+     * @responses 400 Error en los datos ingresados para el termino y condición.
+     */
+    public function put_aceptar_list($codigo)
+    {
+        $visitante = $this->procesar_input_edicion('TerminosCondicionesAceptar');
+
+        if (isset($codigo)) {
+            try {
+                $manager = Factory::getManagerTerminosCondiciones();
+                $terminoCondicion = $manager->getTerminoCondicion($codigo);
+                $terminoCondicion->setIdVisitante($visitante['visitante']);
+                $terminoCondicion->setTipoVisitante($visitante['tipo_visitante']);
+
+                $url = Factory::getConfiguracion()->getUrlPortalInstitucion() . "/visitas/" . $visitante['visitante'];
+
+                $qr = $manager->generarQR($url);
+
+                $terminoCondicion->setPase($qr);
+
+                rest::response()->put([ "respuesta" => true ]);
+
+                if (!isset($terminoCondicion)) {
+                    rest::response()->not_found();
+                }
+
+                $codigo = $manager->aceptarTerminosCondiciones($terminoCondicion);
+
+                if (!isset($codigo)) {
+                    rest::response()->not_found();
+                }
+            } catch (Error $e) {
+                rest::response()->error_negocio(array($e->getMessage()), $e->getCode());
+            }
+        } else {
+            rest::response()->not_found();
+        }
+    }
+
     private function get_filtro_get_list()
     {
         $filtro = new Filtro();
diff --git a/backend/db/migrations/1.0/20200908120213_visitante.php b/backend/db/migrations/1.0/20200908120213_visitante.php
index f71ef2c2..a4bfa723 100644
--- a/backend/db/migrations/1.0/20200908120213_visitante.php
+++ b/backend/db/migrations/1.0/20200908120213_visitante.php
@@ -47,6 +47,7 @@ class Visitante extends AbstractMigration
             ->addColumn('id_visitante', 'char', ['limit' => 36])
             ->addColumn('tipo_visitante', 'string', ['limit' => 10])
             ->addColumn('fecha', 'timestamp', ['default' => 'CURRENT_TIMESTAMP'])
+            ->addColumn('pase', 'text', ['null' => true])
             ->addForeignKey('id_visitante', 'visitante', 'identificador')
             ->create();
     }
diff --git a/core/src/UNAM/Tupa/Core/Errors/PaseNotFound.php b/core/src/UNAM/Tupa/Core/Errors/PaseNotFound.php
new file mode 100644
index 00000000..7b10bca2
--- /dev/null
+++ b/core/src/UNAM/Tupa/Core/Errors/PaseNotFound.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace UNAM\Tupa\Core\Errors;
+
+/**
+ * Términos y Condiciones no encontrado
+ *
+ * @codeCoverageIgnore
+ */
+class PaseNotFound extends ErrorTupa
+{
+}
\ No newline at end of file
diff --git a/core/src/UNAM/Tupa/Core/Manager/ManagerTerminosCondiciones.php b/core/src/UNAM/Tupa/Core/Manager/ManagerTerminosCondiciones.php
index 3dbf2835..0340a877 100644
--- a/core/src/UNAM/Tupa/Core/Manager/ManagerTerminosCondiciones.php
+++ b/core/src/UNAM/Tupa/Core/Manager/ManagerTerminosCondiciones.php
@@ -3,9 +3,12 @@
 
 namespace UNAM\Tupa\Core\Manager;
 
+use Dompdf\Dompdf;
+use SimpleSoftwareIO\QrCode\Generator;
 use UNAM\Tupa\Core\Errors\ErrorTupa;
 use UNAM\Tupa\Core\Errors\TerminosCondicionesNotFound;
 use UNAM\Tupa\Core\Filtros\Filtro;
+use UNAM\Tupa\Core\Negocio\Externos\Visitante;
 use UNAM\Tupa\Core\Negocio\TerminosCondiciones;
 
 class ManagerTerminosCondiciones extends Manager
@@ -255,4 +258,123 @@ class ManagerTerminosCondiciones extends Manager
             throw new ErrorTupa($e->getMessage(), $e->getCode());
         }
     }
+
+    /**
+     * Devuelve si existe o no un registro de Aceptación de Terminos y Condiciones
+     * @param $id
+     * @return bool
+     */
+    public function getExisteAceptarTerminosCondiciones($terminoCondicion)
+    {
+        $existe = false;
+        $params = [
+            "id_visitante" => $terminoCondicion->getIdVisitante(),
+            "tipo_visitante" => $terminoCondicion->getTipoVisitante(),
+            "id_terminos_condiciones" => $terminoCondicion->getCodigo(),
+        ];
+
+        $sql = "SELECT id
+                FROM   aceptacion_terminos_condiciones
+                WHERE  id_visitante = :id_visitante 
+                AND tipo_visitante = :tipo_visitante
+                AND id_terminos_condiciones = :id_terminos_condiciones;";
+
+        $result = $this->db->sentencia_consultar_fila($sql, $params);
+
+        if ($result) {
+            $existe = true;
+        }
+
+        return $existe;
+    }
+
+    public function aceptarTerminosCondiciones(TerminosCondiciones $terminoCondicion)
+    {
+        $params = [
+            "id_visitante" => $terminoCondicion->getIdVisitante(),
+            "tipo_visitante" => $terminoCondicion->getTipoVisitante(),
+            "id_terminos_condiciones" => $terminoCondicion->getCodigo(),
+            "pase" => $terminoCondicion->getPase()
+        ];
+
+        try {
+            $existe = $this->getExisteAceptarTerminosCondiciones($terminoCondicion);
+
+            if ($existe) {
+                $sql = "UPDATE aceptacion_terminos_condiciones
+                        SET    id_visitante = :id_visitante,
+                               tipo_visitante = :tipo_visitante,
+                               pase = :pase,
+                               fecha = Now()
+                        WHERE  id_terminos_condiciones = :id_terminos_condiciones";
+            } else {
+                $sql = "INSERT INTO aceptacion_terminos_condiciones
+                            (id_terminos_condiciones,
+                             id_visitante,
+                             tipo_visitante,
+                             pase,
+                             fecha)
+                        VALUES      (:id_terminos_condiciones,
+                             :id_visitante,
+                             :tipo_visitante,
+                             :pase,
+                             Now())";
+            }
+            return $this->db->sentencia_ejecutar($sql, $params);
+        } catch (\Exception $e) {
+            throw new ErrorTupa($e->getMessage(), $e->getCode());
+        }
+    }
+
+    /**
+     * Genera el QR para un visitante
+     * @param $url
+     * @return string|void
+     */
+    public function generarQR($url)
+    {
+        $qrcode = new Generator;
+        return $qrcode->size(300)->generate($url);
+    }
+
+    /**
+     * Genera un PDF con el QR y datos del visitante
+     * @param $urlQR string Url del QR
+     * @param Visitante $visitante
+     */
+    public function generarPDF($urlQR, Visitante $visitante)
+    {
+        $img = base64_encode($this->generarQR($urlQR));
+        $nombre = strtoupper($visitante->getDatosPersonales()->getApellido()." ".$visitante->getDatosPersonales()->getNombre());
+        $documento = strtoupper($visitante->getDatosPersonales()->getDocumentos()[0]->getTipo() ." ". $visitante->getDatosPersonales()->getDocumentos()[0]->getNumero());
+
+        $dompdf = new Dompdf();
+        $html = "<div style='text-align: center'>";
+        $html .= "<h1><strong>Pase UNaM</strong></h1>";
+        $html .= "<img src='data:image/svg+xml;base64,{$img}'><br>";
+        $html .= "<h2><strong>{$nombre}</strong></h2>";
+        $html .= "<h2><strong>{$documento}</strong></h2>";
+        $html .= "</div>";
+
+        $dompdf->loadHtml($html);
+        $dompdf->setPaper('A4', 'landscape');
+        $dompdf->render();
+
+        $dompdf->stream();
+    }
+
+    public function getPaseQr($id_visitante)
+    {
+        $params = [
+            "id_visitante" => $id_visitante
+        ];
+
+        $sql = "SELECT pase
+                FROM   aceptacion_terminos_condiciones
+                WHERE  id_visitante = :id_visitante";
+
+        $result = $this->db->sentencia_consultar_fila($sql, $params);
+
+        return $result;
+    }
 }
diff --git a/core/src/UNAM/Tupa/Core/Negocio/TerminosCondiciones.php b/core/src/UNAM/Tupa/Core/Negocio/TerminosCondiciones.php
index ce609b05..9756f539 100644
--- a/core/src/UNAM/Tupa/Core/Negocio/TerminosCondiciones.php
+++ b/core/src/UNAM/Tupa/Core/Negocio/TerminosCondiciones.php
@@ -40,6 +40,21 @@ class TerminosCondiciones
      */
     private $archivo;
 
+    /**
+     * @var string
+     */
+    private $tipoVisitante;
+
+    /**
+     * @var string
+     */
+    private $idVisitante;
+
+    /**
+     * @var string
+     */
+    private $pase;
+
     public function __construct()
     {
         $this->codigo = null;
@@ -142,6 +157,46 @@ class TerminosCondiciones
         $this->archivo = $archivo;
     }
 
+    public function getTipoVisitante()
+    {
+        return $this->tipoVisitante;
+    }
+
+    /**
+     * @param $tipoVisitante
+     */
+    public function setTipoVisitante($tipoVisitante)
+    {
+        $this->tipoVisitante = $tipoVisitante;
+    }
+
+    public function getIdVisitante()
+    {
+        return $this->idVisitante;
+    }
+
+    /**
+     * @param $idVisitante
+     */
+    public function setIdVisitante($idVisitante)
+    {
+        $this->idVisitante = $idVisitante;
+    }
+
+    public function getPase()
+    {
+        return $this->pase;
+    }
+
+    /**
+     * @param $pase
+     */
+    public function setPase($pase)
+    {
+        $this->pase = $pase;
+    }
+
+
     /**
      * Hidrata los atributos del objeto a partir de $datos
      *
-- 
GitLab


From f914e57e3079990334ba8d6205ba1fdfde6b873e Mon Sep 17 00:00:00 2001
From: "luciano.cassettai" <luciano.cassettai@campus.unam.edu.ar>
Date: Fri, 18 Sep 2020 09:43:16 -0300
Subject: [PATCH 04/20] Fix: email laboral en solicitud

---
 frontend/src/components/EmailForm.js        | 1 +
 frontend/src/components/PersonalDataForm.js | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/frontend/src/components/EmailForm.js b/frontend/src/components/EmailForm.js
index 514c486d..7f21db6d 100644
--- a/frontend/src/components/EmailForm.js
+++ b/frontend/src/components/EmailForm.js
@@ -117,6 +117,7 @@ export default function EmailForm(props) {
   const { handleSubmit, errors, control } = useForm(defaultValues);
 
   const onSubmit = (data) => {
+    localStorage.setItem("emailContacto", data.email + "@" + data.dominio);
     recaptchaRef.current.reset();
     const requestOptions = {
       mode: "cors",
diff --git a/frontend/src/components/PersonalDataForm.js b/frontend/src/components/PersonalDataForm.js
index e897c645..27a774b5 100644
--- a/frontend/src/components/PersonalDataForm.js
+++ b/frontend/src/components/PersonalDataForm.js
@@ -130,8 +130,8 @@ export default function PersonalDataForm(props) {
 
     const DatosPersonales = {
       contacto: {
-        tipo: "email",
-        valor: data.email,
+        tipo: "LABORAL",
+        valor: localStorage.getItem("emailContacto"),
       },
       datos_personales: {
         nombre: data.nombres,
-- 
GitLab


From a23ef102709581f8ad228d70e5552f440a31aa28 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Fri, 18 Sep 2020 13:00:10 -0300
Subject: [PATCH 05/20] Issue #46 metodo devuele url de pdf tyc

---
 visitas/app/Http/Controllers/VisitasController.php | 10 +++++++++-
 visitas/app/Repositorios/GuzzleHttpRequest.php     | 14 +-------------
 visitas/app/Repositorios/TupaApi.php               |  5 +----
 3 files changed, 11 insertions(+), 18 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index e769e5b4..64a01875 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -35,10 +35,12 @@ class VisitasController extends Controller
         $codigoQrEjemplo = $this->generar_qr("www.unam.edu.ar/visitas", "124", "tosv2");
         $codigoqr = $codigoQrEjemplo;
         $dv = $this->visitas->getVisitante($id['respuesta']);
+
         $nombre = $dv['datos_personales']['nombre'];
         $apellido = $dv['datos_personales']['apellido'];
         $dni = $dv['datos_personales']['documentos'][0]['numero'];
-        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni'));
+        $pdf = $this->getPDFTyCVigente();
+        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni','pdf'));
     }
 
     public function getPDFTyCVigente()
@@ -47,6 +49,12 @@ class VisitasController extends Controller
         return $this->visitas->getPDFToS($id[0]["codigo"]);
     }
 
+    public function aceptarTyC($id)
+    {
+        $id = $this->visitas->getToS();
+        return $this->visitas->getPDFToS($id[0]["codigo"]);
+    }
+
     private function generar_qr(string $link = null, string $idVisitante = null, string $idTOS)
     {
 
diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index d0f74eb4..cc16ae62 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -5,7 +5,7 @@ namespace App\Repositorios;
 
 
 use GuzzleHttp\Client;
-
+use GuzzleHttp\Exception\GuzzleException;
 class GuzzleHttpRequest
 {
     protected $client;
@@ -25,17 +25,5 @@ class GuzzleHttpRequest
         $response = $this->client->request('POST', $url,$datos);
         return json_decode($response->getBody(),true);
     }
-    public function  getFile($url,$auth)    {
-        $resource = fopen('tycCovid19.pdf', 'w');
-        /*return  $this->client->request('GET', $url, [
-            'headers' => [
-                'Authorization'=> 'Basic ' . $auth,
-                'Content-Type' => 'application/pdf'
-            ],
-            'sink' => $resource,
-        ]);*/
-        return $this->client->request('GET', $url,$auth);
-    }
-
 }
 
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index bcc69db8..605d51b9 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -85,10 +85,7 @@ class TupaApi extends GuzzleHttpRequest
     {
         $this->getCredApi();
         $url = $this->getUrlApi() . "terminos-condiciones/{$id}/archivo";
-        //$auth = base64_encode("{$this->getUser()}:{$this->getPass()}");
-        $auth = ['auth' => [$this->getUser(), $this->getPass()]];
-        dd($this->getFile($url, $auth));
-       //return $this->getFile($url, $auth);
+        return $url;
     }
 
     public function postVisitante($visita=array())
-- 
GitLab


From 25b1c23ee491e326f8901e2d9abcea3f7ac8e66a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Thu, 17 Sep 2020 15:36:01 -0300
Subject: [PATCH 06/20] Issue #46 - Se agrega post de Visita

---
 .../Http/Controllers/VisitasController.php    | 14 ++++++++--
 .../app/Repositorios/GuzzleHttpRequest.php    |  5 ++--
 visitas/app/Repositorios/TupaApi.php          | 26 ++++++++++++-------
 visitas/routes/web.php                        |  2 +-
 4 files changed, 33 insertions(+), 14 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index fe20c9fb..4e89b3be 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -35,19 +35,29 @@ class VisitasController extends Controller
         //TODO: Cambiar con los datos que retorna la api
         $codigoQrEjemplo = $this->generar_qr("www.unam.edu.ar/visitas", "124", "tosv2");
         $codigoqr = $codigoQrEjemplo;
-        
+
         //$codigoqr = $datos->codigoqr;
         $nombre =$datos->nombre;
         $apellido =$datos->apellido;
         $dni=$datos->dni;
-        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni'));
+        $TyC = $this->visitas->getToS();
+        $TyC=$TyC[0]['contenido'];
+        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni','TyC'));
     }
 
     private function generar_qr(string $link = null, string $idVisitante = null, string $idTOS)
     {
+
         if (isset($link) && isset($idVisitante) && isset($idTOS)) {
             $url = $link . "/" . $idVisitante . "/" . $idTOS;
             return \QrCode::size(300)->generate($url);
         }
     }
+
+    /*Este metodo devolveria Ruta al archivo pdf*/
+    function getTyCVigentePDF(){
+        $TyC = $this->visitas->getPdfTyC();
+        $TyC=$TyC[0]['contenido'];
+        return $TyC;
+    }
 }
diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index d9c44a19..d767746b 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -16,11 +16,12 @@ class GuzzleHttpRequest
     public function get($url,$auth)
     {
         $response = $this->client->request('GET', $url,$auth);
-        return json_decode($response->getBody()->getContents());
+        return json_decode($response->getBody(),true);
     }
 
     public function post($url,$datos)
     {
-        $this->client->request('POST', $url,$datos);
+        $response = $this->client->request('POST', $url,$datos);
+        return json_decode($response->getBody(),true);
     }
 }
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index 03045f9a..655b3391 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -59,29 +59,30 @@ class TupaApi extends GuzzleHttpRequest
     }
 
 
-    public function getCredenciales(){
+    public function getCredAPI(){
         $this->credenciales = json_decode(env('CREDENCIALES_API_BASIC_TUPA'));
         $this->setUser($this->credenciales[0][0]);
         $this->setPass($this->credenciales[0][1]);
         $this->setUrlApi($this->credenciales[0][2]);
     }
 
-    public function getVisitantes()
+    public function getToS()
     {
-
-        $url = $this->getUrlApi() . '/vistantes';
+        $this->getCredApi();
+        $url = $this->getUrlApi() . '/terminos-condiciones';
         $auth = ['auth' => [$this->getUser(), $this->getPass()]];
         return $this->get($url, $auth);
     }
 
-    public function getVisitante($id)
+    public function getPdfPase($id)
     {
         return $this->get("visitantes/{$id}");
     }
 
+
     public function postVisitante($visita=array())
     {
-        $this->getCredenciales();
+        $this->getCredApi();
         $url = $this->getUrlApi() . '/visitantes';
 
         $datos = array (
@@ -133,9 +134,16 @@ class TupaApi extends GuzzleHttpRequest
         );
 
         $datos = ['body' => json_encode($datos), 'auth' => [$this->getUser(), $this->getPass()]];
-        $this->post($url,$datos);
-
+        $visita = $this->post($url,$datos);
+        $this->postVisita($visita['respuesta']);
+        return $visita;
     }
 
-
+    function postVisita($id){
+        $this->getCredApi();
+        $tos = $this->getToS();
+        $url = $this->getUrlApi() . 'visitas/'.$id;
+        $datos = ['body' => json_encode(['terminos_condiciones'=>$tos[0]['codigo'],'sede'=>'1','tipo_visitante'=>'EXTERNO']), 'auth' => [$this->getUser(), $this->getPass()]];
+        $this->post($url,$datos);
+    }
 }
diff --git a/visitas/routes/web.php b/visitas/routes/web.php
index 9f4effc4..3394704e 100644
--- a/visitas/routes/web.php
+++ b/visitas/routes/web.php
@@ -22,7 +22,7 @@ Route::match(['get', 'post'],'/solicitudPase', 'VisitasController@solicitudPase'
 
 Route::post('/visitas','VisitasController@altaVisita')->name('visita_crear');
 
-Route::get('/acreditacionCOVID19', 'VisitasController@acreditar')->name('acreditacion');
+Route::get('/pdf-tyc', 'VisitasController@getTyCVigentePDF')->name('pdf-tyc');
 
 //Route::resource('visitas', 'VisitasController');
 
-- 
GitLab


From 8fd3c8c8b0dde650026835848d389d3a94551142 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Fri, 18 Sep 2020 10:50:19 -0300
Subject: [PATCH 07/20] Issue #46 - avances conexion con api

---
 .../Http/Controllers/VisitasController.php    | 31 +++++++++----------
 visitas/app/Providers/AppServiceProvider.php  |  3 +-
 .../app/Repositorios/GuzzleHttpRequest.php    | 14 +++++++++
 visitas/app/Repositorios/TupaApi.php          | 29 ++++++++---------
 visitas/routes/web.php                        |  3 +-
 5 files changed, 47 insertions(+), 33 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index 4e89b3be..e769e5b4 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -26,23 +26,25 @@ class VisitasController extends Controller
 
     public function altaVisita(Request $request)
     {
-        $this->visitas->postVisitante($request);
-        return $this->acreditar($request);
+        $visita = $this->visitas->postVisitante($request);
+        return $this->acreditar($visita);
     }
 
-    public function acreditar($datos=null)
+    public function acreditar($id)
     {
-        //TODO: Cambiar con los datos que retorna la api
         $codigoQrEjemplo = $this->generar_qr("www.unam.edu.ar/visitas", "124", "tosv2");
         $codigoqr = $codigoQrEjemplo;
+        $dv = $this->visitas->getVisitante($id['respuesta']);
+        $nombre = $dv['datos_personales']['nombre'];
+        $apellido = $dv['datos_personales']['apellido'];
+        $dni = $dv['datos_personales']['documentos'][0]['numero'];
+        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni'));
+    }
 
-        //$codigoqr = $datos->codigoqr;
-        $nombre =$datos->nombre;
-        $apellido =$datos->apellido;
-        $dni=$datos->dni;
-        $TyC = $this->visitas->getToS();
-        $TyC=$TyC[0]['contenido'];
-        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni','TyC'));
+    public function getPDFTyCVigente()
+    {
+        $id = $this->visitas->getToS();
+        return $this->visitas->getPDFToS($id[0]["codigo"]);
     }
 
     private function generar_qr(string $link = null, string $idVisitante = null, string $idTOS)
@@ -54,10 +56,5 @@ class VisitasController extends Controller
         }
     }
 
-    /*Este metodo devolveria Ruta al archivo pdf*/
-    function getTyCVigentePDF(){
-        $TyC = $this->visitas->getPdfTyC();
-        $TyC=$TyC[0]['contenido'];
-        return $TyC;
-    }
+
 }
diff --git a/visitas/app/Providers/AppServiceProvider.php b/visitas/app/Providers/AppServiceProvider.php
index 9222ee9d..42d3da74 100644
--- a/visitas/app/Providers/AppServiceProvider.php
+++ b/visitas/app/Providers/AppServiceProvider.php
@@ -15,8 +15,9 @@ class AppServiceProvider extends ServiceProvider
     public function register()
     {
         $this->app->singleton('GuzzleHttp\Client',function(){
+            $credenciales = json_decode(env('CREDENCIALES_API_BASIC_TUPA'));
             return new Client([
-                'base_uri' => 'http://localhost:9002/api/v1/',
+                'base_uri' => $credenciales[0][0],
             ]);
         });
     }
diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index d767746b..d0f74eb4 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -15,6 +15,7 @@ class GuzzleHttpRequest
     }
     public function get($url,$auth)
     {
+
         $response = $this->client->request('GET', $url,$auth);
         return json_decode($response->getBody(),true);
     }
@@ -24,4 +25,17 @@ class GuzzleHttpRequest
         $response = $this->client->request('POST', $url,$datos);
         return json_decode($response->getBody(),true);
     }
+    public function  getFile($url,$auth)    {
+        $resource = fopen('tycCovid19.pdf', 'w');
+        /*return  $this->client->request('GET', $url, [
+            'headers' => [
+                'Authorization'=> 'Basic ' . $auth,
+                'Content-Type' => 'application/pdf'
+            ],
+            'sink' => $resource,
+        ]);*/
+        return $this->client->request('GET', $url,$auth);
+    }
+
 }
+
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index 655b3391..bcc69db8 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -58,7 +58,6 @@ class TupaApi extends GuzzleHttpRequest
         $this->urlApi = $urlApi;
     }
 
-
     public function getCredAPI(){
         $this->credenciales = json_decode(env('CREDENCIALES_API_BASIC_TUPA'));
         $this->setUser($this->credenciales[0][0]);
@@ -66,6 +65,14 @@ class TupaApi extends GuzzleHttpRequest
         $this->setUrlApi($this->credenciales[0][2]);
     }
 
+    public function getVisitante($id){
+        $url = $this->getUrlApi() . '/visitantes/'.$id;
+        $auth = ['auth' => [$this->getUser(), $this->getPass()]];
+        return $this->get($url, $auth);
+    }
+    /*
+     *
+     * */
     public function getToS()
     {
         $this->getCredApi();
@@ -74,12 +81,16 @@ class TupaApi extends GuzzleHttpRequest
         return $this->get($url, $auth);
     }
 
-    public function getPdfPase($id)
+    public function getPDFToS($id)
     {
-        return $this->get("visitantes/{$id}");
+        $this->getCredApi();
+        $url = $this->getUrlApi() . "terminos-condiciones/{$id}/archivo";
+        //$auth = base64_encode("{$this->getUser()}:{$this->getPass()}");
+        $auth = ['auth' => [$this->getUser(), $this->getPass()]];
+        dd($this->getFile($url, $auth));
+       //return $this->getFile($url, $auth);
     }
 
-
     public function postVisitante($visita=array())
     {
         $this->getCredApi();
@@ -132,18 +143,8 @@ class TupaApi extends GuzzleHttpRequest
                         ),
                 ),
         );
-
         $datos = ['body' => json_encode($datos), 'auth' => [$this->getUser(), $this->getPass()]];
         $visita = $this->post($url,$datos);
-        $this->postVisita($visita['respuesta']);
         return $visita;
     }
-
-    function postVisita($id){
-        $this->getCredApi();
-        $tos = $this->getToS();
-        $url = $this->getUrlApi() . 'visitas/'.$id;
-        $datos = ['body' => json_encode(['terminos_condiciones'=>$tos[0]['codigo'],'sede'=>'1','tipo_visitante'=>'EXTERNO']), 'auth' => [$this->getUser(), $this->getPass()]];
-        $this->post($url,$datos);
-    }
 }
diff --git a/visitas/routes/web.php b/visitas/routes/web.php
index 3394704e..acd1b8e9 100644
--- a/visitas/routes/web.php
+++ b/visitas/routes/web.php
@@ -22,7 +22,8 @@ Route::match(['get', 'post'],'/solicitudPase', 'VisitasController@solicitudPase'
 
 Route::post('/visitas','VisitasController@altaVisita')->name('visita_crear');
 
-Route::get('/pdf-tyc', 'VisitasController@getTyCVigentePDF')->name('pdf-tyc');
+Route::get('/pdf-tyc', 'VisitasController@getPDFTyCVigente')->name('pdf-tyc');
+
 
 //Route::resource('visitas', 'VisitasController');
 
-- 
GitLab


From f97798d2d8ee2989a24b219a616ef27ccb0359da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Fri, 18 Sep 2020 13:00:10 -0300
Subject: [PATCH 08/20] Issue #46 metodo devuele url de pdf tyc

---
 visitas/app/Http/Controllers/VisitasController.php | 10 +++++++++-
 visitas/app/Repositorios/GuzzleHttpRequest.php     | 14 +-------------
 visitas/app/Repositorios/TupaApi.php               |  5 +----
 3 files changed, 11 insertions(+), 18 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index e769e5b4..64a01875 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -35,10 +35,12 @@ class VisitasController extends Controller
         $codigoQrEjemplo = $this->generar_qr("www.unam.edu.ar/visitas", "124", "tosv2");
         $codigoqr = $codigoQrEjemplo;
         $dv = $this->visitas->getVisitante($id['respuesta']);
+
         $nombre = $dv['datos_personales']['nombre'];
         $apellido = $dv['datos_personales']['apellido'];
         $dni = $dv['datos_personales']['documentos'][0]['numero'];
-        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni'));
+        $pdf = $this->getPDFTyCVigente();
+        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni','pdf'));
     }
 
     public function getPDFTyCVigente()
@@ -47,6 +49,12 @@ class VisitasController extends Controller
         return $this->visitas->getPDFToS($id[0]["codigo"]);
     }
 
+    public function aceptarTyC($id)
+    {
+        $id = $this->visitas->getToS();
+        return $this->visitas->getPDFToS($id[0]["codigo"]);
+    }
+
     private function generar_qr(string $link = null, string $idVisitante = null, string $idTOS)
     {
 
diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index d0f74eb4..cc16ae62 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -5,7 +5,7 @@ namespace App\Repositorios;
 
 
 use GuzzleHttp\Client;
-
+use GuzzleHttp\Exception\GuzzleException;
 class GuzzleHttpRequest
 {
     protected $client;
@@ -25,17 +25,5 @@ class GuzzleHttpRequest
         $response = $this->client->request('POST', $url,$datos);
         return json_decode($response->getBody(),true);
     }
-    public function  getFile($url,$auth)    {
-        $resource = fopen('tycCovid19.pdf', 'w');
-        /*return  $this->client->request('GET', $url, [
-            'headers' => [
-                'Authorization'=> 'Basic ' . $auth,
-                'Content-Type' => 'application/pdf'
-            ],
-            'sink' => $resource,
-        ]);*/
-        return $this->client->request('GET', $url,$auth);
-    }
-
 }
 
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index bcc69db8..605d51b9 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -85,10 +85,7 @@ class TupaApi extends GuzzleHttpRequest
     {
         $this->getCredApi();
         $url = $this->getUrlApi() . "terminos-condiciones/{$id}/archivo";
-        //$auth = base64_encode("{$this->getUser()}:{$this->getPass()}");
-        $auth = ['auth' => [$this->getUser(), $this->getPass()]];
-        dd($this->getFile($url, $auth));
-       //return $this->getFile($url, $auth);
+        return $url;
     }
 
     public function postVisitante($visita=array())
-- 
GitLab


From 6989708085aa8903d0042e7fba663b7a8819db49 Mon Sep 17 00:00:00 2001
From: "luciano.cassettai" <luciano.cassettai@campus.unam.edu.ar>
Date: Fri, 18 Sep 2020 13:17:44 -0300
Subject: [PATCH 09/20] ADD: aceptacion de TOS y GET del pase QR

---
 .../Http/Controllers/VisitasController.php    | 15 ++----------
 .../app/Repositorios/GuzzleHttpRequest.php    | 18 +++++++++++++++
 visitas/app/Repositorios/TupaApi.php          | 23 +++++++++++++++++++
 3 files changed, 43 insertions(+), 13 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index 64a01875..864dbde5 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -27,13 +27,13 @@ class VisitasController extends Controller
     public function altaVisita(Request $request)
     {
         $visita = $this->visitas->postVisitante($request);
+        $respuesta = $this->visitas->putAceptarTerminos($visita['respuesta'],$idTosVigente);
         return $this->acreditar($visita);
     }
 
     public function acreditar($id)
     {
-        $codigoQrEjemplo = $this->generar_qr("www.unam.edu.ar/visitas", "124", "tosv2");
-        $codigoqr = $codigoQrEjemplo;
+        $codigoqr = base64_decode($this->visitas->getPaseQr($id['respuesta'])[0]);;
         $dv = $this->visitas->getVisitante($id['respuesta']);
 
         $nombre = $dv['datos_personales']['nombre'];
@@ -54,15 +54,4 @@ class VisitasController extends Controller
         $id = $this->visitas->getToS();
         return $this->visitas->getPDFToS($id[0]["codigo"]);
     }
-
-    private function generar_qr(string $link = null, string $idVisitante = null, string $idTOS)
-    {
-
-        if (isset($link) && isset($idVisitante) && isset($idTOS)) {
-            $url = $link . "/" . $idVisitante . "/" . $idTOS;
-            return \QrCode::size(300)->generate($url);
-        }
-    }
-
-
 }
diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index cc16ae62..e9d0a741 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -25,5 +25,23 @@ class GuzzleHttpRequest
         $response = $this->client->request('POST', $url,$datos);
         return json_decode($response->getBody(),true);
     }
+
+     public function put($url,$datos)
+    {
+        $response = $this->client->request('PUT', $url,$datos);
+        return json_decode($response->getBody(),true);
+    }
+
+    public function  getFile($url,$auth)    {
+        $resource = fopen('tycCovid19.pdf', 'w');
+        /*return  $this->client->request('GET', $url, [
+            'headers' => [
+                'Authorization'=> 'Basic ' . $auth,
+                'Content-Type' => 'application/pdf'
+            ],
+            'sink' => $resource,
+        ]);*/
+        return $this->client->request('GET', $url,$auth);
+    }
 }
 
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index 605d51b9..5d208bd0 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -81,6 +81,29 @@ class TupaApi extends GuzzleHttpRequest
         return $this->get($url, $auth);
     }
 
+    public function getPaseQr($id_visitante)
+    {
+        $this->getCredApi();
+        $url = $this->getUrlApi () . "/pases/$id_visitante/qr";
+        $auth = ['auth' => [$this->getUser(), $this->getPass()]];
+        return $this->get($url, $auth);
+    }
+
+    public function putAceptarTerminos($id_visitante,$idTosVigente){
+        $this->getCredApi();
+        $url = $this->getUrlApi() . "/terminos-condiciones/$idTosVigente/aceptar";
+
+         $datos = array (
+            'tipo_visitante' => 'EXTERNO',
+            'visitante' => $id_visitante
+         );
+
+        $datos = ['body' => json_encode($datos), 'auth' => [$this->getUser(), $this->getPass()]];
+
+        $visita = $this->put($url,$datos);
+        return $visita;
+    }
+
     public function getPDFToS($id)
     {
         $this->getCredApi();
-- 
GitLab


From b7d7c4695eb2ab2113f6066aaba8702c74874f3c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Mon, 21 Sep 2020 10:56:42 -0300
Subject: [PATCH 10/20] Mejora en get de TyC - Se quita boton "Enviar por
 email"

---
 visitas/app/Repositorios/TupaApi.php           | 2 +-
 visitas/resources/views/acreditacion.blade.php | 5 ++---
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index d1237e3f..e0356288 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -76,7 +76,7 @@ class TupaApi extends GuzzleHttpRequest
     public function getToS()
     {
         $this->getCredApi();
-        $url = $this->getUrlApi() . '/terminos-condiciones';
+        $url = $this->getUrlApi() . '/terminos-condiciones?estado=es_igual_a%3BAC';
         $auth = ['auth' => [$this->getUser(), $this->getPass()]];
         return $this->get($url, $auth);
     }
diff --git a/visitas/resources/views/acreditacion.blade.php b/visitas/resources/views/acreditacion.blade.php
index 292737cd..35c6baea 100644
--- a/visitas/resources/views/acreditacion.blade.php
+++ b/visitas/resources/views/acreditacion.blade.php
@@ -23,10 +23,9 @@
                 Este código deberá mostrarlo cada vez que ingrese a las instalaciones de la UNAM. Puede imprimirlo o si prefiere se lo podemos enviar al correo electrónico que indico en la solicitud.
             </div>
             <div class="text-center no-imprimir">
-                <button class="btn btn-pers btn-lg" onClick="window.print()">Imprimir</button> &nbsp
-                <button class="btn btn-pers btn-lg">Enviar por correo</button>
+                <button class="btn btn-pers btn-lg" onClick="window.print()">Imprimir</button>
             </div>
         </div>
     </div>
 </div>
-@endsection
\ No newline at end of file
+@endsection
-- 
GitLab


From e86c05466711817ce49703d8d529f2f2abe1dd82 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Mon, 21 Sep 2020 11:55:23 -0300
Subject: [PATCH 11/20] Se Mejora en nombre de metodo

---
 visitas/app/Http/Controllers/VisitasController.php | 2 +-
 visitas/app/Repositorios/TupaApi.php               | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index 1aeeaece..9b0ba771 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -46,7 +46,7 @@ class VisitasController extends Controller
     public function getUrlPDFTyC()
     {
         $id = $this->visitas->getToS();
-        return $this->visitas->getPDFToS($id[0]["codigo"]);
+        return $this->visitas->getUrlToS($id[0]["codigo"]);
     }
 
     public function getIdTyCVigente()
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index e0356288..554c8075 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -105,7 +105,7 @@ class TupaApi extends GuzzleHttpRequest
     }
 
 
-    public function getPDFToS($id)
+    public function getUrlToS($id)
     {
         $this->getCredApi();
         $url = $this->getUrlApi() . "terminos-condiciones/{$id}/archivo";
-- 
GitLab


From b2cde1464e46af10a3277790f7b8cde11479dcdd Mon Sep 17 00:00:00 2001
From: "luciano.cassettai" <luciano.cassettai@campus.unam.edu.ar>
Date: Mon, 21 Sep 2020 20:46:46 -0300
Subject: [PATCH 12/20] Correcciones menores

---
 .../Http/Controllers/VisitasController.php    | 52 ++++++++-----------
 visitas/app/Repositorios/TupaApi.php          |  2 +-
 visitas/routes/web.php                        |  2 +-
 3 files changed, 25 insertions(+), 31 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index 9b0ba771..e9d996d4 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -7,16 +7,21 @@ use App\Repositorios\TupaApi;
 
 class VisitasController extends Controller
 {
-    protected $visitas;
+    protected $tupaApi;
 
-    public function __construct(TupaApi $visitas)
+    public function __construct(TupaApi $api)
     {
-        $this->visitas = $visitas;
+        $this->tupaApi = $api;
     }
 
-    public function solicitudPase(Request $post)
+    public function solicitudPase(Request $request)
     {
-        if ($post->get('acepto_resolucion') && $post->get('acepto_declaracion')) {
+        if(session()->has('declaracionJurada') && session('declaracionJurada')){
+            return view('solicitudPase');
+        }
+
+        if ($request->get('acepto_resolucion') && $request->get('acepto_declaracion')) {
+            session(['declaracionJurada' => true]);
             return view('solicitudPase');
         } else {
             $error = ['error' => 'Debe leer y aceptar la declaración jurada para continuar'];
@@ -26,43 +31,32 @@ class VisitasController extends Controller
 
     public function altaVisita(Request $request)
     {
-        $visita = $this->visitas->postVisitante($request);
+        $idVisitante = $this->tupaApi->postVisitante($request);
         $idTosVigente = $this->getIdTyCVigente();
-        $this->visitas->putAceptarTerminos($visita['respuesta'],$idTosVigente);
-        return $this->acreditar($visita);
+        $this->tupaApi->putAceptarTerminos($idVisitante['respuesta'],$idTosVigente);
+
+        $datosVisitante = $request->only(['nombre','apellido','dni']);
+
+        return $this->acreditar($idVisitante['respuesta'],$datosVisitante);
     }
 
-    public function acreditar($id)
+    public function acreditar(string $idVisitante,array $datosVisitante)
     {
-       $codigoqr = base64_decode($this->visitas->getPaseQr($id['respuesta'])[0]);
-        $dv = $this->visitas->getVisitante($id['respuesta']);
-        $nombre = $dv['datos_personales']['nombre'];
-        $apellido = $dv['datos_personales']['apellido'];
-        $dni = $dv['datos_personales']['documentos'][0]['numero'];
-        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni'));
+        $datosVisitante['codigoqr'] = base64_decode($this->tupaApi->getPaseQr($idVisitante)[0]);    
+
+        return view('acreditacion',$datosVisitante);
     }
 
 
     public function getUrlPDFTyC()
     {
-        $id = $this->visitas->getToS();
-        return $this->visitas->getUrlToS($id[0]["codigo"]);
+        $id = $this->tupaApi->getToS();
+        return $this->tupaApi->getUrlToS($id[0]["codigo"]);
     }
 
     public function getIdTyCVigente()
     {
-        $id = $this->visitas->getToS();
+        $id = $this->tupaApi->getToS();
         return $id[0]["codigo"];
     }
-
-    public function getPDFTyCVigente()
-    {
-
-        if (isset($link) && isset($idVisitante) && isset($idTOS)) {
-            $url = $link . "/" . $idVisitante . "/" . $idTOS;
-            return \QrCode::size(300)->generate($url);
-        }
-
-    }
-
 }
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index 554c8075..5911c655 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -108,7 +108,7 @@ class TupaApi extends GuzzleHttpRequest
     public function getUrlToS($id)
     {
         $this->getCredApi();
-        $url = $this->getUrlApi() . "terminos-condiciones/{$id}/archivo";
+        $url = $this->getUrlApi() . "/terminos-condiciones/{$id}/archivo";
         return $url;
     }
 
diff --git a/visitas/routes/web.php b/visitas/routes/web.php
index acd1b8e9..cdc8a80d 100644
--- a/visitas/routes/web.php
+++ b/visitas/routes/web.php
@@ -20,7 +20,7 @@ Route::view('/', 'declaracionJurada')->name('declaracion_jurada');
 
 Route::match(['get', 'post'],'/solicitudPase', 'VisitasController@solicitudPase')->name('solicitud_pase');
 
-Route::post('/visitas','VisitasController@altaVisita')->name('visita_crear');
+Route::post('/pase','VisitasController@altaVisita')->name('visita_crear');
 
 Route::get('/pdf-tyc', 'VisitasController@getPDFTyCVigente')->name('pdf-tyc');
 
-- 
GitLab


From 6dc6f6b61188845c3a324903a98b548a4e354d64 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Thu, 17 Sep 2020 15:36:01 -0300
Subject: [PATCH 13/20] Issue #46 - Se agrega post de Visita

---
 .../Http/Controllers/VisitasController.php    | 14 ++++++++--
 .../app/Repositorios/GuzzleHttpRequest.php    |  5 ++--
 visitas/app/Repositorios/TupaApi.php          | 26 ++++++++++++-------
 visitas/routes/web.php                        |  2 +-
 4 files changed, 33 insertions(+), 14 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index fe20c9fb..4e89b3be 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -35,19 +35,29 @@ class VisitasController extends Controller
         //TODO: Cambiar con los datos que retorna la api
         $codigoQrEjemplo = $this->generar_qr("www.unam.edu.ar/visitas", "124", "tosv2");
         $codigoqr = $codigoQrEjemplo;
-        
+
         //$codigoqr = $datos->codigoqr;
         $nombre =$datos->nombre;
         $apellido =$datos->apellido;
         $dni=$datos->dni;
-        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni'));
+        $TyC = $this->visitas->getToS();
+        $TyC=$TyC[0]['contenido'];
+        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni','TyC'));
     }
 
     private function generar_qr(string $link = null, string $idVisitante = null, string $idTOS)
     {
+
         if (isset($link) && isset($idVisitante) && isset($idTOS)) {
             $url = $link . "/" . $idVisitante . "/" . $idTOS;
             return \QrCode::size(300)->generate($url);
         }
     }
+
+    /*Este metodo devolveria Ruta al archivo pdf*/
+    function getTyCVigentePDF(){
+        $TyC = $this->visitas->getPdfTyC();
+        $TyC=$TyC[0]['contenido'];
+        return $TyC;
+    }
 }
diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index d9c44a19..d767746b 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -16,11 +16,12 @@ class GuzzleHttpRequest
     public function get($url,$auth)
     {
         $response = $this->client->request('GET', $url,$auth);
-        return json_decode($response->getBody()->getContents());
+        return json_decode($response->getBody(),true);
     }
 
     public function post($url,$datos)
     {
-        $this->client->request('POST', $url,$datos);
+        $response = $this->client->request('POST', $url,$datos);
+        return json_decode($response->getBody(),true);
     }
 }
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index 03045f9a..655b3391 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -59,29 +59,30 @@ class TupaApi extends GuzzleHttpRequest
     }
 
 
-    public function getCredenciales(){
+    public function getCredAPI(){
         $this->credenciales = json_decode(env('CREDENCIALES_API_BASIC_TUPA'));
         $this->setUser($this->credenciales[0][0]);
         $this->setPass($this->credenciales[0][1]);
         $this->setUrlApi($this->credenciales[0][2]);
     }
 
-    public function getVisitantes()
+    public function getToS()
     {
-
-        $url = $this->getUrlApi() . '/vistantes';
+        $this->getCredApi();
+        $url = $this->getUrlApi() . '/terminos-condiciones';
         $auth = ['auth' => [$this->getUser(), $this->getPass()]];
         return $this->get($url, $auth);
     }
 
-    public function getVisitante($id)
+    public function getPdfPase($id)
     {
         return $this->get("visitantes/{$id}");
     }
 
+
     public function postVisitante($visita=array())
     {
-        $this->getCredenciales();
+        $this->getCredApi();
         $url = $this->getUrlApi() . '/visitantes';
 
         $datos = array (
@@ -133,9 +134,16 @@ class TupaApi extends GuzzleHttpRequest
         );
 
         $datos = ['body' => json_encode($datos), 'auth' => [$this->getUser(), $this->getPass()]];
-        $this->post($url,$datos);
-
+        $visita = $this->post($url,$datos);
+        $this->postVisita($visita['respuesta']);
+        return $visita;
     }
 
-
+    function postVisita($id){
+        $this->getCredApi();
+        $tos = $this->getToS();
+        $url = $this->getUrlApi() . 'visitas/'.$id;
+        $datos = ['body' => json_encode(['terminos_condiciones'=>$tos[0]['codigo'],'sede'=>'1','tipo_visitante'=>'EXTERNO']), 'auth' => [$this->getUser(), $this->getPass()]];
+        $this->post($url,$datos);
+    }
 }
diff --git a/visitas/routes/web.php b/visitas/routes/web.php
index 9f4effc4..3394704e 100644
--- a/visitas/routes/web.php
+++ b/visitas/routes/web.php
@@ -22,7 +22,7 @@ Route::match(['get', 'post'],'/solicitudPase', 'VisitasController@solicitudPase'
 
 Route::post('/visitas','VisitasController@altaVisita')->name('visita_crear');
 
-Route::get('/acreditacionCOVID19', 'VisitasController@acreditar')->name('acreditacion');
+Route::get('/pdf-tyc', 'VisitasController@getTyCVigentePDF')->name('pdf-tyc');
 
 //Route::resource('visitas', 'VisitasController');
 
-- 
GitLab


From 5e6bd266cb4ba02cacdf6d1858231c4c37c20b01 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Fri, 18 Sep 2020 10:50:19 -0300
Subject: [PATCH 14/20] Issue #46 - avances conexion con api

---
 .../Http/Controllers/VisitasController.php    | 31 +++++++++----------
 visitas/app/Providers/AppServiceProvider.php  |  3 +-
 .../app/Repositorios/GuzzleHttpRequest.php    | 14 +++++++++
 visitas/app/Repositorios/TupaApi.php          | 29 ++++++++---------
 visitas/routes/web.php                        |  3 +-
 5 files changed, 47 insertions(+), 33 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index 4e89b3be..e769e5b4 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -26,23 +26,25 @@ class VisitasController extends Controller
 
     public function altaVisita(Request $request)
     {
-        $this->visitas->postVisitante($request);
-        return $this->acreditar($request);
+        $visita = $this->visitas->postVisitante($request);
+        return $this->acreditar($visita);
     }
 
-    public function acreditar($datos=null)
+    public function acreditar($id)
     {
-        //TODO: Cambiar con los datos que retorna la api
         $codigoQrEjemplo = $this->generar_qr("www.unam.edu.ar/visitas", "124", "tosv2");
         $codigoqr = $codigoQrEjemplo;
+        $dv = $this->visitas->getVisitante($id['respuesta']);
+        $nombre = $dv['datos_personales']['nombre'];
+        $apellido = $dv['datos_personales']['apellido'];
+        $dni = $dv['datos_personales']['documentos'][0]['numero'];
+        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni'));
+    }
 
-        //$codigoqr = $datos->codigoqr;
-        $nombre =$datos->nombre;
-        $apellido =$datos->apellido;
-        $dni=$datos->dni;
-        $TyC = $this->visitas->getToS();
-        $TyC=$TyC[0]['contenido'];
-        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni','TyC'));
+    public function getPDFTyCVigente()
+    {
+        $id = $this->visitas->getToS();
+        return $this->visitas->getPDFToS($id[0]["codigo"]);
     }
 
     private function generar_qr(string $link = null, string $idVisitante = null, string $idTOS)
@@ -54,10 +56,5 @@ class VisitasController extends Controller
         }
     }
 
-    /*Este metodo devolveria Ruta al archivo pdf*/
-    function getTyCVigentePDF(){
-        $TyC = $this->visitas->getPdfTyC();
-        $TyC=$TyC[0]['contenido'];
-        return $TyC;
-    }
+
 }
diff --git a/visitas/app/Providers/AppServiceProvider.php b/visitas/app/Providers/AppServiceProvider.php
index 9222ee9d..42d3da74 100644
--- a/visitas/app/Providers/AppServiceProvider.php
+++ b/visitas/app/Providers/AppServiceProvider.php
@@ -15,8 +15,9 @@ class AppServiceProvider extends ServiceProvider
     public function register()
     {
         $this->app->singleton('GuzzleHttp\Client',function(){
+            $credenciales = json_decode(env('CREDENCIALES_API_BASIC_TUPA'));
             return new Client([
-                'base_uri' => 'http://localhost:9002/api/v1/',
+                'base_uri' => $credenciales[0][0],
             ]);
         });
     }
diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index d767746b..d0f74eb4 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -15,6 +15,7 @@ class GuzzleHttpRequest
     }
     public function get($url,$auth)
     {
+
         $response = $this->client->request('GET', $url,$auth);
         return json_decode($response->getBody(),true);
     }
@@ -24,4 +25,17 @@ class GuzzleHttpRequest
         $response = $this->client->request('POST', $url,$datos);
         return json_decode($response->getBody(),true);
     }
+    public function  getFile($url,$auth)    {
+        $resource = fopen('tycCovid19.pdf', 'w');
+        /*return  $this->client->request('GET', $url, [
+            'headers' => [
+                'Authorization'=> 'Basic ' . $auth,
+                'Content-Type' => 'application/pdf'
+            ],
+            'sink' => $resource,
+        ]);*/
+        return $this->client->request('GET', $url,$auth);
+    }
+
 }
+
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index 655b3391..bcc69db8 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -58,7 +58,6 @@ class TupaApi extends GuzzleHttpRequest
         $this->urlApi = $urlApi;
     }
 
-
     public function getCredAPI(){
         $this->credenciales = json_decode(env('CREDENCIALES_API_BASIC_TUPA'));
         $this->setUser($this->credenciales[0][0]);
@@ -66,6 +65,14 @@ class TupaApi extends GuzzleHttpRequest
         $this->setUrlApi($this->credenciales[0][2]);
     }
 
+    public function getVisitante($id){
+        $url = $this->getUrlApi() . '/visitantes/'.$id;
+        $auth = ['auth' => [$this->getUser(), $this->getPass()]];
+        return $this->get($url, $auth);
+    }
+    /*
+     *
+     * */
     public function getToS()
     {
         $this->getCredApi();
@@ -74,12 +81,16 @@ class TupaApi extends GuzzleHttpRequest
         return $this->get($url, $auth);
     }
 
-    public function getPdfPase($id)
+    public function getPDFToS($id)
     {
-        return $this->get("visitantes/{$id}");
+        $this->getCredApi();
+        $url = $this->getUrlApi() . "terminos-condiciones/{$id}/archivo";
+        //$auth = base64_encode("{$this->getUser()}:{$this->getPass()}");
+        $auth = ['auth' => [$this->getUser(), $this->getPass()]];
+        dd($this->getFile($url, $auth));
+       //return $this->getFile($url, $auth);
     }
 
-
     public function postVisitante($visita=array())
     {
         $this->getCredApi();
@@ -132,18 +143,8 @@ class TupaApi extends GuzzleHttpRequest
                         ),
                 ),
         );
-
         $datos = ['body' => json_encode($datos), 'auth' => [$this->getUser(), $this->getPass()]];
         $visita = $this->post($url,$datos);
-        $this->postVisita($visita['respuesta']);
         return $visita;
     }
-
-    function postVisita($id){
-        $this->getCredApi();
-        $tos = $this->getToS();
-        $url = $this->getUrlApi() . 'visitas/'.$id;
-        $datos = ['body' => json_encode(['terminos_condiciones'=>$tos[0]['codigo'],'sede'=>'1','tipo_visitante'=>'EXTERNO']), 'auth' => [$this->getUser(), $this->getPass()]];
-        $this->post($url,$datos);
-    }
 }
diff --git a/visitas/routes/web.php b/visitas/routes/web.php
index 3394704e..acd1b8e9 100644
--- a/visitas/routes/web.php
+++ b/visitas/routes/web.php
@@ -22,7 +22,8 @@ Route::match(['get', 'post'],'/solicitudPase', 'VisitasController@solicitudPase'
 
 Route::post('/visitas','VisitasController@altaVisita')->name('visita_crear');
 
-Route::get('/pdf-tyc', 'VisitasController@getTyCVigentePDF')->name('pdf-tyc');
+Route::get('/pdf-tyc', 'VisitasController@getPDFTyCVigente')->name('pdf-tyc');
+
 
 //Route::resource('visitas', 'VisitasController');
 
-- 
GitLab


From 79b3c580fd44f6da317b1a3ed28436c59a9d2647 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Fri, 18 Sep 2020 13:00:10 -0300
Subject: [PATCH 15/20] Issue #46 metodo devuele url de pdf tyc

---
 visitas/app/Http/Controllers/VisitasController.php | 10 +++++++++-
 visitas/app/Repositorios/GuzzleHttpRequest.php     | 14 +-------------
 visitas/app/Repositorios/TupaApi.php               |  5 +----
 3 files changed, 11 insertions(+), 18 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index e769e5b4..64a01875 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -35,10 +35,12 @@ class VisitasController extends Controller
         $codigoQrEjemplo = $this->generar_qr("www.unam.edu.ar/visitas", "124", "tosv2");
         $codigoqr = $codigoQrEjemplo;
         $dv = $this->visitas->getVisitante($id['respuesta']);
+
         $nombre = $dv['datos_personales']['nombre'];
         $apellido = $dv['datos_personales']['apellido'];
         $dni = $dv['datos_personales']['documentos'][0]['numero'];
-        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni'));
+        $pdf = $this->getPDFTyCVigente();
+        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni','pdf'));
     }
 
     public function getPDFTyCVigente()
@@ -47,6 +49,12 @@ class VisitasController extends Controller
         return $this->visitas->getPDFToS($id[0]["codigo"]);
     }
 
+    public function aceptarTyC($id)
+    {
+        $id = $this->visitas->getToS();
+        return $this->visitas->getPDFToS($id[0]["codigo"]);
+    }
+
     private function generar_qr(string $link = null, string $idVisitante = null, string $idTOS)
     {
 
diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index d0f74eb4..cc16ae62 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -5,7 +5,7 @@ namespace App\Repositorios;
 
 
 use GuzzleHttp\Client;
-
+use GuzzleHttp\Exception\GuzzleException;
 class GuzzleHttpRequest
 {
     protected $client;
@@ -25,17 +25,5 @@ class GuzzleHttpRequest
         $response = $this->client->request('POST', $url,$datos);
         return json_decode($response->getBody(),true);
     }
-    public function  getFile($url,$auth)    {
-        $resource = fopen('tycCovid19.pdf', 'w');
-        /*return  $this->client->request('GET', $url, [
-            'headers' => [
-                'Authorization'=> 'Basic ' . $auth,
-                'Content-Type' => 'application/pdf'
-            ],
-            'sink' => $resource,
-        ]);*/
-        return $this->client->request('GET', $url,$auth);
-    }
-
 }
 
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index bcc69db8..605d51b9 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -85,10 +85,7 @@ class TupaApi extends GuzzleHttpRequest
     {
         $this->getCredApi();
         $url = $this->getUrlApi() . "terminos-condiciones/{$id}/archivo";
-        //$auth = base64_encode("{$this->getUser()}:{$this->getPass()}");
-        $auth = ['auth' => [$this->getUser(), $this->getPass()]];
-        dd($this->getFile($url, $auth));
-       //return $this->getFile($url, $auth);
+        return $url;
     }
 
     public function postVisitante($visita=array())
-- 
GitLab


From e50cd276bc2ac9902c3cd1a85684c8d5c19c11e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Thu, 17 Sep 2020 15:36:01 -0300
Subject: [PATCH 16/20] Issue #46 - Se agrega post de Visita

---
 .../Http/Controllers/VisitasController.php    | 58 +++++++++----------
 visitas/app/Repositorios/TupaApi.php          | 30 +++++++++-
 visitas/routes/web.php                        |  1 -
 3 files changed, 53 insertions(+), 36 deletions(-)

diff --git a/visitas/app/Http/Controllers/VisitasController.php b/visitas/app/Http/Controllers/VisitasController.php
index 64a01875..e9d996d4 100644
--- a/visitas/app/Http/Controllers/VisitasController.php
+++ b/visitas/app/Http/Controllers/VisitasController.php
@@ -7,16 +7,21 @@ use App\Repositorios\TupaApi;
 
 class VisitasController extends Controller
 {
-    protected $visitas;
+    protected $tupaApi;
 
-    public function __construct(TupaApi $visitas)
+    public function __construct(TupaApi $api)
     {
-        $this->visitas = $visitas;
+        $this->tupaApi = $api;
     }
 
-    public function solicitudPase(Request $post)
+    public function solicitudPase(Request $request)
     {
-        if ($post->get('acepto_resolucion') && $post->get('acepto_declaracion')) {
+        if(session()->has('declaracionJurada') && session('declaracionJurada')){
+            return view('solicitudPase');
+        }
+
+        if ($request->get('acepto_resolucion') && $request->get('acepto_declaracion')) {
+            session(['declaracionJurada' => true]);
             return view('solicitudPase');
         } else {
             $error = ['error' => 'Debe leer y aceptar la declaración jurada para continuar'];
@@ -26,43 +31,32 @@ class VisitasController extends Controller
 
     public function altaVisita(Request $request)
     {
-        $visita = $this->visitas->postVisitante($request);
-        return $this->acreditar($visita);
-    }
+        $idVisitante = $this->tupaApi->postVisitante($request);
+        $idTosVigente = $this->getIdTyCVigente();
+        $this->tupaApi->putAceptarTerminos($idVisitante['respuesta'],$idTosVigente);
 
-    public function acreditar($id)
-    {
-        $codigoQrEjemplo = $this->generar_qr("www.unam.edu.ar/visitas", "124", "tosv2");
-        $codigoqr = $codigoQrEjemplo;
-        $dv = $this->visitas->getVisitante($id['respuesta']);
+        $datosVisitante = $request->only(['nombre','apellido','dni']);
 
-        $nombre = $dv['datos_personales']['nombre'];
-        $apellido = $dv['datos_personales']['apellido'];
-        $dni = $dv['datos_personales']['documentos'][0]['numero'];
-        $pdf = $this->getPDFTyCVigente();
-        return view('acreditacion', compact('nombre', 'codigoqr', 'apellido', 'dni','pdf'));
+        return $this->acreditar($idVisitante['respuesta'],$datosVisitante);
     }
 
-    public function getPDFTyCVigente()
+    public function acreditar(string $idVisitante,array $datosVisitante)
     {
-        $id = $this->visitas->getToS();
-        return $this->visitas->getPDFToS($id[0]["codigo"]);
+        $datosVisitante['codigoqr'] = base64_decode($this->tupaApi->getPaseQr($idVisitante)[0]);    
+
+        return view('acreditacion',$datosVisitante);
     }
 
-    public function aceptarTyC($id)
+
+    public function getUrlPDFTyC()
     {
-        $id = $this->visitas->getToS();
-        return $this->visitas->getPDFToS($id[0]["codigo"]);
+        $id = $this->tupaApi->getToS();
+        return $this->tupaApi->getUrlToS($id[0]["codigo"]);
     }
 
-    private function generar_qr(string $link = null, string $idVisitante = null, string $idTOS)
+    public function getIdTyCVigente()
     {
-
-        if (isset($link) && isset($idVisitante) && isset($idTOS)) {
-            $url = $link . "/" . $idVisitante . "/" . $idTOS;
-            return \QrCode::size(300)->generate($url);
-        }
+        $id = $this->tupaApi->getToS();
+        return $id[0]["codigo"];
     }
-
-
 }
diff --git a/visitas/app/Repositorios/TupaApi.php b/visitas/app/Repositorios/TupaApi.php
index 605d51b9..5911c655 100644
--- a/visitas/app/Repositorios/TupaApi.php
+++ b/visitas/app/Repositorios/TupaApi.php
@@ -76,15 +76,39 @@ class TupaApi extends GuzzleHttpRequest
     public function getToS()
     {
         $this->getCredApi();
-        $url = $this->getUrlApi() . '/terminos-condiciones';
+        $url = $this->getUrlApi() . '/terminos-condiciones?estado=es_igual_a%3BAC';
         $auth = ['auth' => [$this->getUser(), $this->getPass()]];
         return $this->get($url, $auth);
     }
 
-    public function getPDFToS($id)
+    public function getPaseQr($id_visitante)
     {
         $this->getCredApi();
-        $url = $this->getUrlApi() . "terminos-condiciones/{$id}/archivo";
+        $url = $this->getUrlApi () . "/pases/$id_visitante/qr";
+        $auth = ['auth' => [$this->getUser(), $this->getPass()]];
+        return $this->get($url, $auth);
+    }
+
+    public function putAceptarTerminos($id_visitante,$idTosVigente){
+        $this->getCredApi();
+        $url = $this->getUrlApi() . "/terminos-condiciones/$idTosVigente/aceptar";
+
+         $datos = array (
+            'tipo_visitante' => 'EXTERNO',
+            'visitante' => $id_visitante
+         );
+
+        $datos = ['body' => json_encode($datos), 'auth' => [$this->getUser(), $this->getPass()]];
+
+        $visita = $this->put($url,$datos);
+        return $visita;
+    }
+
+
+    public function getUrlToS($id)
+    {
+        $this->getCredApi();
+        $url = $this->getUrlApi() . "/terminos-condiciones/{$id}/archivo";
         return $url;
     }
 
diff --git a/visitas/routes/web.php b/visitas/routes/web.php
index acd1b8e9..945e084a 100644
--- a/visitas/routes/web.php
+++ b/visitas/routes/web.php
@@ -24,6 +24,5 @@ Route::post('/visitas','VisitasController@altaVisita')->name('visita_crear');
 
 Route::get('/pdf-tyc', 'VisitasController@getPDFTyCVigente')->name('pdf-tyc');
 
-
 //Route::resource('visitas', 'VisitasController');
 
-- 
GitLab


From ce01c4a478c5f2cf5228219c019715dcf2eac746 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Fri, 18 Sep 2020 10:50:19 -0300
Subject: [PATCH 17/20] Issue #46 - avances conexion con api

---
 visitas/app/Repositorios/GuzzleHttpRequest.php | 12 ++++++++++++
 visitas/routes/web.php                         |  3 ++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index cc16ae62..f17574cd 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -25,5 +25,17 @@ class GuzzleHttpRequest
         $response = $this->client->request('POST', $url,$datos);
         return json_decode($response->getBody(),true);
     }
+    public function  getFile($url,$auth)    {
+        $resource = fopen('tycCovid19.pdf', 'w');
+        /*return  $this->client->request('GET', $url, [
+            'headers' => [
+                'Authorization'=> 'Basic ' . $auth,
+                'Content-Type' => 'application/pdf'
+            ],
+            'sink' => $resource,
+        ]);*/
+        return $this->client->request('GET', $url,$auth);
+    }
+
 }
 
diff --git a/visitas/routes/web.php b/visitas/routes/web.php
index 945e084a..cdc8a80d 100644
--- a/visitas/routes/web.php
+++ b/visitas/routes/web.php
@@ -20,9 +20,10 @@ Route::view('/', 'declaracionJurada')->name('declaracion_jurada');
 
 Route::match(['get', 'post'],'/solicitudPase', 'VisitasController@solicitudPase')->name('solicitud_pase');
 
-Route::post('/visitas','VisitasController@altaVisita')->name('visita_crear');
+Route::post('/pase','VisitasController@altaVisita')->name('visita_crear');
 
 Route::get('/pdf-tyc', 'VisitasController@getPDFTyCVigente')->name('pdf-tyc');
 
+
 //Route::resource('visitas', 'VisitasController');
 
-- 
GitLab


From fc537c0a0d3329a865d680bc7e6a58038e126e06 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Fri, 18 Sep 2020 13:00:10 -0300
Subject: [PATCH 18/20] Issue #46 metodo devuele url de pdf tyc

---
 visitas/app/Repositorios/GuzzleHttpRequest.php | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index f17574cd..cc16ae62 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -25,17 +25,5 @@ class GuzzleHttpRequest
         $response = $this->client->request('POST', $url,$datos);
         return json_decode($response->getBody(),true);
     }
-    public function  getFile($url,$auth)    {
-        $resource = fopen('tycCovid19.pdf', 'w');
-        /*return  $this->client->request('GET', $url, [
-            'headers' => [
-                'Authorization'=> 'Basic ' . $auth,
-                'Content-Type' => 'application/pdf'
-            ],
-            'sink' => $resource,
-        ]);*/
-        return $this->client->request('GET', $url,$auth);
-    }
-
 }
 
-- 
GitLab


From a5cca0b2ef7416dcbdb3cef1ffc944070c980446 Mon Sep 17 00:00:00 2001
From: "luciano.cassettai" <luciano.cassettai@campus.unam.edu.ar>
Date: Fri, 18 Sep 2020 13:17:44 -0300
Subject: [PATCH 19/20] ADD: aceptacion de TOS y GET del pase QR

---
 visitas/app/Repositorios/GuzzleHttpRequest.php | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/visitas/app/Repositorios/GuzzleHttpRequest.php b/visitas/app/Repositorios/GuzzleHttpRequest.php
index cc16ae62..e9d0a741 100644
--- a/visitas/app/Repositorios/GuzzleHttpRequest.php
+++ b/visitas/app/Repositorios/GuzzleHttpRequest.php
@@ -25,5 +25,23 @@ class GuzzleHttpRequest
         $response = $this->client->request('POST', $url,$datos);
         return json_decode($response->getBody(),true);
     }
+
+     public function put($url,$datos)
+    {
+        $response = $this->client->request('PUT', $url,$datos);
+        return json_decode($response->getBody(),true);
+    }
+
+    public function  getFile($url,$auth)    {
+        $resource = fopen('tycCovid19.pdf', 'w');
+        /*return  $this->client->request('GET', $url, [
+            'headers' => [
+                'Authorization'=> 'Basic ' . $auth,
+                'Content-Type' => 'application/pdf'
+            ],
+            'sink' => $resource,
+        ]);*/
+        return $this->client->request('GET', $url,$auth);
+    }
 }
 
-- 
GitLab


From 001828aa5eaf0d2987216bbf2042987b7744f3e8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Sena?= <jsena@campus.unam.edu.ar>
Date: Mon, 21 Sep 2020 10:56:42 -0300
Subject: [PATCH 20/20] Mejora en get de TyC - Se quita boton "Enviar por
 email"

---
 visitas/resources/views/acreditacion.blade.php | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/visitas/resources/views/acreditacion.blade.php b/visitas/resources/views/acreditacion.blade.php
index 292737cd..35c6baea 100644
--- a/visitas/resources/views/acreditacion.blade.php
+++ b/visitas/resources/views/acreditacion.blade.php
@@ -23,10 +23,9 @@
                 Este código deberá mostrarlo cada vez que ingrese a las instalaciones de la UNAM. Puede imprimirlo o si prefiere se lo podemos enviar al correo electrónico que indico en la solicitud.
             </div>
             <div class="text-center no-imprimir">
-                <button class="btn btn-pers btn-lg" onClick="window.print()">Imprimir</button> &nbsp
-                <button class="btn btn-pers btn-lg">Enviar por correo</button>
+                <button class="btn btn-pers btn-lg" onClick="window.print()">Imprimir</button>
             </div>
         </div>
     </div>
 </div>
-@endsection
\ No newline at end of file
+@endsection
-- 
GitLab