Files
PHP-App-Timekeeping/api/html/index.php
T

54 lines
2.3 KiB
PHP

<?php
require_once __DIR__ . '/../vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__));
$dotenv->load();
use DI\Container;
use Slim\Factory\AppFactory;
use Slim\Routing\RouteCollectorProxy;
use TorstenHettstedt\TimekeepingApi\Controller\PreflightController;
use TorstenHettstedt\TimekeepingApi\Controller\WorkingHoursController;
use TorstenHettstedt\TimekeepingApi\Controller\WorkingHoursViewController;
use TorstenHettstedt\TimekeepingApi\Middleware\ErrorHandler;
use TorstenHettstedt\TimekeepingApi\Middleware\JsonBodyParserMiddleware;
use TorstenHettstedt\TimekeepingApi\Middleware\OriginAccessControlHandler;
$container = new Container();
$container->set('databases', function () {
$dsn = "pgsql:host=${_ENV['DATABASES_HOST']};port=5432;dbname=${_ENV['DATABASES_NAME']}";
return new PDO($dsn, $_ENV['DATABASES_USER'], $_ENV['DATABASES_PASS']);
});
AppFactory::setContainer($container);
$app = AppFactory::create();
$app->add(new JsonBodyParserMiddleware());
$app->addBodyParsingMiddleware();
$app->add(new OriginAccessControlHandler());
$app->addRoutingMiddleware();
$app->group('/views/working-hours', function (RouteCollectorProxy $group) {
$group->options('/weekly', PreflightController::class . ':preflight');
$group->get('/weekly', WorkingHoursViewController::class . ':browseWeekly');
$group->options('/monthly', PreflightController::class . ':preflight');
$group->get('/monthly', WorkingHoursViewController::class . ':browseMonthly');
$group->options('/yearly', PreflightController::class . ':preflight');
$group->get('/yearly', WorkingHoursViewController::class . ':browseYearly');
});
$app->group('/working-hours', function (RouteCollectorProxy $group) {
$group->options('', PreflightController::class . ':preflight');
$group->get('', WorkingHoursController::class . ':browse');
$group->post('', WorkingHoursController::class . ':creat');
$group->group('/{id:\d\d\d\d-\d\d-\d\d}', function (RouteCollectorProxy $group) {
$group->options('', PreflightController::class . ':preflight');
$group->get('', WorkingHoursController::class . ':read');
$group->put('', WorkingHoursController::class . ':update');
});
});
$errorMiddleware = $app->addErrorMiddleware(true, true, true);
$errorMiddleware->setDefaultErrorHandler(new ErrorHandler($app));
$app->run();