72 lines
3.1 KiB
PHP
72 lines
3.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Chrosey\Inventur\Controller\ArticleController;
|
|
use Chrosey\Inventur\Controller\ArticleGroupController;
|
|
use Chrosey\Inventur\Controller\MigrationController;
|
|
use Chrosey\Inventur\Controller\DimensionController;
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
use Slim\Psr7\UploadedFile;
|
|
use Slim\Routing\RouteCollectorProxy;
|
|
use Chrosey\Inventur\Controller\SpreadsheetController;
|
|
use Chrosey\Inventur\Controller\VariantController;
|
|
|
|
$app->get('/', function (Request $request, Response $response, $args) {
|
|
return $this->get('view')->render($response, 'frontend.html', []);
|
|
})->setName('frontend');
|
|
|
|
$app->group('/api', function (RouteCollectorProxy $group): void {
|
|
$group->post('/artikel', ArticleController::class . ':create')->setName('article.create');
|
|
$group->post('/artikel/{id}', ArticleController::class . ':update')->setName('article.update');
|
|
$group->delete('/artikel/{id}', ArticleController::class . ':delete')->setName('article.delete');
|
|
$group->get('/artikel/{id}/varianten', VariantController::class . ':list')->setName('article.list.variants');
|
|
$group->post('/varianten', VariantController::class . ':create')->setName('variant.create');
|
|
$group->post('/varianten/{id}', VariantController::class . ':update')->setName('variant.update');
|
|
$group->delete('/varianten/{id}', VariantController::class . ':list')->setName('variant.delete');
|
|
$group->get('/artikel[/{location}]', ArticleController::class . ':list')->setName('article.list');
|
|
|
|
$group->get('/dimension', DimensionController::class . ':list')->setName('dimension.list');
|
|
$group->get('/group', ArticleGroupController::class . ':list')->setName('group.list');
|
|
|
|
$group->post('/inventur', function (Request $request, Response $response, $args) {
|
|
$directory = $this->get('upload_directory');
|
|
|
|
$uploadedFile = $request->getUploadedFiles()['file'];
|
|
|
|
if ($uploadedFile->getError() === UPLOAD_ERR_OK) {
|
|
$filename = moveUploadedFile($directory, $uploadedFile);
|
|
$response->getBody()->write('uploaded ' . $filename . '<br/>');
|
|
}
|
|
|
|
return $response;
|
|
});
|
|
|
|
$group->get('/excel', SpreadsheetController::class . ':create');
|
|
$group->get('/excel/download', SpreadsheetController::class . ':download');
|
|
});
|
|
|
|
$app->get('/migrate', MigrationController::class . ':migrate')->setName('migrate');
|
|
|
|
$app->get('/seed', MigrationController::class . ':seed')->setName('seed');
|
|
|
|
/**
|
|
* Move Uploaded File to Target Destination
|
|
*
|
|
* Create random hexName
|
|
*
|
|
* @param String $directory Target Direcotry
|
|
* @param UploadedFile $uploadedFile the File that was uploaded
|
|
**/
|
|
function moveUploadedFile(string $directory, UploadedFile $uploadedFile): string
|
|
{
|
|
$extension = pathinfo($uploadedFile->getClientFilename(), PATHINFO_EXTENSION);
|
|
$basename = bin2hex(random_bytes(8)); // see http://php.net/manual/en/function.random-bytes.php
|
|
$filename = sprintf('%s.%0.8s', $basename, $extension);
|
|
|
|
$uploadedFile->moveTo($directory . DIRECTORY_SEPARATOR . $filename);
|
|
|
|
return $filename;
|
|
}
|