Files
raby/common/Controller/Web/Admin/Documentos.php

76 lines
2.6 KiB
PHP
Raw Normal View History

2020-03-27 13:14:44 -03:00
<?php
namespace ProVM\NotariaRaby\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 Carbon\Carbon;
2020-03-27 13:14:44 -03:00
use ProVM\Common\Service\Filemanager;
class Documentos {
public function __invoke(Request $request, Response $response, Container $container, View $view, $tipo): Response {
$glob = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.upload'),
$tipo . '*.pdf'
]);
$files = glob($glob);
$archivos = [];
foreach ($files as $filename) {
$file = new \SplFileInfo($filename);
$archivos []= $file;
}
$titulo = $tipo;
$months = (object) ['full' => [], 'short' => []];
$m = Carbon::createFromDate(0, 1, 1);
for ($i = 0; $i < 12; $i ++) {
$months->full []= ucwords($m->copy()->addMonths($i)->locale('es_ES')->isoFormat('MMMM'));
$months->short []= ucwords($m->copy()->addMonths($i)->locale('es_ES')->isoFormat('MMM'));
}
return $view->render($response, 'admin.archivos.list', compact('titulo', 'archivos', 'months'));
}
2020-03-27 13:14:44 -03:00
public function upload(Request $request, Response $response, Filemanager $filemanager, Container $container): Response {
$post = $request->getParsedBody();
$files = $request->getUploadedFiles();
$file = $files['archivo'];
$filename = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.upload'),
$post['filename']
2020-03-27 13:14:44 -03:00
]);
if (isset($post['month'])) {
$filename .= '_' . implode('_', array_reverse(explode(' ', $post['month'])));
}
$filename .= '.pdf';
2020-03-27 13:14:44 -03:00
$file->moveTo($filename);
$status = (file_exists($filename) and filemtime($filename) == time());
$output = [
'informacion' => $post,
'estado' => $status,
'archivo' => $filename
];
$response->getBody()->write(json_encode($output));
return $response
->withHeader('Content-Type', 'application/json')
->withStatus(201);
}
public function delete(Request $request, Response $response, Container $container): Response {
$post = $request->getParsedBody();
$filename = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.upload'),
$post['archivo'] . '.pdf'
]);
$status = unlink($filename);
$output = [
'informacion' => $post,
'estado' => $status,
'archivo' => $filename
];
$response->getBody()->write(json_encode($output));
return $response
->withHeader('Content-Type', 'application/json')
->withStatus(201);
}
2020-03-27 13:14:44 -03:00
}