Slack notify
This commit is contained in:
parent
0579a62931
commit
30a8e73f21
11
.env
11
.env
@ -24,16 +24,17 @@ APP_SECRET=e5a2fe31ff8ce325266d52632a0ba5df
|
|||||||
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
|
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
|
||||||
#
|
#
|
||||||
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
|
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
|
||||||
DATABASE_URL="mysql://db:db@db:3306/db?serverVersion=mariadb-10.4.11&charset=utf8mb4"
|
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8&charset=utf8mb4"
|
||||||
#DATABASE_URL="postgresql://symfony:ChangeMe@127.0.0.1:5432/app?serverVersion=13&charset=utf8"
|
DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=15&charset=utf8"
|
||||||
###< doctrine/doctrine-bundle ###
|
###< doctrine/doctrine-bundle ###
|
||||||
|
|
||||||
###> nelmio/cors-bundle ###
|
###> nelmio/cors-bundle ###
|
||||||
CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$'
|
CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$'
|
||||||
###< nelmio/cors-bundle ###
|
###< nelmio/cors-bundle ###
|
||||||
|
|
||||||
SHOPWARE_API_URL="ddev-flex-web"
|
SHOPWARE_API_URL="http://flex.ddev.site/"
|
||||||
SHOPWARE_API_ID="SWIAB21GBEHEU0DLVKNIRE5CDG"
|
SHOPWARE_API_ID="SWIAB21GBEHEU0DLVKNIRE5CDG"
|
||||||
SHOPWARE_API_KEY="NWIwbjRFNWNXU1d0WUtMTUpzRU05OFVIZ1N4MFdwYUdHVjhTdWk"
|
SHOPWARE_API_KEY="NWIwbjRFNWNXU1d0WUtMTUpzRU05OFVIZ1N4MFdwYUdHVjhTdWk"
|
||||||
|
###> symfony/slack-notifier ###
|
||||||
|
# SLACK_DSN=slack://TOKEN@default?channel=CHANNEL
|
||||||
|
###< symfony/slack-notifier ###
|
||||||
|
38
.env.sample
38
.env.sample
@ -1,38 +0,0 @@
|
|||||||
# In all environments, the following files are loaded if they exist,
|
|
||||||
# the latter taking precedence over the former:
|
|
||||||
#
|
|
||||||
# * .env contains default values for the environment variables needed by the app
|
|
||||||
# * .env.local uncommitted file with local overrides
|
|
||||||
# * .env.$APP_ENV committed environment-specific defaults
|
|
||||||
# * .env.$APP_ENV.local uncommitted environment-specific overrides
|
|
||||||
#
|
|
||||||
# Real environment variables win over .env files.
|
|
||||||
#
|
|
||||||
# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
|
|
||||||
# https://symfony.com/doc/current/configuration/secrets.html
|
|
||||||
#
|
|
||||||
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
|
|
||||||
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
|
|
||||||
|
|
||||||
###> symfony/framework-bundle ###
|
|
||||||
APP_ENV=dev
|
|
||||||
APP_SECRET=e5a2fe31ff8ce325266d52632a0ba5df
|
|
||||||
###< symfony/framework-bundle ###
|
|
||||||
|
|
||||||
###> doctrine/doctrine-bundle ###
|
|
||||||
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
|
|
||||||
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
|
|
||||||
#
|
|
||||||
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
|
|
||||||
DATABASE_URL="mysql://root:root@mysql:3306/cds_connector?serverVersion=5.7&charset=utf8mb4"
|
|
||||||
#DATABASE_URL="postgresql://symfony:ChangeMe@127.0.0.1:5432/app?serverVersion=13&charset=utf8"
|
|
||||||
###< doctrine/doctrine-bundle ###
|
|
||||||
|
|
||||||
###> nelmio/cors-bundle ###
|
|
||||||
CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$'
|
|
||||||
###< nelmio/cors-bundle ###
|
|
||||||
|
|
||||||
SHOPWARE_API_URL="development.dev.localhost"
|
|
||||||
SHOPWARE_API_KEY="S2hySDNyZ214dGRVQmFBSURQbkRvajIyZldxOHB4RktZakxaYmo"
|
|
||||||
SHOPWARE_API_ID="SWUAB1JGAFHTMME5DUGWDWN1EQ"
|
|
||||||
|
|
10
.gitignore
vendored
10
.gitignore
vendored
@ -64,3 +64,13 @@
|
|||||||
/phpunit.xml
|
/phpunit.xml
|
||||||
.phpunit.result.cache
|
.phpunit.result.cache
|
||||||
###< phpunit/phpunit ###
|
###< phpunit/phpunit ###
|
||||||
|
|
||||||
|
###> symfony/framework-bundle ###
|
||||||
|
/.env.local
|
||||||
|
/.env.local.php
|
||||||
|
/.env.*.local
|
||||||
|
/config/secrets/prod/prod.decrypt.private.php
|
||||||
|
/public/bundles/
|
||||||
|
/var/
|
||||||
|
/vendor/
|
||||||
|
###< symfony/framework-bundle ###
|
||||||
|
@ -22,32 +22,22 @@
|
|||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-timer" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-timer" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpstan/phpdoc-parser" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpstan/phpdoc-parser" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/laminas/laminas-code" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/laminas/laminas-code" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/vin-sw/shopware-sdk" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/myclabs/deep-copy" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/myclabs/deep-copy" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/monolog/monolog" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/monolog/monolog" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/nikic/php-parser" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/nikic/php-parser" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/twig/twig" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/twig/twig" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sensio/framework-extra-bundle" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sensio/framework-extra-bundle" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/nelmio/cors-bundle" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/nelmio/cors-bundle" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-client" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/link" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-factory" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/log" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/log" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/event-dispatcher" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/event-dispatcher" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/cache" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/cache" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/container" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/container" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-message" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/api-platform/core" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/masterminds/html5" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/masterminds/html5" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/friendsofphp/proxy-manager-lts" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/friendsofphp/proxy-manager-lts" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/psr7" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/promises" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/willdurand/negotiation" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/guzzle" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/exporter" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/exporter" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/environment" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/environment" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" />
|
||||||
@ -67,7 +57,6 @@
|
|||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/doctrine-bundle" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/doctrine-bundle" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/deprecations" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/deprecations" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/comparator" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/comparator" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/ralouphie/getallheaders" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/event-manager" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/event-manager" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/orm" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/orm" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/sql-formatter" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/sql-formatter" />
|
||||||
@ -110,7 +99,6 @@
|
|||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/twig-bundle" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/twig-bundle" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/css-selector" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/css-selector" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-normalizer" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-normalizer" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/web-link" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/event-dispatcher-contracts" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/event-dispatcher-contracts" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/maker-bundle" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/maker-bundle" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/security-csrf" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/security-csrf" />
|
||||||
@ -132,6 +120,15 @@
|
|||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/monolog-bridge" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/monolog-bridge" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/browser-kit" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/browser-kit" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/asset" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/asset" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.ddev/.dbimageBuild" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.ddev/.global_commands" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.ddev/.homeadditions" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.ddev/.webimageBuild" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.ddev/db_snapshots" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.idea/dataSources" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/var/cache/dev" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/var/cache/prod" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
@ -8,13 +8,13 @@
|
|||||||
<jdbc-url>jdbc:mysql://127.0.0.1:3306</jdbc-url>
|
<jdbc-url>jdbc:mysql://127.0.0.1:3306</jdbc-url>
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
<working-dir>$ProjectFileDir$</working-dir>
|
||||||
</data-source>
|
</data-source>
|
||||||
<data-source source="LOCAL" name="DDEV" uuid="096edb5d-73f9-4ef4-b462-f3f8e939a139">
|
<data-source source="LOCAL" name="DDEV" uuid="8ac40044-b481-45b8-bfa3-0285dc801252">
|
||||||
<driver-ref>mariadb</driver-ref>
|
<driver-ref>mariadb</driver-ref>
|
||||||
<synchronize>true</synchronize>
|
<synchronize>true</synchronize>
|
||||||
<configured-by-url>true</configured-by-url>
|
<configured-by-url>true</configured-by-url>
|
||||||
<remarks>DDEV generated data source</remarks>
|
<remarks>DDEV generated data source</remarks>
|
||||||
<jdbc-driver>org.mariadb.jdbc.Driver</jdbc-driver>
|
<jdbc-driver>org.mariadb.jdbc.Driver</jdbc-driver>
|
||||||
<jdbc-url>jdbc:mariadb://127.0.0.1:32836/db?user=db&password=db</jdbc-url>
|
<jdbc-url>jdbc:mariadb://127.0.0.1:51951/db?user=db&password=db</jdbc-url>
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
<working-dir>$ProjectFileDir$</working-dir>
|
||||||
</data-source>
|
</data-source>
|
||||||
</component>
|
</component>
|
||||||
|
@ -28,32 +28,22 @@
|
|||||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
|
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
|
||||||
<path value="$PROJECT_DIR$/vendor/phpstan/phpdoc-parser" />
|
<path value="$PROJECT_DIR$/vendor/phpstan/phpdoc-parser" />
|
||||||
<path value="$PROJECT_DIR$/vendor/laminas/laminas-code" />
|
<path value="$PROJECT_DIR$/vendor/laminas/laminas-code" />
|
||||||
<path value="$PROJECT_DIR$/vendor/vin-sw/shopware-sdk" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
|
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
|
||||||
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
|
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
|
||||||
<path value="$PROJECT_DIR$/vendor/nikic/php-parser" />
|
<path value="$PROJECT_DIR$/vendor/nikic/php-parser" />
|
||||||
<path value="$PROJECT_DIR$/vendor/twig/twig" />
|
<path value="$PROJECT_DIR$/vendor/twig/twig" />
|
||||||
<path value="$PROJECT_DIR$/vendor/sensio/framework-extra-bundle" />
|
<path value="$PROJECT_DIR$/vendor/sensio/framework-extra-bundle" />
|
||||||
<path value="$PROJECT_DIR$/vendor/nelmio/cors-bundle" />
|
<path value="$PROJECT_DIR$/vendor/nelmio/cors-bundle" />
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/http-client" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/link" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/http-factory" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/log" />
|
<path value="$PROJECT_DIR$/vendor/psr/log" />
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
|
<path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/cache" />
|
<path value="$PROJECT_DIR$/vendor/psr/cache" />
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/container" />
|
<path value="$PROJECT_DIR$/vendor/psr/container" />
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/http-message" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/composer" />
|
<path value="$PROJECT_DIR$/vendor/composer" />
|
||||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
||||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
|
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||||
<path value="$PROJECT_DIR$/vendor/api-platform/core" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/masterminds/html5" />
|
<path value="$PROJECT_DIR$/vendor/masterminds/html5" />
|
||||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
|
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||||
<path value="$PROJECT_DIR$/vendor/friendsofphp/proxy-manager-lts" />
|
<path value="$PROJECT_DIR$/vendor/friendsofphp/proxy-manager-lts" />
|
||||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/willdurand/negotiation" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
|
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/environment" />
|
<path value="$PROJECT_DIR$/vendor/sebastian/environment" />
|
||||||
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
|
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
|
||||||
@ -73,7 +63,6 @@
|
|||||||
<path value="$PROJECT_DIR$/vendor/doctrine/doctrine-bundle" />
|
<path value="$PROJECT_DIR$/vendor/doctrine/doctrine-bundle" />
|
||||||
<path value="$PROJECT_DIR$/vendor/doctrine/deprecations" />
|
<path value="$PROJECT_DIR$/vendor/doctrine/deprecations" />
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
|
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
|
||||||
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/doctrine/event-manager" />
|
<path value="$PROJECT_DIR$/vendor/doctrine/event-manager" />
|
||||||
<path value="$PROJECT_DIR$/vendor/doctrine/orm" />
|
<path value="$PROJECT_DIR$/vendor/doctrine/orm" />
|
||||||
<path value="$PROJECT_DIR$/vendor/doctrine/sql-formatter" />
|
<path value="$PROJECT_DIR$/vendor/doctrine/sql-formatter" />
|
||||||
@ -116,7 +105,6 @@
|
|||||||
<path value="$PROJECT_DIR$/vendor/symfony/twig-bundle" />
|
<path value="$PROJECT_DIR$/vendor/symfony/twig-bundle" />
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/css-selector" />
|
<path value="$PROJECT_DIR$/vendor/symfony/css-selector" />
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-normalizer" />
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-normalizer" />
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/web-link" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
|
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/maker-bundle" />
|
<path value="$PROJECT_DIR$/vendor/symfony/maker-bundle" />
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/security-csrf" />
|
<path value="$PROJECT_DIR$/vendor/symfony/security-csrf" />
|
||||||
@ -138,12 +126,22 @@
|
|||||||
<path value="$PROJECT_DIR$/vendor/symfony/monolog-bridge" />
|
<path value="$PROJECT_DIR$/vendor/symfony/monolog-bridge" />
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/browser-kit" />
|
<path value="$PROJECT_DIR$/vendor/symfony/browser-kit" />
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/asset" />
|
<path value="$PROJECT_DIR$/vendor/symfony/asset" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/notifier" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/league/csv" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/process" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/api-platform/core" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/web-link" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/willdurand/negotiation" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/psr/link" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/http-client-contracts" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/slack-notifier" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/http-client" />
|
||||||
</include_path>
|
</include_path>
|
||||||
</component>
|
</component>
|
||||||
<component name="PhpInterpreters">
|
<component name="PhpInterpreters">
|
||||||
<interpreters>
|
<interpreters>
|
||||||
<interpreter id="64ff8bd0-da32-4db6-9020-b3f9551fc212" name="DDEV" home="docker-compose://DATA" debugger_id="php.debugger.XDebug">
|
<interpreter id="64ff8bd0-da32-4db6-9020-b3f9551fc212" name="DDEV" home="docker-compose://DATA" false="false" debugger_id="php.debugger.XDebug">
|
||||||
<remote_data INTERPRETER_PATH="php8.2" HELPERS_PATH="/opt/.phpstorm_helpers" INITIALIZED="false" VALID="true" RUN_AS_ROOT_VIA_SUDO="false" DOCKER_ACCOUNT_NAME="Docker" DOCKER_COMPOSE_SERVICE_NAME="web" DOCKER_REMOTE_PROJECT_PATH="/opt/project">
|
<remote_data INTERPRETER_PATH="php8.2" HELPERS_PATH="/opt/.phpstorm_helpers" VALID="true" RUN_AS_ROOT_VIA_SUDO="false" DOCKER_ACCOUNT_NAME="Docker" DOCKER_COMPOSE_SERVICE_NAME="web" DOCKER_REMOTE_PROJECT_PATH="/opt/project">
|
||||||
<PathMappingSettings>
|
<PathMappingSettings>
|
||||||
<option name="pathMappings">
|
<option name="pathMappings">
|
||||||
<list>
|
<list>
|
||||||
|
@ -15,6 +15,9 @@ Connector zwischen Hiltes und Shopware 6
|
|||||||
Installiere Abhängigkeiten
|
Installiere Abhängigkeiten
|
||||||
> make install
|
> make install
|
||||||
|
|
||||||
|
Erstelle .env.local Datei und füge folgendes ein:
|
||||||
|
> DATABASE_URL=mysql://root:root@mysql:3306/cds_connector
|
||||||
|
|
||||||
Starte MySQL-Server:
|
Starte MySQL-Server:
|
||||||
> docker compose up
|
> docker compose up
|
||||||
|
|
||||||
|
@ -7,11 +7,12 @@
|
|||||||
"php": ">=8.1",
|
"php": ">=8.1",
|
||||||
"ext-ctype": "*",
|
"ext-ctype": "*",
|
||||||
"ext-iconv": "*",
|
"ext-iconv": "*",
|
||||||
"api-platform/core": "^2.6",
|
"api-platform/core": "^3.1",
|
||||||
"doctrine/annotations": "^1.0",
|
"doctrine/annotations": "^1.0",
|
||||||
"doctrine/doctrine-bundle": "^2.7",
|
"doctrine/doctrine-bundle": "^2.7",
|
||||||
"doctrine/doctrine-migrations-bundle": "^3.2",
|
"doctrine/doctrine-migrations-bundle": "^3.2",
|
||||||
"doctrine/orm": "^2.12",
|
"doctrine/orm": "^2.12",
|
||||||
|
"league/csv": "^9.0",
|
||||||
"nelmio/cors-bundle": "^2.2",
|
"nelmio/cors-bundle": "^2.2",
|
||||||
"phpdocumentor/reflection-docblock": "^5.3",
|
"phpdocumentor/reflection-docblock": "^5.3",
|
||||||
"phpstan/phpdoc-parser": "^1.6",
|
"phpstan/phpdoc-parser": "^1.6",
|
||||||
@ -24,23 +25,24 @@
|
|||||||
"symfony/flex": "^2",
|
"symfony/flex": "^2",
|
||||||
"symfony/form": "6.1.*",
|
"symfony/form": "6.1.*",
|
||||||
"symfony/framework-bundle": "6.1.*",
|
"symfony/framework-bundle": "6.1.*",
|
||||||
|
"symfony/notifier": "6.1.*",
|
||||||
"symfony/property-access": "6.1.*",
|
"symfony/property-access": "6.1.*",
|
||||||
"symfony/property-info": "6.1.*",
|
"symfony/property-info": "6.1.*",
|
||||||
"symfony/proxy-manager-bridge": "6.1.*",
|
"symfony/proxy-manager-bridge": "6.1.*",
|
||||||
"symfony/runtime": "6.1.*",
|
"symfony/runtime": "6.1.*",
|
||||||
"symfony/security-bundle": "6.1.*",
|
"symfony/security-bundle": "6.1.*",
|
||||||
"symfony/serializer": "6.1.*",
|
"symfony/serializer": "6.1.*",
|
||||||
|
"symfony/slack-notifier": "6.1.*",
|
||||||
"symfony/twig-bundle": "6.1.*",
|
"symfony/twig-bundle": "6.1.*",
|
||||||
"symfony/validator": "6.1.*",
|
"symfony/validator": "6.1.*",
|
||||||
"symfony/yaml": "6.1.*",
|
"symfony/yaml": "6.1.*"
|
||||||
"vin-sw/shopware-sdk": "^1.4"
|
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^9",
|
"phpunit/phpunit": "^9",
|
||||||
"symfony/browser-kit": "6.1.*",
|
"symfony/browser-kit": "6.1.*",
|
||||||
"symfony/css-selector": "6.1.*",
|
"symfony/css-selector": "6.1.*",
|
||||||
"symfony/debug-bundle": "6.1.*",
|
"symfony/debug-bundle": "6.1.*",
|
||||||
"symfony/maker-bundle": "^1.43",
|
"symfony/maker-bundle": "^1.48",
|
||||||
"symfony/monolog-bundle": "^3.0",
|
"symfony/monolog-bundle": "^3.0",
|
||||||
"symfony/phpunit-bridge": "^6.1",
|
"symfony/phpunit-bridge": "^6.1",
|
||||||
"symfony/stopwatch": "6.1.*",
|
"symfony/stopwatch": "6.1.*",
|
||||||
|
1626
composer.lock
generated
1626
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -11,6 +11,6 @@ return [
|
|||||||
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
|
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
|
||||||
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
|
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
|
||||||
Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true],
|
Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true],
|
||||||
ApiPlatform\Core\Bridge\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true],
|
|
||||||
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
|
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
|
||||||
|
ApiPlatform\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true],
|
||||||
];
|
];
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
api_platform:
|
|
||||||
title: CDS Connector API
|
|
||||||
version: 1.0.0
|
|
||||||
mapping:
|
|
||||||
paths: ['%kernel.project_dir%/src/Entity']
|
|
||||||
patch_formats:
|
|
||||||
json: ['application/merge-patch+json']
|
|
||||||
swagger:
|
|
||||||
versions: [3]
|
|
||||||
formats:
|
|
||||||
json: [ 'application/json' ]
|
|
||||||
jsonld: [ 'application/ld+json' ]
|
|
||||||
html: [ 'text/html' ]
|
|
||||||
multipart: [ 'multipart/form-data' ]
|
|
||||||
allow_plain_identifiers: true
|
|
||||||
oauth:
|
|
||||||
# To enable or disable OAuth.
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
# The OAuth client ID.
|
|
||||||
clientId: 'cycro'
|
|
||||||
|
|
||||||
# The OAuth client secret.
|
|
||||||
clientSecret: 'cycro123'
|
|
||||||
|
|
||||||
# The OAuth type.
|
|
||||||
type: 'oauth2'
|
|
||||||
|
|
||||||
# The OAuth flow grant type.
|
|
||||||
flow: 'application'
|
|
||||||
|
|
||||||
# The OAuth token URL.
|
|
||||||
tokenUrl: '/oauth/v2/token'
|
|
||||||
|
|
||||||
# The OAuth authentication URL.
|
|
||||||
authorizationUrl: '/oauth/v2/auth'
|
|
||||||
|
|
||||||
# The OAuth scopes.
|
|
||||||
scopes: []
|
|
@ -1,9 +1,6 @@
|
|||||||
# see https://symfony.com/doc/current/reference/configuration/framework.html
|
# see https://symfony.com/doc/current/reference/configuration/framework.html
|
||||||
framework:
|
framework:
|
||||||
secret: '%env(APP_SECRET)%'
|
secret: '%env(APP_SECRET)%'
|
||||||
# SHOPWARE_API_URL: '%env(string:SHOPWARE_API_URL)%'
|
|
||||||
# SHOPWARE_API_KEY: '%env(string:SHOPWARE_API_KEY)%'
|
|
||||||
# SHOPWARE_API_ID: '%env(string:SHOPWARE_API_ID)%'
|
|
||||||
#csrf_protection: true
|
#csrf_protection: true
|
||||||
http_method_override: false
|
http_method_override: false
|
||||||
|
|
||||||
|
16
config/packages/notifier.yaml
Normal file
16
config/packages/notifier.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
framework:
|
||||||
|
notifier:
|
||||||
|
chatter_transports:
|
||||||
|
slack: '%env(SLACK_DSN)%'
|
||||||
|
# telegram: '%env(TELEGRAM_DSN)%'
|
||||||
|
#texter_transports:
|
||||||
|
# twilio: '%env(TWILIO_DSN)%'
|
||||||
|
# nexmo: '%env(NEXMO_DSN)%'
|
||||||
|
channel_policy:
|
||||||
|
# use chat/slack, chat/telegram, sms/twilio or sms/nexmo
|
||||||
|
urgent: ['slack']
|
||||||
|
high: ['slack']
|
||||||
|
medium: ['email']
|
||||||
|
low: ['email']
|
||||||
|
admin_recipients:
|
||||||
|
- { email: admin@example.com }
|
@ -4,15 +4,6 @@
|
|||||||
# Put parameters here that don't need to change on each machine where the app is deployed
|
# Put parameters here that don't need to change on each machine where the app is deployed
|
||||||
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
|
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
|
||||||
parameters:
|
parameters:
|
||||||
# the secret key used to generate tokens
|
|
||||||
# you should change it to a secret key that is not public
|
|
||||||
# see https://symfony.com/doc/current/security/token_storage.html#secrets-in-symfony-secrets-v3
|
|
||||||
# the url of the shopware api
|
|
||||||
SHOPWARE_API_URL: '%env(SHOPWARE_API_URL)%'
|
|
||||||
# the api key of the shopware api
|
|
||||||
SHOPWARE_API_KEY: '%env(SHOPWARE_API_KEY)%'
|
|
||||||
# the api id of the shopware api
|
|
||||||
SHOPWARE_API_ID: '%env(SHOPWARE_API_ID)%'
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# default configuration for services in *this* file
|
# default configuration for services in *this* file
|
||||||
|
@ -2,7 +2,7 @@ version: '3'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
###> doctrine/doctrine-bundle ###
|
###> doctrine/doctrine-bundle ###
|
||||||
# database:
|
database:
|
||||||
# ports:
|
ports:
|
||||||
# - "5432"
|
- "5432"
|
||||||
###< doctrine/doctrine-bundle ###
|
###< doctrine/doctrine-bundle ###
|
||||||
|
@ -18,3 +18,22 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- 8080:8080
|
- 8080:8080
|
||||||
|
|
||||||
|
###> doctrine/doctrine-bundle ###
|
||||||
|
database:
|
||||||
|
image: postgres:${POSTGRES_VERSION:-15}-alpine
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: ${POSTGRES_DB:-app}
|
||||||
|
# You should definitely change the password in production
|
||||||
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!}
|
||||||
|
POSTGRES_USER: ${POSTGRES_USER:-app}
|
||||||
|
volumes:
|
||||||
|
- database_data:/var/lib/postgresql/data:rw
|
||||||
|
# You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
|
||||||
|
# - ./docker/db/data:/var/lib/postgresql/data:rw
|
||||||
|
###< doctrine/doctrine-bundle ###
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
###> doctrine/doctrine-bundle ###
|
||||||
|
database_data:
|
||||||
|
###< doctrine/doctrine-bundle ###
|
||||||
|
@ -1,72 +1,79 @@
|
|||||||
/* open-sans-cyrillic-ext-400-normal*/
|
/* open-sans-cyrillic-ext-400-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./files/open-sans-cyrillic-ext-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff');
|
src: url(./files/open-sans-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/open-sans-cyrillic-ext-400-normal.woff) format('woff');
|
||||||
unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
|
unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
|
||||||
}
|
}
|
||||||
/* open-sans-cyrillic-400-normal*/
|
|
||||||
|
/* open-sans-cyrillic-400-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./files/open-sans-cyrillic-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff');
|
src: url(./files/open-sans-cyrillic-400-normal.woff2) format('woff2'), url(./files/open-sans-cyrillic-400-normal.woff) format('woff');
|
||||||
unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
|
unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
|
||||||
}
|
}
|
||||||
/* open-sans-greek-ext-400-normal*/
|
|
||||||
|
/* open-sans-greek-ext-400-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./files/open-sans-greek-ext-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff');
|
src: url(./files/open-sans-greek-ext-400-normal.woff2) format('woff2'), url(./files/open-sans-greek-ext-400-normal.woff) format('woff');
|
||||||
unicode-range: U+1F00-1FFF;
|
unicode-range: U+1F00-1FFF;
|
||||||
}
|
}
|
||||||
/* open-sans-greek-400-normal*/
|
|
||||||
|
/* open-sans-greek-400-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./files/open-sans-greek-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff');
|
src: url(./files/open-sans-greek-400-normal.woff2) format('woff2'), url(./files/open-sans-greek-400-normal.woff) format('woff');
|
||||||
unicode-range: U+0370-03FF;
|
unicode-range: U+0370-03FF;
|
||||||
}
|
}
|
||||||
/* open-sans-hebrew-400-normal*/
|
|
||||||
|
/* open-sans-hebrew-400-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./files/open-sans-hebrew-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff');
|
src: url(./files/open-sans-hebrew-400-normal.woff2) format('woff2'), url(./files/open-sans-hebrew-400-normal.woff) format('woff');
|
||||||
unicode-range: U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F;
|
unicode-range: U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F;
|
||||||
}
|
}
|
||||||
/* open-sans-vietnamese-400-normal*/
|
|
||||||
|
/* open-sans-vietnamese-400-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./files/open-sans-vietnamese-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff');
|
src: url(./files/open-sans-vietnamese-400-normal.woff2) format('woff2'), url(./files/open-sans-vietnamese-400-normal.woff) format('woff');
|
||||||
unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB;
|
unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
|
||||||
}
|
}
|
||||||
/* open-sans-latin-ext-400-normal*/
|
|
||||||
|
/* open-sans-latin-ext-400-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./files/open-sans-latin-ext-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff');
|
src: url(./files/open-sans-latin-ext-400-normal.woff2) format('woff2'), url(./files/open-sans-latin-ext-400-normal.woff) format('woff');
|
||||||
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
|
unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
|
||||||
}
|
}
|
||||||
/* open-sans-latin-400-normal*/
|
|
||||||
|
/* open-sans-latin-400-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./files/open-sans-latin-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff');
|
src: url(./files/open-sans-latin-400-normal.woff2) format('woff2'), url(./files/open-sans-latin-400-normal.woff) format('woff');
|
||||||
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
|
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
|
||||||
}
|
}
|
@ -1,72 +1,79 @@
|
|||||||
/* open-sans-cyrillic-ext-700-normal*/
|
/* open-sans-cyrillic-ext-700-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
src: url('./files/open-sans-cyrillic-ext-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff');
|
src: url(./files/open-sans-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/open-sans-cyrillic-ext-700-normal.woff) format('woff');
|
||||||
unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
|
unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
|
||||||
}
|
}
|
||||||
/* open-sans-cyrillic-700-normal*/
|
|
||||||
|
/* open-sans-cyrillic-700-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
src: url('./files/open-sans-cyrillic-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff');
|
src: url(./files/open-sans-cyrillic-700-normal.woff2) format('woff2'), url(./files/open-sans-cyrillic-700-normal.woff) format('woff');
|
||||||
unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
|
unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
|
||||||
}
|
}
|
||||||
/* open-sans-greek-ext-700-normal*/
|
|
||||||
|
/* open-sans-greek-ext-700-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
src: url('./files/open-sans-greek-ext-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff');
|
src: url(./files/open-sans-greek-ext-700-normal.woff2) format('woff2'), url(./files/open-sans-greek-ext-700-normal.woff) format('woff');
|
||||||
unicode-range: U+1F00-1FFF;
|
unicode-range: U+1F00-1FFF;
|
||||||
}
|
}
|
||||||
/* open-sans-greek-700-normal*/
|
|
||||||
|
/* open-sans-greek-700-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
src: url('./files/open-sans-greek-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff');
|
src: url(./files/open-sans-greek-700-normal.woff2) format('woff2'), url(./files/open-sans-greek-700-normal.woff) format('woff');
|
||||||
unicode-range: U+0370-03FF;
|
unicode-range: U+0370-03FF;
|
||||||
}
|
}
|
||||||
/* open-sans-hebrew-700-normal*/
|
|
||||||
|
/* open-sans-hebrew-700-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
src: url('./files/open-sans-hebrew-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff');
|
src: url(./files/open-sans-hebrew-700-normal.woff2) format('woff2'), url(./files/open-sans-hebrew-700-normal.woff) format('woff');
|
||||||
unicode-range: U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F;
|
unicode-range: U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F;
|
||||||
}
|
}
|
||||||
/* open-sans-vietnamese-700-normal*/
|
|
||||||
|
/* open-sans-vietnamese-700-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
src: url('./files/open-sans-vietnamese-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff');
|
src: url(./files/open-sans-vietnamese-700-normal.woff2) format('woff2'), url(./files/open-sans-vietnamese-700-normal.woff) format('woff');
|
||||||
unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB;
|
unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
|
||||||
}
|
}
|
||||||
/* open-sans-latin-ext-700-normal*/
|
|
||||||
|
/* open-sans-latin-ext-700-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
src: url('./files/open-sans-latin-ext-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff');
|
src: url(./files/open-sans-latin-ext-700-normal.woff2) format('woff2'), url(./files/open-sans-latin-ext-700-normal.woff) format('woff');
|
||||||
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
|
unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
|
||||||
}
|
}
|
||||||
/* open-sans-latin-700-normal*/
|
|
||||||
|
/* open-sans-latin-700-normal */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: var(--fontsource-display, swap);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
src: url('./files/open-sans-latin-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff');
|
src: url(./files/open-sans-latin-700-normal.woff2) format('woff2'), url(./files/open-sans-latin-700-normal.woff) format('woff');
|
||||||
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
|
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
|
||||||
}
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -25,12 +25,13 @@ function updateURL() {
|
|||||||
history.replaceState(null, null, newSearch);
|
history.replaceState(null, null, newSearch);
|
||||||
}
|
}
|
||||||
|
|
||||||
function graphQLFetcher(graphQLParams) {
|
function graphQLFetcher(graphQLParams, {headers}) {
|
||||||
return fetch(entrypoint, {
|
return fetch(entrypoint, {
|
||||||
method: 'post',
|
method: 'post',
|
||||||
headers: {
|
headers: {
|
||||||
'Accept': 'application/json',
|
'Accept': 'application/json',
|
||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json',
|
||||||
|
...headers
|
||||||
},
|
},
|
||||||
body: JSON.stringify(graphQLParams),
|
body: JSON.stringify(graphQLParams),
|
||||||
credentials: 'include'
|
credentials: 'include'
|
||||||
|
@ -42,6 +42,10 @@ header #logo img {
|
|||||||
background-color: rgba(40, 134, 144, .4)
|
background-color: rgba(40, 134, 144, .4)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.svg-icons {
|
||||||
|
position:absolute;width:0;height:0
|
||||||
|
}
|
||||||
|
|
||||||
/** WEBBY AND WEB **/
|
/** WEBBY AND WEB **/
|
||||||
|
|
||||||
.web, .webby {
|
.web, .webby {
|
||||||
|
82
src/Command/JtlExportCommand.php
Normal file
82
src/Command/JtlExportCommand.php
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Command;
|
||||||
|
|
||||||
|
use App\Helper\HiltesImport;
|
||||||
|
use App\Helper\Jtl;
|
||||||
|
use App\Repository\ProductRepository;
|
||||||
|
use App\Repository\StockRepository;
|
||||||
|
use App\Repository\WarehouseRepository;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
|
use Symfony\Component\Console\Attribute\AsCommand;
|
||||||
|
use Symfony\Component\Console\Command\Command;
|
||||||
|
use Symfony\Component\Console\Input\InputArgument;
|
||||||
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
use Symfony\Component\Console\Style\SymfonyStyle;
|
||||||
|
|
||||||
|
#[AsCommand(
|
||||||
|
name: 'jtl:export',
|
||||||
|
description: 'Create a export file for JTL Ameise',
|
||||||
|
)]
|
||||||
|
class JtlExportCommand extends Command
|
||||||
|
{
|
||||||
|
private $stockRepository;
|
||||||
|
private $warehouseRepository;
|
||||||
|
private $productRepository;
|
||||||
|
private $logger;
|
||||||
|
public function __construct(
|
||||||
|
ProductRepository $productRepository,
|
||||||
|
StockRepository $stockRepository,
|
||||||
|
WarehouseRepository $warehouseRepository,
|
||||||
|
LoggerInterface $logger
|
||||||
|
)
|
||||||
|
{
|
||||||
|
$this->productRepository = $productRepository;
|
||||||
|
$this->stockRepository = $stockRepository;
|
||||||
|
$this->warehouseRepository = $warehouseRepository;
|
||||||
|
$this->logger = $logger;
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function configure(): void
|
||||||
|
{
|
||||||
|
$this
|
||||||
|
->addArgument('arg1', InputArgument::OPTIONAL, 'Argument description')
|
||||||
|
->addOption('option1', null, InputOption::VALUE_NONE, 'Option description')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||||
|
{
|
||||||
|
$io = new SymfonyStyle($input, $output);
|
||||||
|
// $arg1 = $input->getArgument('arg1');
|
||||||
|
//
|
||||||
|
// if ($arg1) {
|
||||||
|
// $io->note(sprintf('You passed an argument: %s', $arg1));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if ($input->getOption('option1')) {
|
||||||
|
// // ...
|
||||||
|
// }
|
||||||
|
|
||||||
|
$io = new SymfonyStyle($input, $output);
|
||||||
|
|
||||||
|
$io->success('Start JTL Export');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var HiltesImport
|
||||||
|
*/
|
||||||
|
$jtl = new Jtl($this->productRepository,$this->warehouseRepository,$this->stockRepository,$this->logger);
|
||||||
|
|
||||||
|
$data = $jtl->getProducts();
|
||||||
|
$jtl->createExportFile($data);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$io->success('Ende JTL Export');
|
||||||
|
|
||||||
|
return Command::SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
60
src/Command/JtlImportCommand.php
Normal file
60
src/Command/JtlImportCommand.php
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Command;
|
||||||
|
|
||||||
|
use Symfony\Component\Console\Attribute\AsCommand;
|
||||||
|
use Symfony\Component\Console\Command\Command;
|
||||||
|
use Symfony\Component\Console\Input\InputArgument;
|
||||||
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
use Symfony\Component\Console\Style\SymfonyStyle;
|
||||||
|
use Symfony\Component\Notifier\Chatter;
|
||||||
|
use Symfony\Component\Notifier\Message\ChatMessage;
|
||||||
|
use Symfony\Component\Notifier\ChatterInterface;
|
||||||
|
use Symfony\Component\Notifier\Transport;
|
||||||
|
|
||||||
|
#[AsCommand(
|
||||||
|
name: 'jtl:import',
|
||||||
|
description: 'Add a short description for your command',
|
||||||
|
)]
|
||||||
|
class JtlImportCommand extends Command
|
||||||
|
{
|
||||||
|
protected function configure(): void
|
||||||
|
{
|
||||||
|
$this
|
||||||
|
->addArgument('arg1', InputArgument::OPTIONAL, 'Argument description')
|
||||||
|
->addOption('option1', null, InputOption::VALUE_NONE, 'Option description')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||||
|
{
|
||||||
|
$io = new SymfonyStyle($input, $output);
|
||||||
|
$arg1 = $input->getArgument('arg1');
|
||||||
|
|
||||||
|
if ($arg1) {
|
||||||
|
$io->note(sprintf('You passed an argument: %s', $arg1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($input->getOption('option1')) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
$chatter = new Chatter(new Transport('xoxb-1234-56789abcdefghijklmnopqrstuv'));
|
||||||
|
|
||||||
|
|
||||||
|
$message = (new ChatMessage('You got a new invoice for 15 EUR.'))
|
||||||
|
// if not set explicitly, the message is sent to the
|
||||||
|
// default transport (the first one configured)
|
||||||
|
->transport('slack');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$sentMessage = $chatter->send($message);
|
||||||
|
|
||||||
|
$io->success('You have a new command! Now make it your own! Pass --help to see your options.');
|
||||||
|
|
||||||
|
return Command::SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
@ -3,7 +3,7 @@
|
|||||||
namespace App\Command;
|
namespace App\Command;
|
||||||
|
|
||||||
use App\Controller\ShopwareController;
|
use App\Controller\ShopwareController;
|
||||||
use App\Entity\Orders;
|
use App\Entity\Order;
|
||||||
use App\Helper\Shopware;
|
use App\Helper\Shopware;
|
||||||
use App\Repository\OrdersRepository;
|
use App\Repository\OrdersRepository;
|
||||||
|
|
||||||
@ -32,17 +32,17 @@ use Vin\ShopwareSdk\Factory\RepositoryFactory;
|
|||||||
)]
|
)]
|
||||||
class SwGetOrdersCommand extends Command
|
class SwGetOrdersCommand extends Command
|
||||||
{
|
{
|
||||||
private $ordersRepository;
|
private $orderRepository;
|
||||||
private $logger;
|
private $logger;
|
||||||
private $sw;
|
private $sw;
|
||||||
private $orderData;
|
private $orderData;
|
||||||
|
|
||||||
|
|
||||||
public function __construct(OrdersRepository $ordersRepository, LoggerInterface $logger)
|
public function __construct(OrdersRepository $orderRepository, LoggerInterface $logger)
|
||||||
{
|
{
|
||||||
$this->ordersRepository = $ordersRepository;
|
$this->orderRepository = $orderRepository;
|
||||||
$this->logger = $logger;
|
$this->logger = $logger;
|
||||||
$this->sw = new Shopware();
|
$this->sw = new Shopware($logger);
|
||||||
|
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
}
|
}
|
||||||
@ -82,7 +82,7 @@ class SwGetOrdersCommand extends Command
|
|||||||
*/
|
*/
|
||||||
private function getOrders():array
|
private function getOrders():array
|
||||||
{
|
{
|
||||||
return $this->ordersRepository->findAll();
|
return $this->orderRepository->findAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -121,4 +121,4 @@ class SwGetOrdersCommand extends Command
|
|||||||
$orderData->setStatus = 1;
|
$orderData->setStatus = 1;
|
||||||
$this->ordersRepository->add($orderData, true);
|
$this->ordersRepository->add($orderData, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,6 +4,7 @@ namespace App\Entity;
|
|||||||
|
|
||||||
use ApiPlatform\Metadata\ApiResource;
|
use ApiPlatform\Metadata\ApiResource;
|
||||||
use App\Repository\ProductRepository;
|
use App\Repository\ProductRepository;
|
||||||
|
use App\Repository\StockRepository;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
|
||||||
@ -93,4 +94,11 @@ class Product
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
public function setStock(Stock $stock): self
|
||||||
|
{
|
||||||
|
|
||||||
|
$this->stock = $stock;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
52
src/EventSubscriber/SlackNotifySubscriber.php
Normal file
52
src/EventSubscriber/SlackNotifySubscriber.php
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\EventSubscriber;
|
||||||
|
|
||||||
|
use ApiPlatform\Symfony\EventListener\EventPriorities;
|
||||||
|
use App\Helper\Slack;
|
||||||
|
use App\Entity\Order;
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpKernel\Event\ViewEvent;
|
||||||
|
use Symfony\Component\HttpKernel\KernelEvents;
|
||||||
|
use Symfony\Component\Notifier\ChatterInterface;
|
||||||
|
|
||||||
|
class SlackNotifySubscriber implements EventSubscriberInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Slack
|
||||||
|
*/
|
||||||
|
public $slack;
|
||||||
|
|
||||||
|
public function __construct(ChatterInterface $chatter)
|
||||||
|
{
|
||||||
|
$this->slack = new Slack($chatter);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getSubscribedEvents(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
KernelEvents::VIEW => ['sendSlack', EventPriorities::POST_WRITE],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ViewEvent $event
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function sendSlack(ViewEvent $event): void
|
||||||
|
{
|
||||||
|
$order = $event->getControllerResult();
|
||||||
|
$method = $event->getRequest()->getMethod();
|
||||||
|
|
||||||
|
//wenn es keine Bestellung ist oder es kein POST Request ist, dann return
|
||||||
|
if (!$order instanceof Order || Request::METHOD_POST !== $method) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$msg = "Order {$order->getId()} has been created: {$order->getStatus()}";
|
||||||
|
$this->slack->sendMessage($msg);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
85
src/Helper/Jtl.php
Normal file
85
src/Helper/Jtl.php
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Helper;
|
||||||
|
|
||||||
|
use App\Repository\ProductRepository;
|
||||||
|
use App\Repository\StockRepository;
|
||||||
|
use App\Repository\WarehouseRepository;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
|
use League\Csv\Writer;
|
||||||
|
|
||||||
|
|
||||||
|
class Jtl
|
||||||
|
{
|
||||||
|
private $productRepository;
|
||||||
|
private $stockRepository;
|
||||||
|
private $warehouseRepository;
|
||||||
|
private $logger;
|
||||||
|
|
||||||
|
public function __construct(ProductRepository $productRepository,WarehouseRepository $warehouseRepository,StockRepository $stockRepository, LoggerInterface $logger)
|
||||||
|
{
|
||||||
|
$this->productRepository = $productRepository;
|
||||||
|
$this->warehouseRepository = $warehouseRepository;
|
||||||
|
$this->stockRepository = $stockRepository;
|
||||||
|
$this->logger = $logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holt alle Produkte und deren Lagerbestände
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getProducts(): array
|
||||||
|
{
|
||||||
|
$r = $this->productRepository->findAll();
|
||||||
|
|
||||||
|
$data = array();
|
||||||
|
|
||||||
|
foreach($r as $product){
|
||||||
|
$stock = $this->stockRepository->findBy(['product_id'=>$product->getId()]);
|
||||||
|
|
||||||
|
if($stock){
|
||||||
|
foreach($stock as $s){
|
||||||
|
$warehouse = $s->getWarehouse();
|
||||||
|
$warehouseId = $warehouse->getId();
|
||||||
|
|
||||||
|
$data[$product->getId().$warehouseId] = [
|
||||||
|
'gtin' => $product->getGtin(),
|
||||||
|
'stock' => $s->getInstock(),
|
||||||
|
'warehouse' => $warehouseId
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$data[$product->getId()] = [
|
||||||
|
'gtin' => $product->getGtin(),
|
||||||
|
'stock' => 0,
|
||||||
|
'warehouse' => 0
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->logger->info('No stock for product '.$product->getId());
|
||||||
|
}
|
||||||
|
// dump($data);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $data
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function createExportFile($data): void
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$writer = Writer::createFromPath('./jtl/cds-export.csv', 'x');
|
||||||
|
$writer->insertAll(new \ArrayIterator($data));
|
||||||
|
|
||||||
|
}catch (\Exception $e){
|
||||||
|
$this->logger->error($e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
32
src/Helper/Slack.php
Normal file
32
src/Helper/Slack.php
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Helper;
|
||||||
|
|
||||||
|
use Symfony\Component\Notifier\Chatter;
|
||||||
|
use Symfony\Component\Notifier\ChatterInterface;
|
||||||
|
use Symfony\Component\Notifier\Exception\TransportExceptionInterface;
|
||||||
|
use Symfony\Component\Notifier\Message\ChatMessage;
|
||||||
|
|
||||||
|
class Slack
|
||||||
|
{
|
||||||
|
private $chatter;
|
||||||
|
|
||||||
|
public function __construct(ChatterInterface $chatter)
|
||||||
|
{
|
||||||
|
$this->chatter = $chatter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function sendMessage(String $message): void
|
||||||
|
{
|
||||||
|
$message = (new ChatMessage($message))
|
||||||
|
->transport('slack');
|
||||||
|
|
||||||
|
try {
|
||||||
|
$sentMessage = $this->chatter->send($message);
|
||||||
|
dump($sentMessage);
|
||||||
|
} catch (TransportExceptionInterface $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
44
symfony.lock
44
symfony.lock
@ -1,20 +1,19 @@
|
|||||||
{
|
{
|
||||||
"api-platform/core": {
|
"api-platform/core": {
|
||||||
"version": "2.6",
|
"version": "3.1",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
"repo": "github.com/symfony/recipes",
|
"repo": "github.com/symfony/recipes",
|
||||||
"branch": "main",
|
"branch": "main",
|
||||||
"version": "2.5",
|
"version": "3.0",
|
||||||
"ref": "05b57782a78c21a664a42055dc11cf1954ca36bb"
|
"ref": "0330386d716d3eecc52ee5ac66976e733eb8f961"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"config/packages/api_platform.yaml",
|
|
||||||
"config/routes/api_platform.yaml",
|
"config/routes/api_platform.yaml",
|
||||||
"src/Entity/.gitignore"
|
"src/ApiResource/.gitignore"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"doctrine/annotations": {
|
"doctrine/annotations": {
|
||||||
"version": "1.13",
|
"version": "1.14",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
"repo": "github.com/symfony/recipes",
|
"repo": "github.com/symfony/recipes",
|
||||||
"branch": "main",
|
"branch": "main",
|
||||||
@ -23,7 +22,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"doctrine/doctrine-bundle": {
|
"doctrine/doctrine-bundle": {
|
||||||
"version": "2.8",
|
"version": "2.9",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
"repo": "github.com/symfony/recipes",
|
"repo": "github.com/symfony/recipes",
|
||||||
"branch": "main",
|
"branch": "main",
|
||||||
@ -50,7 +49,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"nelmio/cors-bundle": {
|
"nelmio/cors-bundle": {
|
||||||
"version": "2.2",
|
"version": "2.3",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
"repo": "github.com/symfony/recipes",
|
"repo": "github.com/symfony/recipes",
|
||||||
"branch": "main",
|
"branch": "main",
|
||||||
@ -62,7 +61,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"phpunit/phpunit": {
|
"phpunit/phpunit": {
|
||||||
"version": "9.5",
|
"version": "9.6",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
"repo": "github.com/symfony/recipes",
|
"repo": "github.com/symfony/recipes",
|
||||||
"branch": "main",
|
"branch": "main",
|
||||||
@ -112,7 +111,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"symfony/flex": {
|
"symfony/flex": {
|
||||||
"version": "2.2",
|
"version": "2.3",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
"repo": "github.com/symfony/recipes",
|
"repo": "github.com/symfony/recipes",
|
||||||
"branch": "main",
|
"branch": "main",
|
||||||
@ -143,7 +142,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"symfony/maker-bundle": {
|
"symfony/maker-bundle": {
|
||||||
"version": "1.43",
|
"version": "1.48",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
"repo": "github.com/symfony/recipes",
|
"repo": "github.com/symfony/recipes",
|
||||||
"branch": "main",
|
"branch": "main",
|
||||||
@ -163,8 +162,20 @@
|
|||||||
"config/packages/monolog.yaml"
|
"config/packages/monolog.yaml"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"symfony/notifier": {
|
||||||
|
"version": "6.1",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "5.0",
|
||||||
|
"ref": "c31585e252b32fe0e1f30b1f256af553f4a06eb9"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/notifier.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
"symfony/phpunit-bridge": {
|
"symfony/phpunit-bridge": {
|
||||||
"version": "6.2",
|
"version": "6.3",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
"repo": "github.com/symfony/recipes",
|
"repo": "github.com/symfony/recipes",
|
||||||
"branch": "main",
|
"branch": "main",
|
||||||
@ -203,6 +214,15 @@
|
|||||||
"config/packages/security.yaml"
|
"config/packages/security.yaml"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"symfony/slack-notifier": {
|
||||||
|
"version": "6.1",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "5.2",
|
||||||
|
"ref": "192bc241a3095c6861353e5a7a652ad35659ca92"
|
||||||
|
}
|
||||||
|
},
|
||||||
"symfony/twig-bundle": {
|
"symfony/twig-bundle": {
|
||||||
"version": "6.1",
|
"version": "6.1",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
|
20
templates/slack/index.html.twig
Normal file
20
templates/slack/index.html.twig
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{% extends 'base.html.twig' %}
|
||||||
|
|
||||||
|
{% block title %}Hello SlackController!{% endblock %}
|
||||||
|
|
||||||
|
{% block body %}
|
||||||
|
<style>
|
||||||
|
.example-wrapper { margin: 1em auto; max-width: 800px; width: 95%; font: 18px/1.5 sans-serif; }
|
||||||
|
.example-wrapper code { background: #F5F5F5; padding: 2px 6px; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="example-wrapper">
|
||||||
|
<h1>Hello {{ controller_name }}! ✅</h1>
|
||||||
|
|
||||||
|
This friendly message is coming from:
|
||||||
|
<ul>
|
||||||
|
<li>Your controller at <code><a href="{{ '/Users/markomoller/code/CdsConnector/src/Controller/SlackController.php'|file_link(0) }}">src/Controller/SlackController.php</a></code></li>
|
||||||
|
<li>Your template at <code><a href="{{ '/Users/markomoller/code/CdsConnector/templates/slack/index.html.twig'|file_link(0) }}">templates/slack/index.html.twig</a></code></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
15
tests/EventSubscriber/SlackNotifySubscriberTest.php
Normal file
15
tests/EventSubscriber/SlackNotifySubscriberTest.php
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Tests\EventSubscriber;
|
||||||
|
|
||||||
|
use App\EventSubscriber\SlackNotifySubscriber;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class SlackNotifySubscriberTest extends TestCase
|
||||||
|
{
|
||||||
|
|
||||||
|
public function testSendSlack()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -9,7 +9,3 @@ if (file_exists(dirname(__DIR__).'/config/bootstrap.php')) {
|
|||||||
} elseif (method_exists(Dotenv::class, 'bootEnv')) {
|
} elseif (method_exists(Dotenv::class, 'bootEnv')) {
|
||||||
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
|
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_SERVER['APP_DEBUG']) {
|
|
||||||
umask(0000);
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user