Se agrega seccion de evento

This commit is contained in:
2020-04-28 23:52:56 -04:00
parent a878d6bc77
commit 2a34fa368e
97 changed files with 275 additions and 67 deletions

View File

@ -0,0 +1,18 @@
<?php
namespace ProVM\TotalSport\Common\Controller\Web;
use Psr\Container\ContainerInterface as Container;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View;
use ProVM\TotalSport\Common\Service\DataHandler;
use ProVM\TotalSport\Common\Service\ImageLoader;
class Eventos {
public function __invoke(Request $request, Response $response, View $view, DataHandler $handler, ImageLoader $loader, $evento): Response {
$eventos = $handler->load('eventos');
$e = $eventos[$evento];
$imagenes = $loader->load($e);
return $view->render($response, 'evento', ['evento' => $e, 'imagenes' => $imagenes]);
}
}

View File

@ -5,15 +5,16 @@ use Psr\Container\ContainerInterface as Container;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View;
use Spyc;
use ProVM\TotalSport\Common\Service\DataHandler;
use ProVM\TotalSport\Common\Service\ImageLoader;
class Home {
public function __invoke(Request $request, Response $response, Container $container, View $view): Response {
public function __invoke(Request $request, Response $response, Container $container, View $view, DataHandler $handler, ImageLoader $loader): Response {
$banner = (object) [
'title' => 'BUSCAMOS LA MEJOR EXPERIENCA',
'contenido' => 'Eventos hechos a tu medida'
];
$servicios = $this->loadData($container, 'servicios');
$servicios = $handler->load('servicios');
$frase = (object) [
'titulo' => 'Lorem ipsum dolor sit amet, consectetur adipiscing',
'contenido' => 'elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation'
@ -23,25 +24,21 @@ class Home {
$clientes[$i] = '<div class="ui image"><img src="' . $container->get('urls')['images'] . '/clientes/logo_' . str_pad($i + 1, 2, '0', \STR_PAD_LEFT) . '.jpg" /></div>';
}
$testimonios = $this->loadData($container, 'testimonios');
$eventos = $this->loadData($container, 'eventos');
$testimonios = $handler->load('testimonios');
$eventos = $handler->load('eventos');
foreach ($eventos as &$evento) {
if (!isset($evento->image)) {
$evento->image = '<div class="ui fluid placeholder"><div class="rectangular image"></div></div>';
if (!isset($evento->imagen)) {
$evento->imagen = '#';
$imagenes = $loader->load($evento);
if ($imagenes !== false) {
$evento->imagen = $imagenes[0];
}
}
if (!isset($evento->servicio)) {
$evento->servicio = mt_rand(0, count($servicios) - 1);
}
}
return $view->render($response, 'home', compact('banner', 'servicios', 'frase', 'clientes', 'testimonios', 'eventos'));
}
protected function loadData(Container $container, string $file_name) {
$filename = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.data'),
$file_name . '.yml'
]);
return json_decode(json_encode(Spyc::YAMLLoad($filename)));
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace ProVM\TotalSport\Common\Service;
use Spyc;
class DataHandler {
protected $folder;
public function __construct(string $data_folder) {
$this->folder = $data_folder;
}
public function load(string $file_name) {
$filename = implode(DIRECTORY_SEPARATOR, [
$this->folder,
$file_name . '.yml'
]);
return json_decode(json_encode(Spyc::YAMLLoad($filename)));
}
}

View File

@ -0,0 +1,45 @@
<?php
namespace ProVM\TotalSport\Common\Service;
use function Stringy\create as s;
class ImageLoader {
protected $folder;
protected $assets_folder;
public function __construct(string $images_folder, string $images_assets_folder) {
$this->folder = $images_folder;
$this->assets_folder = $images_assets_folder;
}
public function load($event) {
$folder = implode(DIRECTORY_SEPARATOR, [
$this->folder,
'eventos',
s($event->servicio)->removeLeft('Eventos '),
implode(', ', [
$event->titulo,
$event->empresa
])
]);
if (!file_exists($folder)) {
return false;
}
$files = new \DirectoryIterator($folder);
$images = [];
foreach ($files as $file) {
if ($file->isDir()) {
continue;
}
$images []= implode('/', [
$this->assets_folder,
'eventos',
s($event->servicio)->removeLeft('Eventos '),
implode(', ', [
$event->titulo,
$event->empresa
]),
$file->getFilename()
]);
}
return $images;
}
}