Files
totalsport/common/Controller/Web/Admin/Galeria.php
2020-12-12 00:25:59 -03:00

161 lines
5.6 KiB
PHP

<?php
namespace ProVM\TotalSport\Common\Controller\Web\Admin;
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\MediaLoader;
class Galeria {
public function __invoke(Request $request, Response $response, View $view, DataHandler $handler): Response {
$galeria = $handler->load('galeria');
return $view->render($response, 'admin.galeria', compact('galeria'));
}
public function show(Request $request, Response $response, View $view, DataHandler $handler, MediaLoader $loader, $evento): Response {
$galeria = $handler->load('galeria');
$e = $galeria[$evento];
$e->id = $evento;
$imagenes = $loader->load($e);
$servicios = $handler->load('servicios');
return $view->render($response, 'admin.galeria.show', ['evento' => $e, 'imagenes' => $imagenes, 'servicios' => $servicios]);
}
public function edit(Request $request, Response $response, Container $container, DataHandler $handler, $evento): Response {
$galeria = $handler->load('galeria');
$e = $galeria[$evento];
$post = $request->getParsedBody();
$servicios = $handler->load('servicios');
$fields = ['titulo', 'empresa', 'servicio', 'descripcion'];
$changed = false;
foreach ($fields as $field) {
if ($post[$field] != $e->{$field}) {
$e->{$field} = $post[$field];
$changed = true;
}
}
if ($changed) {
$galeria[$evento] = $e;
$handler->save('galeria', $galeria);
}
return $response->withHeader('Location', implode('/', [
$container->get('urls')['admin'],
'galeria'
]));
}
public function add(Request $request, Response $response, View $view, DataHandler $handler): Response {
$servicios = $handler->load('servicios');
return $view->render($response, 'admin.galeria.add', compact('servicios'));
}
public function do_add(Request $request, Response $response, Container $container, DataHandler $handler): Response {
$post = $request->getParsedBody();
$galeria = $handler->load('galeria');
$evento = [
'titulo' => $post['titulo'],
'empresa' => $post['empresa'],
'servicio' => $post['servicio'],
'descripcion' => $post['descripcion']
];
$galeria []= $evento;
$status = $handler->save('galeria', $galeria);
return $response->withHeader('Location', implode('/', [
$container->get('urls')['admin'],
'galeria'
]));
}
public function delete(Request $request, Response $response, Container $container, DataHandler $handler, MediaLoader $loader, $evento): Response {
$galeria = $handler->load('galeria');
unset($galeria[$evento]);
$galeria = array_values($galeria);
$handler->save('galeria', $galeria);
return $response->withHeader('Location', implode('/', [
$container->get('urls')['admin'],
'galeria'
]));
}
public function addImage(Request $request, Response $response, DataHandler $handler, MediaLoader $loader, $evento): Response {
$post = $request->getParsedBody();
$files = $request->getUploadedFiles();
if (count($files) == 0) {
$output = [
'informacion' => '',
'evento' => $evento,
'estado' => false
];
$response->getBody()->write(json_encode($output));
return $response
->withHeader('Content-Type', 'application/json')
->withStatus(201);
}
$file = $files['imagen'];
$galeria = $handler->load('galeria');
$e = $galeria[$evento];
if (is_array($file)) {
$status = false;
foreach ($file as $f) {
$status |= $loader->add($e, $f);
}
} else {
$status = $loader->add($e, $file);
}
$output = [
'informacion' => $file,
'evento' => $e,
'estado' => $status
];
$response->getBody()->write(json_encode($output));
return $response
->withHeader('Content-Type', 'application/json')
->withStatus(201);
}
public function deleteImage(Request $request, Response $response, DataHandler $handler, MediaLoader $loader, $evento): Response {
$post = $request->getParsedBody();
$galeria = $handler->load('galeria');
$e = $egaleria[$evento];
$status = $loader->delete($e, $post['media']);
$output = [
'informacion' => $post,
'evento' => $e,
'estado' => !$status
];
$response->getBody()->write(json_encode($output));
return $response
->withHeader('Content-Type', 'application/json')
->withStatus(201);
}
public function addVideo(Request $request, Response $response, Container $container, DataHandler $handler, MediaLoader $loader, $evento): Response {
$post = $request->getParsedBody();
$files = $request->getUploadedFiles();
if (count($files) == 0) {
$output = [
'informacion' => '',
'evento' => $evento,
'estado' => false
];
$response->getBody()->write(json_encode($output));
return $response->withHeader('Location', implode('/', [
$container->get('urls')['admin'],
'evento',
$evento
]));
}
$file = $files['video'];
$galeria = $handler->load('galeria');
$e = $galeria[$evento];
if (is_array($file)) {
$status = false;
foreach ($file as $f) {
$status |= $loader->add($e, $f);
}
} else {
$status = $loader->add($e, $file);
}
$response->getBody()->write(json_encode($output));
return $response->withHeader('Location', implode('/', [
$container->get('urls')['admin'],
'evento',
$evento
]));
}
}