From 17ec066110e4ec6201e647cabb2188964c81d904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danyi=20D=C3=A1vid?= Date: Sun, 11 Nov 2018 12:01:18 +0100 Subject: [PATCH] * initial commit --- .gitignore | 7 + README.md | 1 + bin/clear-config-cache.php | 46 + bin/cli | 18 + cli-config.php | 9 + composer.json | 76 + composer.lock | 5243 +++++++++++++++++ config/.gitignore | 1 + config/autoload/.gitignore | 2 + config/autoload/authx2.global.php | 93 + config/autoload/cli.global.php | 19 + config/autoload/dependencies.global.php | 43 + config/autoload/development.local.php.dist | 34 + config/autoload/doctrine.global.php | 74 + config/autoload/doctrine.local.dist.php | 14 + config/autoload/local.php.dist | 27 + config/autoload/mail.local.dist.php | 29 + config/autoload/router.global.php | 12 + config/autoload/zend-expressive.global.php | 27 + config/config.php | 36 + config/container.php | 16 + config/development.config.php.dist | 29 + config/pipeline.php | 58 + config/routes.php | 60 + data/.gitignore | 6 + data/fixture/error-category.yml | 86 + data/fixture/error-origin.yml | 31 + data/fixture/facility-location.yml | 2555 ++++++++ data/fixture/solution-time-interval.yml | 11 + data/fixture/user.yml | 255 + data/mail-template/faultFooter.txt | 3 + data/mail-template/faultHeader.txt | 10 + data/pdf-resources/asdf | 4 + data/pdf-resources/config/font-config.xml | 9 + data/pdf-resources/fonts/Times_New_Roman.ttf | Bin 0 -> 330412 bytes .../fonts/Times_New_Roman_Bold.ttf | Bin 0 -> 333900 bytes .../fonts/Times_New_Roman_Bold_Italic.ttf | Bin 0 -> 238612 bytes .../fonts/Times_New_Roman_Italic.ttf | Bin 0 -> 247092 bytes data/pdf-resources/laterex-logo.png | Bin 0 -> 8294 bytes data/pdf-template/maintenanceSheet-style.xml | 210 + data/pdf-template/maintenanceSheet.xml | 168 + data/pdf-template/monthlyReport-style.xml | 134 + data/pdf-template/monthlyReport.xml | 89 + data/pdf-template/monthlyReport/fault.xml | 8 + .../monthlyReport/faultCostItem.xml | 11 + .../monthlyReport/faultCostLate.xml | 11 + .../monthlyReport/faultCostWork.xml | 11 + data/pdf-template/monthlyReport/institute.xml | 7 + data/pdf-template/php-pdf.dtd | 245 + data/pdf-template/worksheet-style.xml | 210 + data/pdf-template/worksheet.xml | 192 + deploy.php | 62 + phpcs.xml.dist | 20 + phpunit.xml.dist | 17 + public/.htaccess | 17 + public/favicon.ico | Bin 0 -> 1406 bytes public/index.php | 29 + public/zf-logo.png | Bin 0 -> 600 bytes src/App/Action/AbstractCrudAction.php | 182 + src/App/Action/Auth/AuthAction.php | 83 + src/App/Action/Auth/AuthFactory.php | 15 + src/App/Action/ErrorCategoryAction.php | 51 + src/App/Action/ErrorCategoryFactory.php | 16 + src/App/Action/ErrorOriginAction.php | 51 + src/App/Action/ErrorOriginFactory.php | 16 + src/App/Action/FacilityLocationAction.php | 52 + src/App/Action/FacilityLocationFactory.php | 16 + src/App/Action/Fault/FaultAction.php | 122 + .../Action/Fault/FaultAttachmentAction.php | 104 + .../Action/Fault/FaultAttachmentFactory.php | 17 + src/App/Action/Fault/FaultCommentAction.php | 59 + src/App/Action/Fault/FaultCommentFactory.php | 15 + src/App/Action/Fault/FaultFactory.php | 15 + src/App/Action/Fault/FaultRejectAction.php | 59 + src/App/Action/Fault/FaultRejectFactory.php | 15 + src/App/Action/Fault/FaultS2ConfirmAction.php | 58 + .../Action/Fault/FaultS3AcknowledgeAction.php | 58 + .../Action/Fault/FaultS4RepairedAction.php | 58 + .../Action/Fault/FaultS5AcceptedAction.php | 58 + src/App/Action/MaintenanceAction.php | 68 + src/App/Action/MaintenanceFactory.php | 21 + src/App/Action/MaintenanceUpcomingAction.php | 37 + src/App/Action/MaintenanceUpcomingFactory.php | 21 + .../Pdf/GenerateMaintenanceSheetAction.php | 63 + .../Pdf/GenerateMaintenanceSheetFactory.php | 25 + .../Action/Pdf/GenerateWorksheetAction.php | 67 + .../Action/Pdf/GenerateWorksheetFactory.php | 19 + src/App/Action/PingAction.php | 16 + src/App/Action/SolutionTimeIntervalAction.php | 51 + .../Action/SolutionTimeIntervalFactory.php | 16 + src/App/Action/User/PasswordAction.php | 57 + src/App/Action/User/PasswordFactory.php | 16 + src/App/Action/User/UserAction.php | 93 + src/App/Action/User/UserFactory.php | 16 + .../Command/ConvertMaintenanceHashCommand.php | 60 + .../ConvertMaintenanceHashCommandFactory.php | 25 + src/App/Command/InitializeFixtureCommand.php | 34 + .../InitializeFixtureCommandFactory.php | 16 + src/App/Command/MailTestCommand.php | 33 + src/App/Command/MailTestCommandFactory.php | 16 + src/App/ConfigProvider.php | 95 + src/App/Entity/Attachment.php | 346 ++ src/App/Entity/AuthResponse.php | 66 + src/App/Entity/Device.php | 179 + src/App/Entity/DeviceGroup.php | 99 + src/App/Entity/DeviceMaintenanceTask.php | 247 + src/App/Entity/ErrorCategory.php | 154 + src/App/Entity/ErrorOrigin.php | 134 + src/App/Entity/FacilityLocation.php | 224 + src/App/Entity/FacilityLocationClosure.php | 15 + src/App/Entity/Fault.php | 940 +++ src/App/Entity/FaultComment.php | 164 + src/App/Entity/FaultSnapshot.php | 239 + src/App/Entity/Maintenance.php | 649 ++ src/App/Entity/SolutionTimeInterval.php | 133 + src/App/Entity/User.php | 354 ++ src/App/Fixture/ErrorCategoryLoader.php | 57 + src/App/Fixture/ErrorOriginLoader.php | 57 + src/App/Fixture/FacilityLocationLoader.php | 55 + .../Fixture/SolutionTimeIntervalLoader.php | 57 + src/App/Fixture/UserLoader.php | 91 + src/App/Hydrator/DoctrineObject.php | 594 ++ src/App/Hydrator/DoctrineObjectFactory.php | 15 + src/App/Hydrator/Filter/PropertyName.php | 66 + .../Strategy/AbstractCollectionStrategy.php | 190 + .../Strategy/AllowRemoveByReference.php | 58 + .../Hydrator/Strategy/AllowRemoveByValue.php | 76 + .../Strategy/DisallowRemoveByReference.php | 53 + .../Strategy/DisallowRemoveByValue.php | 72 + src/App/Middleware/CorsMiddlewareFactory.php | 45 + .../Middleware/JwtAuthenticationFactory.php | 69 + src/App/Middleware/RouteAuthorization.php | 75 + .../Middleware/RouteAuthorizationFactory.php | 19 + src/App/Response/JsonCorsResponse.php | 32 + src/App/Service/AuthService.php | 140 + src/App/Service/AuthServiceFactory.php | 17 + src/App/Service/ErrorCategoryService.php | 32 + .../Service/ErrorCategoryServiceFactory.php | 16 + src/App/Service/ErrorOriginService.php | 32 + src/App/Service/ErrorOriginServiceFactory.php | 16 + src/App/Service/FacilityLocationService.php | 61 + .../FacilityLocationServiceFactory.php | 16 + src/App/Service/FaultAttachmentService.php | 168 + .../Service/FaultAttachmentServiceFactory.php | 26 + src/App/Service/FaultManagerService.php | 470 ++ .../Service/FaultManagerServiceFactory.php | 25 + src/App/Service/FixtureLoaderService.php | 44 + .../Service/FixtureLoaderServiceFactory.php | 17 + src/App/Service/LoggerFactory.php | 23 + src/App/Service/MailerService.php | 130 + src/App/Service/MailerServiceFactory.php | 25 + src/App/Service/MaintenanceManagerService.php | 250 + .../MaintenanceManagerServiceFactory.php | 29 + src/App/Service/PdfService.php | 405 ++ src/App/Service/PdfServiceFactory.php | 20 + src/App/Service/RbaclFactory.php | 36 + .../Service/SolutionTimeIntervalService.php | 32 + .../SolutionTimeIntervalServiceFactory.php | 16 + src/App/Service/UserService.php | 102 + src/App/Service/UserServiceFactory.php | 19 + src/App/Service/XlsxParserService.php | 226 + src/App/Service/XlsxParserServiceFactory.php | 13 + test/AppTest/Action/HomePageActionTest.php | 52 + test/AppTest/Action/HomePageFactoryTest.php | 51 + test/AppTest/Action/PingActionTest.php | 26 + 165 files changed, 20529 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 bin/clear-config-cache.php create mode 100755 bin/cli create mode 100644 cli-config.php create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/.gitignore create mode 100644 config/autoload/.gitignore create mode 100644 config/autoload/authx2.global.php create mode 100644 config/autoload/cli.global.php create mode 100644 config/autoload/dependencies.global.php create mode 100644 config/autoload/development.local.php.dist create mode 100644 config/autoload/doctrine.global.php create mode 100644 config/autoload/doctrine.local.dist.php create mode 100644 config/autoload/local.php.dist create mode 100644 config/autoload/mail.local.dist.php create mode 100644 config/autoload/router.global.php create mode 100644 config/autoload/zend-expressive.global.php create mode 100644 config/config.php create mode 100644 config/container.php create mode 100644 config/development.config.php.dist create mode 100644 config/pipeline.php create mode 100644 config/routes.php create mode 100644 data/.gitignore create mode 100644 data/fixture/error-category.yml create mode 100644 data/fixture/error-origin.yml create mode 100644 data/fixture/facility-location.yml create mode 100644 data/fixture/solution-time-interval.yml create mode 100644 data/fixture/user.yml create mode 100644 data/mail-template/faultFooter.txt create mode 100644 data/mail-template/faultHeader.txt create mode 100644 data/pdf-resources/asdf create mode 100644 data/pdf-resources/config/font-config.xml create mode 100644 data/pdf-resources/fonts/Times_New_Roman.ttf create mode 100644 data/pdf-resources/fonts/Times_New_Roman_Bold.ttf create mode 100644 data/pdf-resources/fonts/Times_New_Roman_Bold_Italic.ttf create mode 100644 data/pdf-resources/fonts/Times_New_Roman_Italic.ttf create mode 100644 data/pdf-resources/laterex-logo.png create mode 100644 data/pdf-template/maintenanceSheet-style.xml create mode 100644 data/pdf-template/maintenanceSheet.xml create mode 100644 data/pdf-template/monthlyReport-style.xml create mode 100644 data/pdf-template/monthlyReport.xml create mode 100644 data/pdf-template/monthlyReport/fault.xml create mode 100644 data/pdf-template/monthlyReport/faultCostItem.xml create mode 100644 data/pdf-template/monthlyReport/faultCostLate.xml create mode 100644 data/pdf-template/monthlyReport/faultCostWork.xml create mode 100644 data/pdf-template/monthlyReport/institute.xml create mode 100644 data/pdf-template/php-pdf.dtd create mode 100644 data/pdf-template/worksheet-style.xml create mode 100644 data/pdf-template/worksheet.xml create mode 100644 deploy.php create mode 100644 phpcs.xml.dist create mode 100644 phpunit.xml.dist create mode 100644 public/.htaccess create mode 100644 public/favicon.ico create mode 100644 public/index.php create mode 100644 public/zf-logo.png create mode 100644 src/App/Action/AbstractCrudAction.php create mode 100644 src/App/Action/Auth/AuthAction.php create mode 100644 src/App/Action/Auth/AuthFactory.php create mode 100644 src/App/Action/ErrorCategoryAction.php create mode 100644 src/App/Action/ErrorCategoryFactory.php create mode 100644 src/App/Action/ErrorOriginAction.php create mode 100644 src/App/Action/ErrorOriginFactory.php create mode 100644 src/App/Action/FacilityLocationAction.php create mode 100644 src/App/Action/FacilityLocationFactory.php create mode 100644 src/App/Action/Fault/FaultAction.php create mode 100644 src/App/Action/Fault/FaultAttachmentAction.php create mode 100644 src/App/Action/Fault/FaultAttachmentFactory.php create mode 100644 src/App/Action/Fault/FaultCommentAction.php create mode 100644 src/App/Action/Fault/FaultCommentFactory.php create mode 100644 src/App/Action/Fault/FaultFactory.php create mode 100644 src/App/Action/Fault/FaultRejectAction.php create mode 100644 src/App/Action/Fault/FaultRejectFactory.php create mode 100644 src/App/Action/Fault/FaultS2ConfirmAction.php create mode 100644 src/App/Action/Fault/FaultS3AcknowledgeAction.php create mode 100644 src/App/Action/Fault/FaultS4RepairedAction.php create mode 100644 src/App/Action/Fault/FaultS5AcceptedAction.php create mode 100644 src/App/Action/MaintenanceAction.php create mode 100644 src/App/Action/MaintenanceFactory.php create mode 100644 src/App/Action/MaintenanceUpcomingAction.php create mode 100644 src/App/Action/MaintenanceUpcomingFactory.php create mode 100644 src/App/Action/Pdf/GenerateMaintenanceSheetAction.php create mode 100644 src/App/Action/Pdf/GenerateMaintenanceSheetFactory.php create mode 100644 src/App/Action/Pdf/GenerateWorksheetAction.php create mode 100644 src/App/Action/Pdf/GenerateWorksheetFactory.php create mode 100644 src/App/Action/PingAction.php create mode 100644 src/App/Action/SolutionTimeIntervalAction.php create mode 100644 src/App/Action/SolutionTimeIntervalFactory.php create mode 100644 src/App/Action/User/PasswordAction.php create mode 100644 src/App/Action/User/PasswordFactory.php create mode 100644 src/App/Action/User/UserAction.php create mode 100644 src/App/Action/User/UserFactory.php create mode 100644 src/App/Command/ConvertMaintenanceHashCommand.php create mode 100644 src/App/Command/ConvertMaintenanceHashCommandFactory.php create mode 100644 src/App/Command/InitializeFixtureCommand.php create mode 100644 src/App/Command/InitializeFixtureCommandFactory.php create mode 100644 src/App/Command/MailTestCommand.php create mode 100644 src/App/Command/MailTestCommandFactory.php create mode 100644 src/App/ConfigProvider.php create mode 100644 src/App/Entity/Attachment.php create mode 100644 src/App/Entity/AuthResponse.php create mode 100644 src/App/Entity/Device.php create mode 100644 src/App/Entity/DeviceGroup.php create mode 100644 src/App/Entity/DeviceMaintenanceTask.php create mode 100644 src/App/Entity/ErrorCategory.php create mode 100644 src/App/Entity/ErrorOrigin.php create mode 100644 src/App/Entity/FacilityLocation.php create mode 100644 src/App/Entity/FacilityLocationClosure.php create mode 100644 src/App/Entity/Fault.php create mode 100644 src/App/Entity/FaultComment.php create mode 100644 src/App/Entity/FaultSnapshot.php create mode 100644 src/App/Entity/Maintenance.php create mode 100644 src/App/Entity/SolutionTimeInterval.php create mode 100644 src/App/Entity/User.php create mode 100644 src/App/Fixture/ErrorCategoryLoader.php create mode 100644 src/App/Fixture/ErrorOriginLoader.php create mode 100644 src/App/Fixture/FacilityLocationLoader.php create mode 100644 src/App/Fixture/SolutionTimeIntervalLoader.php create mode 100644 src/App/Fixture/UserLoader.php create mode 100644 src/App/Hydrator/DoctrineObject.php create mode 100644 src/App/Hydrator/DoctrineObjectFactory.php create mode 100644 src/App/Hydrator/Filter/PropertyName.php create mode 100644 src/App/Hydrator/Strategy/AbstractCollectionStrategy.php create mode 100644 src/App/Hydrator/Strategy/AllowRemoveByReference.php create mode 100644 src/App/Hydrator/Strategy/AllowRemoveByValue.php create mode 100644 src/App/Hydrator/Strategy/DisallowRemoveByReference.php create mode 100644 src/App/Hydrator/Strategy/DisallowRemoveByValue.php create mode 100644 src/App/Middleware/CorsMiddlewareFactory.php create mode 100644 src/App/Middleware/JwtAuthenticationFactory.php create mode 100644 src/App/Middleware/RouteAuthorization.php create mode 100644 src/App/Middleware/RouteAuthorizationFactory.php create mode 100644 src/App/Response/JsonCorsResponse.php create mode 100644 src/App/Service/AuthService.php create mode 100644 src/App/Service/AuthServiceFactory.php create mode 100644 src/App/Service/ErrorCategoryService.php create mode 100644 src/App/Service/ErrorCategoryServiceFactory.php create mode 100644 src/App/Service/ErrorOriginService.php create mode 100644 src/App/Service/ErrorOriginServiceFactory.php create mode 100644 src/App/Service/FacilityLocationService.php create mode 100644 src/App/Service/FacilityLocationServiceFactory.php create mode 100644 src/App/Service/FaultAttachmentService.php create mode 100644 src/App/Service/FaultAttachmentServiceFactory.php create mode 100644 src/App/Service/FaultManagerService.php create mode 100644 src/App/Service/FaultManagerServiceFactory.php create mode 100644 src/App/Service/FixtureLoaderService.php create mode 100644 src/App/Service/FixtureLoaderServiceFactory.php create mode 100644 src/App/Service/LoggerFactory.php create mode 100644 src/App/Service/MailerService.php create mode 100644 src/App/Service/MailerServiceFactory.php create mode 100644 src/App/Service/MaintenanceManagerService.php create mode 100644 src/App/Service/MaintenanceManagerServiceFactory.php create mode 100644 src/App/Service/PdfService.php create mode 100644 src/App/Service/PdfServiceFactory.php create mode 100644 src/App/Service/RbaclFactory.php create mode 100644 src/App/Service/SolutionTimeIntervalService.php create mode 100644 src/App/Service/SolutionTimeIntervalServiceFactory.php create mode 100644 src/App/Service/UserService.php create mode 100644 src/App/Service/UserServiceFactory.php create mode 100644 src/App/Service/XlsxParserService.php create mode 100644 src/App/Service/XlsxParserServiceFactory.php create mode 100644 test/AppTest/Action/HomePageActionTest.php create mode 100644 test/AppTest/Action/HomePageFactoryTest.php create mode 100644 test/AppTest/Action/PingActionTest.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4da80f1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.idea +composer.phar + +clover.xml +coveralls-upload.json +phpunit.xml +vendor/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..dfb1a34 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Webnaplo Gül-Baba diff --git a/bin/clear-config-cache.php b/bin/clear-config-cache.php new file mode 100644 index 0000000..50a14ce --- /dev/null +++ b/bin/clear-config-cache.php @@ -0,0 +1,46 @@ +get('config')['console']['commands']; +foreach ($commands as $command) { + $application->add($container->get($command)); +} + +$application->run(); diff --git a/cli-config.php b/cli-config.php new file mode 100644 index 0000000..b555030 --- /dev/null +++ b/cli-config.php @@ -0,0 +1,9 @@ + new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper( + $container->get('doctrine.entity_manager.orm_default') + ), +]); \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..ea5e333 --- /dev/null +++ b/composer.json @@ -0,0 +1,76 @@ +{ + "name": "zendframework/zend-expressive-skeleton", + "description": "Zend expressive skeleton. Begin developing PSR-7 middleware applications in seconds!", + "type": "project", + "homepage": "https://github.com/zendframework/zend-expressive-skeleton", + "license": "BSD-3-Clause", + "config": { + "sort-packages": true + }, + "minimum-stability": "dev", + "prefer-stable": true, + "require": { + "php": "^7.1", + "dasprid/container-interop-doctrine": "^1.0", + "doctrine/data-fixtures": "^1.2", + "gedmo/doctrine-extensions": "^2.4", + "imagine/imagine": "^0.7.1", + "lcobucci/jwt": "^3.2", + "monolog/monolog": "^1.23", + "oro/doctrine-extensions": "^1.2", + "phpoffice/phpexcel": "1.8.1", + "psliwa/php-pdf": "^1.2", + "roave/security-advisories": "dev-master", + "symfony/yaml": "^3.3", + "tuupola/cors-middleware": "^0.5.2", + "tuupola/slim-jwt-auth": "^2.3", + "zendframework/zend-component-installer": "^1.0", + "zendframework/zend-config": "^3.1", + "zendframework/zend-config-aggregator": "^1.0", + "zendframework/zend-crypt": "^3.2", + "zendframework/zend-expressive": "^2.0.2", + "zendframework/zend-expressive-fastroute": "^2.0", + "zendframework/zend-expressive-helpers": "^4.0", + "zendframework/zend-hydrator": "^2.2", + "zendframework/zend-json": "^3.0", + "zendframework/zend-mail": "^2.8", + "zendframework/zend-permissions-rbac": "^2.5", + "zendframework/zend-servicemanager": "^3.3", + "zendframework/zend-stdlib": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "squizlabs/php_codesniffer": "^2.8.1", + "zfcampus/zf-development-mode": "^3.1", + "filp/whoops": "^2.1.7" + }, + "autoload": { + "psr-4": { + "App\\": "src/App/" + } + }, + "autoload-dev": { + "psr-4": { + "AppTest\\": "test/AppTest/" + } + }, + "scripts": { + "post-create-project-cmd": [ + "@development-enable" + ], + "development-disable": "zf-development-mode disable", + "development-enable": "zf-development-mode enable", + "development-status": "zf-development-mode status", + "check": [ + "@cs-check", + "@test" + ], + "clear-config-cache": "php bin/clear-config-cache.php", + "cs-check": "phpcs", + "cs-fix": "phpcbf", + "serve": "php -S 0.0.0.0:8888 -t public public/index.php", + "test": "phpunit --colors=always", + "test-coverage": "phpunit --colors=always --coverage-clover clover.xml", + "upload-coverage": "coveralls -v" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..8af2144 --- /dev/null +++ b/composer.lock @@ -0,0 +1,5243 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "d56bfbdbd812dad68abdf21910e4ed01", + "packages": [ + { + "name": "behat/transliterator", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Transliterator.git", + "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Transliterator/zipball/826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", + "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "chuyskywalker/rolling-curl": "^3.1", + "php-yaoi/php-yaoi": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Transliterator": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Artistic-1.0" + ], + "description": "String transliterator", + "keywords": [ + "i18n", + "slug", + "transliterator" + ], + "time": "2017-04-04T11:38:05+00:00" + }, + { + "name": "container-interop/container-interop", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "shasum": "" + }, + "require": { + "psr/container": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Interop\\Container\\": "src/Interop/Container/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "homepage": "https://github.com/container-interop/container-interop", + "time": "2017-02-14T19:40:03+00:00" + }, + { + "name": "dasprid/container-interop-doctrine", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/DASPRiD/container-interop-doctrine.git", + "reference": "b9f3afc00ce997e469d7fdd6fed7b8d400763290" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DASPRiD/container-interop-doctrine/zipball/b9f3afc00ce997e469d7fdd6fed7b8d400763290", + "reference": "b9f3afc00ce997e469d7fdd6fed7b8d400763290", + "shasum": "" + }, + "require": { + "doctrine/common": "^2.6", + "doctrine/dbal": "^2.5", + "doctrine/orm": "^2.5", + "php": "^5.5|^7.0", + "psr/container": "^1.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8", + "squizlabs/php_codesniffer": "^2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "ContainerInteropDoctrine\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "description": "Doctrine factories for container-interop", + "homepage": "https://github.com/DASPRiD/container-interop-doctrine", + "time": "2018-01-24T23:25:49+00:00" + }, + { + "name": "doctrine/annotations", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2017-12-06T07:11:42+00:00" + }, + { + "name": "doctrine/cache", + "version": "v1.7.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/b3217d58609e9c8e661cd41357a54d926c4a2a1a", + "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a", + "shasum": "" + }, + "require": { + "php": "~7.1" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^5.7", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2017-08-25T07:02:50+00:00" + }, + { + "name": "doctrine/collections", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "~0.1@dev", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Collections\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ], + "time": "2017-07-22T10:37:32+00:00" + }, + { + "name": "doctrine/common", + "version": "v2.8.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/f68c297ce6455e8fd794aa8ffaf9fa458f6ade66", + "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "doctrine/cache": "1.*", + "doctrine/collections": "1.*", + "doctrine/inflector": "1.*", + "doctrine/lexer": "1.*", + "php": "~7.1" + }, + "require-dev": { + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common Library for Doctrine projects", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "collections", + "eventmanager", + "persistence", + "spl" + ], + "time": "2017-08-31T08:43:38+00:00" + }, + { + "name": "doctrine/data-fixtures", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/data-fixtures.git", + "reference": "7b76ccc8e648c4502aad7f61347326c8a072bd3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/7b76ccc8e648c4502aad7f61347326c8a072bd3b", + "reference": "7b76ccc8e648c4502aad7f61347326c8a072bd3b", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.2", + "php": "^7.1" + }, + "require-dev": { + "doctrine/dbal": "^2.5.4", + "doctrine/orm": "^2.5.4", + "phpunit/phpunit": "^6.3" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "For using MongoDB ODM with PHP 7", + "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", + "doctrine/orm": "For loading ORM fixtures", + "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Data Fixtures for all Doctrine Object Managers", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database" + ], + "time": "2017-11-27T18:48:06+00:00" + }, + { + "name": "doctrine/dbal", + "version": "v2.6.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "e3eed9b1facbb0ced3a0995244843a189e7d1b13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/e3eed9b1facbb0ced3a0995244843a189e7d1b13", + "reference": "e3eed9b1facbb0ced3a0995244843a189e7d1b13", + "shasum": "" + }, + "require": { + "doctrine/common": "^2.7.1", + "ext-pdo": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^5.4.6", + "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", + "symfony/console": "2.*||^3.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\DBAL\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Database Abstraction Layer", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "persistence", + "queryobject" + ], + "time": "2017-11-19T13:38:54+00:00" + }, + { + "name": "doctrine/inflector", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" + ], + "time": "2018-01-09T20:05:19+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09T13:34:57+00:00" + }, + { + "name": "doctrine/orm", + "version": "v2.6.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/doctrine2.git", + "reference": "374e7ace49d864dad8cddbc55346447c8a6a2083" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/374e7ace49d864dad8cddbc55346447c8a6a2083", + "reference": "374e7ace49d864dad8cddbc55346447c8a6a2083", + "shasum": "" + }, + "require": { + "doctrine/annotations": "~1.5", + "doctrine/cache": "~1.6", + "doctrine/collections": "^1.4", + "doctrine/common": "^2.7.1", + "doctrine/dbal": "^2.6", + "doctrine/instantiator": "~1.1", + "ext-pdo": "*", + "php": "^7.1", + "symfony/console": "~3.0|~4.0" + }, + "require-dev": { + "doctrine/coding-standard": "^1.0", + "phpunit/phpunit": "^6.5", + "squizlabs/php_codesniffer": "^3.2", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" + }, + "bin": [ + "bin/doctrine" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\ORM\\": "lib/Doctrine/ORM" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Object-Relational-Mapper for PHP", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "orm" + ], + "time": "2017-12-20T00:38:15+00:00" + }, + { + "name": "fig/http-message-util", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "20b2c280cb6914b7b83089720df44e490f4b42f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/20b2c280cb6914b7b83089720df44e490f4b42f0", + "reference": "20b2c280cb6914b7b83089720df44e490f4b42f0", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2017-02-09T16:10:21+00:00" + }, + { + "name": "firebase/php-jwt", + "version": "v5.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "9984a4d3a32ae7673d6971ea00bae9d0a1abba0e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/9984a4d3a32ae7673d6971ea00bae9d0a1abba0e", + "reference": "9984a4d3a32ae7673d6971ea00bae9d0a1abba0e", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": " 4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "time": "2017-06-27T22:17:23+00:00" + }, + { + "name": "gedmo/doctrine-extensions", + "version": "v2.4.33", + "source": { + "type": "git", + "url": "https://github.com/Atlantic18/DoctrineExtensions.git", + "reference": "d5fdc573b6a2ecfa29c070ecb3db8397ac55ed78" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/d5fdc573b6a2ecfa29c070ecb3db8397ac55ed78", + "reference": "d5fdc573b6a2ecfa29c070ecb3db8397ac55ed78", + "shasum": "" + }, + "require": { + "behat/transliterator": "~1.2", + "doctrine/common": "~2.4", + "php": ">=5.3.2" + }, + "require-dev": { + "doctrine/common": ">=2.5.0", + "doctrine/mongodb-odm": ">=1.0.2", + "doctrine/orm": ">=2.5.0", + "phpunit/phpunit": "*", + "symfony/yaml": "~2.6|~3.0|~4.0" + }, + "suggest": { + "doctrine/mongodb-odm": "to use the extensions with the MongoDB ODM", + "doctrine/orm": "to use the extensions with the ORM" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Gedmo\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "David Buchmann", + "email": "david@liip.ch" + }, + { + "name": "Gediminas Morkevicius", + "email": "gediminas.morkevicius@gmail.com" + }, + { + "name": "Gustavo Falco", + "email": "comfortablynumb84@gmail.com" + } + ], + "description": "Doctrine2 behavioral extensions", + "homepage": "http://gediminasm.org/", + "keywords": [ + "Blameable", + "behaviors", + "doctrine2", + "extensions", + "gedmo", + "loggable", + "nestedset", + "sluggable", + "sortable", + "timestampable", + "translatable", + "tree", + "uploadable" + ], + "time": "2018-01-08T14:13:45+00:00" + }, + { + "name": "http-interop/http-middleware", + "version": "0.4.1", + "source": { + "type": "git", + "url": "https://github.com/http-interop/http-middleware.git", + "reference": "9a801fe60e70d5d608b61d56b2dcde29516c81b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/http-interop/http-middleware/zipball/9a801fe60e70d5d608b61d56b2dcde29516c81b9", + "reference": "9a801fe60e70d5d608b61d56b2dcde29516c81b9", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Interop\\Http\\ServerMiddleware\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side middleware", + "keywords": [ + "factory", + "http", + "middleware", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "abandoned": "http-interop/http-server-middleware", + "time": "2017-01-14T15:23:42+00:00" + }, + { + "name": "imagine/imagine", + "version": "v0.7.1", + "source": { + "type": "git", + "url": "https://github.com/avalanche123/Imagine.git", + "reference": "a9a702a946073cbca166718f1b02a1e72d742daa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/avalanche123/Imagine/zipball/a9a702a946073cbca166718f1b02a1e72d742daa", + "reference": "a9a702a946073cbca166718f1b02a1e72d742daa", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "sami/sami": "^3.3", + "symfony/phpunit-bridge": "^3.2" + }, + "suggest": { + "ext-gd": "to use the GD implementation", + "ext-gmagick": "to use the Gmagick implementation", + "ext-imagick": "to use the Imagick implementation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.7-dev" + } + }, + "autoload": { + "psr-0": { + "Imagine": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bulat Shakirzyanov", + "email": "mallluhuct@gmail.com", + "homepage": "http://avalanche123.com" + } + ], + "description": "Image processing for PHP 5.3", + "homepage": "http://imagine.readthedocs.org/", + "keywords": [ + "drawing", + "graphics", + "image manipulation", + "image processing" + ], + "time": "2017-05-16T10:31:22+00:00" + }, + { + "name": "lcobucci/jwt", + "version": "3.2.2", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "0b5930be73582369e10c4d4bb7a12bac927a203c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/0b5930be73582369e10c4d4bb7a12bac927a203c", + "reference": "0b5930be73582369e10c4d4bb7a12bac927a203c", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "php": ">=5.5" + }, + "require-dev": { + "mdanter/ecc": "~0.3.1", + "mikey179/vfsstream": "~1.5", + "phpmd/phpmd": "~2.2", + "phpunit/php-invoker": "~1.1", + "phpunit/phpunit": "~4.5", + "squizlabs/php_codesniffer": "~2.3" + }, + "suggest": { + "mdanter/ecc": "Required to use Elliptic Curves based algorithms." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Otávio Cobucci Oblonczyk", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "time": "2017-09-01T08:23:26+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.23.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2017-06-19T01:22:40+00:00" + }, + { + "name": "neomerx/cors-psr7", + "version": "v1.0.12", + "source": { + "type": "git", + "url": "https://github.com/neomerx/cors-psr7.git", + "reference": "24944f39483d1a89f66ae9d58cca9f82b8815b35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/neomerx/cors-psr7/zipball/24944f39483d1a89f66ae9d58cca9f82b8815b35", + "reference": "24944f39483d1a89f66ae9d58cca9f82b8815b35", + "shasum": "" + }, + "require": { + "php": ">=5.6.0", + "psr/http-message": "^1.0", + "psr/log": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.9", + "phpunit/phpunit": "^5.7", + "scrutinizer/ocular": "^1.1", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Neomerx\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "neomerx", + "email": "info@neomerx.com" + } + ], + "description": "Framework agnostic (PSR-7) CORS implementation (www.w3.org/TR/cors/)", + "homepage": "https://github.com/neomerx/cors-psr7", + "keywords": [ + "Cross Origin Resource Sharing", + "Cross-Origin Resource Sharing", + "cors", + "neomerx", + "psr-7", + "psr7", + "w3.org", + "www.w3.org" + ], + "time": "2017-09-03T22:31:57+00:00" + }, + { + "name": "nikic/fast-route", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/FastRoute.git", + "reference": "b5f95749071c82a8e0f58586987627054400cdf6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/FastRoute/zipball/b5f95749071c82a8e0f58586987627054400cdf6", + "reference": "b5f95749071c82a8e0f58586987627054400cdf6", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "FastRoute\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "description": "Fast request router for PHP", + "keywords": [ + "router", + "routing" + ], + "time": "2017-01-19T11:35:12+00:00" + }, + { + "name": "oro/doctrine-extensions", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/orocrm/doctrine-extensions.git", + "reference": "26f38a2065d36d308331ccecb0b5ef31d61541d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orocrm/doctrine-extensions/zipball/26f38a2065d36d308331ccecb0b5ef31d61541d2", + "reference": "26f38a2065d36d308331ccecb0b5ef31d61541d2", + "shasum": "" + }, + "require": { + "doctrine/orm": ">=2.2.3", + "php": ">=5.3.0" + }, + "require-dev": { + "doctrine/data-fixtures": "^1.0", + "doctrine/orm": "<2.5.0", + "phpunit/phpunit": "4.*", + "squizlabs/php_codesniffer": "2.8.*", + "symfony/yaml": "2.*" + }, + "type": "library", + "autoload": { + "psr-0": { + "Oro\\DBAL": "src/", + "Oro\\ORM": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oro, Inc", + "homepage": "http://www.orocrm.com" + } + ], + "description": "Doctrine Extensions for MySQL and PostgreSQL.", + "homepage": "https://github.com/orocrm/doctrine-extensions/", + "keywords": [ + "database", + "doctrine", + "dql", + "function", + "mysql", + "postgresql", + "type" + ], + "time": "2017-07-17T10:33:16+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v2.0.11", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8", + "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "pseudorandom", + "random" + ], + "time": "2017-09-27T21:40:39+00:00" + }, + { + "name": "phpoffice/phpexcel", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PHPExcel.git", + "reference": "372c7cbb695a6f6f1e62649381aeaa37e7e70b32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PHPExcel/zipball/372c7cbb695a6f6f1e62649381aeaa37e7e70b32", + "reference": "372c7cbb695a6f6f1e62649381aeaa37e7e70b32", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "ext-xmlwriter": "*", + "php": ">=5.2.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "PHPExcel": "Classes/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL" + ], + "authors": [ + { + "name": "Maarten Balliauw", + "homepage": "http://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker" + }, + { + "name": "Franck Lefevre", + "homepage": "http://blog.rootslabs.net" + }, + { + "name": "Erik Tilt" + } + ], + "description": "PHPExcel - OpenXML - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "http://phpexcel.codeplex.com", + "keywords": [ + "OpenXML", + "excel", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "abandoned": "phpoffice/phpspreadsheet", + "time": "2015-05-01T07:00:55+00:00" + }, + { + "name": "psliwa/php-pdf", + "version": "1.2.10", + "source": { + "type": "git", + "url": "https://github.com/psliwa/PHPPdf.git", + "reference": "7055c857a34003b8bf2af6200d5fad18360a67a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psliwa/PHPPdf/zipball/7055c857a34003b8bf2af6200d5fad18360a67a6", + "reference": "7055c857a34003b8bf2af6200d5fad18360a67a6", + "shasum": "" + }, + "require": { + "zendframework/zend-cache": "^2.0", + "zendframework/zendpdf": "~2.0.0" + }, + "require-dev": { + "imagine/imagine": ">=0.2.0,<0.6.0", + "phpunit/phpunit": ">=4,<5.4.0", + "zendframework/zend-barcode": "^2.0", + "zendframework/zend-validator": "^2.0" + }, + "suggest": { + "imagine/Imagine": "If you want to use image generating (required version: >=v0.2.6)", + "zendframework/zend-barcode": "If you want to use barcodes", + "zendframework/zend-validator": "If you want to use barcodes (required by zend-barcode)" + }, + "type": "library", + "autoload": { + "psr-0": { + "PHPPdf": "lib/", + "Imagine": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Piotr Śliwa", + "email": "peter.pl7@gmail.com", + "homepage": "http://ohey.pl" + } + ], + "description": "Pdf and graphic files generator library for PHP.", + "keywords": [ + "PHPPdf", + "pdf" + ], + "time": "2016-08-14T22:50:47+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" + }, + { + "name": "roave/security-advisories", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "3df94834c80037130b533703df4672785b6ea112" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3df94834c80037130b533703df4672785b6ea112", + "reference": "3df94834c80037130b533703df4672785b6ea112", + "shasum": "" + }, + "conflict": { + "adodb/adodb-php": "<5.20.6", + "amphp/artax": "<1.0.6|>=2,<2.0.6", + "aws/aws-sdk-php": ">=3,<3.2.1", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.0.15|>=3.1,<3.1.4", + "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cartalyst/sentry": "<=2.1.6", + "codeigniter/framework": "<=3.0.6", + "composer/composer": "<=1.0.0-alpha11", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/core": ">=2,<3.5.32", + "contao/core-bundle": ">=4,<4.4.8", + "contao/listing-bundle": ">=4,<4.4.8", + "contao/newsletter-bundle": ">=4,<4.1", + "doctrine/annotations": ">=1,<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<=0.7.1", + "doctrine/mongodb-odm": ">=1,<1.0.2", + "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", + "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", + "dompdf/dompdf": ">=0.6,<0.6.2", + "drupal/core": ">=8,<8.3.7", + "drupal/drupal": ">=8,<8.3.7", + "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.2|>=5.4,<5.4.10.1|>=2017.8,<2017.8.1.1", + "firebase/php-jwt": "<2", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", + "gree/jose": "<=2.2", + "gregwar/rst": "<1.0.3", + "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1", + "illuminate/auth": ">=4,<4.0.99|>=4.1,<4.1.26", + "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", + "joomla/session": "<1.3.1", + "laravel/framework": ">=4,<4.0.99|>=4.1,<4.1.29", + "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", + "magento/magento1ce": ">=1.5.0.1,<1.9.3.2", + "magento/magento1ee": ">=1.9,<1.14.3.2", + "magento/magento2ce": ">=2,<2.2", + "monolog/monolog": ">=1.8,<1.12", + "namshi/jose": "<2.2", + "onelogin/php-saml": "<2.10.4", + "oro/crm": ">=1.7,<1.7.4", + "oro/platform": ">=1.7,<1.7.4", + "phpmailer/phpmailer": ">=5,<5.2.24", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpxmlrpc/extras": "<0.6.1", + "pusher/pusher-php-server": "<2.2.1", + "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", + "shopware/shopware": "<5.3.7", + "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": ">=3,<3.3", + "silverstripe/userforms": "<3", + "simplesamlphp/saml2": "<1.10.4|>=2,<2.3.5|>=3,<3.1.1", + "simplesamlphp/simplesamlphp": "<1.15.2", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "socalnick/scn-social-auth": "<1.15.2", + "squizlabs/php_codesniffer": ">=1,<2.8.1", + "swiftmailer/swiftmailer": ">=4,<5.4.5", + "symfony/dependency-injection": ">=2,<2.0.17", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2", + "symfony/http-foundation": ">=2,<2.3.27|>=2.4,<2.5.11|>=2.6,<2.6.6", + "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", + "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/routing": ">=2,<2.0.19", + "symfony/security": ">=2,<2.0.25|>=2.1,<2.1.13|>=2.2,<2.2.9|>=2.3,<2.3.37|>=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8.23,<2.8.25|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5", + "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.6|>=2.8.23,<2.8.25|>=3,<3.0.6|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5", + "symfony/security-csrf": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/serializer": ">=2,<2.0.11", + "symfony/symfony": ">=2,<2.3.41|>=2.4,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/translation": ">=2,<2.0.17", + "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1.0-beta1,<2.1.3|>=2.1,<2.1.2", + "twig/twig": "<1.20", + "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.22|>=8,<8.7.5", + "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", + "willdurand/js-translation-bundle": "<2.1.1", + "yiisoft/yii": ">=1.1.14,<1.1.15", + "yiisoft/yii2": "<2.0.5", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<2.0.4", + "yiisoft/yii2-gii": "<2.0.4", + "yiisoft/yii2-jui": "<2.0.4", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-diactoros": ">=1,<1.0.4", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.3,<2.3.8|>=2.4,<2.4.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": ">=2,<2.4.11|>=2.5,<2.5.1", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": ">=2,<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zetacomponents/mail": "<1.8.2", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + } + ], + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "time": "2018-02-04T22:09:50+00:00" + }, + { + "name": "symfony/console", + "version": "v4.0.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "36d5b41e7d4e1ccf0370f6babe966c08ef0a1488" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/36d5b41e7d4e1ccf0370f6babe966c08ef0a1488", + "reference": "36d5b41e7d4e1ccf0370f6babe966c08ef0a1488", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2018-01-29T09:06:29+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2018-01-30T19:27:44+00:00" + }, + { + "name": "symfony/yaml", + "version": "v3.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "eab73b6c21d27ae4cd037c417618dfd4befb0bfe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/eab73b6c21d27ae4cd037c417618dfd4befb0bfe", + "reference": "eab73b6c21d27ae4cd037c417618dfd4befb0bfe", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2018-01-21T19:05:02+00:00" + }, + { + "name": "tuupola/cors-middleware", + "version": "0.5.2", + "source": { + "type": "git", + "url": "https://github.com/tuupola/cors-middleware.git", + "reference": "db69d8e67b99570b16e8cd5f78c423ed1167cb21" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tuupola/cors-middleware/zipball/db69d8e67b99570b16e8cd5f78c423ed1167cb21", + "reference": "db69d8e67b99570b16e8cd5f78c423ed1167cb21", + "shasum": "" + }, + "require": { + "neomerx/cors-psr7": "^1.0", + "php": "^5.5 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8", + "squizlabs/php_codesniffer": "^2.5", + "zendframework/zend-diactoros": "^1.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tuupola\\Middleware\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mika Tuupola", + "email": "tuupola@appelsiini.net", + "homepage": "http://www.appelsiini.net/", + "role": "Developer" + } + ], + "description": "PSR-7 CORS Middleware", + "homepage": "https://github.com/tuupola/cors-middleware", + "keywords": [ + "cors", + "middleware", + "slim" + ], + "time": "2016-08-12T13:12:58+00:00" + }, + { + "name": "tuupola/slim-jwt-auth", + "version": "2.3.3", + "source": { + "type": "git", + "url": "https://github.com/tuupola/slim-jwt-auth.git", + "reference": "1f9fb673e4f5bb9ca4104e328aabfc2e4af38c32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tuupola/slim-jwt-auth/zipball/1f9fb673e4f5bb9ca4104e328aabfc2e4af38c32", + "reference": "1f9fb673e4f5bb9ca4104e328aabfc2e4af38c32", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "^3.0 || ^4.0 || ^5.0", + "php": "^5.5 || ^7.0", + "psr/http-message": "^1.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "squizlabs/php_codesniffer": "^2.3", + "zendframework/zend-diactoros": "^1.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\Middleware\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mika Tuupola", + "email": "tuupola@appelsiini.net", + "homepage": "http://www.appelsiini.net/", + "role": "Developer" + } + ], + "description": "PSR-7 JWT Authentication Middleware", + "homepage": "https://github.com/tuupola/slim-jwt-auth", + "keywords": [ + "auth", + "json", + "jwt", + "middleware", + "psr-7" + ], + "time": "2017-07-12T09:57:35+00:00" + }, + { + "name": "webimpress/composer-extra-dependency", + "version": "0.2.2", + "source": { + "type": "git", + "url": "https://github.com/webimpress/composer-extra-dependency.git", + "reference": "31fa56391d30f03b1180c87610cbe22254780ad9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webimpress/composer-extra-dependency/zipball/31fa56391d30f03b1180c87610cbe22254780ad9", + "reference": "31fa56391d30f03b1180c87610cbe22254780ad9", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "composer/composer": "^1.5.2", + "mikey179/vfsstream": "^1.6.5", + "phpunit/phpunit": "^5.7.22 || ^6.4.1", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Webimpress\\ComposerExtraDependency\\Plugin" + }, + "autoload": { + "psr-4": { + "Webimpress\\ComposerExtraDependency\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "description": "Composer plugin to require extra dependencies", + "homepage": "https://github.com/webimpress/composer-extra-dependency", + "keywords": [ + "composer", + "dependency", + "webimpress" + ], + "time": "2017-10-17T17:15:14+00:00" + }, + { + "name": "webimpress/http-middleware-compatibility", + "version": "0.1.4", + "source": { + "type": "git", + "url": "https://github.com/webimpress/http-middleware-compatibility.git", + "reference": "8ed1c2c7523dce0035b98bc4f3a73ca9cd1d3717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webimpress/http-middleware-compatibility/zipball/8ed1c2c7523dce0035b98bc4f3a73ca9cd1d3717", + "reference": "8ed1c2c7523dce0035b98bc4f3a73ca9cd1d3717", + "shasum": "" + }, + "require": { + "http-interop/http-middleware": "^0.1.1 || ^0.2 || ^0.3 || ^0.4.1 || ^0.5", + "php": "^5.6 || ^7.0", + "webimpress/composer-extra-dependency": "^0.2.2" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.23 || ^6.4.3" + }, + "type": "library", + "extra": { + "dependency": [ + "http-interop/http-middleware" + ] + }, + "autoload": { + "files": [ + "autoload/http-middleware.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "description": "Compatibility library for Draft PSR-15 HTTP Middleware", + "homepage": "https://github.com/webimpress/http-middleware-compatibility", + "keywords": [ + "middleware", + "psr-15", + "webimpress" + ], + "abandoned": "psr/http-server-middleware", + "time": "2017-10-17T17:31:10+00:00" + }, + { + "name": "zendframework/zend-cache", + "version": "2.7.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-cache.git", + "reference": "c98331b96d3b9d9b24cf32d02660602edb34d039" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-cache/zipball/c98331b96d3b9d9b24cf32d02660602edb34d039", + "reference": "c98331b96d3b9d9b24cf32d02660602edb34d039", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "require-dev": { + "phpbench/phpbench": "^0.10.0", + "phpunit/phpunit": "^4.8", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-serializer": "^2.6", + "zendframework/zend-session": "^2.6.2" + }, + "suggest": { + "ext-apc": "APC or compatible extension, to use the APC storage adapter", + "ext-apcu": "APCU >= 5.1.0, to use the APCu storage adapter", + "ext-dba": "DBA, to use the DBA storage adapter", + "ext-memcache": "Memcache >= 2.0.0 to use the Memcache storage adapter", + "ext-memcached": "Memcached >= 1.0.0 to use the Memcached storage adapter", + "ext-mongo": "Mongo, to use MongoDb storage adapter", + "ext-redis": "Redis, to use Redis storage adapter", + "ext-wincache": "WinCache, to use the WinCache storage adapter", + "ext-xcache": "XCache, to use the XCache storage adapter", + "mongofill/mongofill": "Alternative to ext-mongo - a pure PHP implementation designed as a drop in replacement", + "zendframework/zend-serializer": "Zend\\Serializer component", + "zendframework/zend-session": "Zend\\Session component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev", + "dev-develop": "2.8-dev" + }, + "zf": { + "component": "Zend\\Cache", + "config-provider": "Zend\\Cache\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a generic way to cache any data", + "homepage": "https://github.com/zendframework/zend-cache", + "keywords": [ + "cache", + "zf2" + ], + "time": "2016-12-16T11:35:47+00:00" + }, + { + "name": "zendframework/zend-component-installer", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-component-installer.git", + "reference": "5e9beda3b81d29d4d080b110d67f8c8c44d93605" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-component-installer/zipball/5e9beda3b81d29d4d080b110d67f8c8c44d93605", + "reference": "5e9beda3b81d29d4d080b110d67f8c8c44d93605", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "composer/composer": "^1.5.2", + "malukenho/docheader": "^0.1.6", + "mikey179/vfsstream": "^1.6.5", + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev", + "dev-develop": "1.2-dev" + }, + "class": "Zend\\ComponentInstaller\\ComponentInstaller" + }, + "autoload": { + "psr-4": { + "Zend\\ComponentInstaller\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Composer plugin for automating component registration in zend-mvc and Expressive applications", + "keywords": [ + "ZendFramework", + "component installer", + "composer", + "plugin", + "zf" + ], + "time": "2018-01-11T15:03:06+00:00" + }, + { + "name": "zendframework/zend-config", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-config.git", + "reference": "a12e4a592bf66d9629b84960e268f3752e53abe4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-config/zipball/a12e4a592bf66d9629b84960e268f3752e53abe4", + "reference": "a12e4a592bf66d9629b84960e268f3752e53abe4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^5.6 || ^7.0", + "psr/container": "^1.0", + "zendframework/zend-stdlib": "^2.7.7 || ^3.1" + }, + "conflict": { + "container-interop/container-interop": "<1.2.0" + }, + "require-dev": { + "malukenho/docheader": "^0.1.5", + "phpunit/phpunit": "^5.7 || ^6.0", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-filter": "^2.7.1", + "zendframework/zend-i18n": "^2.7.3", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.2.1" + }, + "suggest": { + "zendframework/zend-filter": "^2.7.1; install if you want to use the Filter processor", + "zendframework/zend-i18n": "^2.7.3; install if you want to use the Translator processor", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.2.1; if you need an extensible plugin manager for use with the Config Factory" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev", + "dev-develop": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Config\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a nested object property based user interface for accessing this configuration data within application code", + "homepage": "https://github.com/zendframework/zend-config", + "keywords": [ + "config", + "zf2" + ], + "time": "2017-02-22T14:31:10+00:00" + }, + { + "name": "zendframework/zend-config-aggregator", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-config-aggregator.git", + "reference": "2762abefdb1df1517be7e77a6717540557dca1bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-config-aggregator/zipball/2762abefdb1df1517be7e77a6717540557dca1bb", + "reference": "2762abefdb1df1517be7e77a6717540557dca1bb", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^2.7.7 || ^3.1.0" + }, + "require-dev": { + "malukenho/docheader": "^0.1.5", + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "^5.7.21 || ^6.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^2.6 || ^3.0", + "zendframework/zend-servicemanager": "^2.7.7 || ^3.1.1" + }, + "suggest": { + "zendframework/zend-config": "Allows loading configuration from XML, INI, YAML, and JSON files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev", + "dev-develop": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\ConfigAggregator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD 3-Clause" + ], + "authors": [ + { + "name": "Mateusz Tymek", + "email": "mtymek@gmail.com" + } + ], + "description": "Lightweight library for merging and caching application config", + "time": "2017-11-06T14:55:00+00:00" + }, + { + "name": "zendframework/zend-crypt", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-crypt.git", + "reference": "514cef5556bac069e36c2cbded40e529b86bb3f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-crypt/zipball/514cef5556bac069e36c2cbded40e529b86bb3f2", + "reference": "514cef5556bac069e36c2cbded40e529b86bb3f2", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "~1.0", + "ext-mbstring": "*", + "php": "^5.6 || ^7.0", + "zendframework/zend-math": "^3.0", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.6.7", + "squizlabs/php_codesniffer": "^2.3.1" + }, + "suggest": { + "ext-openssl": "Required for most features of Zend\\Crypt" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev", + "dev-develop": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Crypt\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-crypt", + "keywords": [ + "crypt", + "zf2" + ], + "time": "2017-07-17T15:46:00+00:00" + }, + { + "name": "zendframework/zend-diactoros", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-diactoros.git", + "reference": "ed6ce7e2105c400ca10277643a8327957c0384b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/ed6ce7e2105c400ca10277643a8327957c0384b7", + "reference": "ed6ce7e2105c400ca10277643a8327957c0384b7", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-dom": "*", + "ext-libxml": "*", + "phpunit/phpunit": "^5.7.16 || ^6.0.8", + "zendframework/zend-coding-standard": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev", + "dev-develop": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Diactoros\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "description": "PSR HTTP Message implementations", + "homepage": "https://github.com/zendframework/zend-diactoros", + "keywords": [ + "http", + "psr", + "psr-7" + ], + "time": "2018-01-04T18:21:48+00:00" + }, + { + "name": "zendframework/zend-escaper", + "version": "2.5.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-escaper.git", + "reference": "2dcd14b61a72d8b8e27d579c6344e12c26141d4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/2dcd14b61a72d8b8e27d579c6344e12c26141d4e", + "reference": "2dcd14b61a72d8b8e27d579c6344e12c26141d4e", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Escaper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-escaper", + "keywords": [ + "escaper", + "zf2" + ], + "time": "2016-06-30T19:48:38+00:00" + }, + { + "name": "zendframework/zend-eventmanager", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-eventmanager.git", + "reference": "9d72db10ceb6e42fb92350c0cb54460da61bd79c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/9d72db10ceb6e42fb92350c0cb54460da61bd79c", + "reference": "9d72db10ceb6e42fb92350c0cb54460da61bd79c", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "athletic/athletic": "^0.1", + "container-interop/container-interop": "^1.1.0", + "phpunit/phpunit": "^6.0.7 || ^5.7.14", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0" + }, + "suggest": { + "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev", + "dev-develop": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\EventManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Trigger and listen to events within a PHP application", + "homepage": "https://github.com/zendframework/zend-eventmanager", + "keywords": [ + "event", + "eventmanager", + "events", + "zf2" + ], + "time": "2017-07-11T19:17:22+00:00" + }, + { + "name": "zendframework/zend-expressive", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-expressive.git", + "reference": "05c82075d486fc7818f4c69e218fcad4d43e2cb4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-expressive/zipball/05c82075d486fc7818f4c69e218fcad4d43e2cb4", + "reference": "05c82075d486fc7818f4c69e218fcad4d43e2cb4", + "shasum": "" + }, + "require": { + "fig/http-message-util": "^1.1.2", + "http-interop/http-middleware": "^0.4.1", + "php": "^5.6 || ^7.0", + "psr/container": "^1.0", + "psr/http-message": "^1.0.1", + "zendframework/zend-diactoros": "^1.3.10", + "zendframework/zend-expressive-router": "^2.1", + "zendframework/zend-expressive-template": "^1.0.4", + "zendframework/zend-stratigility": "^2.0.1" + }, + "conflict": { + "container-interop/container-interop": "<1.2.0" + }, + "require-dev": { + "filp/whoops": "^2.1.6 || ^1.1.10", + "malukenho/docheader": "^0.1.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-expressive-aurarouter": "^2.0", + "zendframework/zend-expressive-fastroute": "^2.0", + "zendframework/zend-expressive-zendrouter": "^2.0.1", + "zendframework/zend-servicemanager": "^3.3 || ^2.7.8" + }, + "suggest": { + "aura/di": "^3.2 to make use of Aura.Di dependency injection container", + "filp/whoops": "^2.1 to use the Whoops error handler", + "xtreamwayz/pimple-container-interop": "^1.0 to use Pimple for dependency injection", + "zendframework/zend-expressive-helpers": "^3.0 for its UrlHelper, ServerUrlHelper, and BodyParseMiddleware", + "zendframework/zend-expressive-tooling": "For migration and development tools; require it with the --dev flag", + "zendframework/zend-servicemanager": "^3.3 to use zend-servicemanager for dependency injection" + }, + "bin": [ + "bin/expressive-tooling" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev", + "dev-develop": "2.2.x-dev", + "dev-release-3.0.0": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Expressive\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "PSR-7 Middleware Microframework based on Stratigility", + "keywords": [ + "PSR-11", + "ZendFramework", + "http", + "middleware", + "psr", + "psr-7", + "zend-expressive", + "zf" + ], + "time": "2017-12-11T21:41:17+00:00" + }, + { + "name": "zendframework/zend-expressive-fastroute", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-expressive-fastroute.git", + "reference": "8ba998e5f5de883d2753031338029cb4e545e963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-expressive-fastroute/zipball/8ba998e5f5de883d2753031338029cb4e545e963", + "reference": "8ba998e5f5de883d2753031338029cb4e545e963", + "shasum": "" + }, + "require": { + "fig/http-message-util": "^1.1.2", + "nikic/fast-route": "^1.2", + "php": "^5.6 || ^7.0", + "psr/container": "^1.0", + "psr/http-message": "^1.0.1", + "zendframework/zend-expressive-router": "^2.0.1", + "zendframework/zend-stdlib": "^3.1 || 2.*" + }, + "conflict": { + "container-interop/container-interop": "<1.2.0" + }, + "require-dev": { + "malukenho/docheader": "^0.1.5", + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev", + "dev-develop": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Expressive\\Router\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "FastRoute integration for Expressive", + "keywords": [ + "FastRoute", + "ZendFramework", + "expressive", + "http", + "middleware", + "psr", + "psr-7", + "zend-expressive", + "zf" + ], + "time": "2017-12-06T21:35:57+00:00" + }, + { + "name": "zendframework/zend-expressive-helpers", + "version": "4.2.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-expressive-helpers.git", + "reference": "137d863d4741210d05297b4bb1c30264f100ba8f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-expressive-helpers/zipball/137d863d4741210d05297b4bb1c30264f100ba8f", + "reference": "137d863d4741210d05297b4bb1c30264f100ba8f", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "psr/container": "^1.0", + "psr/http-message": "^1.0.1", + "webimpress/http-middleware-compatibility": "^0.1.1", + "zendframework/zend-expressive-router": "^2.2" + }, + "require-dev": { + "malukenho/docheader": "^0.1.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^5.7.22 || ^6.4.1", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-diactoros": "^1.3.10" + }, + "suggest": { + "aura/di": "^3.2 to make use of Aura.Di dependency injection container", + "mouf/pimple-interop": "^1.0 to use Pimple for dependency injection", + "zendframework/zend-servicemanager": "^3.3 to use zend-servicemanager for dependency injection" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev", + "dev-develop": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Expressive\\Helper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Helper/Utility classes for Expressive", + "keywords": [ + "expressive", + "http", + "middleware", + "psr", + "psr-7" + ], + "time": "2017-10-09T19:03:01+00:00" + }, + { + "name": "zendframework/zend-expressive-router", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-expressive-router.git", + "reference": "eb71000aa7970ad67f252076200bcc1593714f8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-expressive-router/zipball/eb71000aa7970ad67f252076200bcc1593714f8d", + "reference": "eb71000aa7970ad67f252076200bcc1593714f8d", + "shasum": "" + }, + "require": { + "fig/http-message-util": "^1.1.2", + "php": "^5.6 || ^7.0", + "psr/http-message": "^1.0.1", + "webimpress/http-middleware-compatibility": "^0.1.1" + }, + "require-dev": { + "malukenho/docheader": "^0.1.5", + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "suggest": { + "zendframework/zend-expressive-aurarouter": "^1.0 to use the Aura.Router routing adapter", + "zendframework/zend-expressive-fastroute": "^1.2 to use the FastRoute routing adapter", + "zendframework/zend-expressive-zendrouter": "^1.2 to use the zend-router routing adapter" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev", + "dev-develop": "2.4.x-dev", + "dev-release-3.0.0": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Expressive\\Router\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Router subcomponent for Expressive", + "keywords": [ + "ZendFramework", + "expressive", + "http", + "middleware", + "psr", + "psr-7", + "zend-expressive", + "zf" + ], + "time": "2018-02-01T19:49:45+00:00" + }, + { + "name": "zendframework/zend-expressive-template", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-expressive-template.git", + "reference": "23922f96b32ab6e64fc551ec06b81fd047828765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-expressive-template/zipball/23922f96b32ab6e64fc551ec06b81fd047828765", + "reference": "23922f96b32ab6e64fc551ec06b81fd047828765", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.7", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "suggest": { + "zendframework/zend-expressive-platesrenderer": "^0.1 to use the Plates template renderer", + "zendframework/zend-expressive-twigrenderer": "^0.1 to use the Twig template renderer", + "zendframework/zend-expressive-zendviewrenderer": "^0.1 to use the zend-view PhpRenderer template renderer" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev", + "dev-develop": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Expressive\\Template\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Template subcomponent for Expressive", + "keywords": [ + "expressive", + "template" + ], + "time": "2017-01-11T18:42:34+00:00" + }, + { + "name": "zendframework/zend-hydrator", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-hydrator.git", + "reference": "de0d6465fbc4b7ca345fddc148834c321c4b361f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-hydrator/zipball/de0d6465fbc4b7ca345fddc148834c321c4b361f", + "reference": "de0d6465fbc4b7ca345fddc148834c321c4b361f", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.21 || ^6.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-eventmanager": "^3.0", + "zendframework/zend-filter": "^2.6", + "zendframework/zend-inputfilter": "^2.6", + "zendframework/zend-serializer": "^2.6.1", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" + }, + "suggest": { + "zendframework/zend-eventmanager": "^2.6.2 || ^3.0, to support aggregate hydrator usage", + "zendframework/zend-filter": "^2.6, to support naming strategy hydrator usage", + "zendframework/zend-serializer": "^2.6.1, to use the SerializableStrategy", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3, to support hydrator plugin manager usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-release-1.0": "1.0-dev", + "dev-release-1.1": "1.1-dev", + "dev-master": "2.3-dev", + "dev-develop": "2.4-dev" + }, + "zf": { + "component": "Zend\\Hydrator", + "config-provider": "Zend\\Hydrator\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Hydrator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-hydrator", + "keywords": [ + "hydrator", + "zf2" + ], + "time": "2017-10-02T15:01:27+00:00" + }, + { + "name": "zendframework/zend-json", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-json.git", + "reference": "4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-json/zipball/4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c", + "reference": "4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-stdlib": "^2.7.7 || ^3.1" + }, + "suggest": { + "zendframework/zend-json-server": "For implementing JSON-RPC servers", + "zendframework/zend-xml2json": "For converting XML documents to JSON" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev", + "dev-develop": "3.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Json\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", + "keywords": [ + "ZendFramework", + "json", + "zf" + ], + "time": "2018-01-04T17:51:34+00:00" + }, + { + "name": "zendframework/zend-loader", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-loader.git", + "reference": "c5fd2f071bde071f4363def7dea8dec7393e135c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/c5fd2f071bde071f4363def7dea8dec7393e135c", + "reference": "c5fd2f071bde071f4363def7dea8dec7393e135c", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Loader\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-loader", + "keywords": [ + "loader", + "zf2" + ], + "time": "2015-06-03T14:05:47+00:00" + }, + { + "name": "zendframework/zend-mail", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-mail.git", + "reference": "248230940ab1453b2a532a8fde76c5a6470d7aad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-mail/zipball/248230940ab1453b2a532a8fde76c5a6470d7aad", + "reference": "248230940ab1453b2a532a8fde76c5a6470d7aad", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": "^7.0 || ^5.6", + "zendframework/zend-loader": "^2.5", + "zendframework/zend-mime": "^2.5", + "zendframework/zend-stdlib": "^2.7 || ^3.0", + "zendframework/zend-validator": "^2.6" + }, + "require-dev": { + "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^2.6", + "zendframework/zend-crypt": "^2.6", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" + }, + "suggest": { + "ext-intl": "Handle IDN in AddressList hostnames", + "zendframework/zend-crypt": "Crammd5 support in SMTP Auth", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3 when using SMTP to deliver messages" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev", + "dev-develop": "2.9-dev" + }, + "zf": { + "component": "Zend\\Mail", + "config-provider": "Zend\\Mail\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Mail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides generalized functionality to compose and send both text and MIME-compliant multipart e-mail messages", + "homepage": "https://github.com/zendframework/zend-mail", + "keywords": [ + "mail", + "zf2" + ], + "time": "2017-06-08T20:03:58+00:00" + }, + { + "name": "zendframework/zend-math", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-math.git", + "reference": "fda3b4e6c3bb15c35adc6db38b2eacabaa243e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-math/zipball/fda3b4e6c3bb15c35adc6db38b2eacabaa243e65", + "reference": "fda3b4e6c3bb15c35adc6db38b2eacabaa243e65", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "paragonie/random_compat": "^2.0.2", + "php": "^5.5 || ^7.0" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "ext-bcmath": "If using the bcmath functionality", + "ext-gmp": "If using the gmp functionality" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev", + "dev-develop": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-math", + "keywords": [ + "math", + "zf2" + ], + "time": "2016-04-28T17:37:42+00:00" + }, + { + "name": "zendframework/zend-memory", + "version": "2.5.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-memory.git", + "reference": "bbf8b9509660b2a97f2d6ccfefabffac3cca6a5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-memory/zipball/bbf8b9509660b2a97f2d6ccfefabffac3cca6a5c", + "reference": "bbf8b9509660b2a97f2d6ccfefabffac3cca6a5c", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8", + "squizlabs/php_codesniffer": "^2.3.1", + "zendframework/zend-cache": "^2.7" + }, + "suggest": { + "zendframework/zend-cache": "To support swapping memory objects into and out of non-memory cache storage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Memory\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-memory", + "keywords": [ + "memory", + "zf2" + ], + "time": "2016-05-11T14:49:42+00:00" + }, + { + "name": "zendframework/zend-mime", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-mime.git", + "reference": "5db38e92f8a6c7c5e25c8afce6e2d0bd49340c5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-mime/zipball/5db38e92f8a6c7c5e25c8afce6e2d0bd49340c5f", + "reference": "5db38e92f8a6c7c5e25c8afce6e2d0bd49340c5f", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.21 || ^6.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-mail": "^2.6" + }, + "suggest": { + "zendframework/zend-mail": "Zend\\Mail component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev", + "dev-develop": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Mime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Create and parse MIME messages and parts", + "homepage": "https://github.com/zendframework/zend-mime", + "keywords": [ + "ZendFramework", + "mime", + "zf" + ], + "time": "2017-11-28T15:02:22+00:00" + }, + { + "name": "zendframework/zend-permissions-rbac", + "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-permissions-rbac.git", + "reference": "c10ad55e50f402bf14eb2eb9bc424dd9a44dfc78" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-permissions-rbac/zipball/c10ad55e50f402bf14eb2eb9bc424dd9a44dfc78", + "reference": "c10ad55e50f402bf14eb2eb9bc424dd9a44dfc78", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.15|| ^6.2.1", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev", + "dev-develop": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Permissions\\Rbac\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a role-based access control management", + "homepage": "https://github.com/zendframework/zend-permissions-rbac", + "keywords": [ + "rbac", + "zf2" + ], + "time": "2018-02-01T09:55:50+00:00" + }, + { + "name": "zendframework/zend-servicemanager", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-servicemanager.git", + "reference": "9f35a104b8d4d3b32da5f4a3b6efc0dd62e5af42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/9f35a104b8d4d3b32da5f4a3b6efc0dd62e5af42", + "reference": "9f35a104b8d4d3b32da5f4a3b6efc0dd62e5af42", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.2", + "php": "^5.6 || ^7.0", + "psr/container": "^1.0", + "zendframework/zend-stdlib": "^3.1" + }, + "provide": { + "container-interop/container-interop-implementation": "^1.2", + "psr/container-implementation": "^1.0" + }, + "require-dev": { + "mikey179/vfsstream": "^1.6.5", + "ocramius/proxy-manager": "^1.0 || ^2.0", + "phpbench/phpbench": "^0.13.0", + "phpunit/phpunit": "^5.7.25 || ^6.4.4", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "suggest": { + "ocramius/proxy-manager": "ProxyManager 1.* to handle lazy initialization of services", + "zendframework/zend-stdlib": "zend-stdlib ^2.5 if you wish to use the MergeReplaceKey or MergeRemoveKey features in Config instances" + }, + "bin": [ + "bin/generate-deps-for-config-factory", + "bin/generate-factory-for-class" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev", + "dev-develop": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\ServiceManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Factory-Driven Dependency Injection Container", + "keywords": [ + "PSR-11", + "ZendFramework", + "dependency-injection", + "di", + "dic", + "service-manager", + "servicemanager", + "zf" + ], + "time": "2018-01-29T16:48:37+00:00" + }, + { + "name": "zendframework/zend-stdlib", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-stdlib.git", + "reference": "debedcfc373a293f9250cc9aa03cf121428c8e78" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/debedcfc373a293f9250cc9aa03cf121428c8e78", + "reference": "debedcfc373a293f9250cc9aa03cf121428c8e78", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "athletic/athletic": "~0.1", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "^2.6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev", + "dev-develop": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Stdlib\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-stdlib", + "keywords": [ + "stdlib", + "zf2" + ], + "time": "2016-09-13T14:38:50+00:00" + }, + { + "name": "zendframework/zend-stratigility", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-stratigility.git", + "reference": "7dfec8dee92dad0d01e68365015f2848c250fe9f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-stratigility/zipball/7dfec8dee92dad0d01e68365015f2848c250fe9f", + "reference": "7dfec8dee92dad0d01e68365015f2848c250fe9f", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "psr/http-message": "^1.0", + "webimpress/http-middleware-compatibility": "^0.1.3", + "zendframework/zend-escaper": "^2.3" + }, + "require-dev": { + "malukenho/docheader": "^0.1.5", + "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-diactoros": "^1.0" + }, + "suggest": { + "psr/http-message-implementation": "Please install a psr/http-message-implementation to consume Stratigility; e.g., zendframework/zend-diactoros" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.0-dev", + "dev-develop": "2.2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Stratigility\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Middleware for PHP", + "homepage": "https://github.com/zendframework/zend-stratigility", + "keywords": [ + "http", + "middleware", + "psr-7" + ], + "time": "2017-10-12T13:14:14+00:00" + }, + { + "name": "zendframework/zend-validator", + "version": "2.10.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-validator.git", + "reference": "38109ed7d8e46cfa71bccbe7e6ca80cdd035f8c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/38109ed7d8e46cfa71bccbe7e6ca80cdd035f8c9", + "reference": "38109ed7d8e46cfa71bccbe7e6ca80cdd035f8c9", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.1", + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^2.7.6 || ^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "zendframework/zend-cache": "^2.6.1", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^2.6", + "zendframework/zend-db": "^2.7", + "zendframework/zend-filter": "^2.6", + "zendframework/zend-http": "^2.5.4", + "zendframework/zend-i18n": "^2.6", + "zendframework/zend-math": "^2.6", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-session": "^2.8", + "zendframework/zend-uri": "^2.5" + }, + "suggest": { + "zendframework/zend-db": "Zend\\Db component, required by the (No)RecordExists validator", + "zendframework/zend-filter": "Zend\\Filter component, required by the Digits validator", + "zendframework/zend-i18n": "Zend\\I18n component to allow translation of validation error messages", + "zendframework/zend-i18n-resources": "Translations of validator messages", + "zendframework/zend-math": "Zend\\Math component, required by the Csrf validator", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", + "zendframework/zend-session": "Zend\\Session component, ^2.8; required by the Csrf validator", + "zendframework/zend-uri": "Zend\\Uri component, required by the Uri and Sitemap\\Loc validators" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.10.x-dev", + "dev-develop": "2.11.x-dev" + }, + "zf": { + "component": "Zend\\Validator", + "config-provider": "Zend\\Validator\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Validator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a set of commonly needed validators", + "homepage": "https://github.com/zendframework/zend-validator", + "keywords": [ + "validator", + "zf2" + ], + "time": "2018-02-01T17:05:33+00:00" + }, + { + "name": "zendframework/zendpdf", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/ZendPdf.git", + "reference": "041f90c339cff63a3c4d03a28ef1ea5188059793" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/ZendPdf/zipball/041f90c339cff63a3c4d03a28ef1ea5188059793", + "reference": "041f90c339cff63a3c4d03a28ef1ea5188059793", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "zendframework/zend-memory": ">=2.0.0", + "zendframework/zend-stdlib": ">=2.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "ZendPdf\\": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Zend Pdf Component", + "homepage": "http://packages.zendframework.com/", + "keywords": [ + "pdf", + "zf2" + ], + "abandoned": true, + "time": "2012-11-16T11:16:01+00:00" + } + ], + "packages-dev": [ + { + "name": "filp/whoops", + "version": "2.1.14", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "c6081b8838686aa04f1e83ba7e91f78b7b2a23e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/c6081b8838686aa04f1e83ba7e91f78b7b2a23e6", + "reference": "c6081b8838686aa04f1e83ba7e91f78b7b2a23e6", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0", + "psr/log": "^1.0.1" + }, + "require-dev": { + "mockery/mockery": "0.9.*", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "symfony/var-dumper": "^2.6 || ^3.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "time": "2017-11-23T18:22:44+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-10-19T19:58:43+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^1.0.1", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2017-03-05T18:14:27+00:00" + }, + { + "name": "phar-io/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2017-03-05T17:38:23+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-30T07:14:17+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-07-14T14:27:02+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.7.3", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", + "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2017-11-24T13:59:53+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1", + "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.0", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^2.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-xdebug": "^2.5.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2017-12-06T09:29:45+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2017-11-27T13:52:08+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "791198a2c6254db10131eecfe8c06670700904db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-11-27T05:48:46+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "6.5.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "3330ef26ade05359d006041316ed0fa9e8e3cefe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3330ef26ade05359d006041316ed0fa9e8e3cefe", + "reference": "3330ef26ade05359d006041316ed0fa9e8e3cefe", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.6.1", + "phar-io/manifest": "^1.0.1", + "phar-io/version": "^1.0", + "php": "^7.0", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^1.0.9", + "phpunit/phpunit-mock-objects": "^5.0.5", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^2.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^1.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2", + "phpunit/dbunit": "<3.0" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "^1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.5.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2018-02-01T05:57:37+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "5.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf", + "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.5", + "php": "^7.0", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" + }, + "conflict": { + "phpunit/phpunit": "<6.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.5" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2018-01-06T05:45:45+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "2.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/diff": "^2.0 || ^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-02-01T13:46:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2017-08-03T08:09:46+00:00" + }, + { + "name": "sebastian/environment", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2017-07-01T08:51:00+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2017-04-03T13:19:02+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "2.9.1", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62", + "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "bin": [ + "scripts/phpcs", + "scripts/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "classmap": [ + "CodeSniffer.php", + "CodeSniffer/CLI.php", + "CodeSniffer/Exception.php", + "CodeSniffer/File.php", + "CodeSniffer/Fixer.php", + "CodeSniffer/Report.php", + "CodeSniffer/Reporting.php", + "CodeSniffer/Sniff.php", + "CodeSniffer/Tokens.php", + "CodeSniffer/Reports/", + "CodeSniffer/Tokenizers/", + "CodeSniffer/DocGenerators/", + "CodeSniffer/Standards/AbstractPatternSniff.php", + "CodeSniffer/Standards/AbstractScopeSniff.php", + "CodeSniffer/Standards/AbstractVariableSniff.php", + "CodeSniffer/Standards/IncorrectPatternException.php", + "CodeSniffer/Standards/Generic/Sniffs/", + "CodeSniffer/Standards/MySource/Sniffs/", + "CodeSniffer/Standards/PEAR/Sniffs/", + "CodeSniffer/Standards/PSR1/Sniffs/", + "CodeSniffer/Standards/PSR2/Sniffs/", + "CodeSniffer/Standards/Squiz/Sniffs/", + "CodeSniffer/Standards/Zend/Sniffs/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2017-05-22T02:43:20+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07T12:08:54+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2018-01-29T19:49:41+00:00" + }, + { + "name": "zfcampus/zf-development-mode", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/zfcampus/zf-development-mode.git", + "reference": "ffef6ab8cf84ee1d1a77a2b51ba2240d2707c05d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zfcampus/zf-development-mode/zipball/ffef6ab8cf84ee1d1a77a2b51ba2240d2707c05d", + "reference": "ffef6ab8cf84ee1d1a77a2b51ba2240d2707c05d", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "^5.4", + "squizlabs/php_codesniffer": "^2.3.1" + }, + "bin": [ + "bin/zf-development-mode" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev", + "dev-develop": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "ZF\\DevelopmentMode\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Zend Framework development mode script", + "homepage": "http://github.com/zfcampus/zf-development-mode", + "keywords": [ + "framework", + "zf2" + ], + "time": "2017-01-09T23:34:49+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": { + "roave/security-advisories": 20 + }, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^7.1" + }, + "platform-dev": [] +} diff --git a/config/.gitignore b/config/.gitignore new file mode 100644 index 0000000..9604301 --- /dev/null +++ b/config/.gitignore @@ -0,0 +1 @@ +development.config.php diff --git a/config/autoload/.gitignore b/config/autoload/.gitignore new file mode 100644 index 0000000..1a83fda --- /dev/null +++ b/config/autoload/.gitignore @@ -0,0 +1,2 @@ +local.php +*.local.php diff --git a/config/autoload/authx2.global.php b/config/autoload/authx2.global.php new file mode 100644 index 0000000..20f7863 --- /dev/null +++ b/config/autoload/authx2.global.php @@ -0,0 +1,93 @@ + [ + 'unguarded_routes' => [ + 'api.auth.login', + 'api.ping', + 'api.xlsx', + 'show-attachment', + 'hibajegy-pdf', + 'karbantartasjegy-pdf', + 'havi-riport-pdf', + ], + + 'route_guard' => [ + 'roles' => [ + /** + * child role => parents[] + * parentrole has all child roles permissions + * order of roles DO matter, referenced parents MUST exist, so should be defined first + */ + // karbantartó oldal + 'uzemeltetesi_vezeto' => [ + 'ufo', + ], + 'betekinto' => [ + 'uzemeltetesi_vezeto', + ], + // ügyfél oldal + 'karbantarto' => [ + 'projektvezeto' + ], + 'user' => [ + 'betekinto', + 'karbantarto', + ], + ], + 'permissions' => [ + // 'admin' role has full access + 'uzemeltetesi_vezeto' => [ + 'api.fault.post', + 'api.fault.put', + 'api.report.post', + 'api.fault-attachment.post', + 'api.fault-comment.post', + 'api.fault-reject.post', + 'api.maintenance', + 'api.maintenance.upcoming' + ], + 'ufo' => [ + 'api.fault.put', + 'api.fault-attachment.post', + 'api.fault-comment.post', + 'api.fault-reject.post', + ], +// 'betekinto' => [ +// 'api.fault.get', +// ], + + 'projektvezeto' => [ + 'api.fault.put', + 'api.report.post', + 'api.fault-attachment.post', + 'api.fault-comment.post', + 'api.maintenance', + 'api.maintenance.put', + 'api.maintenance.upcoming', + ], + 'karbantarto' => [ + ], + // anybody logged in has the 'user' meta role, its not assignable otherwise + // api endpoints defined here are accessible to all authenticated users + 'user' => [ + 'api.auth.renew', + 'api.user.list', + 'api.user.profile', + 'api.user.password', +// 'api.settings.post', + 'api.error-category.get', + 'api.error-origin.get', + 'api.facility-location.get', + 'api.solution-time-interval.get', + 'api.fault.get', + 'show-attachment', + ], + ], + ], + ], +]; diff --git a/config/autoload/cli.global.php b/config/autoload/cli.global.php new file mode 100644 index 0000000..9c5bba5 --- /dev/null +++ b/config/autoload/cli.global.php @@ -0,0 +1,19 @@ + [ + 'invokables' => [], + 'factories' => [ + App\Command\InitializeFixtureCommand::class => App\Command\InitializeFixtureCommandFactory::class, +// App\Command\ConvertMaintenanceHashCommand::class => App\Command\ConvertMaintenanceHashCommandFactory::class, +// App\Command\MailTestCommand::class => App\Command\MailTestCommandFactory::class, + ], + ], + 'console' => [ + 'commands' => [ + App\Command\InitializeFixtureCommand::class, +// App\Command\ConvertMaintenanceHashCommand::class, +// App\Command\MailTestCommand::class, + ], + ], +]; diff --git a/config/autoload/dependencies.global.php b/config/autoload/dependencies.global.php new file mode 100644 index 0000000..8f27cf2 --- /dev/null +++ b/config/autoload/dependencies.global.php @@ -0,0 +1,43 @@ + [ + // Use 'aliases' to alias a service name to another service. The + // key is the alias name, the value is the service to which it points. + 'aliases' => [ + 'Zend\Expressive\Delegate\DefaultDelegate' => Delegate\NotFoundDelegate::class, + ], + // Use 'invokables' for constructor-less services, or services that do + // not require arguments to the constructor. Map a service name to the + // class name. + 'invokables' => [ + // Fully\Qualified\InterfaceName::class => Fully\Qualified\ClassName::class, + Helper\ServerUrlHelper::class => Helper\ServerUrlHelper::class, + ], + // Use 'factories' for services provided by callbacks/factory classes. + 'factories' => [ + Application::class => Container\ApplicationFactory::class, + Delegate\NotFoundDelegate::class => Container\NotFoundDelegateFactory::class, + Helper\ServerUrlMiddleware::class => Helper\ServerUrlMiddlewareFactory::class, + Helper\UrlHelper::class => Helper\UrlHelperFactory::class, + Helper\UrlHelperMiddleware::class => Helper\UrlHelperMiddlewareFactory::class, + + Zend\Stratigility\Middleware\ErrorHandler::class => Container\ErrorHandlerFactory::class, + Middleware\ErrorResponseGenerator::class => Container\ErrorResponseGeneratorFactory::class, + Middleware\NotFoundHandler::class => Container\NotFoundHandlerFactory::class, + + Slim\Middleware\JwtAuthentication::class => App\Middleware\JwtAuthenticationFactory::class, + Tuupola\Middleware\Cors::class => App\Middleware\CorsMiddlewareFactory::class, + App\Middleware\RouteAuthorization::class => App\Middleware\RouteAuthorizationFactory::class, + ], + ], +]; diff --git a/config/autoload/development.local.php.dist b/config/autoload/development.local.php.dist new file mode 100644 index 0000000..9c8aa17 --- /dev/null +++ b/config/autoload/development.local.php.dist @@ -0,0 +1,34 @@ + [ + 'invokables' => [ + ], + 'factories' => [ + ErrorResponseGenerator::class => Container\WhoopsErrorResponseGeneratorFactory::class, + 'Zend\Expressive\Whoops' => Container\WhoopsFactory::class, + 'Zend\Expressive\WhoopsPageHandler' => Container\WhoopsPageHandlerFactory::class, + ], + ], + + 'whoops' => [ + 'json_exceptions' => [ + 'display' => true, + 'show_trace' => true, + 'ajax_only' => true, + ], + ], +]; diff --git a/config/autoload/doctrine.global.php b/config/autoload/doctrine.global.php new file mode 100644 index 0000000..de7e314 --- /dev/null +++ b/config/autoload/doctrine.global.php @@ -0,0 +1,74 @@ + [ + 'factories' => [ + 'doctrine.entity_manager.orm_default' => ContainerInteropDoctrine\EntityManagerFactory::class, + 'doctrine.hydrator' => App\Hydrator\DoctrineObjectFactory::class, + ], + ], + 'doctrine' => [ + 'driver' => [ + 'orm_default' => [ + 'class' => Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain::class, + 'drivers' => [ + 'App\Entity' => 'app_entity', + ], + ], + 'app_entity' => [ + 'class' => Doctrine\ORM\Mapping\Driver\AnnotationDriver::class, + 'cache' => 'array', + 'paths' => __DIR__ . '/../../src/App/Entity', + ], + ], + 'configuration' => [ + 'orm_default' => [ +// 'datetime_functions' => [ +// 'date' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'time' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'timestamp' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'convert_tz' => Oro\ORM\Query\AST\Functions\DateTime\ConvertTz::class, +// ], + 'numeric_functions' => [ +// 'timestampdiff' => Oro\ORM\Query\AST\Functions\Numeric\TimestampDiff::class, +// 'dayofyear' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'dayofmonth' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'dayofweek' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'week' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'day' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'hour' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'minute' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, + 'month' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'quarter' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'second' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, + 'year' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'sign' => Oro\ORM\Query\AST\Functions\Numeric\Sign::class, +// 'pow' => Oro\ORM\Query\AST\Functions\Numeric\Pow::class, + ], +// 'string_functions' => [ +// 'md5' => Oro\ORM\Query\AST\Functions\SimpleFunction::class, +// 'group_concat' => Oro\ORM\Query\AST\Functions\String\GroupConcat::class, +// 'cast' => Oro\ORM\Query\AST\Functions\Cast::class, +// 'concat_ws' => Oro\ORM\Query\AST\Functions\String\ConcatWs::class +// ] +// 'filters' => [ +// 'soft-deleteable' => Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter::class, +// ], + ], + ], + 'event_manager' => [ + 'orm_default' => [ + 'subscribers' => [ + Gedmo\Timestampable\TimestampableListener::class, + Gedmo\Tree\TreeListener::class, + // Gedmo\SoftDeleteable\SoftDeleteableListener::class, + // Gedmo\Translatable\TranslatableListener::class, + // Gedmo\Blameable\BlameableListener::class, + // Gedmo\Loggable\LoggableListener::class, + // Gedmo\Sortable\SortableListener::class, + // Gedmo\Sluggable\SluggableListener::class, + ], + ], + ], + ], +]; diff --git a/config/autoload/doctrine.local.dist.php b/config/autoload/doctrine.local.dist.php new file mode 100644 index 0000000..a3f3324 --- /dev/null +++ b/config/autoload/doctrine.local.dist.php @@ -0,0 +1,14 @@ + [ + 'connection' => [ + 'orm_default' => [ + 'params' => [ + 'url' => 'sqlite:///data/app.db', + 'charset' => 'UTF8', + ], + ], + ], + ], +]; diff --git a/config/autoload/local.php.dist b/config/autoload/local.php.dist new file mode 100644 index 0000000..0869f79 --- /dev/null +++ b/config/autoload/local.php.dist @@ -0,0 +1,27 @@ + [ + 'name' => 'Laterex Üzemeltető Kft.', + 'address' => '1095 Budapest, Hídépítő utca 1-12.', + 'tax_number' => '25398791-2-43', + 'sender' => 'nobody@localhost', + 'site-uri' => 'localhost', + ], + 'client' => [ + 'short' => 'XXII. kerület', + 'name' => 'Budafok-Tétény, Budapest, XXII. kerületi Önkormányzat', + 'address' => '1221 Budapest, Városház tér 11.', + 'tax_number' => '15735856-2-43', + ], + 'acl_config' => [ + 'hmac_key' => '', + ], +]; diff --git a/config/autoload/mail.local.dist.php b/config/autoload/mail.local.dist.php new file mode 100644 index 0000000..692fc9b --- /dev/null +++ b/config/autoload/mail.local.dist.php @@ -0,0 +1,29 @@ + [ +// 'transportClass' => Smtp::class, +// 'optionsClass' => SmtpOptions::class, +// 'options' => [ +// 'name' => 'localhost', +// 'host' => '127.0.0.1', +// 'port' => 25, +// 'connection_class' => 'plain', +// 'connection_config' => [ +// 'username' => 'user', +// 'password' => 'pass', +// ], +// ], + 'transportClass' => File::class, + 'optionsClass' => FileOptions::class, + 'options' => [ + 'path' => 'data/mail/', + ], + ] +]; diff --git a/config/autoload/router.global.php b/config/autoload/router.global.php new file mode 100644 index 0000000..0505bee --- /dev/null +++ b/config/autoload/router.global.php @@ -0,0 +1,12 @@ + [ + 'invokables' => [ + RouterInterface::class => FastRouteRouter::class, + ], + ], +]; diff --git a/config/autoload/zend-expressive.global.php b/config/autoload/zend-expressive.global.php new file mode 100644 index 0000000..dd4acd1 --- /dev/null +++ b/config/autoload/zend-expressive.global.php @@ -0,0 +1,27 @@ + true, + + // Enable debugging; typically used to provide debugging information within templates. + 'debug' => false, + + 'zend-expressive' => [ + // Enable programmatic pipeline: Any `middleware_pipeline` or `routes` + // configuration will be ignored when creating the `Application` instance. + 'programmatic_pipeline' => true, + + // Provide templates for the error handling middleware to use when + // generating responses. + 'error_handler' => [ + 'template_404' => 'error::404', + 'template_error' => 'error::error', + ], + ], +]; diff --git a/config/config.php b/config/config.php new file mode 100644 index 0000000..d07c342 --- /dev/null +++ b/config/config.php @@ -0,0 +1,36 @@ + 'data/config-cache.php', +]; + +$aggregator = new ConfigAggregator([ + \Zend\Mail\ConfigProvider::class, + \Zend\Validator\ConfigProvider::class, + \Zend\Cache\ConfigProvider::class, + \Zend\Hydrator\ConfigProvider::class, + // Include cache configuration + new ArrayProvider($cacheConfig), + + // Default App module config + App\ConfigProvider::class, + + // Load application config in a pre-defined order in such a way that local settings + // overwrite global settings. (Loaded as first to last): + // - `global.php` + // - `*.global.php` + // - `local.php` + // - `*.local.php` + new PhpFileProvider('config/autoload/{{,*.}global,{,*.}local}.php'), + + // Load development config if it exists + new PhpFileProvider('config/development.config.php'), +], $cacheConfig['config_cache_path']); + +return $aggregator->getMergedConfig(); diff --git a/config/container.php b/config/container.php new file mode 100644 index 0000000..e565faa --- /dev/null +++ b/config/container.php @@ -0,0 +1,16 @@ +configureServiceManager($container); + +// Inject config +$container->setService('config', $config); + +return $container; diff --git a/config/development.config.php.dist b/config/development.config.php.dist new file mode 100644 index 0000000..f9e594a --- /dev/null +++ b/config/development.config.php.dist @@ -0,0 +1,29 @@ + true, + ConfigAggregator::ENABLE_CACHE => false, +]; diff --git a/config/pipeline.php b/config/pipeline.php new file mode 100644 index 0000000..312fdf1 --- /dev/null +++ b/config/pipeline.php @@ -0,0 +1,58 @@ +pipe(Tuupola\Middleware\Cors::class); +$app->pipe(ErrorHandler::class); +$app->pipe(ServerUrlMiddleware::class); + +// Pipe more middleware here that you want to execute on every request: +// - bootstrapping +// - pre-conditions +// - modifications to outgoing responses +// +// Piped Middleware may be either callables or service names. Middleware may +// also be passed as an array; each item in the array must resolve to +// middleware eventually (i.e., callable or service name). +// +// Middleware can be attached to specific paths, allowing you to mix and match +// applications under a common domain. The handlers in each middleware +// attached this way will see a URI with the MATCHED PATH SEGMENT REMOVED!!! +// +// - $app->pipe('/api', $apiMiddleware); +// - $app->pipe('/docs', $apiDocMiddleware); +// - $app->pipe('/files', $filesMiddleware); + +// Register the routing middleware in the middleware pipeline +$app->pipeRoutingMiddleware(); +$app->pipe(ImplicitHeadMiddleware::class); +$app->pipe(ImplicitOptionsMiddleware::class); +$app->pipe(UrlHelperMiddleware::class); + +// Add more middleware here that needs to introspect the routing results; this +// might include: +// +// - route-based authentication +// - route-based validation +// - etc. +$app->pipe(Slim\Middleware\JwtAuthentication::class); +$app->pipe(App\Middleware\RouteAuthorization::class); + +// Register the dispatch middleware in the middleware pipeline +$app->pipeDispatchMiddleware(); + +// At this point, if no Response is return by any middleware, the +// NotFoundHandler kicks in; alternately, you can provide other fallback +// middleware to execute. +$app->pipe(NotFoundHandler::class); diff --git a/config/routes.php b/config/routes.php new file mode 100644 index 0000000..31fc92b --- /dev/null +++ b/config/routes.php @@ -0,0 +1,60 @@ +get('/', App\Action\HomePageAction::class, 'home'); + * $app->post('/album', App\Action\AlbumCreateAction::class, 'album.create'); + * $app->put('/album/:id', App\Action\AlbumUpdateAction::class, 'album.put'); + * $app->patch('/album/:id', App\Action\AlbumUpdateAction::class, 'album.patch'); + * $app->delete('/album/:id', App\Action\AlbumDeleteAction::class, 'album.delete'); + * + * Or with multiple request methods: + * + * $app->route('/contact', App\Action\ContactAction::class, ['GET', 'POST', ...], 'contact'); + * + * Or handling all request methods: + * + * $app->route('/contact', App\Action\ContactAction::class)->setName('contact'); + * + * or: + * + * $app->route( + * '/contact', + * App\Action\ContactAction::class, + * Zend\Expressive\Router\Route::HTTP_METHOD_ANY, + * 'contact' + * ); + */ + +$app->get('/', App\Action\PingAction::class, 'home'); +$app->get('/api/ping', App\Action\PingAction::class, 'api.ping'); + +$app->get('/api/maintenance/upcoming', App\Action\MaintenanceUpcomingAction::class, 'api.maintenance.upcoming'); +$app->route('/api/maintenance[/{id:\w+}]', App\Action\MaintenanceAction::class, ['GET', 'OPTIONS'], 'api.maintenance'); +$app->route('/api/maintenance/{id:\w+}', App\Action\MaintenanceAction::class, ['PUT'], 'api.maintenance.put'); + +// authentication and user management +$app->route('/api/auth/login', App\Action\Auth\AuthAction::class, ['POST', 'OPTIONS'], 'api.auth.login'); +$app->route('/api/auth/renew', App\Action\Auth\AuthAction::class, ['GET', 'OPTIONS'], 'api.auth.renew'); +$app->route('/api/user[/{id:\d+}]', App\Action\User\UserAction::class, ['GET', 'PUT', 'OPTIONS'], 'api.user.profile'); +$app->route('/api/user/password', App\Action\User\PasswordAction::class, ['POST', 'OPTIONS'], 'api.user.password'); + +// fault management +$app->route('/api/fault[/{id:\d+}]', App\Action\Fault\FaultAction::class, ['GET', 'OPTIONS'], 'api.fault.get'); // list/show +$app->post('/api/fault', App\Action\Fault\FaultAction::class, 'api.fault.post'); // create +$app->put('/api/fault/{id:\d+}', App\Action\Fault\FaultAction::class, 'api.fault.put'); // update +$app->delete('/api/fault/{id:\d+}', App\Action\Fault\FaultAction::class, 'api.fault.delete'); + +$app->route('/api/fault-reject/{id:\d+}', App\Action\Fault\FaultRejectAction::class, ['POST', 'OPTIONS'], 'api.fault-reject.post'); +$app->route('/api/fault-comment/{id:\d+}', App\Action\Fault\FaultCommentAction::class, ['POST', 'OPTIONS'], 'api.fault-comment.post'); +$app->route('/api/fault-attachment/{id:\d+}/{type}', App\Action\Fault\FaultAttachmentAction::class, ['POST', 'OPTIONS'], 'api.fault-attachment.post'); +$app->route('/show-attachment/{id:\d+}', App\Action\Fault\FaultAttachmentAction::class, ['GET', 'OPTIONS'], 'show-attachment'); + +$app->route('/hibajegy-pdf/{id:\d+}[/{filename}]', App\Action\Pdf\GenerateWorksheetAction::class, ['GET', 'OPTIONS'], 'hibajegy-pdf'); +$app->route('/karbantartasjegy-pdf/{id:\w+}[/{filename}]', App\Action\Pdf\GenerateMaintenanceSheetAction::class, ['GET', 'OPTIONS'], 'karbantartasjegy-pdf'); + +// core data +$app->route('/api/error-category', App\Action\ErrorCategoryAction::class, ['GET', 'OPTIONS'], 'api.error-category.get'); // list/show +$app->route('/api/error-origin', App\Action\ErrorOriginAction::class, ['GET', 'OPTIONS'], 'api.error-origin.get'); // list/show +$app->route('/api/facility-location', App\Action\FacilityLocationAction::class, ['GET', 'OPTIONS'], 'api.facility-location.get'); // list/show +$app->route('/api/solution-time-interval', App\Action\SolutionTimeIntervalAction::class, ['GET', 'OPTIONS'], 'api.solution-time-interval.get'); // list/show diff --git a/data/.gitignore b/data/.gitignore new file mode 100644 index 0000000..213a62f --- /dev/null +++ b/data/.gitignore @@ -0,0 +1,6 @@ +attachments +tmp +temp +cache +passwords-generated.txt +user-upload \ No newline at end of file diff --git a/data/fixture/error-category.yml b/data/fixture/error-category.yml new file mode 100644 index 0000000..43668c6 --- /dev/null +++ b/data/fixture/error-category.yml @@ -0,0 +1,86 @@ +ErrorCategories: + ErrorCategory_1: + id: 1 + name: "víz-, és szennyvízrendszer" + type: "machinery" + active: true + ErrorCategory_2: + id: 2 + name: "hideg-, és melegvizes végberendezés, szerelvény, stb." + type: "machinery" + active: true + ErrorCategory_3: + id: 3 + name: "fűtési rendszer és melegvíz szolgáltatás" + type: "machinery" + active: true + ErrorCategory_4: + id: 4 + name: "fűtési végberendezés, szabályozó, stb." + type: "machinery" + active: true + ErrorCategory_5: + id: 5 + name: "légtechnikai gépészeti rendszer" + type: "machinery" + active: true + ErrorCategory_6: + id: 6 + name: "légtecnikai gépészeti berendezés, szabályozó, stb." + type: "machinery" + active: true + ErrorCategory_7: + id: 7 + name: "elektromos rendszer" + type: "electric" + active: true + ErrorCategory_8: + id: 8 + name: "végelem: kapcsoló, dugaszolóaljzat, biztosíték, stb." + type: "electric" + active: true + ErrorCategory_9: + id: 9 + name: "kommunikációs hálózat" + type: "electric" + active: true + ErrorCategory_10: + id: 10 + name: "kommunikációs végberendezés (telefon, kamera , stb.)" + type: "electric" + active: true + ErrorCategory_11: + id: 11 + name: "tartószerkezetek, fal, mennyezet, válaszfal szerkezete" + type: "building" + active: true + ErrorCategory_12: + id: 12 + name: "tetők, falak, padozatok szigetelése" + type: "building" + active: true + ErrorCategory_13: + id: 13 + name: "álmennyezetek és padlófelületek " + type: "building" + active: true + ErrorCategory_14: + id: 14 + name: "falak és mennyezetek felületképzése" + type: "building" + active: true + ErrorCategory_15: + id: 15 + name: "ajtók, ablakok szerkezetei és szerelvényei" + type: "building" + active: true + ErrorCategory_16: + id: 16 + name: "egyéb felületképzések" + type: "building" + active: true + ErrorCategory_17: + id: 17 + name: "egyéb épületszerkezetek" + type: "building" + active: true diff --git a/data/fixture/error-origin.yml b/data/fixture/error-origin.yml new file mode 100644 index 0000000..bf28fe9 --- /dev/null +++ b/data/fixture/error-origin.yml @@ -0,0 +1,31 @@ +ErrorOrigins: + ErrorOrigin_1: + id: 1 + code: "ü" + name: "rendeltetésszerű használat" + active: true + ErrorOrigin_2: + id: 2 + code: "k" + name: "karbantartás" + active: true + ErrorOrigin_3: + id: 3 + code: "e" + name: "külső elhárítatlan ok" + active: true + ErrorOrigin_4: + id: 4 + code: "r" + name: "rongálás-károkozás" + active: true + ErrorOrigin_5: + id: 5 + code: "hn" + name: "rend. haszn. nem befolyásol" + active: true + ErrorOrigin_6: + id: 6 + code: "m" + name: "megrendelés" + active: true diff --git a/data/fixture/facility-location.yml b/data/fixture/facility-location.yml new file mode 100644 index 0000000..ea3807c --- /dev/null +++ b/data/fixture/facility-location.yml @@ -0,0 +1,2555 @@ +FacilityLocations: +# root node and floors + FacilityLocation_ROOT: + roomNumber: "root" + name: "root" + size: 0 + parent: false + FacilityLocation_P: + roomNumber: "P" + name: "Pince" + size: 970.88 + parent: FacilityLocation_ROOT + FacilityLocation_F: + roomNumber: "F" + name: "Földszint" + size: 1064.86 + parent: FacilityLocation_ROOT + FacilityLocation_1: + roomNumber: "1" + name: "1. emelet" + size: 970.47 + parent: FacilityLocation_ROOT + FacilityLocation_2: + roomNumber: "2" + name: "2. emelet" + size: 1009.21 + parent: FacilityLocation_ROOT + FacilityLocation_3: + roomNumber: "3" + name: "3. emelet" + size: 1158.62 + parent: FacilityLocation_ROOT + FacilityLocation_4: + roomNumber: "4" + name: "4. emelet" + size: 1190.81 + parent: FacilityLocation_ROOT + +# __P__ pince helyiségek + FacilityLocation_P01: + roomNumber: "P01" + name: "trafó" + size: 20.09 + parent: FacilityLocation_P + FacilityLocation_P02: + roomNumber: "P02" + name: "büfé" + size: 11.84 + parent: FacilityLocation_P + FacilityLocation_P03: + roomNumber: "P03" + name: "elektromos kapcsló" + size: 9.63 + parent: FacilityLocation_P + FacilityLocation_P04: + roomNumber: "P04" + name: "raktár" + size: 13.97 + parent: FacilityLocation_P + FacilityLocation_P05: + roomNumber: "P05" + name: "raktár" + size: 9.63 + parent: FacilityLocation_P + FacilityLocation_P06: + roomNumber: "P06" + name: "telefonközpont" + size: 22.36 + parent: FacilityLocation_P + FacilityLocation_P07: + roomNumber: "P07" + name: "raktár" + size: 22.36 + parent: FacilityLocation_P + FacilityLocation_P08: + roomNumber: "P08" + name: "öltörző" + size: 12.76 + parent: FacilityLocation_P + FacilityLocation_P08e: + roomNumber: "P08e" + name: "előtér" + size: 1.76 + parent: FacilityLocation_P08 + FacilityLocation_P08g: + roomNumber: "P08g" + name: "WC" + size: 1.68 + parent: FacilityLocation_P08 + FacilityLocation_P08f: + roomNumber: "P08f" + name: "zuhanyozó" + size: 1.98 + parent: FacilityLocation_P08 + FacilityLocation_P09: + roomNumber: "P09" + name: "bútorraktár" + size: 52.69 + parent: FacilityLocation_P + FacilityLocation_P10: + roomNumber: "P10" + name: "öltörző" + size: 12.08 + parent: FacilityLocation_P + FacilityLocation_P10e: + roomNumber: "P10e" + name: "előtér" + size: 1.76 + parent: FacilityLocation_P10 + FacilityLocation_P10g: + roomNumber: "P10g" + name: "WC" + size: 1.68 + parent: FacilityLocation_P10 + FacilityLocation_P10f: + roomNumber: "P10f" + name: "zuhanyozó" + size: 1.98 + parent: FacilityLocation_P10 + FacilityLocation_P11: + roomNumber: "P11" + name: "szárazáru raktár" + size: 24.74 + parent: FacilityLocation_P + FacilityLocation_P12: + roomNumber: "P12" + name: "öltöző" + size: 22.88 + parent: FacilityLocation_P + FacilityLocation_P12e: + roomNumber: "P12e" + name: "előtér" + size: 3.20 + parent: FacilityLocation_P12 + FacilityLocation_P12g: + roomNumber: "P12g" + name: "WC" + size: 5.03 + parent: FacilityLocation_P12 + FacilityLocation_P12f: + roomNumber: "P12f" + name: "zuhanyozó" + size: 5.51 + parent: FacilityLocation_P12 + FacilityLocation_P13: + roomNumber: "P13" + name: "szárazáru raktár" + size: 24.74 + parent: FacilityLocation_P + FacilityLocation_P14: + roomNumber: "P14" + name: "raktár" + size: 27.65 + parent: FacilityLocation_P + FacilityLocation_P15: + roomNumber: "P15" + name: "földesáru raktár" + size: 10.49 + parent: FacilityLocation_P + FacilityLocation_P16: + roomNumber: "P16" + name: "raktár" + size: 25.54 + parent: FacilityLocation_P + FacilityLocation_P17: + roomNumber: "P17" + name: "közlekedő" + size: 21.60 + parent: FacilityLocation_P + FacilityLocation_P18: + roomNumber: "P18" + name: "raktár" + size: 25.46 + parent: FacilityLocation_P + FacilityLocation_P19: + roomNumber: "P19" + name: "ital, göngyöleg raktár" + size: 8.08 + parent: FacilityLocation_P + FacilityLocation_P20: + roomNumber: "P20" + name: "hulladéktároló" + size: 8.19 + parent: FacilityLocation_P + FacilityLocation_P21: + roomNumber: "P21" + name: "hűtőkamra" + size: 3.36 + parent: FacilityLocation_P + FacilityLocation_P22: + roomNumber: "P22" + name: "mosléktároló" + size: 8.51 + parent: FacilityLocation_P + FacilityLocation_P23: + roomNumber: "P23" + name: "hűtőkamra" + size: 3.36 + parent: FacilityLocation_P + FacilityLocation_P24: + roomNumber: "P24" + name: "tároló" + size: 4.20 + parent: FacilityLocation_P + FacilityLocation_P25: + roomNumber: "P25" + name: "iroda" + size: 6.78 + parent: FacilityLocation_P + FacilityLocation_P26: + roomNumber: "P26" + name: "klub" + size: 93.58 + parent: FacilityLocation_P + FacilityLocation_P27: + roomNumber: "P27" + name: "közlekedő" + size: 47.29 + parent: FacilityLocation_P + FacilityLocation_P28: + roomNumber: "P28" + name: "tároló" + size: 8.56 + parent: FacilityLocation_P + FacilityLocation_P29: + roomNumber: "P29" + name: "közlekedő" + size: 59.36 + parent: FacilityLocation_P + FacilityLocation_P30: + roomNumber: "P30" + name: "raktár" + size: 5.12 + parent: FacilityLocation_P + FacilityLocation_P31: + roomNumber: "P31" + name: "előtér" + size: 11.62 + parent: FacilityLocation_P + FacilityLocation_P32: + roomNumber: "P32" + name: "WC előtér" + size: 4.37 + parent: FacilityLocation_P + FacilityLocation_P33: + roomNumber: "P33" + name: "közlekedő" + size: 33.12 + parent: FacilityLocation_P + FacilityLocation_P34: + roomNumber: "P34" + name: "mozgássérült WC" + size: 3.24 + parent: FacilityLocation_P + FacilityLocation_P35: + roomNumber: "P35" + name: "kazánház" + size: 57.78 + parent: FacilityLocation_P + FacilityLocation_P36: + roomNumber: "P36" + name: "ffi. WC mosdóval" + size: 4.77 + parent: FacilityLocation_P + FacilityLocation_P37: + roomNumber: "P37" + name: "tároló" + size: 3.91 + parent: FacilityLocation_P + FacilityLocation_P38: + roomNumber: "P38" + name: "női WC mosdóval" + size: 2.94 + parent: FacilityLocation_P + FacilityLocation_P39: + roomNumber: "P39" + name: "boiler tér" + size: 7.81 + parent: FacilityLocation_P + FacilityLocation_P40: + roomNumber: "P40" + name: "öltöző" + size: 12.88 + parent: FacilityLocation_P + FacilityLocation_P40e: + roomNumber: "P40e" + name: "előtér" + size: 1.76 + parent: FacilityLocation_P40 + FacilityLocation_P40g: + roomNumber: "P40g" + name: "WC" + size: 1.68 + parent: FacilityLocation_P40 + FacilityLocation_P40f: + roomNumber: "P40f" + name: "zuhanyozó" + size: 1.98 + parent: FacilityLocation_P40 + FacilityLocation_P41: + roomNumber: "P41" + name: "mosószoba" + size: 12.99 + parent: FacilityLocation_P + FacilityLocation_P42: + roomNumber: "P42" + name: "öltöző" + size: 12.88 + parent: FacilityLocation_P + FacilityLocation_P42e: + roomNumber: "P42e" + name: "előtér" + size: 1.76 + parent: FacilityLocation_P42 + FacilityLocation_P42g: + roomNumber: "P42g" + name: "WC" + size: 1.68 + parent: FacilityLocation_P42 + FacilityLocation_P42f: + roomNumber: "P42f" + name: "zuhanyozó" + size: 1.98 + parent: FacilityLocation_P42 + FacilityLocation_P43: + roomNumber: "P43" + name: "szauna" + size: 24.81 + parent: FacilityLocation_P + FacilityLocation_P44: + roomNumber: "P44" + name: "kondicionáló terem" + size: 115.43 + parent: FacilityLocation_P + +# __F__ földszinti helyiségek + FacilityLocation_F01: + roomNumber: "F01" + name: "előlépcső (nyugati)" + size: 17.87 + parent: FacilityLocation_F + FacilityLocation_F02: + roomNumber: "F02" + name: "előcsarnok" + size: 59.72 + parent: FacilityLocation_F + FacilityLocation_F03: + roomNumber: "F03" + name: "előlépcső (keleti)" + size: 17.87 + parent: FacilityLocation_F + FacilityLocation_F04: + roomNumber: "F04" + name: "étterem" + size: 150.85 + parent: FacilityLocation_F + FacilityLocation_F05: + roomNumber: "F05" + name: "különterem" + size: 54.86 + parent: FacilityLocation_F + FacilityLocation_F06: + roomNumber: "F06" + name: "tálaló" + size: 9.31 + parent: FacilityLocation_F + FacilityLocation_F07: + roomNumber: "F07" + name: "feketemosogató" + size: 8.85 + parent: FacilityLocation_F + FacilityLocation_F08: + roomNumber: "F08" + name: "húselőkészítő" + size: 8.46 + parent: FacilityLocation_F + FacilityLocation_F09: + roomNumber: "F09" + name: "főzőkonyha" + size: 23.25 + parent: FacilityLocation_F + FacilityLocation_F10: + roomNumber: "F10" + name: "közlekedő" + size: 15.00 + parent: FacilityLocation_F + FacilityLocation_F11: + roomNumber: "F11" + name: "szennyesbeadó" + size: 7.90 + parent: FacilityLocation_F + FacilityLocation_F12: + roomNumber: "F12" + name: "fehérmosogató" + size: 11.70 + parent: FacilityLocation_F + FacilityLocation_F13: + roomNumber: "F13" + name: "zölség utánmosó" + size: 8.30 + parent: FacilityLocation_F + FacilityLocation_F14: + roomNumber: "F14" + name: "hidegkonyha" + size: 14.40 + parent: FacilityLocation_F + FacilityLocation_F15: + roomNumber: "F15" + name: "hűtőkamra" + size: 5.08 + parent: FacilityLocation_F + FacilityLocation_F16: + roomNumber: "F16" + name: "teherlift előtér" + size: 5.25 + parent: FacilityLocation_F + FacilityLocation_F17: + roomNumber: "F17" + name: "kocsimosó" + size: 3.20 + parent: FacilityLocation_F + FacilityLocation_F18: + roomNumber: "F18" + name: "takarítószer tároló" + size: 8.51 + parent: FacilityLocation_F + FacilityLocation_F10lk: + roomNumber: "F10lk" + name: "lépcsőkarok pihenővel" + size: 15.12 + parent: FacilityLocation_F + FacilityLocation_F19: + roomNumber: "F19" + name: "tároló" + size: 0.98 + parent: FacilityLocation_F + FacilityLocation_F20: + roomNumber: "F20" + name: "üzlet" + size: 13.27 + parent: FacilityLocation_F + FacilityLocation_F21: + roomNumber: "F21" + name: "pénzváltó" + size: 12.49 + parent: FacilityLocation_F + FacilityLocation_F22: + roomNumber: "F22" + name: "előcsarnok" + size: 53.41 + parent: FacilityLocation_F + FacilityLocation_F23: + roomNumber: "F23" + name: "recepció/porta" + size: 15.07 + parent: FacilityLocation_F + FacilityLocation_F24: + roomNumber: "F24" + name: "iroda" + size: 11.38 + parent: FacilityLocation_F + FacilityLocation_F25: + roomNumber: "F25" + name: "iroda" + size: 12.29 + parent: FacilityLocation_F + FacilityLocation_F26: + roomNumber: "F26" + name: "lépcső beléptetővel" + size: 3.70 + parent: FacilityLocation_F + FacilityLocation_F27: + roomNumber: "F27" + name: "hall" + size: 102.51 + parent: FacilityLocation_F + FacilityLocation_F27lk: + roomNumber: "F27lk" + name: "lépcsőkarok pihenővel" + size: 17.82 + parent: FacilityLocation_F + FacilityLocation_F28: + roomNumber: "F28" + name: "ffi. WC" + size: 7.71 + parent: FacilityLocation_F + FacilityLocation_F29: + roomNumber: "F29" + name: "ak.mentes WC" + size: 2.99 + parent: FacilityLocation_F + FacilityLocation_F30: + roomNumber: "F30" + name: "női WC" + size: 9.93 + parent: FacilityLocation_F + FacilityLocation_F31: + roomNumber: "F31" + name: "raktár" + size: 8.30 + parent: FacilityLocation_F + FacilityLocation_F32: + roomNumber: "F32" + name: "raktár" + size: 8.70 + parent: FacilityLocation_F + FacilityLocation_F33: + roomNumber: "F33" + name: "könyvtár" + size: 231.84 + parent: FacilityLocation_F + FacilityLocation_F34: + roomNumber: "F34" + name: "iroda" + size: 19.65 + parent: FacilityLocation_F + FacilityLocation_F35: + roomNumber: "F35" + name: "számítógép terem" + size: 40.38 + parent: FacilityLocation_F + FacilityLocation_F36: + roomNumber: "F36" + name: "előlépcső rámpával (keleti)" + size: 31.85 + parent: FacilityLocation_F + FacilityLocation_L1: + roomNumber: "L1" + name: "lift 8 fő - 630 kg" + size: 1.50 + parent: FacilityLocation_F + FacilityLocation_L2: + roomNumber: "L2" + name: "lift - 6 fő 500 kg" + size: 1.50 + parent: FacilityLocation_F + FacilityLocation_L3: + roomNumber: "L3" + name: "teherlift 250 kg" + size: 1.20 + parent: FacilityLocation_F + FacilityLocation_L4: + roomNumber: "L4" + name: "teherlift 250 kg" + size: 1.20 + parent: FacilityLocation_F + FacilityLocation_L5: + roomNumber: "L5" + name: "teherlift 200 kg" + size: 1.20 + parent: FacilityLocation_F + FacilityLocation_Klk: + roomNumber: "Klk" + name: "külső lépcső (pincébe)" + size: 8.50 + parent: FacilityLocation_F + +# __1__ első emeleti helyiségek + FacilityLocation_101: + roomNumber: "101" + name: "mozgássérült szoba" + size: 22.44 + parent: FacilityLocation_1 + FacilityLocation_101e: + roomNumber: "101e" + name: "előtér" + size: 3.26 + parent: FacilityLocation_101 + FacilityLocation_101f: + roomNumber: "101f" + name: "fürdő" + size: 5.27 + parent: FacilityLocation_101 + FacilityLocation_101t: + roomNumber: "101t" + name: "erkély" + size: 7.43 + parent: FacilityLocation_101 + FacilityLocation_102: + roomNumber: "102" + name: "raktár" + size: 3.85 + parent: FacilityLocation_1 + FacilityLocation_103: + roomNumber: "103" + name: "szobasszony" + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_103e: + roomNumber: "103e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_103 + FacilityLocation_103f: + roomNumber: "103f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_103 + FacilityLocation_103t: + roomNumber: "103t" + name: "erkély" + size: 6.16 + parent: FacilityLocation_103 + FacilityLocation_104: + roomNumber: "104" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_104e: + roomNumber: "104e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_104 + FacilityLocation_104f: + roomNumber: "104f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_104 + FacilityLocation_104t: + roomNumber: "104t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_104 + FacilityLocation_105: + roomNumber: "105" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_105e: + roomNumber: "105e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_105 + FacilityLocation_105f: + roomNumber: "105f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_105 + FacilityLocation_105t: + roomNumber: "105t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_105 + FacilityLocation_106: + roomNumber: "106" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_106e: + roomNumber: "106e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_106 + FacilityLocation_106f: + roomNumber: "106f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_106 + FacilityLocation_106t: + roomNumber: "106t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_106 + FacilityLocation_107: + roomNumber: "107" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_107e: + roomNumber: "107e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_107 + FacilityLocation_107f: + roomNumber: "107f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_107 + FacilityLocation_107t: + roomNumber: "107t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_107 + FacilityLocation_108: + roomNumber: "108" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_108e: + roomNumber: "108e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_108 + FacilityLocation_108f: + roomNumber: "108f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_108 + FacilityLocation_108t: + roomNumber: "108t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_108 + FacilityLocation_109: + roomNumber: "109" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_109e: + roomNumber: "109e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_109 + FacilityLocation_109f: + roomNumber: "109f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_109 + FacilityLocation_109t: + roomNumber: "109t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_109 + FacilityLocation_110: + roomNumber: "110" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_110e: + roomNumber: "110e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_110 + FacilityLocation_110f: + roomNumber: "110f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_110 + FacilityLocation_110t: + roomNumber: "110t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_110 + FacilityLocation_111: + roomNumber: "111" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_111e: + roomNumber: "111e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_111 + FacilityLocation_111f: + roomNumber: "111f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_111 + FacilityLocation_111t: + roomNumber: "111t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_111 + FacilityLocation_112: + roomNumber: "112" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_112e: + roomNumber: "112e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_112 + FacilityLocation_112f: + roomNumber: "112f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_112 + FacilityLocation_112t: + roomNumber: "112t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_112 + FacilityLocation_113: + roomNumber: "113" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_113e: + roomNumber: "113e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_113 + FacilityLocation_113f: + roomNumber: "113f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_113 + FacilityLocation_113t: + roomNumber: "113t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_113 + FacilityLocation_114: + roomNumber: "114" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_114e: + roomNumber: "114e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_114 + FacilityLocation_114f: + roomNumber: "114f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_114 + FacilityLocation_114t: + roomNumber: "114t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_114 + FacilityLocation_115: + roomNumber: "115" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_115e: + roomNumber: "115e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_115 + FacilityLocation_115f: + roomNumber: "115f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_115 + FacilityLocation_115t: + roomNumber: "115t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_115 + FacilityLocation_116: + roomNumber: "116" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_116e: + roomNumber: "116e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_116 + FacilityLocation_116f: + roomNumber: "116f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_116 + FacilityLocation_116t: + roomNumber: "116t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_116 + FacilityLocation_117: + roomNumber: "117" + name: "szoba IV." + size: 16.48 + parent: FacilityLocation_1 + FacilityLocation_117e: + roomNumber: "117e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_117 + FacilityLocation_117f: + roomNumber: "117f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_117 + FacilityLocation_117t: + roomNumber: "117t" + name: "terasz" + size: 5.33 + parent: FacilityLocation_117 + FacilityLocation_119: + roomNumber: "119" + name: "gépészeti terúlet" + size: 28.07 + parent: FacilityLocation_1 + FacilityLocation_120: + roomNumber: "120" + name: "elektromos kapcsolótér" + size: 1.87 + parent: FacilityLocation_1 + FacilityLocation_121: + roomNumber: "121" + name: "szoba III." + size: 18.42 + parent: FacilityLocation_1 + FacilityLocation_121e: + roomNumber: "121e" + name: "előtér" + size: 2.66 + parent: FacilityLocation_121 + FacilityLocation_121f: + roomNumber: "121f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_121 + FacilityLocation_121t: + roomNumber: "121t" + name: "erkély" + size: 7.13 + parent: FacilityLocation_121 + FacilityLocation_122: + roomNumber: "122" + name: "szoba VI." + size: 21.70 + parent: FacilityLocation_1 + FacilityLocation_122e: + roomNumber: "122e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_122 + FacilityLocation_122f: + roomNumber: "122f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_122 + FacilityLocation_122t: + roomNumber: "122t" + name: "terasz" + size: 7.13 + parent: FacilityLocation_122 + FacilityLocation_123: + roomNumber: "123" + name: "szoba I." + size: 16.85 + parent: FacilityLocation_1 + FacilityLocation_123e: + roomNumber: "123e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_123 + FacilityLocation_123f: + roomNumber: "123f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_123 + FacilityLocation_123t: + roomNumber: "123t" + name: "terasz" + size: 5.54 + parent: FacilityLocation_123 + FacilityLocation_124: + roomNumber: "124" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_1 + FacilityLocation_124e: + roomNumber: "124e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_124 + FacilityLocation_124f: + roomNumber: "124f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_124 + FacilityLocation_124t: + roomNumber: "124t" + name: "terasz" + size: 5.38 + parent: FacilityLocation_124 + FacilityLocation_125: + roomNumber: "125" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_125e: + roomNumber: "125e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_125 + FacilityLocation_125f: + roomNumber: "125f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_125 + FacilityLocation_125t: + roomNumber: "125t" + name: "terasz" + size: 5.54 + parent: FacilityLocation_125 + FacilityLocation_126: + roomNumber: "126" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_126e: + roomNumber: "126e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_126 + FacilityLocation_126f: + roomNumber: "126f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_126 + FacilityLocation_126t: + roomNumber: "126t" + name: "terasz" + size: 5.54 + parent: FacilityLocation_126 + FacilityLocation_127: + roomNumber: "127" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_127e: + roomNumber: "127e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_127 + FacilityLocation_127f: + roomNumber: "127f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_127 + FacilityLocation_127t: + roomNumber: "127t" + name: "terasz" + size: 5.54 + parent: FacilityLocation_127 + FacilityLocation_128: + roomNumber: "128" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_128e: + roomNumber: "128e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_128 + FacilityLocation_128f: + roomNumber: "128f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_128 + FacilityLocation_128at: + roomNumber: "128at" + name: "terasz" + size: 5.54 + parent: FacilityLocation_128 + FacilityLocation_129: + roomNumber: "129" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_129e: + roomNumber: "129e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_129 + FacilityLocation_129f: + roomNumber: "129f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_129 + FacilityLocation_129t: + roomNumber: "129t" + name: "terasz" + size: 5.54 + parent: FacilityLocation_129 + FacilityLocation_130: + roomNumber: "130" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_1 + FacilityLocation_130e: + roomNumber: "130e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_130 + FacilityLocation_130f: + roomNumber: "130f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_130 + FacilityLocation_130t: + roomNumber: "130t" + name: "terasz" + size: 5.54 + parent: FacilityLocation_130 + FacilityLocation_131: + roomNumber: "131" + name: "szoba II." + size: 17.22 + parent: FacilityLocation_1 + FacilityLocation_131e: + roomNumber: "131e" + name: "előtér" + size: 2.66 + parent: FacilityLocation_131 + FacilityLocation_131f: + roomNumber: "131f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_131 + FacilityLocation_132: + roomNumber: "132" + name: "szoba II." + size: 17.22 + parent: FacilityLocation_1 + FacilityLocation_132e: + roomNumber: "132e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_132 + FacilityLocation_132f: + roomNumber: "132f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_132 + FacilityLocation_132t: + roomNumber: "132t" + name: "terasz" + size: 5.60 + parent: FacilityLocation_132 + FacilityLocation_133: + roomNumber: "133" + name: "menekülési ajtó külső lépcsővel" + size: 0 + parent: FacilityLocation_1 + FacilityLocation_134: + roomNumber: "134" + name: "közlekedő" + size: 46.03 + parent: FacilityLocation_1 + FacilityLocation_135: + roomNumber: "135" + name: "lift előtér telefonos sarokkal" + size: 18.00 + parent: FacilityLocation_1 + FacilityLocation_135lk: + roomNumber: "135lk" + name: "lépcsőkarok pihenővel" + size: 17.82 + parent: FacilityLocation_135 + FacilityLocation_137: + roomNumber: "137" + name: "lépcsőház" + size: 25.86 + parent: FacilityLocation_1 + FacilityLocation_137lk: + roomNumber: "137lk" + name: "lépcsőkarok pihenővel" + size: 15.12 + parent: FacilityLocation_1 + FacilityLocation_138: + roomNumber: "138" + name: "tároló" + size: 0.98 + parent: FacilityLocation_1 + +# __2__ első emeleti helyiségek + FacilityLocation_201: + roomNumber: "201" + name: "mozgássérült szoba" + size: 22.44 + parent: FacilityLocation_2 + FacilityLocation_201e: + roomNumber: "201e" + name: "előtér" + size: 3.26 + parent: FacilityLocation_201 + FacilityLocation_201f: + roomNumber: "201f" + name: "fürdő" + size: 5.27 + parent: FacilityLocation_201 + FacilityLocation_201t: + roomNumber: "201t" + name: "erkély" + size: 7.43 + parent: FacilityLocation_201 + FacilityLocation_202: + roomNumber: "202" + name: "raktár" + size: 3.85 + parent: FacilityLocation_2 + FacilityLocation_203: + roomNumber: "203" + name: "szobasszony" + size: 17.47 + parent: FacilityLocation_2 + FacilityLocation_203e: + roomNumber: "203e" + name: "előtér" + size: 4.34 + parent: FacilityLocation_203 + FacilityLocation_203t: + roomNumber: "203t" + name: "erkély" + size: 6.16 + parent: FacilityLocation_203 + FacilityLocation_204: + roomNumber: "204" + name: "szoba V." + size: 17.47 + parent: FacilityLocation_2 + FacilityLocation_204e: + roomNumber: "204e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_204 + FacilityLocation_204f: + roomNumber: "204f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_204 + FacilityLocation_204t: + roomNumber: "204t" + name: "erkély" + size: 5.84 + parent: FacilityLocation_204 + FacilityLocation_205: + roomNumber: "205" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_205e: + roomNumber: "205e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_205 + FacilityLocation_205f: + roomNumber: "205f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_205 + FacilityLocation_205t: + roomNumber: "205t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_205 + FacilityLocation_206: + roomNumber: "206" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_206e: + roomNumber: "206e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_206 + FacilityLocation_206f: + roomNumber: "206f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_206 + FacilityLocation_206t: + roomNumber: "206t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_206 + FacilityLocation_207: + roomNumber: "207" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_207e: + roomNumber: "207e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_207 + FacilityLocation_207f: + roomNumber: "207f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_207 + FacilityLocation_207t: + roomNumber: "207t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_207 + FacilityLocation_208: + roomNumber: "208" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_208e: + roomNumber: "208e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_208 + FacilityLocation_208f: + roomNumber: "208f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_208 + FacilityLocation_208t: + roomNumber: "208t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_208 + FacilityLocation_209: + roomNumber: "209" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_209e: + roomNumber: "209e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_209 + FacilityLocation_209f: + roomNumber: "209f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_209 + FacilityLocation_209t: + roomNumber: "209t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_209 + FacilityLocation_210: + roomNumber: "210" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_210e: + roomNumber: "210e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_210 + FacilityLocation_210f: + roomNumber: "210f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_210 + FacilityLocation_210t: + roomNumber: "210t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_210 + FacilityLocation_211: + roomNumber: "211" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_211e: + roomNumber: "211e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_211 + FacilityLocation_211f: + roomNumber: "211f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_211 + FacilityLocation_211t: + roomNumber: "211t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_211 + FacilityLocation_212: + roomNumber: "212" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_212e: + roomNumber: "212e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_212 + FacilityLocation_212f: + roomNumber: "212f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_212 + FacilityLocation_212t: + roomNumber: "212t" + name: erkély + size: 5.54 + parent: FacilityLocation_212 + FacilityLocation_213: + roomNumber: "213" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_213e: + roomNumber: "213e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_213 + FacilityLocation_213f: + roomNumber: "213f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_213 + FacilityLocation_213t: + roomNumber: "213t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_213 + FacilityLocation_214: + roomNumber: "214" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_214e: + roomNumber: "214e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_214 + FacilityLocation_214f: + roomNumber: "214f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_214 + FacilityLocation_214t: + roomNumber: "214t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_214 + FacilityLocation_215: + roomNumber: "215" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_215e: + roomNumber: "215e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_215 + FacilityLocation_215f: + roomNumber: "215f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_215 + FacilityLocation_215t: + roomNumber: "215t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_215 + FacilityLocation_216: + roomNumber: "216" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_216e: + roomNumber: "216e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_216 + FacilityLocation_216f: + roomNumber: "216f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_216 + FacilityLocation_216t: + roomNumber: "216t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_216 + FacilityLocation_217: + roomNumber: "217" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_217e: + roomNumber: "217e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_217 + FacilityLocation_217f: + roomNumber: "217f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_217 + FacilityLocation_217t: + roomNumber: "217t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_217 + FacilityLocation_218: + roomNumber: "218" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_218e: + roomNumber: "218e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_218 + FacilityLocation_218f: + roomNumber: "218f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_218 + FacilityLocation_218t: + roomNumber: "218t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_218 + FacilityLocation_219: + roomNumber: "219" + name: "szoba V." + size: 19.70 + parent: FacilityLocation_2 + FacilityLocation_219e: + roomNumber: "219e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_219 + FacilityLocation_219f: + roomNumber: "219f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_219 + FacilityLocation_219t: + roomNumber: "219t" + name: "erkély" + size: 6.39 + parent: FacilityLocation_219 + FacilityLocation_220: + roomNumber: "220" + name: "elektromos kapcsolótér" + size: 1.87 + parent: FacilityLocation_2 + FacilityLocation_221: + roomNumber: "221" + name: "szoba III." + size: 18.68 + parent: FacilityLocation_2 + FacilityLocation_221e: + roomNumber: "221e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_221 + FacilityLocation_221f: + roomNumber: "221f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_221 + FacilityLocation_221t: + roomNumber: "221t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_221 + FacilityLocation_222: + roomNumber: "222" + name: "szoba VI." + size: 21.70 + parent: FacilityLocation_2 + FacilityLocation_222e: + roomNumber: "222e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_222 + FacilityLocation_222f: + roomNumber: "222f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_222 + FacilityLocation_222t: + roomNumber: "222t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_222 + FacilityLocation_223: + roomNumber: "223" + name: "szoba I." + size: 16.85 + parent: FacilityLocation_2 + FacilityLocation_223e: + roomNumber: "223e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_223 + FacilityLocation_223f: + roomNumber: "223f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_223 + FacilityLocation_223t: + roomNumber: "223t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_223 + FacilityLocation_224: + roomNumber: "224" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_224e: + roomNumber: "224e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_224 + FacilityLocation_224f: + roomNumber: "224f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_224 + FacilityLocation_224t: + roomNumber: "224t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_224 + FacilityLocation_225: + roomNumber: "225" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_225e: + roomNumber: "225e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_225 + FacilityLocation_225f: + roomNumber: "225f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_225 + FacilityLocation_225t: + roomNumber: "225t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_225 + FacilityLocation_226: + roomNumber: "226" + name: "szoba I." + size: 16.73 + parent: FacilityLocation_2 + FacilityLocation_226e: + roomNumber: "226e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_226 + FacilityLocation_226f: + roomNumber: "226f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_226 + FacilityLocation_226t: + roomNumber: "226t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_226 + FacilityLocation_227: + roomNumber: "227" + name: "szoba I." + size: 13.17 + parent: FacilityLocation_2 + FacilityLocation_227n: + roomNumber: "227n" + name: "nappali" + size: 20.70 + parent: FacilityLocation_227 + FacilityLocation_227e: + roomNumber: "227e" + name: "előtér" + size: 6.27 + parent: FacilityLocation_227 + FacilityLocation_227f: + roomNumber: "227f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_227 + FacilityLocation_227k: + roomNumber: "227k" + name: "konyha" + size: 5.26 + parent: FacilityLocation_227 + FacilityLocation_227t: + roomNumber: "227t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_227 + FacilityLocation_227tn: + roomNumber: "227tn" + name: "erkély" + size: 5.54 + parent: FacilityLocation_227 + FacilityLocation_228: + roomNumber: "228" + name: "szoba" + size: 20.70 + parent: FacilityLocation_2 + FacilityLocation_228e: + roomNumber: "228e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_228 + FacilityLocation_228f: + roomNumber: "228f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_228 + FacilityLocation_228t: + roomNumber: "228t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_228 + FacilityLocation_229: + roomNumber: "229" + name: "szoba II." + size: 17.22 + parent: FacilityLocation_2 + FacilityLocation_229e: + roomNumber: "229e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_229 + FacilityLocation_229f: + roomNumber: "229f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_229 + FacilityLocation_229t: + roomNumber: "229t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_229 + FacilityLocation_230: + roomNumber: "230" + name: "szoba" + size: 20.70 + parent: FacilityLocation_2 + FacilityLocation_230e: + roomNumber: "230e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_230 + FacilityLocation_230f: + roomNumber: "230f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_230 + FacilityLocation_230t: + roomNumber: "230t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_230 + FacilityLocation_231: + roomNumber: "231" + name: "menekülési ajtó külső lépcsővel" + size: 0 + parent: FacilityLocation_2 + FacilityLocation_232: + roomNumber: "232" + name: "szoba II." + size: 17.22 + parent: FacilityLocation_2 + FacilityLocation_232e: + roomNumber: "232e" + name: "előtér" + size: 2.04 + parent: FacilityLocation_232 + FacilityLocation_232f: + roomNumber: "232f" + name: "fürdő" + size: 3.85 + parent: FacilityLocation_232 + FacilityLocation_232t: + roomNumber: "232t" + name: "erkély" + size: 5.54 + parent: FacilityLocation_232 + FacilityLocation_233: + roomNumber: "233" + name: "lépcsőház - lift eleőtér" + size: 25.86 + parent: FacilityLocation_2 + FacilityLocation_233lk: + roomNumber: "233lk" + name: "lépcsőkarok pihenővel" + size: 15.12 + parent: FacilityLocation_2 + FacilityLocation_234: + roomNumber: "234" + name: "tároló" + size: 0.98 + parent: FacilityLocation_2 + FacilityLocation_235: + roomNumber: "235" + name: "közlekedő" + size: 46.03 + parent: FacilityLocation_2 + FacilityLocation_236: + roomNumber: "236" + name: "lift előtér telefonos sarokkal" + size: 18.00 + parent: FacilityLocation_2 + FacilityLocation_236lk: + roomNumber: "236lk" + name: "lépcsőkarok pihenővel" + size: 17.82 + parent: FacilityLocation_2 + +# __3__ első emeleti helyiségek + FacilityLocation_301: + roomNumber: "301" + name: "mozgássérült szoba" + size: 22.44 + parent: FacilityLocation_3 + FacilityLocation_301e: + roomNumber: "301e" + name: "előtér" + size: 4.88 + parent: FacilityLocation_301 + FacilityLocation_301f: + roomNumber: "301f" + name: "fürdő" + size: 5.08 + parent: FacilityLocation_301 + FacilityLocation_301t: + roomNumber: "301t" + name: "erkély" + size: 6.35 + parent: FacilityLocation_301 + FacilityLocation_302: + roomNumber: "302" + name: "elektromos kapcsolótér" + size: 1.87 + parent: FacilityLocation_3 + FacilityLocation_303: + roomNumber: "303" + name: "iroda" + size: 27.47 + parent: FacilityLocation_3 + FacilityLocation_303e: + roomNumber: "303e" + name: "előtér" + size: 4.32 + parent: FacilityLocation_303 + FacilityLocation_303_1: + roomNumber: "303/1" + name: "számtech. elosztó" + size: 3.66 + parent: FacilityLocation_303 + FacilityLocation_303t: + roomNumber: "303t" + name: "erkély" + size: 5.13 + parent: FacilityLocation_303 + FacilityLocation_304: + roomNumber: "304" + name: "szoba V." + size: 17.72 + parent: FacilityLocation_3 + FacilityLocation_304e: + roomNumber: "304e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_304 + FacilityLocation_304f: + roomNumber: "304f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_304 + FacilityLocation_304t: + roomNumber: "304t" + name: "erkély" + size: 5.38 + parent: FacilityLocation_304 + FacilityLocation_305: + roomNumber: "305" + name: "iroda" + size: 25.09 + parent: FacilityLocation_3 + FacilityLocation_305t: + roomNumber: "305t" + name: "erkély" + size: 5.33 + parent: FacilityLocation_305 + FacilityLocation_306: + roomNumber: "306" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_3 + FacilityLocation_306e: + roomNumber: "306e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_306 + FacilityLocation_306f: + roomNumber: "306f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_306 + FacilityLocation_306t: + roomNumber: "306t" + name: "erkély" + size: 5.38 + parent: FacilityLocation_306 + FacilityLocation_307: + roomNumber: "307" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_3 + FacilityLocation_307e: + roomNumber: "307e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_307 + FacilityLocation_307f: + roomNumber: "307f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_307 + FacilityLocation_307t: + roomNumber: "307t" + name: "erkély" + size: 5.33 + parent: FacilityLocation_307 + FacilityLocation_308: + roomNumber: "308" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_3 + FacilityLocation_308e: + roomNumber: "308e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_308 + FacilityLocation_308f: + roomNumber: "308f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_308 + FacilityLocation_308t: + roomNumber: "308t" + name: "erkély" + size: 5.38 + parent: FacilityLocation_308 + FacilityLocation_309: + roomNumber: "309" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_3 + FacilityLocation_309e: + roomNumber: "309e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_309 + FacilityLocation_309f: + roomNumber: "309f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_309 + FacilityLocation_309t: + roomNumber: "309t" + name: "erkély" + size: 5.33 + parent: FacilityLocation_309 + FacilityLocation_310: + roomNumber: "310" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_3 + FacilityLocation_310e: + roomNumber: "310e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_310 + FacilityLocation_310f: + roomNumber: "310f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_310 + FacilityLocation_310t: + roomNumber: "310t" + name: "erkély" + size: 5.38 + parent: FacilityLocation_310 + FacilityLocation_311: + roomNumber: "311" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_3 + FacilityLocation_311e: + roomNumber: "311e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_311 + FacilityLocation_311f: + roomNumber: "311f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_311 + FacilityLocation_311t: + roomNumber: "311t" + name: "erkély" + size: 5.33 + parent: FacilityLocation_311 + FacilityLocation_312: + roomNumber: "312" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_3 + FacilityLocation_312e: + roomNumber: "312e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_312 + FacilityLocation_312f: + roomNumber: "312f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_312 + FacilityLocation_312t: + roomNumber: "312t" + name: "erkély" + size: 5.38 + parent: FacilityLocation_312 + FacilityLocation_313: + roomNumber: "313" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_3 + FacilityLocation_313e: + roomNumber: "313e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_313 + FacilityLocation_313f: + roomNumber: "313f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_313 + FacilityLocation_313t: + roomNumber: "313t" + name: "erkély" + size: 5.33 + parent: FacilityLocation_313 + FacilityLocation_314: + roomNumber: "314" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_3 + FacilityLocation_314e: + roomNumber: "314e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_314 + FacilityLocation_314f: + roomNumber: "314f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_314 + FacilityLocation_314t: + roomNumber: "314t" + name: "erkély" + size: 5.38 + parent: FacilityLocation_314 + FacilityLocation_315: + roomNumber: "315" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_3 + FacilityLocation_315e: + roomNumber: "315e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_315 + FacilityLocation_315f: + roomNumber: "315f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_315 + FacilityLocation_315t: + roomNumber: "315t" + name: "erkély" + size: 5.33 + parent: FacilityLocation_315 + FacilityLocation_316: + roomNumber: "316" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_3 + FacilityLocation_316e: + roomNumber: "316e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_316 + FacilityLocation_316f: + roomNumber: "316f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_316 + FacilityLocation_316t: + roomNumber: "316t" + name: "erkély" + size: 5.38 + parent: FacilityLocation_316 + FacilityLocation_317: + roomNumber: "317" + name: "szoba I." + size: 16.98 + parent: FacilityLocation_3 + FacilityLocation_317e: + roomNumber: "317e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_317 + FacilityLocation_317f: + roomNumber: "317f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_317 + FacilityLocation_317t: + roomNumber: "317t" + name: "erkély" + size: 5.33 + parent: FacilityLocation_317 + FacilityLocation_318: + roomNumber: "318" + name: "szoba IV." + size: 16.48 + parent: FacilityLocation_3 + FacilityLocation_318e: + roomNumber: "318e" + name: "előtér" + size: 3.89 + parent: FacilityLocation_318 + FacilityLocation_318f: + roomNumber: "318f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_318 + FacilityLocation_318t: + roomNumber: "318t" + name: "erkély" + size: 5.38 + parent: FacilityLocation_318 + FacilityLocation_319: + roomNumber: "319" + name: "szoba V." + size: 20.07 + parent: FacilityLocation_3 + FacilityLocation_319e: + roomNumber: "319e" + name: "előtér" + size: 3.66 + parent: FacilityLocation_319 + FacilityLocation_319f: + roomNumber: "319f" + name: "fürdő" + size: 3.65 + parent: FacilityLocation_319 + FacilityLocation_319t: + roomNumber: "319t" + name: "erkély" + size: 6.10 + parent: FacilityLocation_319 + FacilityLocation_320: + roomNumber: "320" + name: "iroda" + size: 21.69 + parent: FacilityLocation_3 + FacilityLocation_320t: + roomNumber: "320t" + name: "erkély" + size: 5.38 + parent: FacilityLocation_320 + FacilityLocation_321: + roomNumber: "321" + name: "iroda" + size: 18.42 + parent: FacilityLocation_3 + FacilityLocation_321t: + roomNumber: "321t" + name: "erkély" + size: 5.33 + parent: FacilityLocation_321 + FacilityLocation_322: + roomNumber: "322" + name: "iroda" + size: 25.17 + parent: FacilityLocation_3 + FacilityLocation_322t: + roomNumber: "322t" + name: "erkély" + size: 5.376 + parent: FacilityLocation_322 + FacilityLocation_323: + roomNumber: "323" + name: "iroda" + size: 16.85 + parent: FacilityLocation_3 + FacilityLocation_323t: + roomNumber: "323t" + name: "erkély" + size: 5.33 + parent: FacilityLocation_323 + FacilityLocation_324: + roomNumber: "324" + name: "iroda" + size: 25.17 + parent: FacilityLocation_3 + FacilityLocation_324t: + roomNumber: "324t" + name: "erkély" + size: 5.38 + parent: FacilityLocation_324 + FacilityLocation_325: + roomNumber: "325" + name: "iroda" + size: 16.73 + parent: FacilityLocation_3 + FacilityLocation_325t: + roomNumber: "325t" + name: "erkély" + size: 5.33 + parent: FacilityLocation_325 + FacilityLocation_326: + roomNumber: "326" + name: "iroda" + size: 25.17 + parent: FacilityLocation_3 + FacilityLocation_326t: + roomNumber: "326t" + name: "erkély" + size: 5.38 + parent: FacilityLocation_326 + FacilityLocation_327: + roomNumber: "327" + name: "iroda" + size: 16.75 + parent: FacilityLocation_3 + FacilityLocation_327t: + roomNumber: "327t" + name: "erkély" + size: 5.33 + parent: FacilityLocation_327 + FacilityLocation_328a: + roomNumber: "328a" + name: "tárgyaló" + size: 37.31 + parent: FacilityLocation_3 + FacilityLocation_328at: + roomNumber: "328at" + name: "erkély" + size: 5.38 + parent: FacilityLocation_328a + FacilityLocation_328b: + roomNumber: "328b" + name: "konyha-étkező" + size: 24.02 + parent: FacilityLocation_3 + FacilityLocation_328bt: + roomNumber: "328bt" + name: "konyha-étkező" + size: 24.02 + parent: FacilityLocation_328b + FacilityLocation_329: + roomNumber: "329" + name: "iroda" + size: 012.12 + parent: FacilityLocation_3 + FacilityLocation_329t: + roomNumber: "329t" + name: "erkély" + size: 6.02 + parent: FacilityLocation_329 + FacilityLocation_330: + roomNumber: "330" + name: "közlekedő" + size: 12.20 + parent: FacilityLocation_3 + FacilityLocation_330t: + roomNumber: "330t" + name: "erkély" + size: 5.38 + parent: FacilityLocation_330 + FacilityLocation_331: + roomNumber: "331" + name: "iroda" + size: 12.48 + parent: FacilityLocation_3 + FacilityLocation_332: + roomNumber: "332" + name: "ffi. WC mosdóval" + size: 2.76 + parent: FacilityLocation_3 + FacilityLocation_333: + roomNumber: "333" + name: "raktár" + size: 4.65 + parent: FacilityLocation_3 + FacilityLocation_334: + roomNumber: "334" + name: "közlekedő" + size: 27.76 + parent: FacilityLocation_3 + FacilityLocation_335: + roomNumber: "335" + name: "fénymásoló" + size: 8.86 + parent: FacilityLocation_3 + FacilityLocation_336: + roomNumber: "336" + name: "menekülési ajtó külső lépcsővel" + size: 0 + parent: FacilityLocation_3 + FacilityLocation_337: + roomNumber: "337" + name: "társalgó" + size: 31.04 + parent: FacilityLocation_3 + FacilityLocation_338: + roomNumber: "338" + name: "női WC mosdóval" + size: 3.79 + parent: FacilityLocation_3 + FacilityLocation_339: + roomNumber: "339" + name: "közlekedő" + size: 19.33 + parent: FacilityLocation_3 + FacilityLocation_340: + roomNumber: "340" + name: "akadálymentes WC" + size: 3.81 + parent: FacilityLocation_3 + FacilityLocation_341: + roomNumber: "341" + name: "lift előtér telefonos sarokkal" + size: 10.00 + parent: FacilityLocation_3 + FacilityLocation_341lk: + roomNumber: "341lk" + name: "lépcsőkarok pihenővel" + size: 17.82 + parent: FacilityLocation_3 + FacilityLocation_342: + roomNumber: "342" + name: "közlekedő" + size: 8.64 + parent: FacilityLocation_3 + FacilityLocation_343: + roomNumber: "343" + name: "közlekedő" + size: 67.84 + parent: FacilityLocation_3 + FacilityLocation_344: + roomNumber: "344" + name: "lépcsőház" + size: 25.86 + parent: FacilityLocation_3 + FacilityLocation_344lk: + roomNumber: "344lk" + name: "lépcsőkarok pihenővel" + size: 15.12 + parent: FacilityLocation_3 + + +# __4__ első emeleti helyiségek + FacilityLocation_401: + roomNumber: "401" + name: "ruhatár" + size: 11.23 + parent: FacilityLocation_4 + FacilityLocation_402: + roomNumber: "402" + name: "előtér" + size: 7.75 + parent: FacilityLocation_4 + FacilityLocation_403: + roomNumber: "403" + name: "székraktár" + size: 27.59 + parent: FacilityLocation_4 + FacilityLocation_404: + roomNumber: "404" + name: "női WC mosdóval" + size: 9.22 + parent: FacilityLocation_4 + FacilityLocation_405: + roomNumber: "405" + name: "mosdó" + size: 1.98 + parent: FacilityLocation_4 + FacilityLocation_406: + roomNumber: "406" + name: "ffi. WC" + size: 7.50 + parent: FacilityLocation_4 + FacilityLocation_407: + roomNumber: "407" + name: "mozgássérült WC" + size: 3.24 + parent: FacilityLocation_4 + FacilityLocation_408: + roomNumber: "408" + name: "kistanácsterem" + size: 82.26 + parent: FacilityLocation_4 + FacilityLocation_409: + roomNumber: "409" + name: "kistanácsterem" + size: 81.11 + parent: FacilityLocation_4 + FacilityLocation_409tK: + roomNumber: "409tK" + name: "erkély keleti oldal" + size: 93.36 + parent: FacilityLocation_4 + FacilityLocation_410: + roomNumber: "410" + name: "belépő" + size: 2.05 + parent: FacilityLocation_4 + FacilityLocation_411: + roomNumber: "411" + name: "tolmácsfülke" + size: 6.25 + parent: FacilityLocation_4 + FacilityLocation_412: + roomNumber: "412" + name: "tolmácsfülke" + size: 6.25 + parent: FacilityLocation_4 + FacilityLocation_413: + roomNumber: "413" + name: "női WC mosdóval" + size: 4.31 + parent: FacilityLocation_4 + FacilityLocation_414: + roomNumber: "414" + name: "ffi. WC mosdóval" + size: 10.92 + parent: FacilityLocation_4 + FacilityLocation_415: + roomNumber: "415" + name: "közlekedő" + size: 36.19 + parent: FacilityLocation_4 + FacilityLocation_416: + roomNumber: "416" + name: "computer szoba" + size: 26.64 + parent: FacilityLocation_4 + FacilityLocation_417: + roomNumber: "417" + name: "csoportvezetői szoba" + size: 27.81 + parent: FacilityLocation_4 + FacilityLocation_418: + roomNumber: "418" + name: "takrítószer tároló" + size: 3.31 + parent: FacilityLocation_4 + FacilityLocation_419: + roomNumber: "419" + name: "hidraulika" + size: 5.46 + parent: FacilityLocation_4 + FacilityLocation_420: + roomNumber: "420" + name: "lift előtér - lépcsőház" + size: 7.92 + parent: FacilityLocation_4 + FacilityLocation_421lk: + roomNumber: "421lk" + name: "lépcsőkarok pihenővel" + size: 14.55 + parent: FacilityLocation_4 + FacilityLocation_421: + roomNumber: "421" + name: "tároló" + size: 0.98 + parent: FacilityLocation_4 + FacilityLocation_422: + roomNumber: "422" + name: "előcsarnok" + size: 229.81 + parent: FacilityLocation_4 + FacilityLocation_422tNY: + roomNumber: "422tNY" + name: "erkély nyugati oldal" + size: 93.36 + parent: FacilityLocation_4 + FacilityLocation_422lk: + roomNumber: "422lk" + name: "lépcsőkarok pihenővel" + size: 17.82 + parent: FacilityLocation_4 + FacilityLocation_423: + roomNumber: "423" + name: "elektromos kapcsolótér" + size: 2.94 + parent: FacilityLocation_4 + FacilityLocation_424: + roomNumber: "424" + name: "teakonyha" + size: 7.41 + parent: FacilityLocation_4 + FacilityLocation_425: + roomNumber: "425" + name: "tolmácsfülke" + size: 9.69 + parent: FacilityLocation_4 + FacilityLocation_426: + roomNumber: "426" + name: "tolmácsfülke" + size: 6.00 + parent: FacilityLocation_4 + FacilityLocation_427: + roomNumber: "427" + name: "közlekedő" + size: 2.59 + parent: FacilityLocation_4 + FacilityLocation_428: + roomNumber: "428" + name: "osztható tanácsterem" + size: 283.49 + parent: FacilityLocation_4 + FacilityLocation_429: + roomNumber: "429" + name: "közlekedő" + size: 31.26 + parent: FacilityLocation_4 + FacilityLocation_430: + roomNumber: "430" + name: "menekülési ajtó külső lépcsővel" + size: 0 + parent: FacilityLocation_4 + FacilityLocation_431: + roomNumber: "431" + name: "tolmácsfülke" + size: 6.00 + parent: FacilityLocation_4 + FacilityLocation_432: + roomNumber: "432" + name: "tolmácsfülke" + size: 6.00 + parent: FacilityLocation_4 + FacilityLocation_433: + roomNumber: "433" + name: "stúdió" + size: 4.56 + parent: FacilityLocation_4 + FacilityLocation_434: + roomNumber: "434" + name: "tolmácsfülke" + size: 6.00 + parent: FacilityLocation_4 + FacilityLocation_435: + roomNumber: "435" + name: "tolmácsfülke" + size: 6.00 + parent: FacilityLocation_4 diff --git a/data/fixture/solution-time-interval.yml b/data/fixture/solution-time-interval.yml new file mode 100644 index 0000000..f3180d7 --- /dev/null +++ b/data/fixture/solution-time-interval.yml @@ -0,0 +1,11 @@ +SolutionTimeIntervals: + SolutionTimeInterval_1: + id: 1 + name: "Sürgős" + code: "S" + active: true + SolutionTimeInterval_2: + id: 2 + name: "Normál" + code: "N" + active: true diff --git a/data/fixture/user.yml b/data/fixture/user.yml new file mode 100644 index 0000000..7d8aaa5 --- /dev/null +++ b/data/fixture/user.yml @@ -0,0 +1,255 @@ +Users: + User_1: + id: 1 + name: Dávid + email: yvan@yvan.hu + wantsEmail: true + job: tesztelő + phone: "+36 1 123 4567" + roles: admin + active: true +# uzemeltetesi_vezeto + User_MajorosZoltan: + id: 10 + name: Majoros Zoltán + email: techsupport.eycb@coe.int + wantsEmail: false + job: technical support + phone: "+36-1-438-0174" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_RozsaSandor: + id: 11 + name: Rózsa Sándor + email: techsupport.eycb@coe.int + wantsEmail: false + job: technical support + phone: "+36-1-438-0174" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_HorvathCsaba: + id: 12 + name: Horváth Csaba + email: techsupport.eycb@coe.int + wantsEmail: false + job: technical support + phone: "+36-1-438-0174" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_PohlottLaszlo: + id: 13 + name: Pohlott László + email: techsupport.eycb@coe.int + wantsEmail: false + job: technical support + phone: "+36-1-438-0174" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_BalogKaroly: + id: 14 + name: Balog Károly + email: keyrm.beik@gmail.com + wantsEmail: false + job: biztonsági szolgálat + phone: "+36-1-438-1041" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_SzenteRoland: + id: 15 + name: Szente Roland + email: keyrm.beik@gmail.com + wantsEmail: false + job: biztonsági szolgálat + phone: "+36-1-438-1041" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_NekamIstvan: + id: 16 + name: Nékám István + email: keyrm.beik@gmail.com + wantsEmail: false + job: biztonsági szolgálat + phone: "+36-1-438-1041" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_KotroczoIstvan: + id: 17 + name: Kotroczó István + email: keyrm.beik@gmail.com + wantsEmail: false + job: biztonsági szolgálat + phone: "+36-1-438-1041" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_LandszmannZsolt: + id: 18 + name: LandszmannZsolt + email: keyrm.beik@gmail.com + wantsEmail: false + job: biztonsági szolgálat + phone: "+36-1-438-1041" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_GoliczaZoltan: + id: 19 + name: Golicza Zoltán + email: keyrm.beik@gmail.com + wantsEmail: false + job: biztonsági szolgálat + phone: "+36-1-438-1041" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_EckermannTibor: + id: 20 + name: Eckermann Tibor + email: keyrm.beik@gmail.com + wantsEmail: false + job: biztonsági szolgálat + phone: "+36-1-438-1041" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_FarkasAndras: + id: 21 + name: Farkas András + email: keyrm.beik@gmail.com + wantsEmail: false + job: biztonsági szolgálat + phone: "+36-1-438-1041" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_SimonZoltan: + id: 22 + name: Simon Zoltán + email: keyrm.beik@gmail.com + wantsEmail: false + job: biztonsági szolgálat + phone: "+36-1-438-1041" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_ZsoldosGeza: + id: 23 + name: Zsoldos Géza + email: keyrm.beik@gmail.com + wantsEmail: false + job: biztonsági szolgálat + phone: "+36-1-438-1041" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_MareschDavid: + id: 24 + name: Maresch Dávid + email: keyrm.beik@gmail.com + wantsEmail: false + job: biztonsági szolgálat + phone: "+36-1-438-1041" + roles: uzemeltetesi_vezeto + active: true + canChangePassword: false + User_BuczkoAttila: + id: 25 + name: Buczkó Attila + email: attila.buczko@coe.int + wantsEmail: true + job: technikus + phone: "+36-1-438-1078" + roles: uzemeltetesi_vezeto + active: true + User_KedveCsaba: + id: 26 + name: Kedve Csaba + email: csaba.kedves@coe.int + wantsEmail: true + job: üzemeltetési vezető + phone: "+36-1-438-1079" + roles: uzemeltetesi_vezeto + active: true +# ufo + User_DrHeimPeter: + id: 40 + name: Dr. Heim Péter + email: peter.heim@mfa.gov.hu + wantsEmail: true + job: főosztályvezető h. + phone: "" + roles: ufo + active: true + User_KrivdaLaszlo: + id: 41 + name: Krivda László + email: krivda@t-online.hu + wantsEmail: true + job: műszaki ellenőr + phone: "+36 30 942 9072" + roles: ufo + active: true +# betekinto + User_BaloghGabor: + id: 60 + name: Balogh Gábor + email: gabor.balogh@mfa.gov.hu + wantsEmail: true + job: főosztályvezető + phone: "" + roles: betekinto + active: true + User_CsicselyTibor: + id: 61 + name: Csicsely Tibor + email: csicselyt@laterex.hu + wantsEmail: true + job: ügyvezető + phone: "+36 30 555 3634" + roles: betekinto + active: true +# projektvezeto + User_HantzmannGergely: + id: 82 + name: Hantzmann Gergely + email: hantzmanng@laterex.hu + wantsEmail: true + job: karbantartási csv. + phone: "+36 30 181 3591" + roles: projektvezeto,karbantarto + active: true + User_KovacsLudovit: + id: 83 + name: Kovác Ludovit + email: kovacl@laterex.hu + wantsEmail: true + job: projektvezető + phone: "+36 30 257 4183" + roles: projektvezeto + active: true +# karbantarto + User_MeszarosBela: + id: 90 + name: Mészáros Béla + email: karbantarto1@laterex.hu + wantsEmail: false + job: karbantartó + phone: "" + roles: karbantarto + active: true + User_SzathmaryZsoltMiklos: + id: 91 + name: Szathmáry Zsolt Miklos + email: karbantarto2@laterex.hu + wantsEmail: false + job: karbantartó + phone: "" + roles: karbantarto + active: true diff --git a/data/mail-template/faultFooter.txt b/data/mail-template/faultFooter.txt new file mode 100644 index 0000000..4f4d0ec --- /dev/null +++ b/data/mail-template/faultFooter.txt @@ -0,0 +1,3 @@ +Ez az értesítés egy automatikusan generált levél, ne válaszoljon rá. +Amennyiben módosítani kívánja az értesítési beállításait azt megteheti a %%WEBNAPLO_URI%% címen, +felhasználói beállítások menüpont alatt. \ No newline at end of file diff --git a/data/mail-template/faultHeader.txt b/data/mail-template/faultHeader.txt new file mode 100644 index 0000000..71cca02 --- /dev/null +++ b/data/mail-template/faultHeader.txt @@ -0,0 +1,10 @@ +Intézményerész: %%FACILITY_LOCATION%% +Intézményrész pontosítva: +%%FACILITY_LOCATION_DESCRIPTION%% + +Hiba szakág: %%ERROR_CATEGORY%% +Hiba eredet: %%ERROR_ORIGIN%% +Hiba leírás: +%%ERROR_DESCRIPTION%% + +Hiba javítás ideje: %%SOLUTION_TIME%% \ No newline at end of file diff --git a/data/pdf-resources/asdf b/data/pdf-resources/asdf new file mode 100644 index 0000000..74ab59c --- /dev/null +++ b/data/pdf-resources/asdf @@ -0,0 +1,4 @@ + + + + + + + + + \ No newline at end of file diff --git a/data/pdf-resources/fonts/Times_New_Roman.ttf b/data/pdf-resources/fonts/Times_New_Roman.ttf new file mode 100644 index 0000000000000000000000000000000000000000..55f734ab82b609c58b03fefeaee383da63ada367 GIT binary patch literal 330412 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

;I)?2#p9 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�$_ZT_KCFSHED)qvlw1a}lB(L)My;W6K-a{0H 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

-4auycs8+v5UAwH)hgH4~ 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

}MkY_KHwkTVTD!W; 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≶VK0nUVwrd&xF58s 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 z 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 literal 0 HcmV?d00001 diff --git a/data/pdf-resources/laterex-logo.png b/data/pdf-resources/laterex-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..08ead05c2abc5d144bfd55c45e8cb7210b26dbba GIT binary patch literal 8294 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 literal 0 HcmV?d00001 diff --git a/data/pdf-template/maintenanceSheet-style.xml b/data/pdf-template/maintenanceSheet-style.xml new file mode 100644 index 0000000..02764e5 --- /dev/null +++ b/data/pdf-template/maintenanceSheet-style.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + + + + + +
+ +
\ No newline at end of file diff --git a/data/pdf-template/maintenanceSheet.xml b/data/pdf-template/maintenanceSheet.xml new file mode 100644 index 0000000..6d843fe --- /dev/null +++ b/data/pdf-template/maintenanceSheet.xml @@ -0,0 +1,168 @@ + + + + + + + + + + +
+ + + + + + + + + +
+
+ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + +
+ +
+
\ No newline at end of file diff --git a/data/pdf-template/monthlyReport-style.xml b/data/pdf-template/monthlyReport-style.xml new file mode 100644 index 0000000..bd60bde --- /dev/null +++ b/data/pdf-template/monthlyReport-style.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + +
+ + + + + + + +
+ + + +
+ +
+
\ No newline at end of file diff --git a/data/pdf-template/monthlyReport.xml b/data/pdf-template/monthlyReport.xml new file mode 100644 index 0000000..3114316 --- /dev/null +++ b/data/pdf-template/monthlyReport.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + +
  
  
+ + + + + + + + + + + + + + + + %%TABLE_DATA%% + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
 
 
 
 
+ + + + + + + + + + +
+
+
\ No newline at end of file diff --git a/data/pdf-template/monthlyReport/fault.xml b/data/pdf-template/monthlyReport/fault.xml new file mode 100644 index 0000000..dc5a8fe --- /dev/null +++ b/data/pdf-template/monthlyReport/fault.xml @@ -0,0 +1,8 @@ + + + +   + +   +   + \ No newline at end of file diff --git a/data/pdf-template/monthlyReport/faultCostItem.xml b/data/pdf-template/monthlyReport/faultCostItem.xml new file mode 100644 index 0000000..9d4b927 --- /dev/null +++ b/data/pdf-template/monthlyReport/faultCostItem.xml @@ -0,0 +1,11 @@ + +   + +   + + + + +   + 0 + \ No newline at end of file diff --git a/data/pdf-template/monthlyReport/faultCostLate.xml b/data/pdf-template/monthlyReport/faultCostLate.xml new file mode 100644 index 0000000..d78684f --- /dev/null +++ b/data/pdf-template/monthlyReport/faultCostLate.xml @@ -0,0 +1,11 @@ + +   + +   + + + +   +   + + \ No newline at end of file diff --git a/data/pdf-template/monthlyReport/faultCostWork.xml b/data/pdf-template/monthlyReport/faultCostWork.xml new file mode 100644 index 0000000..cfb2ece --- /dev/null +++ b/data/pdf-template/monthlyReport/faultCostWork.xml @@ -0,0 +1,11 @@ + +   + +   +   +   +   +   + + + \ No newline at end of file diff --git a/data/pdf-template/monthlyReport/institute.xml b/data/pdf-template/monthlyReport/institute.xml new file mode 100644 index 0000000..c511f4f --- /dev/null +++ b/data/pdf-template/monthlyReport/institute.xml @@ -0,0 +1,7 @@ + + + + +   +   + \ No newline at end of file diff --git a/data/pdf-template/php-pdf.dtd b/data/pdf-template/php-pdf.dtd new file mode 100644 index 0000000..10de2c5 --- /dev/null +++ b/data/pdf-template/php-pdf.dtd @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + +"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/pdf-template/worksheet-style.xml b/data/pdf-template/worksheet-style.xml new file mode 100644 index 0000000..02764e5 --- /dev/null +++ b/data/pdf-template/worksheet-style.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + + + + + +
+ +
\ No newline at end of file diff --git a/data/pdf-template/worksheet.xml b/data/pdf-template/worksheet.xml new file mode 100644 index 0000000..ea334c1 --- /dev/null +++ b/data/pdf-template/worksheet.xml @@ -0,0 +1,192 @@ + + + + + + + + + + +
+ + + + + + + + + +
+
+ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
 
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + +
+ +
+
\ No newline at end of file diff --git a/deploy.php b/deploy.php new file mode 100644 index 0000000..b94f81c --- /dev/null +++ b/deploy.php @@ -0,0 +1,62 @@ +stage('production') + ->user('latuzcs_beik_api_access') + ->forwardAgent() + ->set('bin/php', '/usr/bin/php7.1') + ->set('bin/composer', '{{bin/php}} /var/www/clients/client5/web20/bin/composer') + ->set('php_service_name', 'php7.1-fpm') + ->set('deploy_path', '/var/www/clients/client5/web20/deploy'); + +// Tasks + +desc('Restart PHP-FPM service'); +task('php-fpm:reload', function () { + // The user must have rights for restart service + // /etc/sudoers: $username ALL=NOPASSWD:/bin/systemctl restart php-fpm.service + run('sudo service {{php_service_name}} reload'); +}); +after('deploy:symlink', 'php-fpm:reload'); + +desc('Deploy your project'); +task('deploy', [ + 'deploy:prepare', + 'deploy:lock', + 'deploy:release', + 'deploy:update_code', + 'deploy:shared', + 'deploy:writable', + 'deploy:vendors', + 'deploy:clear_paths', + 'deploy:symlink', + 'deploy:unlock', + 'cleanup', +]); + +after('deploy', 'success'); diff --git a/phpcs.xml.dist b/phpcs.xml.dist new file mode 100644 index 0000000..de3035d --- /dev/null +++ b/phpcs.xml.dist @@ -0,0 +1,20 @@ + + + Expressive Skeleton coding standard + + + + + + + + + + + + + + + + src + diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..4c66f07 --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,17 @@ + + + + + ./test + + + + + + ./src + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..a5c4081 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,17 @@ +RewriteEngine On +# The following rule tells Apache that if the requested filename +# exists, simply serve it. +RewriteCond %{REQUEST_FILENAME} -s [OR] +RewriteCond %{REQUEST_FILENAME} -l [OR] +RewriteCond %{REQUEST_FILENAME} -d +RewriteRule ^.*$ - [NC,L] + +# The following rewrites all other queries to index.php. The +# condition ensures that if you are using Apache aliases to do +# mass virtual hosting, the base path will be prepended to +# allow proper resolution of the index.php file; it will work +# in non-aliased environments as well, providing a safe, one-size +# fits all solution. +RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ +RewriteRule ^(.*) - [E=BASE:%1] +RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L] diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..17f119909ffcba66c8a48cba1050d724ab0a51aa GIT binary patch literal 1406 zcmeH{u@S;B3`L(4!_kq77D~2&f)%m@8>CIi3Rxj5&{O4(F&KaWl5ZuLa4BgmpX9H9 z`YL`QaC$|7#dQTcp`$WT2c=`93TJ2EqV#>wget(\Zend\Expressive\Application::class); + + // Import programmatic/declarative middleware pipeline and routing + // configuration statements + require 'config/pipeline.php'; + require 'config/routes.php'; + + $app->run(); +}); diff --git a/public/zf-logo.png b/public/zf-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ea5880e7f5b06bd0ccd8b2a995cd6ca5882e2a2e GIT binary patch literal 600 zcmV-e0;m0nP)00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmYE+YT{E+YYWr9XB6000McNliru-w6c^3oa%Ft^5E00p&?V zK~y-)ozzc=PGJ~%{@A}fue+t>&to3WtG!ou=4rId{# zlw8V6vX~U6C^f4=<4;0OYBCRF^SpI?d*9c6ow|$Xbk6fV&$+*I8jzP^6gm2^th+5^ z5RY*Kt1*fV2sQGdffpeiHsJ{R)w3B)Vn2#hOfR;C!+q(nqQ~T`_>Qsv0K?ZJi+7tZ ze~xph9o4oi;3#%sW%8XbvUoi&!->@HUThifQ+tGJ>3=pma}tkQVn%SN3mE2bp*B1(!yX*R+T^;02SpZtwS?~e zhu~&#tW93~w&!ISOt5vy^%Ijt7U$aJ-cFj3#8eg5=OT+A>TH@S{An7iW=D1wS)A^6 zL0*PooWgK(B8n_d)S0_bx#S{7D&R$2%geA>DYB7rCWfopeMsQV zINh>d`?0k{-kQ7&LpV?Y!)x5E4bRK49&fO!hfNi+1KTUUCm1iX_^Fqd2kh&%aN11B mt0b(MwB6>5EPm{D!T$xkPly;$n_)Kq0000getMethod()); + $id = $request->getAttribute(static::IDENTIFIER_NAME); + + switch ($requestMethod) { + case 'GET': + return isset($id) + ? $this->get($request, $delegate) + : $this->getList($request, $delegate); + case 'POST': + return $this->create($request, $delegate); + case 'PUT': + return $this->update($request, $delegate); + case 'DELETE': + return isset($id) + ? $this->delete($request, $delegate) + : $this->deleteList($request, $delegate); + case 'HEAD': + return $this->head($request, $delegate); + case 'OPTIONS': + return $this->options($request, $delegate); + case 'PATCH': + return $this->patch($request, $delegate); + default: + return $delegate->process($request); + } + } + + public function get(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->createResponse(['content' => 'Method not allowed'], 405); + } + + public function getList(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->createResponse(['content' => 'Method not allowed'], 405); + } + + public function create(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->createResponse(['content' => 'Method not allowed'], 405); + } + + public function update(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->createResponse(['content' => 'Method not allowed'], 405); + } + + public function delete(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->createResponse(['content' => 'Method not allowed'], 405); + } + + public function deleteList(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->createResponse(['content' => 'Method not allowed'], 405); + } + + public function head(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->createResponse(['content' => 'Method not allowed'], 405); + } + + public function options(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->createResponse(['content' => 'Method not allowed'], 405); + } + + public function patch(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->createResponse(['content' => 'Method not allowed'], 405); + } + + final protected function createResponse($data, $status = 200) + { + return new JsonResponse($data, $status); + } + + /** + * + * @param ServerRequestInterface $request + * @return array|object + */ + public function getRequestData(ServerRequestInterface $request) + { + $body = $request->getParsedBody(); + + if (!empty($body)) { + return $body; + } + + return $this->parseRequestData( + $request->getBody()->getContents(), + $request->getHeaderLine('content-type') + ); + } + + protected function withCorsHeaders(ResponseInterface $response, iterable $methods = []) + { + if ($methods) { + $methodsHeader = implode(',', $methods); + $response = $response->withHeader('Accept', $methodsHeader) + ->withHeader('Access-Control-Allow-Methods', $methodsHeader); + } + return $response + ->withHeader('Access-Control-Allow-Origin', '*') + ->withHeader('Access-Control-Allow-Headers', implode(",", self::CORS_ALLOW_HEADERS)); + } + + /** + * + * @param string $input + * @param string $contentType + * @return mixed + */ + private function parseRequestData($input, $contentType) + { + $contentTypeParts = preg_split('/\s*[;,]\s*/', $contentType); + $parser = $this->returnParserContentType($contentTypeParts[0]); + + return $parser($input); + } + + /** + * + * @param string $contentType + * @return callable + */ + private function returnParserContentType(string $contentType) + { + if ($contentType === 'application/x-www-form-urlencoded') { + return function ($input) { + parse_str($input, $data); + return $data; + }; + } elseif ($contentType === 'application/json') { + return function ($input) { + $jsonDecoder = new Json(); + try { + return $jsonDecoder->decode($input, Json::TYPE_ARRAY); + } catch (\Exception $e) { + return false; + } + }; + } elseif ($contentType === 'multipart/form-data') { + return function ($input) { + return $input; + }; + } + + return function ($input) { + return $input; + }; + } +} diff --git a/src/App/Action/Auth/AuthAction.php b/src/App/Action/Auth/AuthAction.php new file mode 100644 index 0000000..3a32ce5 --- /dev/null +++ b/src/App/Action/Auth/AuthAction.php @@ -0,0 +1,83 @@ +authService = $authService; + } + + /** + * Create new auth token (login) + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response\JsonResponse + */ + public function create(ServerRequestInterface $request, DelegateInterface $delegate) + { + $authData = $this->getRequestData($request); + try { + return new JsonCorsResponse($this->authService->authenticate($authData['login'], $authData['password'])); + } catch (NoResultException $e) { + return new JsonCorsResponse([ + 'message' => $e->getMessage() + ], 403); + } catch (\Exception $e) { + return new JsonCorsResponse([ + 'message' => $e->getMessage() + ], 500); + } + } + + /** + * Renew auth token + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response\JsonResponse + */ + public function getList(ServerRequestInterface $request, DelegateInterface $delegate) + { + try { + $token = $request->getAttribute('token', false); + return new JsonCorsResponse($this->authService->renewToken($token)); + } catch (\Exception $e) { + return new JsonCorsResponse([ + 'message' => $e->getMessage() + ], 500); + } + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return static + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/Auth/AuthFactory.php b/src/App/Action/Auth/AuthFactory.php new file mode 100644 index 0000000..67ead40 --- /dev/null +++ b/src/App/Action/Auth/AuthFactory.php @@ -0,0 +1,15 @@ +get(AuthService::class); + return new AuthAction($faultManagerService); + } +} diff --git a/src/App/Action/ErrorCategoryAction.php b/src/App/Action/ErrorCategoryAction.php new file mode 100644 index 0000000..0560367 --- /dev/null +++ b/src/App/Action/ErrorCategoryAction.php @@ -0,0 +1,51 @@ +errorCategoryService = $errorCategoryService; + } + + /** + * Return all faults accessible to the user + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function getList(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return new JsonCorsResponse($this->errorCategoryService->getList()); + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/ErrorCategoryFactory.php b/src/App/Action/ErrorCategoryFactory.php new file mode 100644 index 0000000..055211f --- /dev/null +++ b/src/App/Action/ErrorCategoryFactory.php @@ -0,0 +1,16 @@ +get(ErrorCategoryService::class); + return new ErrorCategoryAction($errorCategoryService); + } +} diff --git a/src/App/Action/ErrorOriginAction.php b/src/App/Action/ErrorOriginAction.php new file mode 100644 index 0000000..0704e6f --- /dev/null +++ b/src/App/Action/ErrorOriginAction.php @@ -0,0 +1,51 @@ +errorOriginService = $errorOriginService; + } + + /** + * Return all faults accessible to the user + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function getList(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return new JsonCorsResponse($this->errorOriginService->getList()); + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/ErrorOriginFactory.php b/src/App/Action/ErrorOriginFactory.php new file mode 100644 index 0000000..883fa3d --- /dev/null +++ b/src/App/Action/ErrorOriginFactory.php @@ -0,0 +1,16 @@ +get(ErrorOriginService::class); + return new ErrorOriginAction($errorOriginService); + } +} diff --git a/src/App/Action/FacilityLocationAction.php b/src/App/Action/FacilityLocationAction.php new file mode 100644 index 0000000..9eb748f --- /dev/null +++ b/src/App/Action/FacilityLocationAction.php @@ -0,0 +1,52 @@ +facilityLocationService = $facilityLocationService; + } + + /** + * Return all faults accessible to the user + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function getList(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return new JsonCorsResponse($this->facilityLocationService->getFacilityLocationListFlat()); + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/FacilityLocationFactory.php b/src/App/Action/FacilityLocationFactory.php new file mode 100644 index 0000000..e6de325 --- /dev/null +++ b/src/App/Action/FacilityLocationFactory.php @@ -0,0 +1,16 @@ +get(FacilityLocationService::class); + return new FacilityLocationAction($facilityLocationService); + } +} diff --git a/src/App/Action/Fault/FaultAction.php b/src/App/Action/Fault/FaultAction.php new file mode 100644 index 0000000..d7238cd --- /dev/null +++ b/src/App/Action/Fault/FaultAction.php @@ -0,0 +1,122 @@ +faultManagerService = $faultManagerService; + } + + /** + * Return all faults accessible to the user + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function getList(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return new JsonCorsResponse($this->faultManagerService->getFaultList()); + } + + /** + * Return a single fault + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function get(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + $id = $request->getAttribute('id', false); + return new JsonCorsResponse($this->faultManagerService->getFault($id)); + } + + /** + * Post a new fault report + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function create(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + try { + $data = $this->getRequestData($request); + $token = $request->getAttribute('token'); + return new JsonCorsResponse($this->faultManagerService->createFault($data, $token->uid), 201); + } catch (\Exception $e) { + return new JsonCorsResponse($e->getMessage(), 500); + } + } + + /** + * Update a fault report + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function update(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + try { + $id = $request->getAttribute('id'); + $token = $request->getAttribute('token'); + $data = $this->getRequestData($request); + return new JsonCorsResponse($this->faultManagerService->updateFault($id, $data, $token->uid)); + } catch (\Exception $e) { + return new JsonCorsResponse($e->getMessage(), 500); + } + } + + /** + * Delete a fault report (NYI) + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function delete(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + try { + $id = $request->getAttribute('id'); + return new JsonCorsResponse($this->faultManagerService->deleteFault($id)); + } catch (\Exception $e) { + return new JsonCorsResponse($e->getMessage(), $e->getCode()); + } + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/Fault/FaultAttachmentAction.php b/src/App/Action/Fault/FaultAttachmentAction.php new file mode 100644 index 0000000..7ae1112 --- /dev/null +++ b/src/App/Action/Fault/FaultAttachmentAction.php @@ -0,0 +1,104 @@ +faultManagerService = $faultManagerService; + $this->attachmentService = $attachmentService; + } + + /** + * Post a new fault report + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function create(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + $faultId = $request->getAttribute('id'); + $type = $request->getAttribute('type', 'file'); + $token = $request->getAttribute('token'); + try { + /** @var UploadedFileInterface[] $files */ + $files = $request->getUploadedFiles()['file']; + return new JsonCorsResponse( + $this->attachmentService->createAttachments($faultId, $files, $token->uid, $type), + 201 + ); + } catch (\Exception $e) { + return new JsonCorsResponse($e->getMessage(), 500); + } + } + + /** + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return Response + */ + public function get(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + $id = $request->getAttribute('id'); + $attachment = $this->attachmentService->get($id); + $stream = new Stream($attachment->getIoStream()); + switch ($attachment->getType()) { + case 'image': + $contentType = 'image/jpg'; + break; + case 'expense': + $contentType = 'application/pdf'; + break; + default: + $contentType = 'application/octet-stream'; + } + $response = new Response($stream); + return $response->withStatus(200) + ->withHeader('Content-type', $contentType) +// ->withHeader('Content-disposition', 'attachment;filename='.$attachment->getFileName()) + ; + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/Fault/FaultAttachmentFactory.php b/src/App/Action/Fault/FaultAttachmentFactory.php new file mode 100644 index 0000000..70dd392 --- /dev/null +++ b/src/App/Action/Fault/FaultAttachmentFactory.php @@ -0,0 +1,17 @@ +get(FaultManagerService::class); + $attachmentService = $container->get(FaultAttachmentService::class); + return new FaultAttachmentAction($faultManagerService, $attachmentService); + } +} diff --git a/src/App/Action/Fault/FaultCommentAction.php b/src/App/Action/Fault/FaultCommentAction.php new file mode 100644 index 0000000..216b6f0 --- /dev/null +++ b/src/App/Action/Fault/FaultCommentAction.php @@ -0,0 +1,59 @@ +faultManagerService = $faultManagerService; + } + + /** + * Post a new fault report + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function create(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + $faultId = $request->getAttribute('id'); + $jwt = $request->getAttribute('token'); + try { + $data = $this->getRequestData($request); + return new JsonCorsResponse($this->faultManagerService->addFaultComment($faultId, $data, $jwt->uid), 201); + } catch (\Exception $e) { + return new JsonCorsResponse($e->getMessage(), $e->getCode()); + } + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/Fault/FaultCommentFactory.php b/src/App/Action/Fault/FaultCommentFactory.php new file mode 100644 index 0000000..2323035 --- /dev/null +++ b/src/App/Action/Fault/FaultCommentFactory.php @@ -0,0 +1,15 @@ +get(FaultManagerService::class); + return new FaultCommentAction($faultManagerService); + } +} diff --git a/src/App/Action/Fault/FaultFactory.php b/src/App/Action/Fault/FaultFactory.php new file mode 100644 index 0000000..9226fda --- /dev/null +++ b/src/App/Action/Fault/FaultFactory.php @@ -0,0 +1,15 @@ +get(FaultManagerService::class); + return new FaultAction($faultManagerService); + } +} diff --git a/src/App/Action/Fault/FaultRejectAction.php b/src/App/Action/Fault/FaultRejectAction.php new file mode 100644 index 0000000..fd5f496 --- /dev/null +++ b/src/App/Action/Fault/FaultRejectAction.php @@ -0,0 +1,59 @@ +faultManagerService = $faultManagerService; + } + + /** + * Post a new fault report + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function create(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + $faultId = $request->getAttribute('id'); + $jwt = $request->getAttribute('token'); + try { + $data = $this->getRequestData($request); + return new JsonCorsResponse($this->faultManagerService->rejectFault($faultId, $data, $jwt->uid), 201); + } catch (\Exception $e) { + return new JsonCorsResponse($e->getMessage(), 500); + } + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/Fault/FaultRejectFactory.php b/src/App/Action/Fault/FaultRejectFactory.php new file mode 100644 index 0000000..91d1e2a --- /dev/null +++ b/src/App/Action/Fault/FaultRejectFactory.php @@ -0,0 +1,15 @@ +get(FaultManagerService::class); + return new FaultRejectAction($faultManagerService); + } +} diff --git a/src/App/Action/Fault/FaultS2ConfirmAction.php b/src/App/Action/Fault/FaultS2ConfirmAction.php new file mode 100644 index 0000000..08b9c15 --- /dev/null +++ b/src/App/Action/Fault/FaultS2ConfirmAction.php @@ -0,0 +1,58 @@ +faultManagerService = $faultManagerService; + } + + /** + * Update a fault report + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function update(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + try { + $id = $request->getAttribute('id'); + $data = $this->getRequestData($request); + return new JsonCorsResponse($this->faultManagerService->confirmFault($id, $data)); + } catch (\Exception $e) { + return new JsonCorsResponse($e->getMessage(), $e->getCode()); + } + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/Fault/FaultS3AcknowledgeAction.php b/src/App/Action/Fault/FaultS3AcknowledgeAction.php new file mode 100644 index 0000000..6216881 --- /dev/null +++ b/src/App/Action/Fault/FaultS3AcknowledgeAction.php @@ -0,0 +1,58 @@ +faultManagerService = $faultManagerService; + } + + /** + * Update a fault report + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function update(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + try { + $id = $request->getAttribute('id'); + $data = $this->getRequestData($request); + return new JsonCorsResponse($this->faultManagerService->ackFault($id, $data)); + } catch (\Exception $e) { + return new JsonCorsResponse($e->getMessage(), $e->getCode()); + } + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/Fault/FaultS4RepairedAction.php b/src/App/Action/Fault/FaultS4RepairedAction.php new file mode 100644 index 0000000..a6e3a30 --- /dev/null +++ b/src/App/Action/Fault/FaultS4RepairedAction.php @@ -0,0 +1,58 @@ +faultManagerService = $faultManagerService; + } + + /** + * Update a fault report + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function update(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + try { + $id = $request->getAttribute('id'); + $data = $this->getRequestData($request); + return new JsonCorsResponse($this->faultManagerService->repairFault($id, $data)); + } catch (\Exception $e) { + return new JsonCorsResponse($e->getMessage(), $e->getCode()); + } + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/Fault/FaultS5AcceptedAction.php b/src/App/Action/Fault/FaultS5AcceptedAction.php new file mode 100644 index 0000000..bcc8e5a --- /dev/null +++ b/src/App/Action/Fault/FaultS5AcceptedAction.php @@ -0,0 +1,58 @@ +faultManagerService = $faultManagerService; + } + + /** + * Update a fault report + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function update(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + try { + $id = $request->getAttribute('id'); + $data = $this->getRequestData($request); + return new JsonCorsResponse($this->faultManagerService->acceptFault($id, $data)); + } catch (\Exception $e) { + return new JsonCorsResponse($e->getMessage(), $e->getCode()); + } + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/MaintenanceAction.php b/src/App/Action/MaintenanceAction.php new file mode 100644 index 0000000..47aee97 --- /dev/null +++ b/src/App/Action/MaintenanceAction.php @@ -0,0 +1,68 @@ +maintenanceManagerService = $maintenanceManagerService; + } + + /** + * Renew auth token + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response\JsonResponse + */ + public function getList(ServerRequestInterface $request, DelegateInterface $delegate) + { + return new JsonCorsResponse($this->maintenanceManagerService->getMaintenanceList()->getValues()); + } + + /** + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return JsonCorsResponse|\Zend\Diactoros\Response\JsonResponse + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException + * @throws \Doctrine\ORM\TransactionRequiredException + */ + public function get(ServerRequestInterface $request, DelegateInterface $delegate) + { + $hash = $request->getAttribute(self::IDENTIFIER_NAME); + return new JsonCorsResponse($this->maintenanceManagerService->get($hash)); + } + + /** + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return JsonCorsResponse|\Zend\Diactoros\Response\JsonResponse + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException + * @throws \Doctrine\ORM\TransactionRequiredException + */ + public function update(ServerRequestInterface $request, DelegateInterface $delegate) + { + $hash = $request->getAttribute(self::IDENTIFIER_NAME); + $data = $this->getRequestData($request); + $jwt = $request->getAttribute('token'); + return new JsonCorsResponse($this->maintenanceManagerService->update($hash, $data, $jwt->uid)); + } +} diff --git a/src/App/Action/MaintenanceFactory.php b/src/App/Action/MaintenanceFactory.php new file mode 100644 index 0000000..604af51 --- /dev/null +++ b/src/App/Action/MaintenanceFactory.php @@ -0,0 +1,21 @@ +get(MaintenanceManagerService::class); + return new MaintenanceAction($maintenanceManagerService); + } +} diff --git a/src/App/Action/MaintenanceUpcomingAction.php b/src/App/Action/MaintenanceUpcomingAction.php new file mode 100644 index 0000000..de062bb --- /dev/null +++ b/src/App/Action/MaintenanceUpcomingAction.php @@ -0,0 +1,37 @@ +maintenanceManagerService = $maintenanceManagerService; + } + + /** + * Renew auth token + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response\JsonResponse + */ + public function getList(ServerRequestInterface $request, DelegateInterface $delegate) + { + return new JsonCorsResponse($this->maintenanceManagerService->getUpcomingMaintenanceList()->getValues()); + } +} diff --git a/src/App/Action/MaintenanceUpcomingFactory.php b/src/App/Action/MaintenanceUpcomingFactory.php new file mode 100644 index 0000000..2afbe26 --- /dev/null +++ b/src/App/Action/MaintenanceUpcomingFactory.php @@ -0,0 +1,21 @@ +get(MaintenanceManagerService::class); + return new MaintenanceUpcomingAction($maintenanceManagerService); + } +} diff --git a/src/App/Action/Pdf/GenerateMaintenanceSheetAction.php b/src/App/Action/Pdf/GenerateMaintenanceSheetAction.php new file mode 100644 index 0000000..0eb4882 --- /dev/null +++ b/src/App/Action/Pdf/GenerateMaintenanceSheetAction.php @@ -0,0 +1,63 @@ +pdfService = $pdfService; + $this->maintenanceManager = $maintenanceManagerService; + } + + /** + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response\JsonResponse|TextResponse|static + * @throws \PHPPdf\Core\PHPPdf\Exception\Exception + */ + public function get(ServerRequestInterface $request, DelegateInterface $delegate) + { + $id = $request->getAttribute('id', false); + try { + return (new TextResponse($this->pdfService->getMaintenanceSheet($id))) + ->withHeader('Content-type', 'application/pdf'); + } catch (\Exception $e) { + return new TextResponse($e->getMessage(), 500); + } + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return static + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/Pdf/GenerateMaintenanceSheetFactory.php b/src/App/Action/Pdf/GenerateMaintenanceSheetFactory.php new file mode 100644 index 0000000..b76e1f5 --- /dev/null +++ b/src/App/Action/Pdf/GenerateMaintenanceSheetFactory.php @@ -0,0 +1,25 @@ +get(PdfService::class); + /** @var MaintenanceManagerService $maintenanceManagerService */ + $maintenanceManagerService = $container->get(MaintenanceManagerService::class); + return new GenerateMaintenanceSheetAction($pdfService, $maintenanceManagerService); + } +} diff --git a/src/App/Action/Pdf/GenerateWorksheetAction.php b/src/App/Action/Pdf/GenerateWorksheetAction.php new file mode 100644 index 0000000..181221e --- /dev/null +++ b/src/App/Action/Pdf/GenerateWorksheetAction.php @@ -0,0 +1,67 @@ +pdfService = $pdfService; + $this->faultManager = $faultManagerService; + } + + /** + * Renew auth token + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function get(ServerRequestInterface $request, DelegateInterface $delegate) + { + $id = $request->getAttribute('id', false); + try { + return (new TextResponse($this->pdfService->getWorksheet($id))) + ->withHeader('Content-type', 'application/pdf') +// ->withHeader('Content-disposition', 'attachment; filename=' +// . $this->faultManager->getFault($id)->getWorksheetNumber() . '.pdf') + ; + } catch (\Exception $e) { + return new TextResponse($e->getMessage(), 500); + } + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return static + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/Pdf/GenerateWorksheetFactory.php b/src/App/Action/Pdf/GenerateWorksheetFactory.php new file mode 100644 index 0000000..48441f7 --- /dev/null +++ b/src/App/Action/Pdf/GenerateWorksheetFactory.php @@ -0,0 +1,19 @@ +get(PdfService::class); + /** @var FaultManagerService $faultManager */ + $faultManager = $container->get(FaultManagerService::class); + return new GenerateWorksheetAction($pdfService, $faultManager); + } +} diff --git a/src/App/Action/PingAction.php b/src/App/Action/PingAction.php new file mode 100644 index 0000000..a1afba0 --- /dev/null +++ b/src/App/Action/PingAction.php @@ -0,0 +1,16 @@ + time()]); + } +} diff --git a/src/App/Action/SolutionTimeIntervalAction.php b/src/App/Action/SolutionTimeIntervalAction.php new file mode 100644 index 0000000..870c532 --- /dev/null +++ b/src/App/Action/SolutionTimeIntervalAction.php @@ -0,0 +1,51 @@ +solutionTimeIntervalService = $facilityLocationService; + } + + /** + * Return all faults accessible to the user + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function getList(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return new JsonCorsResponse($this->solutionTimeIntervalService->getList()); + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate): Response + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/SolutionTimeIntervalFactory.php b/src/App/Action/SolutionTimeIntervalFactory.php new file mode 100644 index 0000000..6c1f475 --- /dev/null +++ b/src/App/Action/SolutionTimeIntervalFactory.php @@ -0,0 +1,16 @@ +get(SolutionTimeIntervalService::class); + return new SolutionTimeIntervalAction($facilityLocationService); + } +} diff --git a/src/App/Action/User/PasswordAction.php b/src/App/Action/User/PasswordAction.php new file mode 100644 index 0000000..ea68cef --- /dev/null +++ b/src/App/Action/User/PasswordAction.php @@ -0,0 +1,57 @@ +userService = $userService; + } + + /** + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return JsonCorsResponse + */ + public function create(ServerRequestInterface $request, DelegateInterface $delegate) + { + $token = $request->getAttribute('token'); + try { + $data = $this->getRequestData($request); + return new JsonCorsResponse($this->userService->changePassword($token->uid, $data['old'], $data['new'])); + } catch (\Exception $e) { + return new JsonCorsResponse([ + 'message' => $e->getMessage() + ], $e->getCode()); + } + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return static + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/User/PasswordFactory.php b/src/App/Action/User/PasswordFactory.php new file mode 100644 index 0000000..c518dc1 --- /dev/null +++ b/src/App/Action/User/PasswordFactory.php @@ -0,0 +1,16 @@ +get(UserService::class); + return new PasswordAction($userService); + } +} diff --git a/src/App/Action/User/UserAction.php b/src/App/Action/User/UserAction.php new file mode 100644 index 0000000..841dfac --- /dev/null +++ b/src/App/Action/User/UserAction.php @@ -0,0 +1,93 @@ +userService = $userService; + } + + /** + * Renew auth token + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return \Zend\Diactoros\Response\JsonResponse + */ + public function getList(ServerRequestInterface $request, DelegateInterface $delegate) + { + try { + return new JsonCorsResponse($this->userService->getList()); + } catch (\Exception $e) { + return new JsonCorsResponse([ + 'message' => $e->getMessage() + ], 500); + } + } + + /** + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return JsonCorsResponse + */ + public function get(ServerRequestInterface $request, DelegateInterface $delegate) + { + $id = $request->getAttribute('id'); + try { + return new JsonCorsResponse($this->userService->get($id)); + } catch (\Exception $e) { + return new JsonCorsResponse([ + 'message' => $e->getMessage() + ], 500); + } + } + + /** + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return JsonCorsResponse + */ + public function update(ServerRequestInterface $request, DelegateInterface $delegate) + { + $id = $request->getAttribute('id'); + try { + $data = $this->getRequestData($request); + return new JsonCorsResponse($this->userService->update($id, $data)); + } catch (\Exception $e) { + return new JsonCorsResponse([ + 'message' => $e->getMessage() + ], 500); + } + } + + /** + * Configure CORS preflight + * + * @param ServerRequestInterface $request + * @param DelegateInterface $delegate + * @return static + */ + public function options(ServerRequestInterface $request, DelegateInterface $delegate) + { + return $this->withCorsHeaders(new EmptyResponse(), self::CORS_ALLOW_METHODS); + } +} diff --git a/src/App/Action/User/UserFactory.php b/src/App/Action/User/UserFactory.php new file mode 100644 index 0000000..5788562 --- /dev/null +++ b/src/App/Action/User/UserFactory.php @@ -0,0 +1,16 @@ +get(UserService::class); + return new UserAction($userService); + } +} diff --git a/src/App/Command/ConvertMaintenanceHashCommand.php b/src/App/Command/ConvertMaintenanceHashCommand.php new file mode 100644 index 0000000..599e55f --- /dev/null +++ b/src/App/Command/ConvertMaintenanceHashCommand.php @@ -0,0 +1,60 @@ +entityManager = $entityManager; + $this->maintenanceManager = $maintenanceManagerService; + parent::__construct(); + } + + protected function configure() + { + $this->setName('convert:hash') + ->setDescription('convert v1 hash to v2'); + } + + /** + * @param InputInterface $input + * @param OutputInterface $output + * @return int|null|void + * @throws \Doctrine\ORM\OptimisticLockException + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + /** @var DeviceGroup[] $maintGroups */ + $maintGroups = $this->maintenanceManager->getMaintenanceList(); + + foreach ($maintGroups as $maintGroup) { + foreach ($maintGroup->getDevices() as $device) { + foreach ($device->getTasks() as $task) { + if(null !== ($entity = $this->entityManager->getRepository(Maintenance::class)->findOneBy([ + 'oldHash' => $task->getLegacyHash(), + ]))) { + /** @var Maintenance $entity */ + $entity->setHash($task->getHash()); + } + } + } + } + $this->entityManager->flush(); + } +} diff --git a/src/App/Command/ConvertMaintenanceHashCommandFactory.php b/src/App/Command/ConvertMaintenanceHashCommandFactory.php new file mode 100644 index 0000000..1591d12 --- /dev/null +++ b/src/App/Command/ConvertMaintenanceHashCommandFactory.php @@ -0,0 +1,25 @@ +get('doctrine.entity_manager.orm_default'); + /** @var MaintenanceManagerService $maintenanceManager */ + $maintenanceManager = $container->get(MaintenanceManagerService::class); + return new ConvertMaintenanceHashCommand($entityManager, $maintenanceManager); + } +} diff --git a/src/App/Command/InitializeFixtureCommand.php b/src/App/Command/InitializeFixtureCommand.php new file mode 100644 index 0000000..b187a55 --- /dev/null +++ b/src/App/Command/InitializeFixtureCommand.php @@ -0,0 +1,34 @@ +fixtureLoaderService = $fixtureLoaderService; + parent::__construct(); + } + + protected function configure() + { + $this->setName('initialize:fixture') + ->setDescription('Loads data fixture into the database, replacing already existing data'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $this->fixtureLoaderService->load($output); + } +} diff --git a/src/App/Command/InitializeFixtureCommandFactory.php b/src/App/Command/InitializeFixtureCommandFactory.php new file mode 100644 index 0000000..5385e81 --- /dev/null +++ b/src/App/Command/InitializeFixtureCommandFactory.php @@ -0,0 +1,16 @@ +get(FixtureLoaderService::class); + return new InitializeFixtureCommand($fixtureLoaderService); + } +} diff --git a/src/App/Command/MailTestCommand.php b/src/App/Command/MailTestCommand.php new file mode 100644 index 0000000..c60e262 --- /dev/null +++ b/src/App/Command/MailTestCommand.php @@ -0,0 +1,33 @@ +mailerService = $mailerService; + parent::__construct(); + } + + protected function configure() + { + $this->setName('mail:test') + ->setDescription('Test email'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $this->mailerService->sendTestMessage(); + } +} diff --git a/src/App/Command/MailTestCommandFactory.php b/src/App/Command/MailTestCommandFactory.php new file mode 100644 index 0000000..2cc8129 --- /dev/null +++ b/src/App/Command/MailTestCommandFactory.php @@ -0,0 +1,16 @@ +get(MailerService::class); + return new MailTestCommand($mailerService); + } +} diff --git a/src/App/ConfigProvider.php b/src/App/ConfigProvider.php new file mode 100644 index 0000000..bf4a875 --- /dev/null +++ b/src/App/ConfigProvider.php @@ -0,0 +1,95 @@ + $this->getDependencies(), + 'templates' => $this->getTemplates(), + ]; + } + + /** + * Returns the container dependencies + * + * @return array + */ + public function getDependencies() + { + return [ + 'invokables' => [ + Action\PingAction::class => Action\PingAction::class, + + ], + 'factories' => [ + Action\MaintenanceAction::class => Action\MaintenanceFactory::class, + Action\MaintenanceUpcomingAction::class => Action\MaintenanceUpcomingFactory::class, + + Action\Auth\AuthAction::class => Action\Auth\AuthFactory::class, + Action\User\UserAction::class => Action\User\UserFactory::class, + Action\User\PasswordAction::class => Action\User\PasswordFactory::class, + Action\Fault\FaultAction::class => Action\Fault\FaultFactory::class, + Action\Fault\FaultAttachmentAction::class => Action\Fault\FaultAttachmentFactory::class, + Action\Fault\FaultCommentAction::class => Action\Fault\FaultCommentFactory::class, + Action\Fault\FaultRejectAction::class => Action\Fault\FaultRejectFactory::class, + Action\ErrorOriginAction::class => Action\ErrorOriginFactory::class, + Action\ErrorCategoryAction::class => Action\ErrorCategoryFactory::class, + Action\FacilityLocationAction::class => Action\FacilityLocationFactory::class, + Action\SolutionTimeIntervalAction::class => Action\SolutionTimeIntervalFactory::class, + Action\Pdf\GenerateWorksheetAction::class => Action\Pdf\GenerateWorksheetFactory::class, + Action\Pdf\GenerateMaintenanceSheetAction::class => Action\Pdf\GenerateMaintenanceSheetFactory::class, + + Service\AuthService::class => Service\AuthServiceFactory::class, + Service\UserService::class => Service\UserServiceFactory::class, + Service\FaultManagerService::class => Service\FaultManagerServiceFactory::class, + Service\FaultAttachmentService::class => Service\FaultAttachmentServiceFactory::class, + Service\FixtureLoaderService::class => Service\FixtureLoaderServiceFactory::class, + Service\ErrorCategoryService::class => Service\ErrorCategoryServiceFactory::class, + Service\ErrorOriginService::class => Service\ErrorOriginServiceFactory::class, + Service\FacilityLocationService::class => Service\FacilityLocationServiceFactory::class, + Service\SolutionTimeIntervalService::class => Service\SolutionTimeIntervalServiceFactory::class, + Service\PdfService::class => Service\PdfServiceFactory::class, + Service\MailerService::class => Service\MailerServiceFactory::class, + Service\MaintenanceManagerService::class => Service\MaintenanceManagerServiceFactory::class, + Service\XlsxParserService::class => Service\XlsxParserServiceFactory::class, + + 'service.acl' => Service\RbaclFactory::class, + Logger::class => Service\LoggerFactory::class, + ], + ]; + } + + /** + * Returns the templates configuration + * + * @return array + */ + public function getTemplates() + { + return [ + 'paths' => [ + 'app' => ['templates/app'], + 'error' => ['templates/error'], + 'layout' => ['templates/layout'], + ], + ]; + } +} diff --git a/src/App/Entity/Attachment.php b/src/App/Entity/Attachment.php new file mode 100644 index 0000000..2dfcdc5 --- /dev/null +++ b/src/App/Entity/Attachment.php @@ -0,0 +1,346 @@ +id; + } + + /** + * @param int $id + * @return Attachment + */ + public function setId(int $id): Attachment + { + $this->id = $id; + return $this; + } + + /** + * @return Fault + */ + public function getFault(): Fault + { + return $this->fault; + } + + /** + * @param Fault $fault + * @return Attachment + */ + public function setFault(Fault $fault) + { + $this->fault = $fault; + return $this; + } + + /** + * @return User + */ + public function getUser(): User + { + return $this->user; + } + + /** + * @param User $user + * @return Attachment + */ + public function setUser(User $user): Attachment + { + $this->user = $user; + return $this; + } + + /** + * @return string + */ + public function getType(): string + { + return $this->type; + } + + /** + * @param string $type + * @return Attachment + */ + public function setType(string $type): Attachment + { + $this->type = $type; + return $this; + } + + /** + * @return boolean + */ + public function getActive(): bool + { + return $this->active; + } + + /** + * @param boolean $active + * @return Attachment + */ + public function setActive(bool $active): Attachment + { + $this->active = $active; + return $this; + } + + /** + * @return string + */ + public function getRawFileData(): string + { + return $this->rawFileData; + } + + /** + * @param string $rawFileData + * @return Attachment + */ + public function setRawFileData(string $rawFileData): Attachment + { + $this->rawFileData = $rawFileData; + return $this; + } + + /** + * @ORM\PrePersist + * @return Attachment + */ + public function validatePrePersist(): Attachment + { + if ($this->getRawFileData() == null) { + throw new \InvalidArgumentException("File data can't be empty"); + } + return $this; + } + + /** + * @ORM\PostPersist + * @return Attachment + */ + public function saveOnPersist(): Attachment + { + if ($this->getType() == 'image') { + return $this->saveDataAsImageFile($this->rawFileData); + } + + return $this->saveDataAsBinaryFile($this->rawFileData); + } + + /** + * @ORM\PreRemove + * @return Attachment + */ + public function preDeleteHelper(): Attachment + { + $this->idPreDeleteTemp = $this->id; + return $this; + } + + /** + * @ORM\PostRemove + * @return Attachment + */ + public function deleteImage(): Attachment + { + unlink($this->getFileName($this->idPreDeleteTemp)); + return $this; + } + + /** + * @param string $rawFileData + * @return Attachment + */ + public function saveDataAsImageFile(string $rawFileData): Attachment + { + $folder = $this->getContainingFolder(); + if (!file_exists($folder)) { + mkdir($folder, 0755, true); + } + + $extendedId = $this->getExtendedId(); + $pathSplit = str_split($extendedId, 3); + $fileName = array_pop($pathSplit); + $imagine = new Imagine(); + $image = $imagine->load($rawFileData); + $originBox = $image->getSize(); + $originWidth = $originBox->getWidth(); + $originHeight = $originBox->getHeight(); + if ($originWidth > self::MAX_PIXEL_SPREAD || $originHeight > self::MAX_PIXEL_SPREAD) { + if ($originWidth > $originHeight) { + $newWidth = self::MAX_PIXEL_SPREAD; + $newHeight = floor(self::MAX_PIXEL_SPREAD * $originHeight / $originWidth); + } elseif ($originHeight > $originWidth) { + $newWidth = floor(self::MAX_PIXEL_SPREAD * $originWidth / $originHeight); + $newHeight = self::MAX_PIXEL_SPREAD; + } else { + $newWidth = self::MAX_PIXEL_SPREAD; + $newHeight = self::MAX_PIXEL_SPREAD; + } +// $image->resize(new Box($newWidth, $newHeight), ImageInterface::FILTER_LANCZOS); + $image->resize(new Box($newWidth, $newHeight)); + $image->effects()->sharpen(); + } + $image->save(sprintf("%s/%s", $folder, $fileName), [ + 'format' => 'jpeg', + 'jpeg_quality' => 80, + ]); + return $this; + } + + public function saveDataAsBinaryFile(string $rawFileData): Attachment + { + $folder = $this->getContainingFolder(); + if (!file_exists($folder)) { + mkdir($folder, 0755, true); + } + $pathSplit = str_split($this->getExtendedId(), 3); + $fileName = array_pop($pathSplit); + file_put_contents(sprintf("%s/%s", $folder, $fileName), $rawFileData); + return $this; + } + + /** + * @param int $id + * @return string + */ + private function getContainingFolder($id = null): string + { + $attachmentFolder = str_split($this->getExtendedId($id), 3); + array_pop($attachmentFolder); + return sprintf('data/attachments/%s', implode('/', $attachmentFolder)); + } + + /** + * @param int $id + * @return string + * @throws \Exception + */ + private function getExtendedId($id = null): string + { + if ($this->id == null && $id == null) { + throw new \Exception("Entity must be persisted first."); + } + + return sprintf("%09d", $id ? $id : $this->getId()); + } + + /** + * @param int $id + * @return string + */ + public function getFileName($id = null): string + { + $splitParts = str_split($this->getExtendedId($id), 3); + $fileName = array_pop($splitParts); + return sprintf("%s/%s", $this->getContainingFolder($id), $fileName); + } + + /** + * @return resource + */ + public function getIoStream() + { + return fopen($this->getFileName(), 'r'); + } + + /** + * @return string + */ + public function getRawAttachmentData(): string + { + return file_get_contents($this->getFileName()); + } + + /** + * @return array + */ + public function jsonSerialize() + { + return [ + 'id' => $this->getId(), + 'type' => $this->getType(), + 'active' => $this->getActive(), + 'user' => $this->getUser(), + ]; + } +} diff --git a/src/App/Entity/AuthResponse.php b/src/App/Entity/AuthResponse.php new file mode 100644 index 0000000..bad7901 --- /dev/null +++ b/src/App/Entity/AuthResponse.php @@ -0,0 +1,66 @@ +message; + } + + /** + * @param string $message + * @return AuthResponse + */ + public function setMessage(string $message): AuthResponse + { + $this->message = $message; + return $this; + } + + /** + * @return string + */ + public function getToken(): string + { + return $this->token; + } + + /** + * @param string $token + * @return AuthResponse + */ + public function setToken(string $token): AuthResponse + { + $this->token = $token; + return $this; + } + + /** + * @return array + */ + public function jsonSerialize() + { + return [ + 'message' => $this->getMessage(), + 'token' => $this->getToken(), + ]; + } +} diff --git a/src/App/Entity/Device.php b/src/App/Entity/Device.php new file mode 100644 index 0000000..791107f --- /dev/null +++ b/src/App/Entity/Device.php @@ -0,0 +1,179 @@ +group = $group; + $this->tasks = new ArrayCollection(); + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @param string $name + * @return Device + */ + public function setName(string $name): Device + { + $this->name = trim($name); + return $this; + } + + /** + * @return string + */ + public function getResponsible(): string + { + return $this->responsible; + } + + /** + * @param string $responsible + * @return Device + */ + public function setResponsible(string $responsible): Device + { + $this->responsible = trim($responsible); + return $this; + } + + /** + * @return int + */ + public function getCount(): int + { + return $this->count; + } + + /** + * @param int $count + * @return Device + */ + public function setCount(int $count): Device + { + $this->count = $count; + return $this; + } + + /** + * @return string + */ + public function getWorkDescription(): string + { + return $this->workDescription; + } + + /** + * @param string $workDescription + * @return Device + */ + public function setWorkDescription(string $workDescription): Device + { + $this->workDescription = trim($workDescription); + return $this; + } + + /** + * @return DeviceMaintenanceTask[]|ArrayCollection + */ + public function getTasks(): ?ArrayCollection + { + return $this->tasks; + } + + /** + * @param DeviceMaintenanceTask[]|ArrayCollection $tasks + * @return Device + */ + public function setTasks(ArrayCollection $tasks) + { + $this->tasks = $tasks; + return $this; + } + + /** + * @param DeviceMaintenanceTask $device + * @return Device + */ + public function addTask(DeviceMaintenanceTask $device): Device + { + if (!$this->tasks->contains($device)) { + $this->tasks->add($device); + } + return $this; + } + + /** + * @param DeviceMaintenanceTask $maintenanceTask + * @return Device + */ + public function removeTask(DeviceMaintenanceTask $maintenanceTask): Device + { + if ($this->tasks->contains($maintenanceTask)) { + $this->tasks->removeElement($maintenanceTask); + } + return $this; + } + + public function getGroup(): DeviceGroup + { + return $this->group; + } + + /** + * Specify data which should be serialized to JSON + * @link http://php.net/manual/en/jsonserializable.jsonserialize.php + * @return mixed data which can be serialized by json_encode, + * which is a value of any type other than a resource. + * @since 5.4.0 + */ + public function jsonSerialize() + { + return [ + 'name' => $this->getName(), + 'count' => $this->getCount(), + 'responsible' => $this->getResponsible(), + 'workDescription' => $this->getWorkDescription(), + 'tasks' => $this->getTasks()->getValues(), + ]; + } +} diff --git a/src/App/Entity/DeviceGroup.php b/src/App/Entity/DeviceGroup.php new file mode 100644 index 0000000..2aaa3b0 --- /dev/null +++ b/src/App/Entity/DeviceGroup.php @@ -0,0 +1,99 @@ +devices = new ArrayCollection(); + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @param string $name + * @return DeviceGroup + */ + public function setName(string $name): DeviceGroup + { + $this->name = trim($name); + return $this; + } + + /** + * @return Device[]|ArrayCollection + */ + public function getDevices(): ArrayCollection + { + return $this->devices; + } + + /** + * @param Device[]|ArrayCollection $devices + * @return DeviceGroup + */ + public function setDevices($devices): DeviceGroup + { + $this->devices = $devices; + return $this; + } + + /** + * @param Device $device + * @return DeviceGroup + */ + public function addDevice(Device $device): DeviceGroup + { + if (!$this->devices->contains($device)) { + $this->devices->add($device); + } + return $this; + } + + /** + * @param Device $device + * @return DeviceGroup + */ + public function removeDevice(Device $device): DeviceGroup + { + if ($this->devices->contains($device)) { + $this->devices->removeElement($device); + } + return $this; + } + + /** + * Specify data which should be serialized to JSON + * @link http://php.net/manual/en/jsonserializable.jsonserialize.php + * @return mixed data which can be serialized by json_encode, + * which is a value of any type other than a resource. + * @since 5.4.0 + */ + public function jsonSerialize() + { + return [ + 'name' => $this->getName(), + 'devices' => $this->getDevices()->getValues(), + ]; + } +} diff --git a/src/App/Entity/DeviceMaintenanceTask.php b/src/App/Entity/DeviceMaintenanceTask.php new file mode 100644 index 0000000..2e3779e --- /dev/null +++ b/src/App/Entity/DeviceMaintenanceTask.php @@ -0,0 +1,247 @@ +device = $device; + } + + /** + * @return int + */ + public function getYear(): int + { + return $this->year; + } + + /** + * @param int $year + * @return DeviceMaintenanceTask + */ + public function setYear(int $year): DeviceMaintenanceTask + { + $this->year = $year; + return $this; + } + + /** + * @return int + */ + public function getMonth(): int + { + return $this->month; + } + + /** + * @param int $month + * @return DeviceMaintenanceTask + */ + public function setMonth(int $month): DeviceMaintenanceTask + { + $this->month = $month; + return $this; + } + + /** + * @return int + */ + public function getWeek(): int + { + return $this->week; + } + + /** + * @param int $week + * @return DeviceMaintenanceTask + */ + public function setWeek(int $week): DeviceMaintenanceTask + { + $this->week = $week; + return $this; + } + + /** + * @return int + */ + public function getWorkerCount(): int + { + return $this->workerCount; + } + + /** + * @param int $workerCount + * @return DeviceMaintenanceTask + */ + public function setWorkerCount(int $workerCount): DeviceMaintenanceTask + { + $this->workerCount = $workerCount; + return $this; + } + + /** + * @return float + */ + public function getTimeCost(): float + { + return $this->timeCost; + } + + /** + * @param float $timeCost + * @return DeviceMaintenanceTask + */ + public function setTimeCost(float $timeCost): DeviceMaintenanceTask + { + $this->timeCost = $timeCost; + return $this; + } + + /** + * @return \DateTime + */ + public function getShouldStartAt(): \DateTime + { + return $this->shouldStartAt; + } + + /** + * @param \DateTime $shouldStartAt + * @return DeviceMaintenanceTask + */ + public function setShouldStartAt(\DateTime $shouldStartAt): DeviceMaintenanceTask + { + $this->shouldStartAt = $shouldStartAt; + return $this; + } + + /** + * @return \DateTime + */ + public function getShouldBeDoneBy(): \DateTime + { + return $this->shouldBeDoneBy; + } + + /** + * @param \DateTime $shouldBeDoneBy + * @return DeviceMaintenanceTask + */ + public function setShouldBeDoneBy(\DateTime $shouldBeDoneBy): DeviceMaintenanceTask + { + $this->shouldBeDoneBy = $shouldBeDoneBy; + return $this; + } + + /** + * @return bool + */ + public function isDone(): bool + { + return $this->state == 'fin'; + } + + /** + * @return string + */ + public function getState(): string + { + return $this->state; + } + + /** + * @param string $state + * @return DeviceMaintenanceTask + */ + public function setState(string $state): DeviceMaintenanceTask + { + $this->state = $state; + return $this; + } + + /** + * device.name + device.workDescription + task.month + task.week + * @return string + * @deprecated + */ + public function getLegacyHash(): string + { + $dirty = $this->device->getName() + . $this->device->getWorkDescription() + . $this->getMonth() . $this->getWeek(); + $cleanBaseName = str_replace(" ", "", $dirty); + return md5($cleanBaseName); + } + + /** + * year + device.name + device.workDescription + task.month + task.week + * @return string + */ + public function getHash(): string + { + $dirty = $this->getYear() + . sprintf('%02d', $this->getMonth()) . sprintf('%02d', $this->getWeek()) + . $this->device->getName() + . $this->device->getWorkDescription(); + $cleanBaseName = str_replace(" ", "", $dirty); + return md5($cleanBaseName); + } + + public function getDevice(): Device + { + return $this->device; + } + + /** + * Specify data which should be serialized to JSON + * @link http://php.net/manual/en/jsonserializable.jsonserialize.php + * @return mixed data which can be serialized by json_encode, + * which is a value of any type other than a resource. + * @since 5.4.0 + */ + public function jsonSerialize() + { + return [ + 'year' => $this->getYear(), + 'month' => $this->getMonth(), + 'week' => $this->getWeek(), + 'workerCount' => $this->getWorkerCount(), + 'timeCost' => $this->getTimeCost(), + 'shouldStartAt' => $this->getShouldStartAt()->format("Y-m-d"), + 'shouldBeDoneBy' => $this->getShouldBeDoneBy()->format("Y-m-d"), + 'done' => $this->isDone(), + 'state' => $this->getState(), + 'hash' => $this->getHash(), + 'legacyHash' => $this->getLegacyHash(), + ]; + } +} diff --git a/src/App/Entity/ErrorCategory.php b/src/App/Entity/ErrorCategory.php new file mode 100644 index 0000000..834b519 --- /dev/null +++ b/src/App/Entity/ErrorCategory.php @@ -0,0 +1,154 @@ + 'gépész', + self::TYPE_ELECTRIC => 'elektromos', + self::TYPE_BUILDING => 'építész', + self::TYPE_OTHER => 'egyéb', + ]; + + /** + * @ORM\Id + * @ORM\Column(name="id", type="integer") + * @ORM\GeneratedValue(strategy="IDENTITY") + * @var int + */ + private $id; + + /** + * @ORM\Column(name="name", type="string", length=250, nullable=false) + * @var string + */ + private $name; + + /** + * @ORM\Column(name="type", type="string", length=10, nullable=false) + * @var string + */ + private $type; + + /** + * @ORM\Column(name="active", type="boolean", options={"default": true}) + * @var bool + */ + private $active = true; + + /** + * @return int + */ + public function getId(): int + { + return $this->id; + } + + /** + * @param int $id + * @return ErrorCategory + */ + public function setId(int $id): ErrorCategory + { + $this->id = $id; + return $this; + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @param string $name + * @return ErrorCategory + */ + public function setName(string $name): ErrorCategory + { + $this->name = $name; + return $this; + } + + /** + * @return string + */ + public function getType(): string + { + return $this->type; + } + + /** + * @return string + */ + public function getMappedType(): string + { + return $this->typeMap[$this->getType()]; + } + + /** + * @param string $type + * @return ErrorCategory + */ + public function setType(string $type): ErrorCategory + { + $this->type = $type; + return $this; + } + + /** + * @return boolean + */ + public function getActive(): bool + { + return $this->active; + } + + /** + * @param boolean $active + * @return ErrorCategory + */ + public function setActive(bool $active): ErrorCategory + { + $this->active = $active; + return $this; + } + + /** + * @return array + */ + public function jsonSerialize() + { + return [ + 'id' => $this->id, + 'name' => $this->name, + 'type' => $this->type, + 'active' => $this->active, + ]; + } +} diff --git a/src/App/Entity/ErrorOrigin.php b/src/App/Entity/ErrorOrigin.php new file mode 100644 index 0000000..47f44de --- /dev/null +++ b/src/App/Entity/ErrorOrigin.php @@ -0,0 +1,134 @@ +id; + } + + /** + * @param int $id + * @return ErrorOrigin + */ + public function setId(int $id) + { + $this->id = $id; + return $this; + } + + /** + * @return string + */ + public function getCode(): string + { + return $this->code; + } + + /** + * @param string $code + * @return ErrorOrigin + */ + public function setCode(string $code): ErrorOrigin + { + $this->code = $code; + return $this; + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @param string $name + * @return ErrorOrigin + */ + public function setName(string $name): ErrorOrigin + { + $this->name = $name; + return $this; + } + + /** + * @return boolean + */ + public function getActive(): bool + { + return $this->active; + } + + /** + * @param boolean $active + * @return ErrorOrigin + */ + public function setActive(bool $active): ErrorOrigin + { + $this->active = $active; + return $this; + } + + /** + * @return array + */ + public function jsonSerialize() + { + return [ + 'id' => $this->id, + 'code' => $this->code, + 'name' => $this->name, + 'active' => $this->active, + ]; + } +} diff --git a/src/App/Entity/FacilityLocation.php b/src/App/Entity/FacilityLocation.php new file mode 100644 index 0000000..3aea642 --- /dev/null +++ b/src/App/Entity/FacilityLocation.php @@ -0,0 +1,224 @@ +id; + } + + /** + * @param int $id + * @return FacilityLocation + */ + public function setId(int $id): FacilityLocation + { + $this->id = $id; + return $this; + } + + /** + * @return string + */ + public function getRoomNumber(): string + { + return $this->roomNumber; + } + + /** + * @param string $roomNumber + * @return FacilityLocation + */ + public function setRoomNumber(string $roomNumber): FacilityLocation + { + $this->roomNumber = $roomNumber; + return $this; + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @param string $name + * @return FacilityLocation + */ + public function setName(string $name): FacilityLocation + { + $this->name = $name; + return $this; + } + + /** + * @return float + */ + public function getSize(): float + { + return $this->size; + } + + /** + * @param float $size + * @return FacilityLocation + */ + public function setSize(float $size): FacilityLocation + { + $this->size = $size; + return $this; + } + + /** + * @return mixed + */ + public function getLevel() + { + return $this->level; + } + + /** + * @param mixed $level + * @return FacilityLocation + */ + public function setLevel($level) + { + $this->level = $level; + return $this; + } + + /** + * @return mixed + */ + public function getParent() + { + return $this->parent; + } + + /** + * @param mixed $parent + * @return FacilityLocation + */ + public function setParent($parent) + { + $this->parent = $parent; + return $this; + } + + /** + * @param FacilityLocationClosure $closure + */ + public function addClosure(FacilityLocationClosure $closure) + { + $this->closures[] = $closure; + } + + /** + * @return boolean + */ + public function getActive(): bool + { + return $this->active; + } + + /** + * @param boolean $active + * @return FacilityLocation + */ + public function setActive(bool $active): FacilityLocation + { + $this->active = $active; + return $this; + } + + /** + * @return array + */ + public function jsonSerialize() + { + return [ + 'id' => $this->getId(), + 'roomNumber' => $this->getRoomNumber(), + 'name' => $this->getName(), + 'size' => $this->getSize(), + 'level' => $this->getLevel(), + 'active' => $this->getActive(), + ]; + } +} diff --git a/src/App/Entity/FacilityLocationClosure.php b/src/App/Entity/FacilityLocationClosure.php new file mode 100644 index 0000000..d171b6a --- /dev/null +++ b/src/App/Entity/FacilityLocationClosure.php @@ -0,0 +1,15 @@ +attachments = new ArrayCollection(); + $this->snapshots = new ArrayCollection(); + $this->comments = new ArrayCollection(); + } + + /** + * @return int + */ + public function getId(): int + { + return $this->id; + } + + /** + * @param int $id + * @return Fault + */ + public function setId(int $id): Fault + { + $this->id = $id; + return $this; + } + + /** + * @return string + */ + public function getWorksheetNumber(): ?string + { + return $this->worksheetNumber; + } + + /** + * @param string $worksheetNumber + * @return Fault + */ + public function setWorksheetNumber(?string $worksheetNumber): Fault + { + $this->worksheetNumber = $worksheetNumber; + return $this; + } + + /** + * @return FacilityLocation + */ + public function getFacilityLocation(): FacilityLocation + { + return $this->facilityLocation; + } + + /** + * @param FacilityLocation $facilityLocation + * @return Fault + */ + public function setFacilityLocation(FacilityLocation $facilityLocation): Fault + { + $this->facilityLocation = $facilityLocation; + return $this; + } + + /** + * @return string + */ + public function getFacilityLocationDescription() + { + return $this->facilityLocationDescription; + } + + /** + * @param string $facilityLocationDescription + * @return Fault + */ + public function setFacilityLocationDescription(string $facilityLocationDescription): Fault + { + $this->facilityLocationDescription = $facilityLocationDescription; + return $this; + } + + /** + * @return ErrorCategory + */ + public function getErrorCategory(): ErrorCategory + { + return $this->errorCategory; + } + + /** + * @param ErrorCategory $errorCategory + * @return Fault + */ + public function setErrorCategory(ErrorCategory $errorCategory): Fault + { + $this->errorCategory = $errorCategory; + return $this; + } + + /** + * @return ErrorOrigin + */ + public function getErrorOrigin(): ErrorOrigin + { + return $this->errorOrigin; + } + + /** + * @param ErrorOrigin $errorOrigin + * @return Fault + */ + public function setErrorOrigin(ErrorOrigin $errorOrigin): Fault + { + $this->errorOrigin = $errorOrigin; + return $this; + } + + /** + * @return string + */ + public function getErrorDescription() + { + return $this->errorDescription; + } + + /** + * @param string $errorDescription + * @return Fault + */ + public function setErrorDescription(string $errorDescription): Fault + { + $this->errorDescription = $errorDescription; + return $this; + } + + /** + * @return SolutionTimeInterval + */ + public function getSolutionTimeInterval(): SolutionTimeInterval + { + return $this->solutionTimeInterval; + } + + /** + * @param SolutionTimeInterval $solutionTimeInterval + * @return Fault + */ + public function setSolutionTimeInterval(SolutionTimeInterval $solutionTimeInterval): Fault + { + $this->solutionTimeInterval = $solutionTimeInterval; + return $this; + } + + /** + * @return string + */ + public function getSolutionTimeIntervalOther() + { + return $this->solutionTimeIntervalOther; + } + + /** + * @param string $solutionTimeIntervalOther + * @return Fault + */ + public function setSolutionTimeIntervalOther(string $solutionTimeIntervalOther): Fault + { + $this->solutionTimeIntervalOther = $solutionTimeIntervalOther; + return $this; + } + + /** + * @return string + */ + public function getState(): string + { + return $this->state; + } + + /** + * @param string $state + * @return Fault + */ + public function setState(string $state): Fault + { + $this->state = $state; + return $this; + } + + /** + * @return ArrayCollection + */ + public function getAttachments() + { + return $this->attachments; + } + + /** + * @param Attachment $attachment + * @return Fault + */ + public function addAttachment(Attachment $attachment): Fault + { + $this->attachments->add($attachment); + $attachment->setFault($this); + return $this; + } + + public function addAttachments(Collection $attachments): Fault + { + foreach ($attachments as $attachment) { + $this->addAttachment($attachment); + } + return $this; + } + + /** + * @param Attachment $attachment + * @return Fault + */ + public function removeAttachment(Attachment $attachment): Fault + { + $this->attachments->removeElement($attachment); + return $this; + } + + public function removeAttachments(Collection $attachments): Fault + { + foreach ($attachments as $attachment) { + $this->removeAttachment($attachment); + } + return $this; + } + + /** + * @return User + */ + public function getReporter() + { + return $this->reporter; + } + + /** + * @param User $reporter + * @return Fault + */ + public function setReporter(User $reporter) + { + $this->reporter = $reporter; + return $this; + } + + /** + * @return User + */ + public function getWorker() + { + return $this->worker; + } + + /** + * @param User $worker + * @return Fault + */ + public function setWorker($worker) + { + $this->worker = $worker; + return $this; + } + + /** + * @return User + */ + public function getConfirmer(): ?User + { + return $this->confirmer; + } + + /** + * @param User $confirmer + * @return Fault + */ + public function setConfirmer(?User $confirmer): Fault + { + $this->confirmer = $confirmer; + return $this; + } + + /** + * @return \DateTime + */ + public function getConfirmedAt(): ?\DateTime + { + return $this->confirmedAt; + } + + /** + * @param \DateTime $confirmedAt + * @return Fault + */ + public function setConfirmedAt(?\DateTime $confirmedAt): Fault + { + $this->confirmedAt = $confirmedAt; + return $this; + } + + /** + * @return User + */ + public function getAcknowledgedBy(): ?User + { + return $this->acknowledgedBy; + } + + /** + * @param User $acknowledgedBy + * @return Fault + */ + public function setAcknowledgedBy(?User $acknowledgedBy): Fault + { + $this->acknowledgedBy = $acknowledgedBy; + return $this; + } + + /** + * @return \DateTime + */ + public function getAcknowledgedAt(): ?\DateTime + { + return $this->acknowledgedAt; + } + + /** + * @param \DateTime $acknowledgedAt + * @return Fault + */ + public function setAcknowledgedAt(?\DateTime $acknowledgedAt): Fault + { + $this->acknowledgedAt = $acknowledgedAt; + return $this; + } + + /** + * @return User + */ + public function getApprovedBy(): ?User + { + return $this->approvedBy; + } + + /** + * @param User $approvedBy + * @return Fault + */ + public function setApprovedBy(?User $approvedBy): Fault + { + $this->approvedBy = $approvedBy; + return $this; + } + + /** + * @return \DateTime + */ + public function getApprovedAt(): ?\DateTime + { + return $this->approvedAt; + } + + /** + * @param \DateTime $approvedAt + * @return Fault + */ + public function setApprovedAt(?\DateTime $approvedAt): Fault + { + $this->approvedAt = $approvedAt; + return $this; + } + + /** + * @return \DateTime + */ + public function getReportAccepted(): ?\DateTime + { + return $this->reportAccepted; + } + + /** + * @param \DateTime $reportAccepted + * @return Fault + */ + public function setReportAccepted(?\DateTime $reportAccepted): Fault + { + $this->reportAccepted = $reportAccepted; + return $this; + } + + /** + * @return \DateTime + */ + public function getWorkStarted() + { + return $this->workStarted; + } + + /** + * @param \DateTime $workStarted + * @return Fault + */ + public function setWorkStarted(\DateTime $workStarted): Fault + { + $this->workStarted = $workStarted; + return $this; + } + + /** + * @return \DateTime + */ + public function getWorkFinished() + { + return $this->workFinished; + } + + /** + * @param \DateTime $workFinished + * @return Fault + */ + public function setWorkFinished(\DateTime $workFinished): Fault + { + $this->workFinished = $workFinished; + return $this; + } + + /** + * @return float + */ + public function getTimeSpent(): ?float + { + return $this->timeSpent; + } + + /** + * @param float $timeSpent + * @return Fault + */ + public function setTimeSpent(?float $timeSpent): Fault + { + $this->timeSpent = $timeSpent; + return $this; + } + + /** + * @return int + */ + public function getWorkCostEstimate(): ?int + { + return $this->workCostEstimate; + } + + /** + * @param int $workCostEstimate + * @return Fault + */ + public function setWorkCostEstimate(?int $workCostEstimate): Fault + { + $this->workCostEstimate = $workCostEstimate; + return $this; + } + + /** + * @return int + */ + public function getMaterialCostEstimate(): ?int + { + return $this->materialCostEstimate; + } + + /** + * @param int $materialCostEstimate + * @return Fault + */ + public function setMaterialCostEstimate(?int $materialCostEstimate): Fault + { + $this->materialCostEstimate = $materialCostEstimate; + return $this; + } + + /** + * @return mixed + */ + public function getUsedMaterials() + { + return $this->usedMaterials; + } + + /** + * @param mixed $usedMaterials + * @return Fault + */ + public function setUsedMaterials($usedMaterials) + { + $this->usedMaterials = $usedMaterials; + return $this; + } + + /** + * @return mixed + */ + public function getWorkDone() + { + return $this->workDone; + } + + /** + * @param mixed $workDone + * @return Fault + */ + public function setWorkDone($workDone) + { + $this->workDone = $workDone; + return $this; + } + + /** + * @return \DateTime + */ + public function getCreatedAt() + { + return $this->createdAt; + } + + /** + * @param \DateTime $createdAt + * @return Fault + */ + public function setCreatedAt(\DateTime $createdAt): Fault + { + $this->createdAt = $createdAt; + return $this; + } + + /** + * @return ArrayCollection + */ + public function getSnapshots() + { + return $this->snapshots; + } + + + /** + * @return ArrayCollection + */ + public function getComments() + { + return $this->comments; + } + + /** + * @param FaultComment $comment + * @return Fault + */ + public function addComment(FaultComment $comment): Fault + { + if (!$this->comments->contains($comment)) { + $this->comments->add($comment); + $comment->setFault($this); + } + return $this; + } + + public function addComments(Collection $comments): Fault + { + foreach ($comments as $comment) { + $this->addComment($comment); + } + return $this; + } + + /** + * @param FaultComment $comment + * @return Fault + */ + public function removeComment(FaultComment $comment): Fault + { + if ($this->comments->contains($comment)) { + $this->comments->removeElement($comment); + } + return $this; + } + + public function removeComments(Collection $comments): Fault + { + foreach ($comments as $comment) { + $this->removeComment($comment); + } + return $this; + } + + /** + * @return bool + */ + public function isMustLowerCost(): ?bool + { + return $this->mustLowerCost; + } + + /** + * @param bool $mustLowerCost + * @return Fault + */ + public function setMustLowerCost(?bool $mustLowerCost): Fault + { + $this->mustLowerCost = $mustLowerCost; + return $this; + } + + /** + * @return int + */ + public function getAllocatedExpense(): ?int + { + return $this->allocatedExpense; + } + + /** + * @param int $allocatedExpense + * @return Fault + */ + public function setAllocatedExpense(?int $allocatedExpense): Fault + { + $this->allocatedExpense = $allocatedExpense; + return $this; + } + + + /** + * @return array + */ + public function jsonSerialize() + { + return [ + 'id' => $this->id, + 'facilityLocation' => $this->getFacilityLocation(), + 'facilityLocationDescription' => $this->getFacilityLocationDescription(), + 'errorCategory' => $this->getErrorCategory(), + 'errorOrigin' => $this->getErrorOrigin(), + 'errorDescription' => $this->getErrorDescription(), + 'solutionTimeInterval' => $this->getSolutionTimeInterval(), + 'solutionTimeIntervalOther' => $this->getSolutionTimeIntervalOther(), + 'state' => $this->getState(), + 'attachments' => $this->getAttachments()->getValues() ?? [], + 'worker' => $this->getWorker(), + 'confirmer' => $this->getConfirmer(), + 'confirmedAt' => $this->getConfirmedAt(), + 'acknowledgedBy' => $this->getAcknowledgedBy(), + 'acknowledgedAt' => $this->getAcknowledgedAt(), + 'approvedBy' => $this->getApprovedBy(), + 'approvedAt' => $this->getApprovedAt(), + 'reportAccepted' => $this->getReportAccepted(), + 'workStarted' => $this->getWorkStarted(), + 'workFinished' => $this->getWorkFinished(), + 'worksheetNumber' => $this->getWorksheetNumber(), + 'timeSpent' => $this->getTimeSpent(), + 'workCostEstimate' => $this->getWorkCostEstimate(), + 'materialCostEstimate' => $this->getMaterialCostEstimate(), + 'usedMaterials' => $this->getUsedMaterials() ?? [], + 'workDone' => $this->getWorkDone() ?? [], + 'createdAt' => $this->getCreatedAt(), + 'faultSnapshots' => $this->getSnapshots()->toArray() ?? [], + 'comments' => $this->getComments()->toArray() ?? [], + 'mustLowerCost' => $this->isMustLowerCost(), + 'allocatedExpense' => $this->getAllocatedExpense(), + ]; + } + + public function getFlatValues() + { + return [ + 'id' => $this->id, + 'facilityLocation' => $this->getFacilityLocation()->getId(), + 'facilityLocationDescription' => $this->getFacilityLocationDescription(), + 'errorCategory' => $this->getErrorCategory()->getId(), + 'errorOrigin' => $this->getErrorOrigin()->getId(), + 'errorDescription' => $this->getErrorDescription(), + 'solutionTimeInterval' => $this->getSolutionTimeInterval()->getId(), + 'solutionTimeIntervalOther' => $this->getSolutionTimeIntervalOther(), + 'state' => $this->getState(), + 'attachments' => $this->getAttachments()->getValues() ?? [], + 'worker' => $this->getWorker() ? $this->getWorker()->getId() : null, + 'confirmer' => $this->getConfirmer() ? $this->getConfirmer()->getId() : null, + 'confirmedAt' => $this->getConfirmedAt(), + 'acknowledgedBy' => $this->getAcknowledgedBy() ? $this->getAcknowledgedBy()->getId() : null, + 'acknowledgedAt' => $this->getAcknowledgedAt(), + 'approvedBy' => $this->getApprovedBy() ? $this->getApprovedBy()->getId() : null, + 'approvedAt' => $this->getApprovedAt(), + 'reportAccepted' => $this->getReportAccepted(), + 'workStarted' => $this->getWorkStarted(), + 'workFinished' => $this->getWorkFinished(), + 'worksheetNumber' => $this->getWorksheetNumber(), + 'timeSpent' => $this->getTimeSpent(), + 'workCostEstimate' => $this->getWorkCostEstimate(), + 'materialCostEstimate' => $this->getMaterialCostEstimate(), + 'usedMaterials' => $this->getUsedMaterials() ?? [], + 'workDone' => $this->getWorkDone() ?? [], + 'createdAt' => $this->getCreatedAt(), + 'faultSnapshots' => $this->getSnapshots()->toArray() ?? [], + 'comments' => $this->getComments()->toArray() ?? [], + 'mustLowerCost' => $this->isMustLowerCost(), + 'allocatedExpense' => $this->getAllocatedExpense(), + ]; + } +} diff --git a/src/App/Entity/FaultComment.php b/src/App/Entity/FaultComment.php new file mode 100644 index 0000000..ca0ebb2 --- /dev/null +++ b/src/App/Entity/FaultComment.php @@ -0,0 +1,164 @@ +id; + } + + /** + * @param int $id + * @return FaultComment + */ + public function setId(int $id): FaultComment + { + $this->id = $id; + return $this; + } + + /** + * @return Fault + */ + public function getFault(): Fault + { + return $this->fault; + } + + /** + * @param Fault $fault + * @return FaultComment + */ + public function setFault(Fault $fault): FaultComment + { + $this->fault = $fault; + return $this; + } + + /** + * @return User + */ + public function getUser(): User + { + return $this->user; + } + + /** + * @param User $user + * @return FaultComment + */ + public function setUser(User $user): FaultComment + { + $this->user = $user; + return $this; + } + + /** + * @return string + */ + public function getComment(): string + { + return $this->comment; + } + + /** + * @param string $comment + * @return FaultComment + */ + public function setComment(string $comment): FaultComment + { + $this->comment = $comment; + return $this; + } + + /** + * @return \DateTime + */ + public function getCreatedAt(): \DateTime + { + return $this->createdAt; + } + + /** + * @param \DateTime $createdAt + * @return FaultComment + */ + public function setCreatedAt(\DateTime $createdAt): FaultComment + { + $this->createdAt = $createdAt; + return $this; + } + + + /** + * @return array + */ + public function jsonSerialize() + { + return [ + 'id' => $this->id, + 'user' => $this->getUser(), + 'comment' => $this->getComment(), + 'createdAt' => $this->getCreatedAt(), + ]; + } +} diff --git a/src/App/Entity/FaultSnapshot.php b/src/App/Entity/FaultSnapshot.php new file mode 100644 index 0000000..b003f90 --- /dev/null +++ b/src/App/Entity/FaultSnapshot.php @@ -0,0 +1,239 @@ +id; + } + + /** + * @param int $id + * @return FaultSnapshot + */ + public function setId(int $id): FaultSnapshot + { + $this->id = $id; + return $this; + } + + /** + * @return Fault + */ + public function getFault(): Fault + { + return $this->fault; + } + + /** + * @param Fault $fault + * @return FaultSnapshot + */ + public function setFault(Fault $fault): FaultSnapshot + { + $this->fault = $fault; + return $this; + } + + /** + * @return User + */ + public function getUser(): User + { + return $this->user; + } + + /** + * @param User $user + * @return FaultSnapshot + */ + public function setUser(User $user): FaultSnapshot + { + $this->user = $user; + return $this; + } + + /** + * @return string + */ + public function getOldState(): ?string + { + return $this->oldState; + } + + /** + * @param string $oldState + * @return FaultSnapshot + */ + public function setOldState(string $oldState): FaultSnapshot + { + $this->oldState = $oldState; + return $this; + } + + /** + * @return string + */ + public function getNewState(): ?string + { + return $this->newState; + } + + /** + * @param string $newState + * @return FaultSnapshot + */ + public function setNewState(string $newState): FaultSnapshot + { + $this->newState = $newState; + return $this; + } + + /** + * @return mixed + */ + public function getPayload() + { + return $this->payload; + } + + /** + * @param mixed $payload + * @return FaultSnapshot + */ + public function setPayload($payload) + { + $this->payload = $payload; + return $this; + } + + /** + * @return string + */ + public function getComment(): ?string + { + return $this->comment; + } + + /** + * @param string $comment + * @return FaultSnapshot + */ + public function setComment(string $comment): FaultSnapshot + { + $this->comment = $comment; + return $this; + } + + /** + * @return mixed + */ + public function getCreatedAt(): ?\DateTime + { + return $this->createdAt; + } + + /** + * @param \DateTime $createdAt + * @return FaultSnapshot + */ + public function setCreatedAt(\DateTime $createdAt) + { + $this->createdAt = $createdAt; + return $this; + } + + /** + * @return array + */ + public function jsonSerialize() + { + return [ + 'id' => $this->id, + 'user' => $this->getUser(), + 'oldState' => $this->getOldState(), + 'newState' => $this->getNewState(), + 'payload' => $this->getPayload(), + 'comment' => $this->getComment(), + 'createdAt' => $this->getCreatedAt(), + ]; + } +} diff --git a/src/App/Entity/Maintenance.php b/src/App/Entity/Maintenance.php new file mode 100644 index 0000000..3dd466f --- /dev/null +++ b/src/App/Entity/Maintenance.php @@ -0,0 +1,649 @@ +hash; + } + + /** + * @param string $hash + * @return Maintenance + */ + public function setHash(string $hash): Maintenance + { + $this->hash = $hash; + return $this; + } + + /** + * @return string + */ + public function getOldHash(): string + { + return $this->oldHash; + } + + /** + * @param string $oldHash + * @return Maintenance + */ + public function setOldHash(string $oldHash): Maintenance + { + $this->oldHash = $oldHash; + return $this; + } + + /** + * @return string + */ + public function getDeviceName(): string + { + return $this->deviceName; + } + + /** + * @param string $deviceName + * @return Maintenance + */ + public function setDeviceName(string $deviceName): Maintenance + { + $this->deviceName = $deviceName; + return $this; + } + + /** + * @return string + */ + public function getComponentName(): string + { + return $this->componentName; + } + + /** + * @param string $componentName + * @return Maintenance + */ + public function setComponentName(string $componentName): Maintenance + { + $this->componentName = $componentName; + return $this; + } + + /** + * @return string + */ + public function getResponsible(): string + { + return $this->responsible; + } + + /** + * @param string $responsible + * @return Maintenance + */ + public function setResponsible(string $responsible): Maintenance + { + $this->responsible = $responsible; + return $this; + } + + /** + * @return string + */ + public function getWorkDescription(): string + { + return $this->workDescription; + } + + /** + * @param string $workDescription + * @return Maintenance + */ + public function setWorkDescription(string $workDescription): Maintenance + { + $this->workDescription = $workDescription; + return $this; + } + + /** + * @return int + */ + public function getCount(): int + { + return $this->count; + } + + /** + * @param int $count + * @return Maintenance + */ + public function setCount(int $count): Maintenance + { + $this->count = $count; + return $this; + } + + /** + * @return int + */ + public function getYear(): int + { + return $this->year; + } + + /** + * @param int $year + * @return Maintenance + */ + public function setYear(int $year): Maintenance + { + $this->year = $year; + return $this; + } + + /** + * @return int + */ + public function getMonth(): int + { + return $this->month; + } + + /** + * @param int $month + * @return Maintenance + */ + public function setMonth(int $month): Maintenance + { + $this->month = $month; + return $this; + } + + /** + * @return int + */ + public function getWeek(): int + { + return $this->week; + } + + /** + * @param int $week + * @return Maintenance + */ + public function setWeek(int $week): Maintenance + { + $this->week = $week; + return $this; + } + + /** + * @return int + */ + public function getWorkerCount(): int + { + return $this->workerCount; + } + + /** + * @param int $workerCount + * @return Maintenance + */ + public function setWorkerCount(int $workerCount): Maintenance + { + $this->workerCount = $workerCount; + return $this; + } + + /** + * @return float + */ + public function getTimeCost(): float + { + return $this->timeCost; + } + + /** + * @param float $timeCost + * @return Maintenance + */ + public function setTimeCost(float $timeCost): Maintenance + { + $this->timeCost = $timeCost; + return $this; + } + + /** + * @return \DateTime + */ + public function getShouldStartAt(): \DateTime + { + return $this->shouldStartAt; + } + + /** + * @param \DateTime $shouldStartAt + * @return Maintenance + */ + public function setShouldStartAt(\DateTime $shouldStartAt): Maintenance + { + $this->shouldStartAt = $shouldStartAt; + return $this; + } + + /** + * @return \DateTime + */ + public function getShouldBeDoneBy(): \DateTime + { + return $this->shouldBeDoneBy; + } + + /** + * @param \DateTime $shouldBeDoneBy + * @return Maintenance + */ + public function setShouldBeDoneBy(\DateTime $shouldBeDoneBy): Maintenance + { + $this->shouldBeDoneBy = $shouldBeDoneBy; + return $this; + } + + /** + * @return string + */ + public function getWorksheetNumber(): ?string + { + return $this->worksheetNumber; + } + + /** + * @param string $worksheetNumber + * @return Maintenance + */ + public function setWorksheetNumber(?string $worksheetNumber): Maintenance + { + $this->worksheetNumber = $worksheetNumber; + return $this; + } + + /** + * @return string + */ + public function getState(): string + { + return $this->state; + } + + /** + * @param string $state + * @return Maintenance + */ + public function setState(string $state): Maintenance + { + $this->state = $state; + return $this; + } + + /** + * @return User + */ + public function getWorker() + { + return $this->worker; + } + + /** + * @param User $worker + * @return Maintenance + */ + public function setWorker($worker): Maintenance + { + $this->worker = $worker; + return $this; + } + + /** + * @return User + */ + public function getApprovedBy(): ?User + { + return $this->approvedBy; + } + + /** + * @param User $approvedBy + * @return Maintenance + */ + public function setApprovedBy(?User $approvedBy): Maintenance + { + $this->approvedBy = $approvedBy; + return $this; + } + + /** + * @return \DateTime + */ + public function getApprovedAt(): ?\DateTime + { + return $this->approvedAt; + } + + /** + * @param \DateTime $approvedAt + * @return Maintenance + */ + public function setApprovedAt(?\DateTime $approvedAt): Maintenance + { + $this->approvedAt = $approvedAt; + return $this; + } + + /** + * @return \DateTime + */ + public function getWorkStarted(): ?\DateTime + { + return $this->workStarted; + } + + /** + * @param \DateTime $workStarted + * @return Maintenance + */ + public function setWorkStarted(?\DateTime $workStarted): Maintenance + { + $this->workStarted = $workStarted; + return $this; + } + + /** + * @return User + */ + public function getStartedBy(): ?User + { + return $this->startedBy; + } + + /** + * @param User $startedBy + * @return Maintenance + */ + public function setStartedBy(User $startedBy): Maintenance + { + $this->startedBy = $startedBy; + return $this; + } + + /** + * @return \DateTime + */ + public function getWorkFinished(): ?\DateTime + { + return $this->workFinished; + } + + /** + * @param \DateTime $workFinished + * @return Maintenance + */ + public function setWorkFinished(?\DateTime $workFinished): Maintenance + { + $this->workFinished = $workFinished; + return $this; + } + + /** + * @return User + */ + public function getFinishedBy(): ?User + { + return $this->finishedBy; + } + + /** + * @param User $finishedBy + * @return Maintenance + */ + public function setFinishedBy(User $finishedBy): Maintenance + { + $this->finishedBy = $finishedBy; + return $this; + } + + /** + * @return array + */ + public function jsonSerialize() + { + $formatString = "Y-m-d H:i"; + return [ + 'hash' => $this->getHash(), + 'deviceName' => $this->getDeviceName(), + 'componentName' => $this->getComponentName(), + 'responsible' => $this->getResponsible(), + 'workDescription' => $this->getWorkDescription(), + 'count' => $this->getCount(), + 'year' => $this->getYear(), + 'month' => $this->getMonth(), + 'week' => $this->getWeek(), + 'workerCount' => $this->getWorkerCount(), + 'timeCost' => $this->getTimeCost(), + 'shouldStartAt' => $this->getShouldStartAt() + ? $this->getShouldStartAt()->format($formatString) : null, + 'shouldBeDoneBy' => $this->getShouldBeDoneBy() + ? $this->getShouldBeDoneBy()->format($formatString) : null, + 'state' => $this->getState(), + 'worker' => $this->getWorker(), + 'approvedBy' => $this->getApprovedBy(), + 'approvedAt' => $this->getApprovedAt() + ? $this->getApprovedAt()->format($formatString) : null, + 'workStarted' => $this->getWorkStarted() + ? $this->getWorkStarted()->format($formatString) : null, + 'staretedBy' => $this->getStartedBy(), + 'workFinished' => $this->getWorkFinished() + ? $this->getWorkFinished()->format($formatString) : null, + 'finishedBy' => $this->getFinishedBy(), + 'worksheetNumber' => $this->getWorksheetNumber(), + ]; + } + + public function getFlatValues() + { + $formatString = "Y-m-d H:i"; + return [ + 'hash' => $this->getHash(), + 'deviceName' => $this->getDeviceName(), + 'componentName' => $this->getComponentName(), + 'responsible' => $this->getResponsible(), + 'workDescription' => $this->getWorkDescription(), + 'count' => $this->getCount(), + 'year' => $this->getYear(), + 'month' => $this->getMonth(), + 'week' => $this->getWeek(), + 'workerCount' => $this->getWorkerCount(), + 'timeCost' => $this->getTimeCost(), + 'shouldStartAt' => $this->getShouldStartAt() + ? $this->getShouldStartAt()->format($formatString) : null, + 'shouldBeDoneBy' => $this->getShouldBeDoneBy() + ? $this->getShouldBeDoneBy()->format($formatString) : null, + 'state' => $this->getState(), + 'worker' => $this->getWorker() ? $this->getWorker()->getId() : null, + 'approvedBy' => $this->getApprovedBy() ? $this->getApprovedBy()->getId() : null, + 'approvedAt' => $this->getApprovedAt() + ? $this->getApprovedAt()->format($formatString) : null, + 'workStarted' => $this->getWorkStarted() + ? $this->getWorkStarted()->format($formatString) : null, + 'staretedBy' => $this->getStartedBy(), + 'workFinished' => $this->getWorkFinished() + ? $this->getWorkFinished()->format($formatString) : null, + 'finishedBy' => $this->getFinishedBy(), + 'worksheetNumber' => $this->getWorksheetNumber(), + ]; + } +} diff --git a/src/App/Entity/SolutionTimeInterval.php b/src/App/Entity/SolutionTimeInterval.php new file mode 100644 index 0000000..54a54d5 --- /dev/null +++ b/src/App/Entity/SolutionTimeInterval.php @@ -0,0 +1,133 @@ +id; + } + + /** + * @param int $id + * @return SolutionTimeInterval + */ + public function setId(int $id): SolutionTimeInterval + { + $this->id = $id; + return $this; + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @param string $name + * @return SolutionTimeInterval + */ + public function setName(string $name): SolutionTimeInterval + { + $this->name = $name; + return $this; + } + + /** + * @return string + */ + public function getCode(): string + { + return $this->code; + } + + /** + * @param string $code + * @return SolutionTimeInterval + */ + public function setCode(string $code): SolutionTimeInterval + { + $this->code = $code; + return $this; + } + + /** + * @return boolean + */ + public function getActive(): bool + { + return $this->active; + } + + /** + * @param boolean $active + * @return SolutionTimeInterval + */ + public function setActive(bool $active): SolutionTimeInterval + { + $this->active = $active; + return $this; + } + + /** + * @return array + */ + public function jsonSerialize() + { + return [ + 'id' => $this->id, + 'name' => $this->name, + 'code' => $this->code, + 'active' => $this->active, + ]; + } +} diff --git a/src/App/Entity/User.php b/src/App/Entity/User.php new file mode 100644 index 0000000..8aacb3d --- /dev/null +++ b/src/App/Entity/User.php @@ -0,0 +1,354 @@ +reportedFaults = new ArrayCollection(); + } + + /** + * @return int + */ + public function getId(): int + { + return $this->id; + } + + /** + * @param int $id + * @return User + */ + public function setId(int $id): User + { + $this->id = $id; + return $this; + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @param string $name + * @return User + */ + public function setName(string $name): User + { + $this->name = $name; + return $this; + } + + /** + * @return string + */ + public function getEmail() + { + return $this->email; + } + + /** + * @param string $email + * @return User + */ + public function setEmail(string $email): User + { + $this->email = $email; + return $this; + } + + /** + * @return bool + */ + public function isWantsEmail() + { + return $this->wantsEmail; + } + + /** + * @param bool $wantsEmail + * @return User + */ + public function setWantsEmail(bool $wantsEmail): User + { + $this->wantsEmail = $wantsEmail; + return $this; + } + + /** + * @return string + */ + public function getJob(): string + { + return $this->job; + } + + /** + * @param string $job + * @return User + */ + public function setJob(string $job): User + { + $this->job = $job; + return $this; + } + + /** + * @return string + */ + public function getPhone(): string + { + return $this->phone; + } + + /** + * @param string $phone + * @return User + */ + public function setPhone(string $phone): User + { + $this->phone = $phone; + return $this; + } + + /** + * @return string + */ + public function getPassword(): string + { + return $this->password; + } + + /** + * @param string $password + * @return User + */ + public function setPassword(string $password): User + { + $this->password = $password; + return $this; + } + + /** + * @return mixed + */ + public function getRoles() + { + return $this->roles; + } + + /** + * @param mixed $roles + * @return User + */ + public function setRoles($roles) + { + $this->roles = $roles; + return $this; + } + + /** + * @return Fault[]|ArrayCollection + */ + public function getReportedFaults(): ArrayCollection + { + return $this->reportedFaults; + } + + /** + * @param Fault $reportedFault + * @return User + */ + public function addReportedFault(Fault $reportedFault): User + { + if (!$this->reportedFaults->contains($reportedFault)) { + $this->reportedFaults->add($reportedFault); + $reportedFault->setReporter($this); + } + return $this; + } + + /** + * @param Fault $reportedFault + * @return User + */ + public function removeReportedFault(Fault $reportedFault): User + { + if ($this->reportedFaults->contains($reportedFault)) { + $this->reportedFaults->removeElement($reportedFault); + $reportedFault->setReporter(null); + } + return $this; + } + + /** + * @return bool + */ + public function isPasswordMustChange(): bool + { + return $this->passwordMustChange; + } + + /** + * @param bool $passwordMustChange + * @return User + */ + public function setPasswordMustChange(bool $passwordMustChange): User + { + $this->passwordMustChange = $passwordMustChange; + return $this; + } + + /** + * @return bool + */ + public function getCanChangePassword(): bool + { + return $this->canChangePassword; + } + + /** + * @param bool $canChangePassword + * @return User + */ + public function setCanChangePassword(bool $canChangePassword): User + { + $this->canChangePassword = $canChangePassword; + return $this; + } + + /** + * @return boolean + */ + public function getActive(): bool + { + return $this->active; + } + + /** + * @param boolean $active + * @return User + */ + public function setActive(bool $active): User + { + $this->active = $active; + return $this; + } + + /** + * @return array + */ + public function jsonSerialize() + { + return [ + 'id' => $this->getId(), + 'name' => $this->getName(), + 'email' => $this->getEmail(), + 'wantsEmail' => $this->isWantsEmail(), + 'job' => $this->getJob(), + 'phone' => $this->getPhone(), + 'roles' => $this->getRoles(), + 'passwordMustChange' => $this->isPasswordMustChange(), + 'canChangePassword' => $this->getCanChangePassword(), + 'active' => $this->getActive(), + ]; + } +} diff --git a/src/App/Fixture/ErrorCategoryLoader.php b/src/App/Fixture/ErrorCategoryLoader.php new file mode 100644 index 0000000..c56da2d --- /dev/null +++ b/src/App/Fixture/ErrorCategoryLoader.php @@ -0,0 +1,57 @@ +output = $output; + } + + public function load(ObjectManager $manager) + { + $inputFileContents = file_get_contents("data/fixture/error-category.yml"); + $yamlData = Yaml::parse($inputFileContents); + + /** @var \Doctrine\ORM\Mapping\ClassMetadata $metadata */ + $metadata = $manager->getClassMetadata(ErrorCategory::class); + $metadata->setIdGenerator(new AssignedGenerator()); + $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); + + $this->output->writeln(sprintf(" > %s BEGIN", __CLASS__)); + foreach ($yamlData['ErrorCategories'] as $entityId => $entityData) { + $entity = new ErrorCategory(); + $entity->setId($entityData['id']) + ->setName($entityData['name']) + ->setType($entityData['type']) + ->setActive($entityData['active']); + + $this->addReference($entityId, $entity); + + $manager->persist($entity); + $this->output->writeln(" * " . $entityId); + } + $manager->flush(); + $this->output->writeln(sprintf(" > %s END", __CLASS__)); + } + + public function getOrder() + { + return 10; + } +} diff --git a/src/App/Fixture/ErrorOriginLoader.php b/src/App/Fixture/ErrorOriginLoader.php new file mode 100644 index 0000000..51113fc --- /dev/null +++ b/src/App/Fixture/ErrorOriginLoader.php @@ -0,0 +1,57 @@ +output = $output; + } + + public function load(ObjectManager $manager) + { + $inputFileContents = file_get_contents("data/fixture/error-origin.yml"); + $yamlData = Yaml::parse($inputFileContents); + + /** @var \Doctrine\ORM\Mapping\ClassMetadata $metadata */ + $metadata = $manager->getClassMetadata(ErrorOrigin::class); + $metadata->setIdGenerator(new AssignedGenerator()); + $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); + + $this->output->writeln(sprintf(" > %s BEGIN", __CLASS__)); + foreach ($yamlData['ErrorOrigins'] as $entityId => $entityData) { + $entity = new ErrorOrigin(); + $entity->setId($entityData['id']) + ->setName($entityData['name']) + ->setCode($entityData['code']) + ->setActive($entityData['active']); + + $this->addReference($entityId, $entity); + + $manager->persist($entity); + $this->output->writeln(" * " . $entityId); + } + $manager->flush(); + $this->output->writeln(sprintf(" > %s END", __CLASS__)); + } + + public function getOrder() + { + return 10; + } +} diff --git a/src/App/Fixture/FacilityLocationLoader.php b/src/App/Fixture/FacilityLocationLoader.php new file mode 100644 index 0000000..37f2f4e --- /dev/null +++ b/src/App/Fixture/FacilityLocationLoader.php @@ -0,0 +1,55 @@ +output = $output; + } + + public function load(ObjectManager $manager) + { + $inputFileContents = file_get_contents("data/fixture/facility-location.yml"); + $yamlData = Yaml::parse($inputFileContents); + + $this->output->writeln(sprintf(" > %s BEGIN", __CLASS__)); + foreach ($yamlData['FacilityLocations'] as $entityId => $entityData) { + $entity = new FacilityLocation(); + $entity + ->setRoomNumber($entityData['roomNumber']) + ->setName($entityData['name']) + ->setSize($entityData['size']); + + if ($entityData['parent']) { + $entity->setParent($this->getReference($entityData['parent'])); + } + + $this->addReference($entityId, $entity); + + $manager->persist($entity); + $this->output->writeln(" * " . $entityId); + } + $manager->flush(); + $this->output->writeln(sprintf(" > %s END", __CLASS__)); + } + + public function getOrder() + { + return 10; + } +} diff --git a/src/App/Fixture/SolutionTimeIntervalLoader.php b/src/App/Fixture/SolutionTimeIntervalLoader.php new file mode 100644 index 0000000..8284d3e --- /dev/null +++ b/src/App/Fixture/SolutionTimeIntervalLoader.php @@ -0,0 +1,57 @@ +output = $output; + } + + public function load(ObjectManager $manager) + { + $inputFileContents = file_get_contents("data/fixture/solution-time-interval.yml"); + $yamlData = Yaml::parse($inputFileContents); + + /** @var \Doctrine\ORM\Mapping\ClassMetadata $metadata */ + $metadata = $manager->getClassMetadata(SolutionTimeInterval::class); + $metadata->setIdGenerator(new AssignedGenerator()); + $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); + + $this->output->writeln(sprintf(" > %s BEGIN", __CLASS__)); + foreach ($yamlData['SolutionTimeIntervals'] as $entityId => $entityData) { + $entity = new SolutionTimeInterval(); + $entity->setId($entityData['id']) + ->setName($entityData['name']) + ->setCode($entityData['code']) + ->setActive($entityData['active']); + + $this->addReference($entityId, $entity); + + $manager->persist($entity); + $this->output->writeln(" * " . $entityId); + } + $manager->flush(); + $this->output->writeln(sprintf(" > %s END", __CLASS__)); + } + + public function getOrder() + { + return 10; + } +} diff --git a/src/App/Fixture/UserLoader.php b/src/App/Fixture/UserLoader.php new file mode 100644 index 0000000..e81f66a --- /dev/null +++ b/src/App/Fixture/UserLoader.php @@ -0,0 +1,91 @@ +output = $output; + } + + public function load(ObjectManager $manager) + { + $inputFileContents = file_get_contents("data/fixture/user.yml"); + $yamlData = Yaml::parse($inputFileContents); + + /** @var \Doctrine\ORM\Mapping\ClassMetadata $metadata */ + $metadata = $manager->getClassMetadata(User::class); + $metadata->setIdGenerator(new AssignedGenerator()); + $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); + + $this->output->writeln(sprintf(" > %s BEGIN", __CLASS__)); + + $crypt = new Bcrypt(); + $crypt->setCost(self::PASSWORD_COST); + + if (file_exists(self::GEN_PW_FILE)) { + unlink(self::GEN_PW_FILE); + } + + foreach ($yamlData['Users'] as $entityId => $entityData) { + $canChangePassword = $entityData['canChangePassword'] ?? true; + if (!$canChangePassword) { + $entityData['password'] = substr(md5(uniqid()), 0, 8); + file_put_contents(self::GEN_PW_FILE, sprintf( + "%s : %s\n", + $entityData['name'], + $entityData['password'] + ), FILE_APPEND); + } + + $entity = new User(); + $entity->setId($entityData['id']) + ->setName($entityData['name']) + ->setEmail($entityData['email']) + ->setWantsEmail($entityData['wantsEmail']) + ->setJob($entityData['job']) + ->setPhone($entityData['phone']) + ->setPassword($crypt->create(isset($entityData['password']) ? $entityData['password'] : '1234')) + ->setRoles(explode(',', $entityData['roles'])) + ->setCanChangePassword($canChangePassword) + ->setActive($entityData['active']); + + $this->addReference($entityId, $entity); + + $manager->persist($entity); + $this->output->writeln(" * " . $entityId); + } + $manager->flush(); + $this->output->writeln(sprintf(" > %s END", __CLASS__)); + } + + /** + * Used as fixture load order + * + * @return int + */ + public function getOrder() + { + return 9; + } +} diff --git a/src/App/Hydrator/DoctrineObject.php b/src/App/Hydrator/DoctrineObject.php new file mode 100644 index 0000000..912e5c2 --- /dev/null +++ b/src/App/Hydrator/DoctrineObject.php @@ -0,0 +1,594 @@ +. + */ + +namespace App\Hydrator; + +use DateTime; +use Doctrine\Common\Persistence\Mapping\ClassMetadata; +use Doctrine\Common\Persistence\ObjectManager; +use Doctrine\Common\Util\Inflector; +use InvalidArgumentException; +use RuntimeException; +use Traversable; +use Zend\Stdlib\ArrayUtils; +use Zend\Hydrator\AbstractHydrator; +use Zend\Hydrator\Filter\FilterProviderInterface; + +/** + * This hydrator has been completely refactored for DoctrineModule 0.7.0. It provides an easy and powerful way + * of extracting/hydrator objects in Doctrine, by handling most associations types. + * + * Starting from DoctrineModule 0.8.0, the hydrator can be used multiple times with different objects + * + * @license MIT + * @link http://www.doctrine-project.org/ + * @since 0.7.0 + * @author Michael Gallego + */ +class DoctrineObject extends AbstractHydrator +{ + /** + * @var ObjectManager + */ + protected $objectManager; + + /** + * @var ClassMetadata + */ + protected $metadata; + + /** + * @var bool + */ + protected $byValue = true; + + + /** + * Constructor + * + * @param ObjectManager $objectManager The ObjectManager to use + * @param bool $byValue If set to true, hydrator will always use entity's public API + */ + public function __construct(ObjectManager $objectManager, $byValue = true) + { + parent::__construct(); + + $this->objectManager = $objectManager; + $this->byValue = (bool) $byValue; + } + + /** + * Extract values from an object + * + * @param object $object + * @return array + */ + public function extract($object) + { + $this->prepare($object); + + if ($this->byValue) { + return $this->extractByValue($object); + } + + return $this->extractByReference($object); + } + + /** + * Hydrate $object with the provided $data. + * + * @param array $data + * @param object $object + * @return object + */ + public function hydrate(array $data, $object) + { + $this->prepare($object); + + if ($this->byValue) { + return $this->hydrateByValue($data, $object); + } + + return $this->hydrateByReference($data, $object); + } + + /** + * Prepare the hydrator by adding strategies to every collection valued associations + * + * @param object $object + * @return void + */ + protected function prepare($object) + { + $this->metadata = $this->objectManager->getClassMetadata(get_class($object)); + $this->prepareStrategies(); + } + + /** + * Prepare strategies before the hydrator is used + * + * @throws \InvalidArgumentException + * @return void + */ + protected function prepareStrategies() + { + $associations = $this->metadata->getAssociationNames(); + + foreach ($associations as $association) { + if ($this->metadata->isCollectionValuedAssociation($association)) { + // Add a strategy if the association has none set by user + if (!$this->hasStrategy($association)) { + if ($this->byValue) { + $this->addStrategy($association, new Strategy\AllowRemoveByValue()); + } else { + $this->addStrategy($association, new Strategy\AllowRemoveByReference()); + } + } + + $strategy = $this->getStrategy($association); + + if (!$strategy instanceof Strategy\AbstractCollectionStrategy) { + throw new InvalidArgumentException( + sprintf( + 'Strategies used for collections valued associations must inherit from ' + . 'Strategy\AbstractCollectionStrategy, %s given', + get_class($strategy) + ) + ); + } + + $strategy->setCollectionName($association) + ->setClassMetadata($this->metadata); + } + } + } + + /** + * Extract values from an object using a by-value logic (this means that it uses the entity + * API, in this case, getters) + * + * @param object $object + * @throws RuntimeException + * @return array + */ + protected function extractByValue($object) + { + $fieldNames = array_merge($this->metadata->getFieldNames(), $this->metadata->getAssociationNames()); + $methods = get_class_methods($object); + $filter = $object instanceof FilterProviderInterface + ? $object->getFilter() + : $this->filterComposite; + + $data = []; + foreach ($fieldNames as $fieldName) { + if ($filter && !$filter->filter($fieldName)) { + continue; + } + + $getter = 'get' . Inflector::classify($fieldName); + $isser = 'is' . Inflector::classify($fieldName); + + $dataFieldName = $this->computeExtractFieldName($fieldName); + if (in_array($getter, $methods)) { + $data[$dataFieldName] = $this->extractValue($fieldName, $object->$getter(), $object); + } elseif (in_array($isser, $methods)) { + $data[$dataFieldName] = $this->extractValue($fieldName, $object->$isser(), $object); + } elseif (substr($fieldName, 0, 2) === 'is' + && ctype_upper(substr($fieldName, 2, 1)) + && in_array($fieldName, $methods)) { + $data[$dataFieldName] = $this->extractValue($fieldName, $object->$fieldName(), $object); + } + + // Unknown fields are ignored + } + + return $data; + } + + /** + * Extract values from an object using a by-reference logic (this means that values are + * directly fetched without using the public API of the entity, in this case, getters) + * + * @param object $object + * @return array + */ + protected function extractByReference($object) + { + $fieldNames = array_merge($this->metadata->getFieldNames(), $this->metadata->getAssociationNames()); + $refl = $this->metadata->getReflectionClass(); + $filter = $object instanceof FilterProviderInterface + ? $object->getFilter() + : $this->filterComposite; + + $data = []; + foreach ($fieldNames as $fieldName) { + if ($filter && !$filter->filter($fieldName)) { + continue; + } + $reflProperty = $refl->getProperty($fieldName); + $reflProperty->setAccessible(true); + + $dataFieldName = $this->computeExtractFieldName($fieldName); + $data[$dataFieldName] = $this->extractValue($fieldName, $reflProperty->getValue($object), $object); + } + + return $data; + } + + /** + * Hydrate the object using a by-value logic (this means that it uses the entity API, in this + * case, setters) + * + * @param array $data + * @param object $object + * @throws RuntimeException + * @return object + */ + protected function hydrateByValue(array $data, $object) + { + $tryObject = $this->tryConvertArrayToObject($data, $object); + $metadata = $this->metadata; + + if (is_object($tryObject)) { + $object = $tryObject; + } + + foreach ($data as $field => $value) { + $field = $this->computeHydrateFieldName($field); + $value = $this->handleTypeConversions($value, $metadata->getTypeOfField($field)); + $setter = 'set' . Inflector::classify($field); + + if ($metadata->hasAssociation($field)) { + $target = $metadata->getAssociationTargetClass($field); + + if ($metadata->isSingleValuedAssociation($field)) { + if (! method_exists($object, $setter)) { + continue; + } + + $value = $this->toOne($target, $this->hydrateValue($field, $value, $data)); + + if (null === $value + && !current($metadata->getReflectionClass()->getMethod($setter)->getParameters())->allowsNull() + ) { + continue; + } + + $object->$setter($value); + } elseif ($metadata->isCollectionValuedAssociation($field)) { + $this->toMany($object, $field, $target, $value); + } + } else { + if (! method_exists($object, $setter)) { + continue; + } + + $object->$setter($this->hydrateValue($field, $value, $data)); + } + } + + return $object; + } + + /** + * Hydrate the object using a by-reference logic (this means that values are modified directly without + * using the public API, in this case setters, and hence override any logic that could be done in those + * setters) + * + * @param array $data + * @param object $object + * @return object + */ + protected function hydrateByReference(array $data, $object) + { + $tryObject = $this->tryConvertArrayToObject($data, $object); + $metadata = $this->metadata; + $refl = $metadata->getReflectionClass(); + + if (is_object($tryObject)) { + $object = $tryObject; + } + + foreach ($data as $field => $value) { + $field = $this->computeHydrateFieldName($field); + + // Ignore unknown fields + if (!$refl->hasProperty($field)) { + continue; + } + + $value = $this->handleTypeConversions($value, $metadata->getTypeOfField($field)); + $reflProperty = $refl->getProperty($field); + $reflProperty->setAccessible(true); + + if ($metadata->hasAssociation($field)) { + $target = $metadata->getAssociationTargetClass($field); + + if ($metadata->isSingleValuedAssociation($field)) { + $value = $this->toOne($target, $this->hydrateValue($field, $value, $data)); + $reflProperty->setValue($object, $value); + } elseif ($metadata->isCollectionValuedAssociation($field)) { + $this->toMany($object, $field, $target, $value); + } + } else { + $reflProperty->setValue($object, $this->hydrateValue($field, $value, $data)); + } + } + + return $object; + } + + /** + * This function tries, given an array of data, to convert it to an object if the given array contains + * an identifier for the object. This is useful in a context of updating existing entities, without ugly + * tricks like setting manually the existing id directly into the entity + * + * @param array $data The data that may contain identifiers keys + * @param object $object + * @return object + */ + protected function tryConvertArrayToObject($data, $object) + { + $metadata = $this->metadata; + $identifierNames = $metadata->getIdentifierFieldNames($object); + $identifierValues = []; + + if (empty($identifierNames)) { + return $object; + } + + foreach ($identifierNames as $identifierName) { + if (!isset($data[$identifierName])) { + return $object; + } + + $identifierValues[$identifierName] = $data[$identifierName]; + } + + return $this->find($identifierValues, $metadata->getName()); + } + + /** + * Handle ToOne associations + * + * When $value is an array but is not the $target's identifiers, $value is + * most likely an array of fieldset data. The identifiers will be determined + * and a target instance will be initialized and then hydrated. The hydrated + * target will be returned. + * + * @param string $target + * @param mixed $value + * @return object + */ + protected function toOne($target, $value) + { + $metadata = $this->objectManager->getClassMetadata($target); + + if (is_array($value) && array_keys($value) != $metadata->getIdentifier()) { + // $value is most likely an array of fieldset data + $identifiers = array_intersect_key( + $value, + array_flip($metadata->getIdentifier()) + ); + $object = $this->find($identifiers, $target) ?: new $target; + return $this->hydrate($value, $object); + } + + return $this->find($value, $target); + } + + /** + * Handle ToMany associations. In proper Doctrine design, Collections should not be swapped, so + * collections are always handled by reference. Internally, every collection is handled using specials + * strategies that inherit from AbstractCollectionStrategy class, and that add or remove elements but without + * changing the collection of the object + * + * @param object $object + * @param mixed $collectionName + * @param string $target + * @param mixed $values + * + * @throws \InvalidArgumentException + * + * @return void + */ + protected function toMany($object, $collectionName, $target, $values) + { + $metadata = $this->objectManager->getClassMetadata(ltrim($target, '\\')); + $identifier = $metadata->getIdentifier(); + + if (!is_array($values) && !$values instanceof Traversable) { + $values = (array)$values; + } + + $collection = []; + + // If the collection contains identifiers, fetch the objects from database + foreach ($values as $value) { + if ($value instanceof $target) { + // assumes modifications have already taken place in object + $collection[] = $value; + continue; + } elseif (empty($value)) { + // assumes no id and retrieves new $target + $collection[] = $this->find($value, $target); + continue; + } + + $find = []; + if (is_array($identifier)) { + foreach ($identifier as $field) { + switch (gettype($value)) { + case 'object': + $getter = 'get' . ucfirst($field); + if (method_exists($value, $getter)) { + $find[$field] = $value->$getter(); + } elseif (property_exists($value, $field)) { + $find[$field] = $value->$field; + } + break; + case 'array': + if (array_key_exists($field, $value) && $value[$field] != null) { + $find[$field] = $value[$field]; + unset($value[$field]); // removed identifier from persistable data + } + break; + default: + $find[$field] = $value; + break; + } + } + } + + if (!empty($find) && $found = $this->find($find, $target)) { + $collection[] = (is_array($value)) ? $this->hydrate($value, $found) : $found; + } else { + $collection[] = (is_array($value)) ? $this->hydrate($value, new $target) : new $target; + } + } + + $collection = array_filter( + $collection, + function ($item) { + return null !== $item; + } + ); + + // Set the object so that the strategy can extract the Collection from it + + /** @var \DoctrineModule\Stdlib\Hydrator\Strategy\AbstractCollectionStrategy $collectionStrategy */ + $collectionStrategy = $this->getStrategy($collectionName); + $collectionStrategy->setObject($object); + + // We could directly call hydrate method from the strategy, but if people want to override + // hydrateValue function, they can do it and do their own stuff + $this->hydrateValue($collectionName, $collection, $values); + } + + /** + * Handle various type conversions that should be supported natively by Doctrine (like DateTime) + * + * @param mixed $value + * @param string $typeOfField + * @return DateTime + */ + protected function handleTypeConversions($value, $typeOfField) + { + switch ($typeOfField) { + case 'datetimetz': + case 'datetime': + case 'time': + case 'date': + if ('' === $value) { + return null; + } + + if (is_int($value)) { + $dateTime = new DateTime(); + $dateTime->setTimestamp($value); + $value = $dateTime; + } elseif (is_string($value)) { + $value = new DateTime($value); + } + + break; + default: + } + + return $value; + } + + /** + * Find an object by a given target class and identifier + * + * @param mixed $identifiers + * @param string $targetClass + * + * @return object|null + */ + protected function find($identifiers, $targetClass) + { + if ($identifiers instanceof $targetClass) { + return $identifiers; + } + + if ($this->isNullIdentifier($identifiers)) { + return null; + } + + return $this->objectManager->find($targetClass, $identifiers); + } + + /** + * Verifies if a provided identifier is to be considered null + * + * @param mixed $identifier + * + * @return bool + */ + private function isNullIdentifier($identifier) + { + if (null === $identifier) { + return true; + } + + if ($identifier instanceof Traversable || is_array($identifier)) { + $nonNullIdentifiers = array_filter( + ArrayUtils::iteratorToArray($identifier), + function ($value) { + return null !== $value; + } + ); + + return empty($nonNullIdentifiers); + } + + return false; + } + + /** + * Applies the naming strategy if there is one set + * + * @param string $field + * + * @return string + */ + protected function computeHydrateFieldName($field) + { + if ($this->hasNamingStrategy()) { + $field = $this->getNamingStrategy()->hydrate($field); + } + return $field; + } + + /** + * Applies the naming strategy if there is one set + * + * @param string $field + * + * @return string + */ + protected function computeExtractFieldName($field) + { + if ($this->hasNamingStrategy()) { + $field = $this->getNamingStrategy()->extract($field); + } + return $field; + } +} diff --git a/src/App/Hydrator/DoctrineObjectFactory.php b/src/App/Hydrator/DoctrineObjectFactory.php new file mode 100644 index 0000000..d7d10ea --- /dev/null +++ b/src/App/Hydrator/DoctrineObjectFactory.php @@ -0,0 +1,15 @@ +get('doctrine.entity_manager.orm_default'); + return new DoctrineObject($em); + } +} diff --git a/src/App/Hydrator/Filter/PropertyName.php b/src/App/Hydrator/Filter/PropertyName.php new file mode 100644 index 0000000..daafc86 --- /dev/null +++ b/src/App/Hydrator/Filter/PropertyName.php @@ -0,0 +1,66 @@ +. + */ + +namespace App\Hydrator\Filter; + +use Zend\Hydrator\Filter\FilterInterface; + +/** + * Provides a filter to restrict returned fields by whitelisting or + * blacklisting property names. + * + * @license MIT + * @link http://www.doctrine-project.org/ + * @author Liam O'Boyle + */ +class PropertyName implements FilterInterface +{ + /** + * The propteries to exclude. + * + * @var array + */ + protected $properties = []; + + /** + * Either an exclude or an include. + * + * @var bool + */ + protected $exclude = null; + + /** + * @param [ string | array ] $properties The properties to exclude or include. + * @param bool $exclude If the method should be excluded + */ + public function __construct($properties, $exclude = true) + { + $this->exclude = $exclude; + $this->properties = is_array($properties) + ? $properties + : [$properties]; + } + + public function filter($property) + { + return in_array($property, $this->properties) + ? !$this->exclude + : $this->exclude; + } +} diff --git a/src/App/Hydrator/Strategy/AbstractCollectionStrategy.php b/src/App/Hydrator/Strategy/AbstractCollectionStrategy.php new file mode 100644 index 0000000..37e6738 --- /dev/null +++ b/src/App/Hydrator/Strategy/AbstractCollectionStrategy.php @@ -0,0 +1,190 @@ +. + */ + +namespace App\Hydrator\Strategy; + +use InvalidArgumentException; +use Doctrine\Common\Collections\Collection; +use Doctrine\Common\Persistence\Mapping\ClassMetadata; +use Zend\Hydrator\Strategy\StrategyInterface; + +/** + * @license MIT + * @link http://www.doctrine-project.org/ + * @since 0.7.0 + * @author Michael Gallego + */ +abstract class AbstractCollectionStrategy implements StrategyInterface +{ + /** + * @var string + */ + protected $collectionName; + + /** + * @var ClassMetadata + */ + protected $metadata; + + /** + * @var object + */ + protected $object; + + + /** + * Set the name of the collection + * + * @param string $collectionName + * @return AbstractCollectionStrategy + */ + public function setCollectionName($collectionName) + { + $this->collectionName = (string) $collectionName; + return $this; + } + + /** + * Get the name of the collection + * + * @return string + */ + public function getCollectionName() + { + return $this->collectionName; + } + + /** + * Set the class metadata + * + * @param ClassMetadata $classMetadata + * @return AbstractCollectionStrategy + */ + public function setClassMetadata(ClassMetadata $classMetadata) + { + $this->metadata = $classMetadata; + return $this; + } + + /** + * Get the class metadata + * + * @return ClassMetadata + */ + public function getClassMetadata() + { + return $this->metadata; + } + + /** + * Set the object + * + * @param object $object + * + * @throws \InvalidArgumentException + * + * @return AbstractCollectionStrategy + */ + public function setObject($object) + { + if (!is_object($object)) { + throw new InvalidArgumentException( + sprintf('The parameter given to setObject method of %s class is not an object', get_called_class()) + ); + } + + $this->object = $object; + return $this; + } + + /** + * Get the object + * + * @return object + */ + public function getObject() + { + return $this->object; + } + + /** + * {@inheritDoc} + */ + public function extract($value) + { + return $value; + } + + /** + * Return the collection by value (using the public API) + * + * @throws \InvalidArgumentException + * + * @return Collection + */ + protected function getCollectionFromObjectByValue() + { + $object = $this->getObject(); + $getter = 'get' . ucfirst($this->getCollectionName()); + + if (!method_exists($object, $getter)) { + throw new InvalidArgumentException( + sprintf( + 'The getter %s to access collection %s in object %s does not exist', + $getter, + $this->getCollectionName(), + get_class($object) + ) + ); + } + + return $object->$getter(); + } + + /** + * Return the collection by reference (not using the public API) + * + * @return Collection + */ + protected function getCollectionFromObjectByReference() + { + $object = $this->getObject(); + $refl = $this->getClassMetadata()->getReflectionClass(); + $reflProperty = $refl->getProperty($this->getCollectionName()); + + $reflProperty->setAccessible(true); + + return $reflProperty->getValue($object); + } + + + /** + * This method is used internally by array_udiff to check if two objects are equal, according to their + * SPL hash. This is needed because the native array_diff only compare strings + * + * @param object $a + * @param object $b + * + * @return int + */ + protected function compareObjects($a, $b) + { + return strcmp(spl_object_hash($a), spl_object_hash($b)); + } +} diff --git a/src/App/Hydrator/Strategy/AllowRemoveByReference.php b/src/App/Hydrator/Strategy/AllowRemoveByReference.php new file mode 100644 index 0000000..57e4222 --- /dev/null +++ b/src/App/Hydrator/Strategy/AllowRemoveByReference.php @@ -0,0 +1,58 @@ +. + */ + +namespace App\Hydrator\Strategy; + +/** + * When this strategy is used for Collections, if the new collection does not contain elements that are present in + * the original collection, then this strategy remove elements from the original collection. For instance, if the + * collection initially contains elements A and B, and that the new collection contains elements B and C, then the + * final collection will contain elements B and C (while element A will be asked to be removed). + * + * This strategy is by reference, this means it won't use public API to add/remove elements to the collection + * + * @license MIT + * @link http://www.doctrine-project.org/ + * @since 0.7.0 + * @author Michael Gallego + */ +class AllowRemoveByReference extends AbstractCollectionStrategy +{ + /** + * {@inheritDoc} + */ + public function hydrate($value) + { + $collection = $this->getCollectionFromObjectByReference(); + $collectionArray = $collection->toArray(); + + $toAdd = array_udiff($value, $collectionArray, [$this, 'compareObjects']); + $toRemove = array_udiff($collectionArray, $value, [$this, 'compareObjects']); + + foreach ($toAdd as $element) { + $collection->add($element); + } + + foreach ($toRemove as $element) { + $collection->removeElement($element); + } + + return $collection; + } +} diff --git a/src/App/Hydrator/Strategy/AllowRemoveByValue.php b/src/App/Hydrator/Strategy/AllowRemoveByValue.php new file mode 100644 index 0000000..2ac85ae --- /dev/null +++ b/src/App/Hydrator/Strategy/AllowRemoveByValue.php @@ -0,0 +1,76 @@ +. + */ + +namespace App\Hydrator\Strategy; + +use Doctrine\Common\Collections\Collection; +use LogicException; +use Doctrine\Common\Collections\ArrayCollection; + +/** + * When this strategy is used for Collections, if the new collection does not contain elements that are present in + * the original collection, then this strategy remove elements from the original collection. For instance, if the + * collection initially contains elements A and B, and that the new collection contains elements B and C, then the + * final collection will contain elements B and C (while element A will be asked to be removed). + * + * This strategy is by value, this means it will use the public API (in this case, adder and remover) + * + * @license MIT + * @link http://www.doctrine-project.org/ + * @since 0.7.0 + * @author Michael Gallego + */ +class AllowRemoveByValue extends AbstractCollectionStrategy +{ + /** + * {@inheritDoc} + */ + public function hydrate($value) + { + // AllowRemove strategy need "adder" and "remover" + $adder = 'add' . ucfirst($this->collectionName); + $remover = 'remove' . ucfirst($this->collectionName); + + if (!method_exists($this->object, $adder) || !method_exists($this->object, $remover)) { + throw new LogicException( + sprintf( + 'AllowRemove strategy for DoctrineModule hydrator requires both %s and %s to be defined in %s + entity domain code, but one or both seem to be missing', + $adder, + $remover, + get_class($this->object) + ) + ); + } + + $collection = $this->getCollectionFromObjectByValue(); + + if ($collection instanceof Collection) { + $collection = $collection->toArray(); + } + + $toAdd = new ArrayCollection(array_udiff($value, $collection, [$this, 'compareObjects'])); + $toRemove = new ArrayCollection(array_udiff($collection, $value, [$this, 'compareObjects'])); + + $this->object->$adder($toAdd); + $this->object->$remover($toRemove); + + return $collection; + } +} diff --git a/src/App/Hydrator/Strategy/DisallowRemoveByReference.php b/src/App/Hydrator/Strategy/DisallowRemoveByReference.php new file mode 100644 index 0000000..e1cbb41 --- /dev/null +++ b/src/App/Hydrator/Strategy/DisallowRemoveByReference.php @@ -0,0 +1,53 @@ +. + */ + +namespace App\Hydrator\Strategy; + +/** + * When this strategy is used for Collections, if the new collection does not contain elements that are present in + * the original collection, then this strategy will not remove those elements. At most, it will add new elements. For + * instance, if the collection initially contains elements A and B, and that the new collection contains elements B + * and C, then the final collection will contain elements A, B and C. + * + * This strategy is by reference, this means it won't use the public API to remove elements + * + * @license MIT + * @link http://www.doctrine-project.org/ + * @since 0.7.0 + * @author Michael Gallego + */ +class DisallowRemoveByReference extends AbstractCollectionStrategy +{ + /** + * {@inheritDoc} + */ + public function hydrate($value) + { + $collection = $this->getCollectionFromObjectByReference(); + $collectionArray = $collection->toArray(); + + $toAdd = array_udiff($value, $collectionArray, [$this, 'compareObjects']); + + foreach ($toAdd as $element) { + $collection->add($element); + } + + return $collection; + } +} diff --git a/src/App/Hydrator/Strategy/DisallowRemoveByValue.php b/src/App/Hydrator/Strategy/DisallowRemoveByValue.php new file mode 100644 index 0000000..6f2bbcc --- /dev/null +++ b/src/App/Hydrator/Strategy/DisallowRemoveByValue.php @@ -0,0 +1,72 @@ +. + */ + +namespace App\Hydrator\Strategy; + +use Doctrine\Common\Collections\Collection; +use LogicException; +use Doctrine\Common\Collections\ArrayCollection; + +/** + * When this strategy is used for Collections, if the new collection does not contain elements that are present in + * the original collection, then this strategy will not remove those elements. At most, it will add new elements. For + * instance, if the collection initially contains elements A and B, and that the new collection contains elements B + * and C, then the final collection will contain elements A, B and C. + * + * This strategy is by value, this means it will use the public API (in this case, remover) + * + * @license MIT + * @link http://www.doctrine-project.org/ + * @since 0.7.0 + * @author Michael Gallego + */ +class DisallowRemoveByValue extends AbstractCollectionStrategy +{ + /** + * {@inheritDoc} + */ + public function hydrate($value) + { + // AllowRemove strategy need "adder" + $adder = 'add' . ucfirst($this->collectionName); + + if (!method_exists($this->object, $adder)) { + throw new LogicException( + sprintf( + 'DisallowRemove strategy for DoctrineModule hydrator requires %s to + be defined in %s entity domain code, but it seems to be missing', + $adder, + get_class($this->object) + ) + ); + } + + $collection = $this->getCollectionFromObjectByValue(); + + if ($collection instanceof Collection) { + $collection = $collection->toArray(); + } + + $toAdd = new ArrayCollection(array_udiff($value, $collection, [$this, 'compareObjects'])); + + $this->object->$adder($toAdd); + + return $collection; + } +} diff --git a/src/App/Middleware/CorsMiddlewareFactory.php b/src/App/Middleware/CorsMiddlewareFactory.php new file mode 100644 index 0000000..a74d930 --- /dev/null +++ b/src/App/Middleware/CorsMiddlewareFactory.php @@ -0,0 +1,45 @@ + ["*"], + "methods" => ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"], + "headers.allow" => [ + 'DNT', + 'X-CustomHeader', + 'Keep-Alive', + 'User-Agent', + 'X-Requested-With', + 'If-Match', + 'If-Modified-Since', + 'If-Unmodified-Since', + 'Cache-Control', + 'Content-Type', + 'Authorization', + ], + "headers.expose" => ["Etag"], + "credentials" => true, +// "cache" => 86400 + ]); + } +} diff --git a/src/App/Middleware/JwtAuthenticationFactory.php b/src/App/Middleware/JwtAuthenticationFactory.php new file mode 100644 index 0000000..67a9a0d --- /dev/null +++ b/src/App/Middleware/JwtAuthenticationFactory.php @@ -0,0 +1,69 @@ +get('config'); + $this->config = (new Config($config))->get('acl_config'); + return new JwtAuthentication([ + "secret" => $this->config->get('hmac_key', self::DEFAULT_HMAC), + "path" => "/api", + "passthrough" => $this->getPassThroughRoutes($container), + "secure" => true, + "relaxed" => [ + "localhost", + "wnapi.yvan.hu", + ], + "error" => function (RequestInterface $request, ResponseInterface $response, $arguments) { + $data["status"] = "error"; + $data["message"] = $arguments["message"]; + return new JsonCorsResponse($data, 401); + } + ]); + } + + /** + * @param ContainerInterface $container + * @return array + */ + private function getPassThroughRoutes(ContainerInterface $container) + { + $passThroughRoutes = []; + + /** @var Application $app */ + $app = $container->get(Application::class); + $appRoutes = $app->getRoutes(); + + $unguardedRoutes = $this->config->get('unguarded_routes', new Config([]))->toArray(); + /** @var Route $route */ + foreach ($appRoutes as $route) { + if (in_array($route->getName(), $unguardedRoutes)) { + $passThroughRoutes[] = $route->getPath(); + } + } + $passThroughRoutes[] = '/show-attachment'; + $passThroughRoutes[] = '/hibajegy-pdf'; + $passThroughRoutes[] = '/havi-riport-pdf'; + + return $passThroughRoutes; + } +} diff --git a/src/App/Middleware/RouteAuthorization.php b/src/App/Middleware/RouteAuthorization.php new file mode 100644 index 0000000..9013903 --- /dev/null +++ b/src/App/Middleware/RouteAuthorization.php @@ -0,0 +1,75 @@ +config = $config; + $this->aclService = $aclService; + } + + public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next = null) + { + if ($request->getMethod() == 'OPTIONS') { + return $next($request, $response); + } + + /** @var RouteResult $routeResult */ + $routeResult = $request->getAttribute(RouteResult::class, false); + $token = $request->getAttribute('token'); + + if ($this->hasRouteAccess($routeResult->getMatchedRouteName(), $token->roles ?? [])) { + return $next($request, $response); + } + + return new JsonCorsResponse([ + 'status' => 'err', + 'message' => "Access denied to " . $routeResult->getMatchedRouteName(), + ], 401); + } + + private function hasRouteAccess(string $route, $roles = []) + { + // admin role has full access + if (in_array('admin', $roles)) { + return true; + } + + // bail out if route is white listed + $unguardedRoutes = $this->config->get('unguarded_routes', new Config([]))->toArray(); + if (in_array($route, $unguardedRoutes)) { + return true; + } + + // check configuration for other options + foreach ($roles as $role) { + if ($this->roleCanAccessRoute($role, $route)) { + return true; + } + } + + return false; + } + + private function roleCanAccessRoute(string $role, string $routeName) + { + return $this->aclService->isGranted($role, $routeName); + } +} diff --git a/src/App/Middleware/RouteAuthorizationFactory.php b/src/App/Middleware/RouteAuthorizationFactory.php new file mode 100644 index 0000000..32cfefa --- /dev/null +++ b/src/App/Middleware/RouteAuthorizationFactory.php @@ -0,0 +1,19 @@ +get('config')['acl_config']); + /** @var Rbac $aclService */ + $aclService = $container->get('service.acl'); + return new RouteAuthorization($config, $aclService); + } +} diff --git a/src/App/Response/JsonCorsResponse.php b/src/App/Response/JsonCorsResponse.php new file mode 100644 index 0000000..7b71dd9 --- /dev/null +++ b/src/App/Response/JsonCorsResponse.php @@ -0,0 +1,32 @@ +entityManager = $em; + $this->config = $config; + } + + /** + * @param string $users + * @param string $pass + * @return AuthResponse + * @throws NoResultException + */ + public function authenticate(string $users, string $pass): AuthResponse + { + $response = new AuthResponse(); + + $crypt = new Bcrypt(); + $crypt->setCost(self::PASSWORD_COST); + + /** + * Extremely bad idea, but client requested this implementation regardless of the warnings. + * As an extra security measure "shared" type users can't change their password + */ + + /** @var User[] $users */ + $users = $this->entityManager->getRepository(User::class)->findBy([ + 'email' => $users, + 'active' => true, + ]); + if (null === $users || empty($users)) { + throw new NoResultException(); + } + shuffle($users); + + foreach ($users as $user) { + if ($crypt->verify($pass, $user->getPassword())) { + $token = (string)$this->generateJWT($user); + $response->setToken($token) + ->setMessage('login'); + return $response; + } + } + + throw new NoResultException(); + } + + /** + * @param $token + * @return AuthResponse + */ + public function renewToken($token): AuthResponse + { + $response = new AuthResponse(); + $response->setMessage('renew') + ->setToken((string)$this->renewJWT($token)); + return $response; + } + + /** + * @param User $user + * @return Token + */ + private function generateJwt(User $user): Token + { + /** @var string $hmacKey */ + $hmacKey = $this->config->get('hmac_key'); + + $signer = new Sha512(); + $builder = new Builder(); + + return $builder + ->setId(base64_encode(uniqid()), true) + ->setIssuedAt(time()) + ->setNotBefore(time()) + ->setExpiration(time() + 3600) + ->set('uid', $user->getId()) + ->set('name', $user->getName()) + ->set('email', $user->getEmail()) + ->set('roles', $user->getRoles()) + ->sign($signer, $hmacKey) + ->getToken(); + } + + /** + * @param $token + * @return Token + */ + private function renewJWT($token): Token + { + /** @var string $hmacKey */ + $hmacKey = $this->config->get('hmac_key'); + + $signer = new Sha512(); + $builder = new Builder(); + + return $builder + ->setId($token->jti, true) + ->setIssuedAt(time()) + ->setNotBefore(time()) + ->setExpiration(time() + 3600) + ->set('uid', $token->uid) + ->set('name', $token->name) + ->set('email', $token->email) + ->set('roles', $token->roles) + ->sign($signer, $hmacKey) + ->getToken(); + } +} diff --git a/src/App/Service/AuthServiceFactory.php b/src/App/Service/AuthServiceFactory.php new file mode 100644 index 0000000..a7cde11 --- /dev/null +++ b/src/App/Service/AuthServiceFactory.php @@ -0,0 +1,17 @@ +get('doctrine.entity_manager.orm_default'); + $configArr = $container->get('config')['acl_config']; + $config = new Config($configArr); + return new AuthService($em, $config); + } +} diff --git a/src/App/Service/ErrorCategoryService.php b/src/App/Service/ErrorCategoryService.php new file mode 100644 index 0000000..a6e0865 --- /dev/null +++ b/src/App/Service/ErrorCategoryService.php @@ -0,0 +1,32 @@ +em = $em; + } + + /** + * Return FacilityLocations in a tree form + * + * @return array + */ + public function getList() + { + /** @var EntityRepository $treeRepository */ + $repository = $this->em->getRepository(ErrorCategory::class); + return $repository->findAll(); + } +} diff --git a/src/App/Service/ErrorCategoryServiceFactory.php b/src/App/Service/ErrorCategoryServiceFactory.php new file mode 100644 index 0000000..27fae1d --- /dev/null +++ b/src/App/Service/ErrorCategoryServiceFactory.php @@ -0,0 +1,16 @@ +get('doctrine.entity_manager.orm_default'); + return new ErrorCategoryService($em); + } +} diff --git a/src/App/Service/ErrorOriginService.php b/src/App/Service/ErrorOriginService.php new file mode 100644 index 0000000..54d3c8b --- /dev/null +++ b/src/App/Service/ErrorOriginService.php @@ -0,0 +1,32 @@ +em = $em; + } + + /** + * Return FacilityLocations in a tree form + * + * @return array + */ + public function getList() + { + /** @var EntityRepository $treeRepository */ + $repository = $this->em->getRepository(ErrorOrigin::class); + return $repository->findAll(); + } +} diff --git a/src/App/Service/ErrorOriginServiceFactory.php b/src/App/Service/ErrorOriginServiceFactory.php new file mode 100644 index 0000000..24535f1 --- /dev/null +++ b/src/App/Service/ErrorOriginServiceFactory.php @@ -0,0 +1,16 @@ +get('doctrine.entity_manager.orm_default'); + return new ErrorOriginService($em); + } +} diff --git a/src/App/Service/FacilityLocationService.php b/src/App/Service/FacilityLocationService.php new file mode 100644 index 0000000..90707ab --- /dev/null +++ b/src/App/Service/FacilityLocationService.php @@ -0,0 +1,61 @@ +em = $em; + } + + /** + * Return FacilityLocations in a tree form + * @return array + */ + public function getFacilityLocationListTree() + { + /** @var ClosureTreeRepository $treeRepository */ + $treeRepository = $this->em->getRepository(FacilityLocation::class); + $rootNode = $treeRepository->findOneBy(['name' => 'root']); + return $treeRepository->childrenHierarchy($rootNode); + } + + /** + * @return array + */ + public function getFacilityLocationListFlat() + { + $result = []; + $tree = $this->getFacilityLocationListTree(); + return $this->flatner($tree, $result); + } + + /** + * @param $items + * @param $result + * @return array + */ + private function flatner($items, &$result) + { + foreach ($items as $item) { + $children = $item['__children']; + unset($item['__children']); + $result[] = $item; + if ($children) { + $this->flatner($children, $result); + } + unset($children); + } + return $result; + } +} diff --git a/src/App/Service/FacilityLocationServiceFactory.php b/src/App/Service/FacilityLocationServiceFactory.php new file mode 100644 index 0000000..1028d6a --- /dev/null +++ b/src/App/Service/FacilityLocationServiceFactory.php @@ -0,0 +1,16 @@ +get('doctrine.entity_manager.orm_default'); + return new FacilityLocationService($em); + } +} diff --git a/src/App/Service/FaultAttachmentService.php b/src/App/Service/FaultAttachmentService.php new file mode 100644 index 0000000..ceb5e00 --- /dev/null +++ b/src/App/Service/FaultAttachmentService.php @@ -0,0 +1,168 @@ +em = $em; + $this->hydrator = $hydrator; + $this->authService = $authService; + $this->mailer = $mailer; + $this->userService = $userService; + } + + /** + * @param int $id + * @return Attachment[]|null + */ + public function getList(int $id) + { + $qb = $this->em->createQueryBuilder(); + $entities = $qb->select('p') + ->from(Attachment::class, 'p') + ->leftJoin('p.fault', 'f') + ->where('f.id = :fid') + ->setParameter('fid', $id) + ->getQuery() + ->getResult(); + return $entities; + } + + /** + * + * @param int $id + * @return Attachment + * @throws NonUniqueResultException + * @throws NoResultException + */ + public function get(int $id) + { + $qb = $this->em->createQueryBuilder(); + + $entity = $qb->select('p') + ->from(Attachment::class, 'p') + ->where('p.id = :id') + ->setParameter('id', $id) + ->getQuery() + ->getSingleResult(Query::HYDRATE_OBJECT); + + return $entity; + } + + /** + * @param int $faultId + * @param UploadedFileInterface[] $files + * @param int $uid + * @param string $type Type can be image or invoice + * @return Fault + */ + public function createAttachments(int $faultId, array $files, int $uid, $type = 'image'): Fault + { + /** @var User $user */ + $user = $this->em->find(User::class, $uid); + /** @var Fault $fault */ + $fault = $this->em->find(Fault::class, $faultId); + foreach ($files as $file) { + $attachment = new Attachment(); + $attachment->setFault($fault) + ->setUser($user) + ->setType($type) + ->setRawFileData($file->getStream()->getContents()); + $this->em->persist($attachment); + } + $this->em->flush(); + if ($type=='image') { + $this->sendPhotoAttachedMail($fault, $user); + } + return $fault; + } + + /** + * Send message if new photo was attached to a Fault + * + * @param Fault $fault + * @param User $user + */ + private function sendPhotoAttachedMail(Fault $fault, User $user) + { + $recipientsUsers = $this->userService->getAllUsersOfRole('ufo'); + $recipientsUsers[] = $fault->getReporter(); + $recipients = $this->getMailAddresses($recipientsUsers); + + $this->mailer->sendFaultMail( + $recipients, + sprintf("[WN] Kép feltöltés - %s", $fault->getWorksheetNumber()), + $fault, + sprintf("%s új képet csatolt az hibához.", $user->getName()) + ); + } + + /** + * @param User[] $mailRecipientUsers + * @return string[] + */ + private function getMailAddresses(array $mailRecipientUsers): array + { + $usersWhoWantEmail = array_filter($mailRecipientUsers, function (User $user) { + return $user->isWantsEmail(); + }); + + $recipients = array_map(function (User $user) { + return $user->getEmail(); + }, $usersWhoWantEmail); + + return array_unique($recipients); + } +} diff --git a/src/App/Service/FaultAttachmentServiceFactory.php b/src/App/Service/FaultAttachmentServiceFactory.php new file mode 100644 index 0000000..35a2692 --- /dev/null +++ b/src/App/Service/FaultAttachmentServiceFactory.php @@ -0,0 +1,26 @@ +get('doctrine.entity_manager.orm_default'); + /** @var DoctrineObject $hydrator */ + $hydrator = $container->get('doctrine.hydrator'); + /** @var AuthService $authService */ + $authService = $container->get(AuthService::class); + /** @var MailerService $mailer */ + $mailer = $container->get(MailerService::class); + /** @var UserService $userService */ + $userService = $container->get(UserService::class); + return new FaultAttachmentService($em, $hydrator, $authService, $mailer, $userService); + } +} diff --git a/src/App/Service/FaultManagerService.php b/src/App/Service/FaultManagerService.php new file mode 100644 index 0000000..981b95a --- /dev/null +++ b/src/App/Service/FaultManagerService.php @@ -0,0 +1,470 @@ +em = $em; + $this->hydrator = $hydrator; + $this->authService = $authService; + $this->mailer = $mailer; + $this->userService = $userService; + } + + public function getFaultList() + { + $faults = $this->em->getRepository(Fault::class)->findBy([], [ + 'createdAt' => 'DESC', + ]); + // @todo queryBuilder might be better here? + return $faults; + } + + /** + * @param int $id + * @return Fault|null + */ + public function getFault(int $id): ?Fault + { + /** @var Fault $fault */ + $fault = $this->em->find(Fault::class, $id); + return $fault; + } + + public function createFault($data, $uid): Fault + { + /** @var User $user */ + $user = $this->em->find(User::class, $uid); + /** @var Fault $fault */ + $fault = $this->hydrator->hydrate($data, new Fault()); + // @todo validate user permissions versus the data before persisting + $fault->setReporter($user); + $this->em->persist($fault); + $this->em->flush(); + + $this->sendNewMail($fault); + + return $fault; + } + + /** + * States: + * new - fault was just created + * cnf - fault confirmed, repair ongoing + * exp - fault is high expense, needs approval + * wip - fault is being worked on + * fin - repair is finished, acknowledged + * + * @param int $id + * @param array $data + * @param int $uid + * @return Fault + */ + public function updateFault(int $id, array $data, int $uid): Fault + { + // @todo validate user permissions versus the data before persisting + /** @var User $user */ + $user = $this->em->find(User::class, $uid); + $oldFault = $this->getFault($id); + $prevState = $oldFault->getState(); + $this->snapshotHandler($oldFault, $user, $data['state']); + /** @var Fault $fault */ + $fault = $this->hydrator->hydrate($data, $oldFault); + // fault is confirmed + $now = new \DateTime(); + if ($prevState == 'new' && in_array($data['state'], ['cnf','exp'])) { + $fault->setConfirmer($user) + ->setConfirmedAt($now); + } + // high expense approved + if ($prevState == 'exp' && $data['state'] == 'cnf') { + $fault->setApprovedBy($user) + ->setApprovedAt($now); + } + if ($data['state'] == 'fin') { + $fault->setAcknowledgedBy($user) + ->setAcknowledgedAt($now) + ->setWorkFinished($now); + } + if ($fault->getWorksheetNumber() == null && $fault->getState() == 'cnf') { + $fault->setWorksheetNumber($this->generateWorksheetId()); + } + $this->em->persist($fault); + $this->em->flush(); + + switch ($fault->getState()) { + case 'cnf': + if ($prevState == 'exp') { + $this->sendExpensiveConfirmedMail($fault, $user); + } + if ($prevState == 'new') { + $this->sendConfirmedMail($fault, $user); + } + break; + case 'exp': + $this->sendHighExpenseFaultMail($fault, $user); + break; + case 'wip': + if ($prevState == 'cnf') { + $this->sendDoneEmail($fault, $user); + } + if ($prevState == 'fin') { + $this->sendNotFinishedMail($fault, $user); + } +// if($prevState == 'wip') { +// } + break; + case 'fin': + $this->sendFinishedMail($fault, $user); + break; + } + + return $fault; + } + + /** + * Faults are not meant to be deleted at any point + * + * @param int $id + * @return bool + */ + public function deleteFault(int $id): bool + { + return false; + } + + public function addFaultComment(int $id, $data, int $uid): Fault + { + /** @var Fault $fault */ + $fault = $this->em->find(Fault::class, $id); + /** @var User $user */ + $user = $this->em->find(User::class, $uid); + /** @var FaultComment $faultComment */ + $faultComment = $this->hydrator->hydrate($data, new FaultComment()); + // @todo validate user permissions versus the data before persisting + $faultComment->setFault($fault)->setUser($user); + $this->em->persist($faultComment); + $this->em->flush(); + $this->sendNewCommentOnFaultMail($fault, $user, $faultComment); + return $fault; + } + + /** + * @param int $id + * @param $data + * @param int $uid + * @return Fault + */ + public function rejectFault(int $id, $data, int $uid): Fault + { + $rejectReason = $data['__reason'] ?? ""; + /** @var User $user */ + $user = $this->em->find(User::class, $uid); + /** @var Fault $fault */ + $fault = $this->em->find(Fault::class, $id); + $this->snapshotHandler($fault, $user, $data['state'], $rejectReason); + $fault->setState($data['state']); + $rejectComment = new FaultComment(); + $rejectComment->setUser($user) + ->setComment(sprintf("Elutasítva:\n%s", $rejectReason)); + $fault->addComment($rejectComment); + $this->em->persist($rejectComment); + $this->em->flush(); + + $this->sendRejectedMail($fault, $user); + + return $fault; + } + + /** + * Create fault snapshots, provide Fault object before modification + * + * @param Fault $fault + * @param User $user + * @param $newState + * @param string $comment + */ + private function snapshotHandler(Fault $fault, User $user, $newState, $comment = '') + { + $snapShot = new FaultSnapshot(); + $faultSerialized = $fault->jsonSerialize(); + unset($faultSerialized['faultSnapshots']); + $snapShot->setUser($user) + ->setFault($fault) + ->setOldState($fault->getState()) + ->setNewState($newState) + ->setComment($comment) + ->setPayload($faultSerialized); + $this->em->persist($snapShot); + $this->em->flush(); + } + + /** + * @return string + */ + private function generateWorksheetId(): string + { + $year = date("Y"); + $yearsFaultCount = $this->em->createQueryBuilder() + ->select('count(f.id)') + ->from(Fault::class, 'f') + ->where('YEAR(f.createdAt) = :thisYear') + ->andWhere('f.createdAt IS NOT null') + ->andWhere('f.worksheetNumber IS NOT null') + ->setParameter('thisYear', $year) + ->getQuery() + ->setHydrationMode(Query::HYDRATE_SINGLE_SCALAR) + ->execute(); + return sprintf("%s/%s", $year, $yearsFaultCount+1); + } + + /** + * ->new + * @param Fault $fault + */ + private function sendNewMail(Fault $fault) + { + $ufoUsers = $this->userService->getAllUsersOfRole('ufo'); + $pvUsers = $this->userService->getAllUsersOfRole('projektvezeto'); + $recipientsUsers = array_merge($ufoUsers, $pvUsers); + $recipients = $this->getMailAddresses($recipientsUsers); + + $this->mailer->sendFaultMail( + array_unique($recipients), + "[WN] Új hibabejelentés", + $fault + ); + } + + /** + * new -> cnf + * @param Fault $fault + * @param User $user + */ + private function sendConfirmedMail(Fault $fault, User $user) + { + $recipientsUsers = $this->userService->getAllUsersOfRole('ufo'); + $recipientsUsers[] = $fault->getReporter(); + $recipients = $this->getMailAddresses($recipientsUsers); + + $this->mailer->sendFaultMail( + $recipients, + sprintf("[WN] Kisértékű munka - %s", $fault->getWorksheetNumber()), + $fault, + sprintf( + "Becsült munkaköltség: %s\nBecsült alapanyagköltség: %s\nVisszaigazolta: %s", + $fault->getWorkCostEstimate(), + $fault->getMaterialCostEstimate(), + $user->getName() + ) + ); + } + + /** + * new -> exp + * @param Fault $fault + * @param User $user + */ + private function sendHighExpenseFaultMail(Fault $fault, User $user) + { + $recipientsUsers = $this->userService->getAllUsersOfRole('ufo'); + $recipientsUsers[] = $fault->getReporter(); + $recipients = $this->getMailAddresses($recipientsUsers); + + $this->mailer->sendFaultMail( + $recipients, + "[WN] Nagyértékű munka", + $fault, + sprintf( + "Becsült munkaköltség: %s\nBecsült alapanyagköltség: %s\nVisszaigazolta: %s", + $fault->getWorkCostEstimate(), + $fault->getMaterialCostEstimate(), + $user->getName() + ) + ); + } + + /** + * exp -> cnf + * @param Fault $fault + * @param User $user + */ + private function sendExpensiveConfirmedMail(Fault $fault, User $user) + { + $recipientsUsers = $this->userService->getAllUsersOfRole('ufo'); + $recipientsUsers[] = $fault->getReporter(); + $recipients = $this->getMailAddresses($recipientsUsers); + + $this->mailer->sendFaultMail( + $recipients, + sprintf("[WN] Nagyértékű munka jóváhagyva - %s", $fault->getWorksheetNumber()), + $fault, + sprintf( + "Becsült munkaköltség: %s\nBecsült alapanyagköltség: %s\nJóváhagyta: %s", + $fault->getWorkCostEstimate(), + $fault->getMaterialCostEstimate(), + $user->getName() + ) + ); + } + + /** + * exp -> rej + * @param Fault $fault + * @param User $user + */ + private function sendRejectedMail(Fault $fault, User $user) + { + $recipientsUsers = $this->userService->getAllUsersOfRole('projektvezeto'); + $recipientsUsers[] = $fault->getReporter(); + $recipients = $this->getMailAddresses($recipientsUsers); + + $this->mailer->sendFaultMail( + $recipients, + "[WN] Nagyértékű munka elutasítva", + $fault, + sprintf("A hiba javítását %s elutasította", $user->getName()) + ); + } + + /** + * Send an email to all users involved in fault communication + * + * @param Fault $fault + * @param User $user + */ + private function sendNewCommentOnFaultMail(Fault $fault, User $user, FaultComment $comment) + { + $ufoUsers = $this->userService->getAllUsersOfRole('ufo'); + $comments = $fault->getComments()->toArray(); + $involvedUsers = array_map(function (FaultComment $comment) { + return $comment->getUser(); + }, $comments); + $recipientsUsers = array_merge($ufoUsers, $involvedUsers); + $recipients = $this->getMailAddresses($recipientsUsers); + + $this->mailer->sendFaultMail( + $recipients, + sprintf("[WN] Új hozzászólás - %s", $fault->getWorksheetNumber()), + $fault, + sprintf("Hozzászólt: %s\n%s", $comment->getUser()->getName(), $comment->getComment()) + ); + } + + /** + * cnf -> wip + * @param Fault $fault + * @param User $user + */ + private function sendDoneEmail(Fault $fault, User $user) + { + $recipientsUsers = $this->userService->getAllUsersOfRole('ufo'); + $recipientsUsers[] = $fault->getReporter(); + $recipients = $this->getMailAddresses($recipientsUsers); + + $this->mailer->sendFaultMail( + $recipients, + sprintf("[WN] Hiba javítása elkészült - %s", $fault->getWorksheetNumber()), + $fault, + sprintf("A hiba javítást lezárta: %s", $user->getName()) + ); + } + + /** + * wip -> fin + * @param Fault $fault + * @param User $user + */ + private function sendFinishedMail(Fault $fault, User $user) + { + $ufoUsers = $this->userService->getAllUsersOfRole('ufo'); + $pvUsers = $this->userService->getAllUsersOfRole('projektvezeto'); + $recipientsUsers = array_merge($ufoUsers, $pvUsers); + $recipients = $this->getMailAddresses($recipientsUsers); + + $this->mailer->sendFaultMail( + $recipients, + sprintf("[WN] Hiba javítása visszaigazolva - %s", $fault->getWorksheetNumber()), + $fault, + sprintf("A hiba javítást visszaigazolta: %s", $user->getName()) + ); + } + + /** + * fin -> wip + * @param Fault $fault + * @param User $user + */ + private function sendNotFinishedMail(Fault $fault, User $user) + { + $ufoUsers = $this->userService->getAllUsersOfRole('ufo'); + $pvUsers = $this->userService->getAllUsersOfRole('projektvezeto'); + $recipientsUsers = array_merge($ufoUsers, $pvUsers); + $recipients = $this->getMailAddresses($recipientsUsers); + + $this->mailer->sendFaultMail( + $recipients, + sprintf("[WN] Hiba javítása elutasítva - %s", $fault->getWorksheetNumber()), + $fault, + sprintf("A hiba javítást visszaigazolta: %s", $user->getName()) + ); + } + + /** + * @param User[] $mailRecipientUsers + * @return string[] + */ + private function getMailAddresses(array $mailRecipientUsers): array + { + $usersWhoWantEmail = array_filter($mailRecipientUsers, function (User $user) { + return $user->isWantsEmail(); + }); + + $recipients = array_map(function (User $user) { + return $user->getEmail(); + }, $usersWhoWantEmail); + + return array_unique($recipients); + } +} diff --git a/src/App/Service/FaultManagerServiceFactory.php b/src/App/Service/FaultManagerServiceFactory.php new file mode 100644 index 0000000..98fa02b --- /dev/null +++ b/src/App/Service/FaultManagerServiceFactory.php @@ -0,0 +1,25 @@ +get('doctrine.entity_manager.orm_default'); + /** @var DoctrineObject $hydrator */ + $hydrator = $container->get('doctrine.hydrator'); + /** @var AuthService $authService */ + $authService = $container->get(AuthService::class); + /** @var MailerService $mailer */ + $mailer = $container->get(MailerService::class); + /** @var UserService $userService */ + $userService = $container->get(UserService::class); + return new FaultManagerService($em, $hydrator, $authService, $mailer, $userService); + } +} diff --git a/src/App/Service/FixtureLoaderService.php b/src/App/Service/FixtureLoaderService.php new file mode 100644 index 0000000..75f361d --- /dev/null +++ b/src/App/Service/FixtureLoaderService.php @@ -0,0 +1,44 @@ +em = $em; + } + + public function load(OutputInterface $output) + { + $loader = new Loader(); + $loader->addFixture(new ErrorCategoryLoader($output)); + $loader->addFixture(new ErrorOriginLoader($output)); + $loader->addFixture(new FacilityLocationLoader($output)); + $loader->addFixture(new SolutionTimeIntervalLoader($output)); + $loader->addFixture(new UserLoader($output)); + + $purger = new ORMPurger(); + $executor = new ORMExecutor($this->em, $purger); + $executor->execute($loader->getFixtures()); + + return 0; + } +} diff --git a/src/App/Service/FixtureLoaderServiceFactory.php b/src/App/Service/FixtureLoaderServiceFactory.php new file mode 100644 index 0000000..f2858e8 --- /dev/null +++ b/src/App/Service/FixtureLoaderServiceFactory.php @@ -0,0 +1,17 @@ +get('doctrine.entity_manager.orm_default'); + return new FixtureLoaderService($em); + } +} diff --git a/src/App/Service/LoggerFactory.php b/src/App/Service/LoggerFactory.php new file mode 100644 index 0000000..cdc6ff4 --- /dev/null +++ b/src/App/Service/LoggerFactory.php @@ -0,0 +1,23 @@ +get('config'); + $logger = new Logger("webnaplo"); + $logger->pushHandler(new StreamHandler('data/log/application.log')); + if ($config['debug']) { + $logger->pushHandler(new ChromePHPHandler()); + } + return $logger; + } +} diff --git a/src/App/Service/MailerService.php b/src/App/Service/MailerService.php new file mode 100644 index 0000000..83620c5 --- /dev/null +++ b/src/App/Service/MailerService.php @@ -0,0 +1,130 @@ +config = $config; + $this->transport = $transport; + $this->logger = $logger; + } + + /** + * @param $recipients + * @param string $subject + * @param string $body + * @return bool + */ + public function sendMail($recipients, string $subject, string $body): bool + { + $message = new Message(); + $message->setEncoding("UTF-8") + ->setFrom($this->config['self']['sender'], "Webnapló") + ->setTo($recipients) + ->setSubject($subject) + ->setBody($body); + try { + $this->transport->send($message); + } catch (RuntimeException $ex) { + $this->logger->error($ex->getMessage(), [ + 'recipients' => $recipients, + 'subject' => $subject, + 'body' => $body, + ]); + return false; + } + return true; + } + + public function sendFaultMail($recipients, string $subject, Fault $fault, string $body = ""): bool + { + $compiledBody = sprintf( + "%s\n\n%s\n\n\n%s", + $this->getFaultHeader($fault), + $body, + $this->getFaultFooter() + ); + return $this->sendMail($recipients, $subject, $compiledBody); + } + + /** + * @param Fault $fault + * @return string + */ + private function getFaultHeader(Fault $fault): string + { + $replacements = [ + '%%FACILITY_LOCATION%%' => $fault->getFacilityLocation()->getName(), + '%%FACILITY_LOCATION_DESCRIPTION%%' => $fault->getFacilityLocationDescription(), + '%%ERROR_CATEGORY%%' => $fault->getErrorCategory()->getName(), + '%%ERROR_ORIGIN%%' => $fault->getErrorOrigin()->getName(), + '%%ERROR_DESCRIPTION%%' => $fault->getErrorDescription(), + '%%SOLUTION_TIME%%' => $fault->getSolutionTimeInterval()->getId() == 3 + ? $fault->getSolutionTimeIntervalOther() + : $fault->getSolutionTimeInterval()->getName(), + ]; + $mailTemplate = $this->getTemplate(self::TEMPLATE_FAULT_HEADER); + return str_replace(array_keys($replacements), array_values($replacements), $mailTemplate); + } + + private function getFaultFooter(): string + { + $replacements = [ + '%%WEBNAPLO_URI%%' => $this->config['self']['site-uri'], + ]; + $mailTemplate = $this->getTemplate(self::TEMPLATE_FAULT_FOOTER); + return str_replace(array_keys($replacements), array_values($replacements), $mailTemplate); + } + + /** + * @param string $name + * @return string + */ + private function getTemplate(string $name): string + { + return file_get_contents(sprintf("data/mail-template/%s.txt", $name)); + } + + public function sendTestMessage() + { + $this->sendMail([ + "danyi.david@gmail.com" + ], "Teszt levél", "Teszt levél tartalom"); + } +} diff --git a/src/App/Service/MailerServiceFactory.php b/src/App/Service/MailerServiceFactory.php new file mode 100644 index 0000000..fb68ce4 --- /dev/null +++ b/src/App/Service/MailerServiceFactory.php @@ -0,0 +1,25 @@ +get('config'); + + /** @var Smtp|File $mailTransport */ + $mailTransport = new $config['mailer']['transportClass'](); + $transportOptions = new $config['mailer']['optionsClass']($config['mailer']['options']); + $mailTransport->setOptions($transportOptions); + /** @var Logger $logger */ + $logger = $container->get(Logger::class); + return new MailerService($mailTransport, $config, $logger); + } +} diff --git a/src/App/Service/MaintenanceManagerService.php b/src/App/Service/MaintenanceManagerService.php new file mode 100644 index 0000000..5a7da33 --- /dev/null +++ b/src/App/Service/MaintenanceManagerService.php @@ -0,0 +1,250 @@ +year = date("Y"); + $this->year = 2018; + $this->em = $em; + $this->hydrator = $hydrator; + $this->xlsxParserService = $xlsxParserService; + $this->userService = $userService; + } + + public function getMaintenanceList(): ArrayCollection + { + return $this->getUpdatedXlsxData(); + } + + public function getUpcomingMaintenanceList(): ArrayCollection + { + $firstDayOfThisWeek = new \DateTime("@" . strtotime(sprintf("-%s days", date("N") - 0))); + $firstDayOfThisWeek + ->setTimezone(new \DateTimeZone(date_default_timezone_get())) + ->setTime(0, 0); + $twoWeeksFromNow = (clone $firstDayOfThisWeek)->add(\DateInterval::createFromDateString("+14 days")); + + $deviceGroups = $this->getUpdatedXlsxData(); + + foreach ($deviceGroups as $deviceGroup) { + /** @var DeviceGroup $deviceGroup */ + foreach ($deviceGroup->getDevices() as $device) { + $tasks = $device->getTasks()->filter(function (DeviceMaintenanceTask $task) use ( + $firstDayOfThisWeek, + $twoWeeksFromNow + ) { + return $task->getShouldStartAt() >= $firstDayOfThisWeek + && $task->getShouldStartAt() < $twoWeeksFromNow; + }); + $device->setTasks($tasks); + } + + $devices = $deviceGroup->getDevices()->filter(function (Device $device) { + return count($device->getTasks()); + }); + $deviceGroup->setDevices($devices); + } + + return $deviceGroups->filter(function (DeviceGroup $deviceGroup) { + return count($deviceGroup->getDevices()); + }); + } + + /** + * @return DeviceGroup[]|ArrayCollection + */ + private function getUpdatedXlsxData() + { + /** @var DeviceGroup[] $loadedCacheData */ + $loadedCacheData = $this->xlsxParserService->getXlsxData(); + + /** @var Maintenance[] $dbMaintenances */ + $dbMaintenances = $this->getMaintenancesInYear($this->year); + foreach ($dbMaintenances as $maintenance) { + foreach ($loadedCacheData as &$deviceGroup) { + foreach ($deviceGroup->getDevices() as &$device) { + foreach ($device->getTasks() as &$task) { + if ($task->getHash() == $maintenance->getHash()) { + $task->setState($maintenance->getState()); + } + } + } + } + } + return $loadedCacheData; + } + + public function getMaintenancesInYear($year): array + { + $qb = $this->em->createQueryBuilder(); + return $qb->select('m') + ->from(Maintenance::class, 'm') + ->where('m.year = :thisYear') + ->setParameter('thisYear', $year) + ->orderBy('m.month') + ->addOrderBy('m.week') + ->getQuery() + ->execute(); + } + + /** + * @param string $hash + * @return Maintenance + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException + * @throws \Doctrine\ORM\TransactionRequiredException + */ + public function get(string $hash): Maintenance + { + /** @var Maintenance $maintenance */ + if (null == ($maintenance = $this->em->find(Maintenance::class, $hash))) { + $maintenance = $this->initMaintenanceInDatabase($hash); + } + return $maintenance; + } + + /** + * @param string $hash + * @param $data + * @param int $uid + * @return Maintenance + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException + * @throws \Doctrine\ORM\TransactionRequiredException + */ + public function update(string $hash, $data, int $uid): Maintenance + { + $maintenance = $this->get($hash); + /** @var Maintenance $maintenance */ + $maintenance = $this->hydrator->hydrate($data, $maintenance); + if (null == $maintenance->getStartedBy()) { + $maintenance->setStartedBy($this->userService->get($uid)); + } + if (null == $maintenance->getFinishedBy() && $data['state'] == 'fin') { + $maintenance->setFinishedBy($this->userService->get($uid)); + } + if (null == $maintenance->getWorksheetNumber() && null != $maintenance->getShouldStartAt()) { + $maintenance->setWorksheetNumber($this->generateWorksheetId($maintenance->getShouldStartAt()->format("Y"))); + } + $this->em->flush(); + return $maintenance; + } + + /** + * @param string $id + * @param string $state + * @param int $uid + * @return Maintenance + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException + * @throws \Doctrine\ORM\TransactionRequiredException + * @deprecated + */ + public function setStatus(string $id, string $state, int $uid): Maintenance + { + $user = $this->userService->get($uid); + $maintenance = $this->get($id); + $maintenance->setState($state); + switch ($state) { + case "wip": + $maintenance->setWorkStarted(new \DateTime()) + ->setWorksheetNumber($this->generateWorksheetId($maintenance->getShouldStartAt()->format("Y"))) + ->setStartedBy($user); + break; + case "fin": + $maintenance->setWorkFinished(new \DateTime()) + ->setFinishedBy($user); + break; + } + $this->em->flush(); + return $maintenance; + } + + /** + * @param string $id + * @return Maintenance + * @throws \Doctrine\ORM\OptimisticLockException + */ + private function initMaintenanceInDatabase(string $id): Maintenance + { + $taskFound = null; + $loadedCacheData = $this->getUpdatedXlsxData(); + foreach ($loadedCacheData as $deviceGroup) { + foreach ($deviceGroup->getDevices() as $device) { + foreach ($device->getTasks() as $task) { + if ($task->getHash() == $id) { + $taskFound = $task; + break 3; + } + } + } + } + + $maintenance = new Maintenance(); + $maintenance->setHash($id) + ->setDeviceName($taskFound->getDevice()->getGroup()->getName()) + ->setComponentName($taskFound->getDevice()->getName()) + ->setResponsible($taskFound->getDevice()->getResponsible()) + ->setCount($taskFound->getDevice()->getCount()) + ->setWorkDescription($taskFound->getDevice()->getWorkDescription()) + ->setYear($this->year) + ->setMonth($taskFound->getMonth()) + ->setWeek($taskFound->getWeek()) + ->setWorkerCount($taskFound->getWorkerCount()) + ->setTimeCost($taskFound->getTimeCost()) + ->setShouldStartAt($taskFound->getShouldStartAt()) + ->setShouldBeDoneBy($taskFound->getShouldBeDoneBy()); + $this->em->persist($maintenance); + $this->em->flush(); + return $maintenance; + } + + /** + * @return string + */ + private function generateWorksheetId($year): string + { + $yearsFaultCount = $this->em->createQueryBuilder() + ->select('count(f.hash)') + ->from(Maintenance::class, 'f') + ->where('YEAR(f.shouldStartAt) = :thisYear') +// ->andWhere('f.shouldStartAt IS NOT null') + ->andWhere('f.worksheetNumber IS NOT null') + ->setParameter('thisYear', $year) + ->getQuery() + ->setHydrationMode(Query::HYDRATE_SINGLE_SCALAR) + ->execute(); + return sprintf("%s/%s", $this->year, $yearsFaultCount+1); + } +} diff --git a/src/App/Service/MaintenanceManagerServiceFactory.php b/src/App/Service/MaintenanceManagerServiceFactory.php new file mode 100644 index 0000000..1d72066 --- /dev/null +++ b/src/App/Service/MaintenanceManagerServiceFactory.php @@ -0,0 +1,29 @@ +get('doctrine.entity_manager.orm_default'); + /** @var DoctrineObject $hydrator */ + $hydrator = $container->get('doctrine.hydrator'); + /** @var XlsxParserService $xlsxParserService */ + $xlsxParserService = $container->get(XlsxParserService::class); + /** @var UserService $userService */ + $userService = $container->get(UserService::class); + return new MaintenanceManagerService($em, $hydrator, $xlsxParserService, $userService); + } +} diff --git a/src/App/Service/PdfService.php b/src/App/Service/PdfService.php new file mode 100644 index 0000000..95aebe6 --- /dev/null +++ b/src/App/Service/PdfService.php @@ -0,0 +1,405 @@ +em = $em; + $this->faultManager = $faultManager; + $this->config = $config; + } + + /** + * @param int $id + * @return string + * @throws \PHPPdf\Core\PHPPdf\Exception\Exception + */ + public function getWorksheet(int $id): string + { + /** @var Fault $faultEntity */ + $faultEntity = $this->em->getRepository(Fault::class)->find($id); + + $pdfTemplate = $this->fillWorksheetTemplate(file_get_contents(self::WORKSHEET_TEMPLATE_FILE), $faultEntity); + $styleData = file_get_contents(self::WORKSHEET_STYLESHEET_FILE); + + $loader = new LoaderImpl(); + $loader->setFontFile("data/pdf-resources/config/font-config.xml"); + + $builder = FacadeBuilder::create($loader) + ->setCache('File', ['cache_dir' => 'data/cache']) + ->setEngineType('pdf'); + $pdfRenderer = $builder->build(); + + $oldErrorLevel = error_reporting(); + error_reporting($oldErrorLevel & ~E_NOTICE); + $rendered = $pdfRenderer->render($pdfTemplate, $styleData); + error_reporting($oldErrorLevel); + return $rendered; + } + + /** + * @param string $id + * @return string + * @throws \PHPPdf\Core\PHPPdf\Exception\Exception + */ + public function getMaintenanceSheet(string $id): string + { + /** @var Maintenance $maintenance */ + $maintenance = $this->em->getRepository(Maintenance::class)->find($id); + + $pdfTemplate = $this->fillMaintenanceSheetTemplate( + file_get_contents(self::MAINTENANCESHEET_TEMPLATE_FILE), + $maintenance + ); + $styleData = file_get_contents(self::MAINTENANCESHEET_STYLESHEET_FILE); + + $loader = new LoaderImpl(); + $loader->setFontFile("data/pdf-resources/config/font-config.xml"); + + $builder = FacadeBuilder::create($loader) + ->setCache('File', ['cache_dir' => 'data/cache']) + ->setEngineType('pdf'); + $pdfRenderer = $builder->build(); + + $oldErrorLevel = error_reporting(); + error_reporting($oldErrorLevel & ~E_NOTICE); + $rendered = $pdfRenderer->render($pdfTemplate, $styleData); + error_reporting($oldErrorLevel); + return $rendered; + } + + /** + * @param string $template + * @param Fault $fault + * @return string + */ + private function fillWorksheetTemplate(string $template, Fault $fault): string + { + $formatString = "Y.m.d H:i"; + $replacementMatches = [ + '%%WS_ID%%' => $fault->getWorksheetNumber(), + + '%%REPORTED_AT%%' => $fault->getCreatedAt()->format($formatString), + '%%FINISHED_AT%%' => $fault->getWorkFinished() + ? $fault->getWorkFinished()->format($formatString) + : '', + '%%APPROVED_AT%%' => $fault->getApprovedAt() + ? $fault->getApprovedAt()->format($formatString) + : '', + '%%CONFIRMED_AT%%' => $fault->getConfirmedAt() + ? $fault->getConfirmedAt()->format($formatString) + : '', + '%%ACKNOWLEDGED_AT%%' => $fault->getAcknowledgedAt() + ? $fault->getAcknowledgedAt()->format($formatString) + : '', + + '%%FAULT_DECISION%%' => $fault->isMustLowerCost() + ? 'költség csökkentés szükséges' + : 'elfogadva', + '%%ALLOCATED_EXPENSE%%' => $fault->getAllocatedExpense() ?? '', + /** + * @todo calculate real repair cost here when possible + */ + '%%REPAIR_COST%%' => $fault->getWorkCostEstimate() + $fault->getMaterialCostEstimate(), + + '%%TIMESPENT_HOUR%%' => '', + '%%TIMESPENT_DAY%%' => '', + '%%FAULT_DURATION%%' => '', + '%%LATE_FINE_PERCENT%%' => '', + +// '%%APPROVE_YEAR%%' => $appYear, +// '%%APPROVE_MONTH%%' => $appMonth, +// '%%APPROVE_DAY%%' => $appDay, +// '%%APPROVE_HOUR%%' => $appHour, +// '%%APPROVE_MINUTE%%' => $appMinute, + + '%%SELF_NAME%%' => $this->config['self']['name'], + '%%SELF_ADDRESS%%' => $this->config['self']['address'], + '%%SELF_TAXNUMBER%%' => $this->config['self']['tax_number'], + // owner +// '%%OWNER_SHORT%%' => $this->config['client']['short'], + '%%OWNER_NAME%%' => $this->config['client']['name'], + '%%OWNER_ADDRESS%%' => $this->config['client']['address'], + '%%OWNER_TAXNUMBER%%' => $this->config['client']['tax_number'], + // creator + '%%CREATOR_NAME%%' => $fault->getReporter()->getName(), + '%%CREATOR_JOB%%' => $fault->getReporter()->getJob(), +// '%%CREATOR_EMAIL%%' => $fault->getReporter()->getEmail(), +// '%%CREATOR_PHONE%%' => $fault->getReporter()->getPhone(), + // confirmer + '%%CONFIRMER_NAME%%' => $fault->getConfirmer()->getName(), + '%%CONFIRMER_JOB%%' => $fault->getConfirmer()->getJob(), + // worker + '%%WORKER_NAME%%' => $fault->getConfirmer()->getName(), + '%%WORKER_JOB%%' => $fault->getConfirmer()->getJob(), + // cost approver + '%%APPROVER_NAME%%' => $fault->getApprovedBy() ? $fault->getApprovedBy()->getName() : '', + '%%APPROVER_JOB%%' => $fault->getApprovedBy() ? $fault->getApprovedBy()->getJob() : '', + // repair acknowledged by + '%%ACKNOWLEDGEDBY_NAME%%' => $fault->getAcknowledgedBy() ? $fault->getAcknowledgedBy()->getName() : '', + '%%ACKNOWLEDGEDBY_JOB%%' => $fault->getAcknowledgedBy()? $fault->getAcknowledgedBy()->getJob() : '', + // fault + '%%FAULT_LOCATION_ROOMNUMBER%%' => $fault->getFacilityLocation()->getRoomNumber(), + '%%FAULT_LOCATION_NAME%%' => $fault->getFacilityLocation()->getName(), + '%%FAULT_LOCATION_SIZE%%' => $fault->getFacilityLocation()->getSize(), + '%%FAULT_LOCATION_DESC%%' => $fault->getFacilityLocationDescription(), + '%%FAULT_COST_TYPE%%' => + ($fault->getWorkCostEstimate() > 100000 || $fault->getMaterialCostEstimate() > 200000) + ? 'NM' + : 'KM', + '%%FAULT_ERROR_CATEGORY_TYPE%%' => $fault->getErrorCategory()->getMappedType(), + '%%FAULT_CODE%%' => $fault->getSolutionTimeInterval()->getCode(), + '%%FAULT_ERROR_CATEGORY_ID%%' => $fault->getErrorCategory()->getId(), + '%%FAULT_ERROR_CATEGORY_NAME%%' => $fault->getErrorCategory()->getName(), + '%%FAULT_ERROR_DESC%%' => $fault->getErrorDescription(), + '%%FAULT_ERROR_ORIGIN%%' => $fault->getErrorOrigin()->getName(), + '%%FAULT_ERROR_URGENCY%%' => $fault->getSolutionTimeInterval()->getName(), + ]; + return str_replace(array_keys($replacementMatches), array_values($replacementMatches), $template); + } + + private function fillMaintenanceSheetTemplate(string $template, Maintenance $maintenance): string + { + $formatString = "Y.m.d H:i"; + $replacementMatches = [ + '%%SELF_NAME%%' => $this->config['self']['name'], + '%%SELF_ADDRESS%%' => $this->config['self']['address'], + '%%SELF_TAXNUMBER%%' => $this->config['self']['tax_number'], + '%%OWNER_NAME%%' => $this->config['client']['name'], + '%%OWNER_ADDRESS%%' => $this->config['client']['address'], + '%%OWNER_TAXNUMBER%%' => $this->config['client']['tax_number'], + + '%%MS_ID%%' => $maintenance->getWorksheetNumber(), + '%%MAINTENANCE_GROUP%%' => $maintenance->getDeviceName(), + '%%MAINTENANCE_DEVICE%%' => $maintenance->getComponentName(), + '%%WORK_DESCRIPTION%%' => $maintenance->getWorkDescription(), + +// '%%CONFIRMER_NAME%%' => $maintenance->getStartedBy()->getName(), +// '%%CONFIRMER_JOB%%' => $maintenance->getStartedBy()->getJob(), + '%%MAINTENER_NAME%%' => $maintenance->getResponsible(), + '%%MAINTENER_JOB%%' => '', + + '%%SHOULD_START_AT%%' => $maintenance->getShouldStartAt()->format($formatString), + '%%SHOULDBE_DONE_BY%%' => $maintenance->getShouldBeDoneBy()->format($formatString), + + '%%STARTED_AT%%' => '', +// '%%STARTED_AT%%' => $maintenance->getWorkStarted() +// ? $maintenance->getWorkStarted()->format($formatString) : '', + '%%FINISHED_AT%%' => $maintenance->getWorkFinished() + ? $maintenance->getWorkStarted()->format($formatString) : '', + + '%%TIMESPENT_HOUR%%' => '', + '%%TIMESPENT_DAY%%' => '', + +// '%%FINISHEDBY_NAME%%' => $maintenance->getFinishedBy() +// ? $maintenance->getFinishedBy()->getName() : '', +// '%%FINISHEDBY_JOB%%' => $maintenance->getFinishedBy() +// ? $maintenance->getFinishedBy()->getJob() : '', + '%%ACKNOWLEDGED_AT%%' => $maintenance->getWorkFinished() + ? $maintenance->getWorkStarted()->format($formatString) : '', + ]; + return str_replace(array_keys($replacementMatches), array_values($replacementMatches), $template); + } + +// /** +// * @param int $year +// * @param int $month +// * @return string +// */ +// public function getMonthlyReport($year, $month): string +// { +// $data = $this->getMonthlyReportData($year, $month); +// $compiledData = $this->compileTableData($data); +// setlocale(LC_TIME, "hu_HU.UTF-8"); +// $compiledData['reportDatePeriod'] = strftime("%Y. %B", strtotime("${year}-${month}")); +// +// $pdfTemplate = $this->fillMonthlyReportTemplate( +// file_get_contents(self::MONTHLY_REPORT_TEMPLATE_FILE), +// $compiledData +// ); +// $styleData = file_get_contents(self::MONTHLY_REPORT_STYLESHEET_FILE); +// +// $loader = new LoaderImpl(); +// $loader->setFontFile("data/pdf-resources/config/font-config.xml"); +// +// $builder = FacadeBuilder::create($loader) +// ->setCache('File', ['cache_dir' => 'data/cache']) +// ->setEngineType('pdf'); +// $pdfRenderer = $builder->build(); +// +// return $pdfRenderer->render($pdfTemplate, $styleData); +// } + +// /** +// * @param string $template +// * @param array $data +// * @return string +// */ +// private function fillMonthlyReportTemplate(string $template, array $data): string +// { +// $replacementMatches = [ +// '%%REPORT_DATE_PERIOD%%' => $data['reportDatePeriod'], +// '%%REPORT_DATE_PRINTED%%' => date("Y-m-d"), +// +// '%%TABLE_DATA%%' => $data['itemTemplate'], +// +// '%%SUM_MATERIAL_COST%%' => $data['sumMaterialCost'], +// '%%SUM_WORK_COST%%' => $data['sumWorkCost'], +// '%%LATE_PENALTY_COST%%' => $data['lateFine'], +// '%%SUM_NETT_COST%%' => $data['sumNettCost'], +// '%%VAT_COST%%' => $data['vat'], +// '%%BRUT_COST%%' => $data['sumTotalCost'], +// ]; +// return str_replace(array_keys($replacementMatches), array_values($replacementMatches), $template); +// } + +// /** +// * @param $data +// * @return array compiled data +// * @todo late fine calculation +// */ +// private function compileTableData($data) +// { +// /** @var FaultService $faultService */ +// $faultService = $this->container->get(FaultService::class); +// +// $sumMaterialCost = 0; +// $sumWorkCost = 0; +// $sumLateFine = 0; +// $itemTemplate = ''; +// +// $instituteTpl = file_get_contents(self::MONTHLY_REPORT_INSTITUTE_TPL); +// $faultTpl = file_get_contents(self::MONTHLY_REPORT_FAULT_TPL); +// $faultCostItemTpl = file_get_contents(self::MONTHLY_REPORT_FAULT_COST_ITEM_TPL); +// $faultCostWorkTpl = file_get_contents(self::MONTHLY_REPORT_FAULT_COST_WORK_TPL); +// $faultCostLateTpl = file_get_contents(self::MONTHLY_REPORT_FAULT_COST_LATE_TPL); +// +// /** @var Institute $institute */ +// foreach ($data as $institute) { +// $itemTemplate .= sprintf( +// $instituteTpl, +// $institute->getId(), +// $institute->getName(), +// $institute->getAddress() +// ); +// +// foreach ($institute->getFaults() as $fault) { +// $itemTemplate .= sprintf( +// $faultTpl, +// $fault->getWorksheetNumber(), +// $fault->getErrorCategory()->getName(), +// $fault->getFacilityLocation()->getName() +// ); +// +// foreach ($fault->getUsedMaterials() as $material) { +// $itemTemplate .= sprintf( +// $faultCostItemTpl, +// $material['name'], +// $material['unit'], +// $material['amount'], +// $material['nettPrice'], +// $material['amount'] * $material['nettPrice'] +// ); +// } +// +// $sumMaterialCost += $faultService->calculateMaterialCost($fault); +// $workCost = $faultService->calculateWorkCost($fault); +// $sumWorkCost += $workCost; +// $workHours = $faultService->calculateWorkHours($fault); +// +// $lateFine = $faultService->calculateLateFine($fault); +// $sumLateFine += $lateFine->sum(); +// +// $itemTemplate .= sprintf($faultCostWorkTpl, $workHours, $workCost); +// foreach ($lateFine->getItems() as $item) { +// $itemTemplate .= sprintf( +// $faultCostLateTpl, +// $item->getUnit(), +// $item->getCount(), +// -$item->getAmount(), +// -$item->sum() +// ); +// } +// } +// } +// +// $sumNettCost = $sumWorkCost + $sumMaterialCost - $sumLateFine; +// return [ +// 'itemTemplate' => $itemTemplate, +// 'sumMaterialCost' => $sumMaterialCost, +// 'sumWorkCost' => $sumWorkCost, +// 'lateFine' => $sumLateFine, +// 'sumNettCost' => $sumNettCost, +// 'vat' => floor($sumNettCost * 0.27), +// 'sumTotalCost' => floor($sumNettCost * 1.27), +// ]; +// } + +// /** +// * @param int $year +// * @param int $month +// * @return array +// */ +// private function getMonthlyReportData($year, $month) +// { +// $qb = $this->em->createQueryBuilder(); +// +// $entities = $qb->select('i', 'f', 'fl', 'ec') +// ->from(Institute::class, 'i') +// ->innerJoin('i.faults', 'f') +// ->innerJoin('f.facilityLocation', 'fl') +// ->innerJoin('f.errorCategory', 'ec') +// ->where('YEAR(f.workFinished) = :year') +// ->andWhere('MONTH(f.workFinished) = :month') +// ->orderBy('i.id') +// ->setParameter('year', $year) +// ->setParameter('month', $month) +// ->getQuery() +// ->getResult(Query::HYDRATE_OBJECT); +// +// return $entities; +// } +} diff --git a/src/App/Service/PdfServiceFactory.php b/src/App/Service/PdfServiceFactory.php new file mode 100644 index 0000000..017f318 --- /dev/null +++ b/src/App/Service/PdfServiceFactory.php @@ -0,0 +1,20 @@ +get('doctrine.entity_manager.orm_default'); + /** @var FaultManagerService $faultManager */ + $faultManager = $container->get(FaultManagerService::class); + $config = $container->get('config'); + return new PdfService($em, $faultManager, $config); + } +} diff --git a/src/App/Service/RbaclFactory.php b/src/App/Service/RbaclFactory.php new file mode 100644 index 0000000..0d2b534 --- /dev/null +++ b/src/App/Service/RbaclFactory.php @@ -0,0 +1,36 @@ +get('config')['acl_config']); + $routeGuard = $config->get('route_guard', $emptyCfg); + + $rbac = new Rbac(); + $rbac->setCreateMissingRoles(true); + // roles + $roles = $routeGuard->get('roles', $emptyCfg)->toArray(); + foreach ($roles as $roleName => $parents) { + $rbac->addRole($roleName, $parents); + } + + // permissions + $permissionCfg = $routeGuard->get('permissions', $emptyCfg)->toArray(); + foreach ($permissionCfg as $role => $permissions) { + foreach ($permissions as $permission) { + $rbac->getRole($role)->addPermission($permission); + } + } + + return $rbac; + } +} diff --git a/src/App/Service/SolutionTimeIntervalService.php b/src/App/Service/SolutionTimeIntervalService.php new file mode 100644 index 0000000..6bfc45c --- /dev/null +++ b/src/App/Service/SolutionTimeIntervalService.php @@ -0,0 +1,32 @@ +em = $em; + } + + /** + * Return FacilityLocations in a tree form + * + * @return array + */ + public function getList() + { + /** @var EntityRepository $treeRepository */ + $repository = $this->em->getRepository(SolutionTimeInterval::class); + return $repository->findAll(); + } +} diff --git a/src/App/Service/SolutionTimeIntervalServiceFactory.php b/src/App/Service/SolutionTimeIntervalServiceFactory.php new file mode 100644 index 0000000..e58c5b8 --- /dev/null +++ b/src/App/Service/SolutionTimeIntervalServiceFactory.php @@ -0,0 +1,16 @@ +get('doctrine.entity_manager.orm_default'); + return new SolutionTimeIntervalService($em); + } +} diff --git a/src/App/Service/UserService.php b/src/App/Service/UserService.php new file mode 100644 index 0000000..14a59c0 --- /dev/null +++ b/src/App/Service/UserService.php @@ -0,0 +1,102 @@ +em = $em; + $this->hydrator = $hydrator; + } + + /** + * Return FacilityLocations in a tree form + * + * @return array + */ + public function getList() + { + /** @var EntityRepository $treeRepository */ + $repository = $this->em->getRepository(User::class); + return $repository->findAll(); + } + + /** + * @param int $id + * @return User + */ + public function get(int $id): User + { + /** @var User $user */ + $user = $this->em->find(User::class, $id); + return $user; + } + + /** + * @param int $id + * @param $data + * @return User + */ + public function update(int $id, $data): User + { + /** @var User $user */ + $user = $this->hydrator->hydrate($data, $this->get($id)); + $this->em->persist($user); + $this->em->flush(); + return $user; + } + + /** + * @param int $id + * @param string $old + * @param string $new + * @return User + * @throws \Exception + */ + public function changePassword(int $id, string $old, string $new): User + { + $user = $this->get($id); + + $crypt = new Bcrypt(); + $crypt->setCost(AuthService::PASSWORD_COST); + + if (!$crypt->verify($old, $user->getPassword())) { + throw new \Exception("Old password doesn't match", 401); + } + + $user->setPassword($crypt->create($new)); + $this->em->flush(); + return $user; + } + + /** + * @param string $role + * @return User[]|null + */ + public function getAllUsersOfRole(string $role): ?array + { + $activeUsers = $this->em->getRepository(User::class)->findBy([ + 'active' => true, + ]); + return array_filter($activeUsers, function (User $user) use ($role) { + return in_array($role, $user->getRoles()); + }); + } +} diff --git a/src/App/Service/UserServiceFactory.php b/src/App/Service/UserServiceFactory.php new file mode 100644 index 0000000..80e0f81 --- /dev/null +++ b/src/App/Service/UserServiceFactory.php @@ -0,0 +1,19 @@ +get('doctrine.entity_manager.orm_default'); + /** @var DoctrineObject $hydrator */ + $hydrator = $container->get('doctrine.hydrator'); + return new UserService($em, $hydrator); + } +} diff --git a/src/App/Service/XlsxParserService.php b/src/App/Service/XlsxParserService.php new file mode 100644 index 0000000..d75108b --- /dev/null +++ b/src/App/Service/XlsxParserService.php @@ -0,0 +1,226 @@ +deviceGroups = new ArrayCollection(); +// $this->year = date("Y"); + $this->year = 2018; + } + + /** + * @param DeviceGroup $device + * @return XlsxParserService + */ + public function addDeviceGroup(DeviceGroup $device): XlsxParserService + { + if (!$this->deviceGroups->contains($device)) { + $this->deviceGroups->add($device); + } + return $this; + } + + /** + * @param DeviceGroup $deviceGroup + * @return XlsxParserService + */ + public function removeDevice(DeviceGroup $deviceGroup): XlsxParserService + { + if ($this->deviceGroups->contains($deviceGroup)) { + $this->deviceGroups->removeElement($deviceGroup); + } + return $this; + } + + /** + * @return ArrayCollection|Maintenance[] + */ + public function getXlsxData(): ArrayCollection + { + if (!file_exists($this->getXlsxFileName())) { + return new ArrayCollection(); + } + + if (!file_exists($this->getTimestampFileName()) || + !file_exists($this->getCacheFileName()) || + file_get_contents($this->getTimestampFileName()) < filemtime($this->getXlsxFileName()) + ) { + $this->rebuildCache(); + } + + /** @var ArrayCollection|DeviceGroup[] $loadedCacheData */ + $loadedCacheData = unserialize(file_get_contents($this->getCacheFileName())); + return $loadedCacheData; + } + + private function rebuildCache() + { + $mtime = filemtime($this->getXlsxFileName()); + $parsedXlsxData = $this->parseXlsx(); + file_put_contents($this->getCacheFileName(), serialize($parsedXlsxData)); + file_put_contents($this->getTimestampFileName(), $mtime); + } + + /** + * @return ArrayCollection + * @throws \PHPExcel_Exception + * @throws \PHPExcel_Reader_Exception + */ + public function parseXlsx(): ArrayCollection + { + $objPHPExcel = \PHPExcel_IOFactory::load($this->getXlsxFileName()); + $sheet = $objPHPExcel->getSheetByName(self::XLSX_SHEET_NAME); + + $totalRows = $sheet->getHighestRow(); + $monthColumns = $this->year == 2017 + ? range(43, 58) + : range(11, 58); + $rowCursor = 7; + + $group = null; + while ($rowCursor < $totalRows) { + /** + * step over empty rows + */ + $firstCell = $sheet->getCell("A{$rowCursor}"); + if (!$firstCell->isMergeRangeValueCell() + && $firstCell->getValue() == "" + ) { + $rowCursor += 1; + continue; + } + + /** + * start of new group block + */ + if ($firstCell->getMergeRange() == "A{$rowCursor}:K{$rowCursor}") { + $group = new DeviceGroup(); + $group->setName($firstCell->getValue()); + $this->addDeviceGroup($group); + $rowCursor += 1; + continue; + } + + /** + * start of new device + */ + if ($sheet->getCell("A{$rowCursor}")->isMergeRangeValueCell()) { + $device = new Device($group); + $device->setName($this->compressWhitespace( + $sheet->getCellByColumnAndRow(0, $rowCursor)->getValue() ?? "" + )) + ->setResponsible($sheet->getCellByColumnAndRow(1, $rowCursor)->getValue() ?? "") + ->setCount(intval($sheet->getCellByColumnAndRow(2, $rowCursor)->getValue())) + ->setWorkDescription($sheet->getCellByColumnAndRow(3, $rowCursor)->getValue() ?? ""); + $group->addDevice($device); + $mergeRange = $sheet->getCell("A{$rowCursor}")->getMergeRange(); + sscanf($mergeRange, "A{$rowCursor}:A%d", $endRow); + foreach ($monthColumns as $column) { + $weekDataCell = $sheet->getCellByColumnAndRow($column, $rowCursor); + if ($weekDataCell->getValue() != "") { + $month = floor(($column - 11) / 4 + 1); + $firstDayOfFirstWeek = $this->getFirstWeekOfMonth($month); + $week = ($column - 11) % 4 + 1; + + $task = new DeviceMaintenanceTask($device); + $task->setYear($this->year) + ->setMonth($month) + ->setWeek($week) + ->setShouldStartAt($firstDayOfFirstWeek->add( + \DateInterval::createFromDateString(sprintf("%s weeks", $week - 1)) + )) + ->setShouldBeDoneBy((clone $firstDayOfFirstWeek)->add( + \DateInterval::createFromDateString("1 week") + )) + ->setWorkerCount(intval($weekDataCell->getCalculatedValue())) + ->setTimeCost(floatval( + $sheet->getCellByColumnAndRow($column, $rowCursor + 1)->getCalculatedValue() + )); + $device->addTask($task); + } + } + $rowCursor += $endRow - $rowCursor; + } + $rowCursor += 1; + } + return $this->deviceGroups; + } + + /** + * @param string $input + * @return string + */ + private function compressWhitespace(string $input): string + { + return preg_replace("#[\s]+#msiu", " ", $input); + } + + /** + * @param int $month + * @return \DateTime + */ + private function getFirstWeekOfMonth(int $month): \DateTime + { + $firstDayOfMonth = mktime(0, 0, 0, $month, 1, $this->year); + $weekDayOfFirst = date("N", $firstDayOfMonth); + + if ($weekDayOfFirst == 2) { + return (new \DateTime("@".strtotime("-1 day", $firstDayOfMonth))) + ->setTimezone(new \DateTimeZone(date_default_timezone_get())); + } + + $firstWeekMonday = 1; + if ($weekDayOfFirst > 2) { + $firstWeekMonday = 8 - ($weekDayOfFirst - 1); + } + + return new \DateTime(sprintf( + "%s-%s-%s", + $this->year, + $month, + $firstWeekMonday + )); + } + + private function getCacheFileName(): string + { + return sprintf(self::XLSX_CACHE_FILE, $this->year); + } + + private function getTimestampFileName(): string + { + return sprintf(self::XLSX_TIMESTAMP, $this->year); + } + + private function getXlsxFileName(): string + { + return sprintf(self::XLSX_FILE_NAME, $this->year); + } +} diff --git a/src/App/Service/XlsxParserServiceFactory.php b/src/App/Service/XlsxParserServiceFactory.php new file mode 100644 index 0000000..0bdce4d --- /dev/null +++ b/src/App/Service/XlsxParserServiceFactory.php @@ -0,0 +1,13 @@ +router = $this->prophesize(RouterInterface::class); + } + + public function testReturnsJsonResponseWhenNoTemplateRendererProvided() + { + $homePage = new HomePageAction($this->router->reveal(), null); + $response = $homePage->process( + $this->prophesize(ServerRequestInterface::class)->reveal(), + $this->prophesize(DelegateInterface::class)->reveal() + ); + + $this->assertInstanceOf(JsonResponse::class, $response); + } + + public function testReturnsHtmlResponseWhenTemplateRendererProvided() + { + $renderer = $this->prophesize(TemplateRendererInterface::class); + $renderer + ->render('app::home-page', Argument::type('array')) + ->willReturn(''); + + $homePage = new HomePageAction($this->router->reveal(), $renderer->reveal()); + + $response = $homePage->process( + $this->prophesize(ServerRequestInterface::class)->reveal(), + $this->prophesize(DelegateInterface::class)->reveal() + ); + + $this->assertInstanceOf(HtmlResponse::class, $response); + } +} diff --git a/test/AppTest/Action/HomePageFactoryTest.php b/test/AppTest/Action/HomePageFactoryTest.php new file mode 100644 index 0000000..627a20c --- /dev/null +++ b/test/AppTest/Action/HomePageFactoryTest.php @@ -0,0 +1,51 @@ +container = $this->prophesize(ContainerInterface::class); + $router = $this->prophesize(RouterInterface::class); + + $this->container->get(RouterInterface::class)->willReturn($router); + } + + public function testFactoryWithoutTemplate() + { + $factory = new HomePageFactory(); + $this->container->has(TemplateRendererInterface::class)->willReturn(false); + + $this->assertInstanceOf(HomePageFactory::class, $factory); + + $homePage = $factory($this->container->reveal()); + + $this->assertInstanceOf(HomePageAction::class, $homePage); + } + + public function testFactoryWithTemplate() + { + $factory = new HomePageFactory(); + $this->container->has(TemplateRendererInterface::class)->willReturn(true); + $this->container + ->get(TemplateRendererInterface::class) + ->willReturn($this->prophesize(TemplateRendererInterface::class)); + + $this->assertInstanceOf(HomePageFactory::class, $factory); + + $homePage = $factory($this->container->reveal()); + + $this->assertInstanceOf(HomePageAction::class, $homePage); + } +} diff --git a/test/AppTest/Action/PingActionTest.php b/test/AppTest/Action/PingActionTest.php new file mode 100644 index 0000000..71a22fb --- /dev/null +++ b/test/AppTest/Action/PingActionTest.php @@ -0,0 +1,26 @@ +process( + $this->prophesize(ServerRequestInterface::class)->reveal(), + $this->prophesize(DelegateInterface::class)->reveal() + ); + + $json = json_decode((string) $response->getBody()); + + $this->assertInstanceOf(JsonResponse::class, $response); + $this->assertTrue(isset($json->ack)); + } +}