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
|
||||
#
|
||||
# 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="postgresql://symfony:ChangeMe@127.0.0.1:5432/app?serverVersion=13&charset=utf8"
|
||||
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8&charset=utf8mb4"
|
||||
DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=15&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="ddev-flex-web"
|
||||
SHOPWARE_API_URL="http://flex.ddev.site/"
|
||||
SHOPWARE_API_ID="SWIAB21GBEHEU0DLVKNIRE5CDG"
|
||||
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.result.cache
|
||||
###< 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/phpstan/phpdoc-parser" />
|
||||
<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/monolog/monolog" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/nikic/php-parser" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/twig/twig" />
|
||||
<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/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/event-dispatcher" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/cache" />
|
||||
<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/phpdocumentor/reflection-docblock" />
|
||||
<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/phpdocumentor/reflection-common" />
|
||||
<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/environment" />
|
||||
<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/deprecations" />
|
||||
<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/orm" />
|
||||
<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/css-selector" />
|
||||
<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/maker-bundle" />
|
||||
<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/browser-kit" />
|
||||
<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>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
|
@ -8,13 +8,13 @@
|
||||
<jdbc-url>jdbc:mysql://127.0.0.1:3306</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</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>
|
||||
<synchronize>true</synchronize>
|
||||
<configured-by-url>true</configured-by-url>
|
||||
<remarks>DDEV generated data source</remarks>
|
||||
<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>
|
||||
</data-source>
|
||||
</component>
|
||||
|
@ -28,32 +28,22 @@
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpstan/phpdoc-parser" />
|
||||
<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/monolog/monolog" />
|
||||
<path value="$PROJECT_DIR$/vendor/nikic/php-parser" />
|
||||
<path value="$PROJECT_DIR$/vendor/twig/twig" />
|
||||
<path value="$PROJECT_DIR$/vendor/sensio/framework-extra-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/event-dispatcher" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/cache" />
|
||||
<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/phpdocumentor/reflection-docblock" />
|
||||
<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/phpdocumentor/reflection-common" />
|
||||
<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/environment" />
|
||||
<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/deprecations" />
|
||||
<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/orm" />
|
||||
<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/css-selector" />
|
||||
<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/maker-bundle" />
|
||||
<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/browser-kit" />
|
||||
<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>
|
||||
</component>
|
||||
<component name="PhpInterpreters">
|
||||
<interpreters>
|
||||
<interpreter id="64ff8bd0-da32-4db6-9020-b3f9551fc212" name="DDEV" home="docker-compose://DATA" 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">
|
||||
<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" VALID="true" RUN_AS_ROOT_VIA_SUDO="false" DOCKER_ACCOUNT_NAME="Docker" DOCKER_COMPOSE_SERVICE_NAME="web" DOCKER_REMOTE_PROJECT_PATH="/opt/project">
|
||||
<PathMappingSettings>
|
||||
<option name="pathMappings">
|
||||
<list>
|
||||
|
@ -15,6 +15,9 @@ Connector zwischen Hiltes und Shopware 6
|
||||
Installiere Abhängigkeiten
|
||||
> make install
|
||||
|
||||
Erstelle .env.local Datei und füge folgendes ein:
|
||||
> DATABASE_URL=mysql://root:root@mysql:3306/cds_connector
|
||||
|
||||
Starte MySQL-Server:
|
||||
> docker compose up
|
||||
|
||||
|
@ -7,11 +7,12 @@
|
||||
"php": ">=8.1",
|
||||
"ext-ctype": "*",
|
||||
"ext-iconv": "*",
|
||||
"api-platform/core": "^2.6",
|
||||
"api-platform/core": "^3.1",
|
||||
"doctrine/annotations": "^1.0",
|
||||
"doctrine/doctrine-bundle": "^2.7",
|
||||
"doctrine/doctrine-migrations-bundle": "^3.2",
|
||||
"doctrine/orm": "^2.12",
|
||||
"league/csv": "^9.0",
|
||||
"nelmio/cors-bundle": "^2.2",
|
||||
"phpdocumentor/reflection-docblock": "^5.3",
|
||||
"phpstan/phpdoc-parser": "^1.6",
|
||||
@ -24,23 +25,24 @@
|
||||
"symfony/flex": "^2",
|
||||
"symfony/form": "6.1.*",
|
||||
"symfony/framework-bundle": "6.1.*",
|
||||
"symfony/notifier": "6.1.*",
|
||||
"symfony/property-access": "6.1.*",
|
||||
"symfony/property-info": "6.1.*",
|
||||
"symfony/proxy-manager-bridge": "6.1.*",
|
||||
"symfony/runtime": "6.1.*",
|
||||
"symfony/security-bundle": "6.1.*",
|
||||
"symfony/serializer": "6.1.*",
|
||||
"symfony/slack-notifier": "6.1.*",
|
||||
"symfony/twig-bundle": "6.1.*",
|
||||
"symfony/validator": "6.1.*",
|
||||
"symfony/yaml": "6.1.*",
|
||||
"vin-sw/shopware-sdk": "^1.4"
|
||||
"symfony/yaml": "6.1.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9",
|
||||
"symfony/browser-kit": "6.1.*",
|
||||
"symfony/css-selector": "6.1.*",
|
||||
"symfony/debug-bundle": "6.1.*",
|
||||
"symfony/maker-bundle": "^1.43",
|
||||
"symfony/maker-bundle": "^1.48",
|
||||
"symfony/monolog-bundle": "^3.0",
|
||||
"symfony/phpunit-bridge": "^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\SecurityBundle\SecurityBundle::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],
|
||||
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
|
||||
framework:
|
||||
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
|
||||
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
|
||||
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
|
||||
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:
|
||||
# default configuration for services in *this* file
|
||||
|
@ -2,7 +2,7 @@ version: '3'
|
||||
|
||||
services:
|
||||
###> doctrine/doctrine-bundle ###
|
||||
# database:
|
||||
# ports:
|
||||
# - "5432"
|
||||
database:
|
||||
ports:
|
||||
- "5432"
|
||||
###< doctrine/doctrine-bundle ###
|
||||
|
@ -18,3 +18,22 @@ services:
|
||||
restart: always
|
||||
ports:
|
||||
- 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-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
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;
|
||||
}
|
||||
/* open-sans-cyrillic-400-normal*/
|
||||
|
||||
/* open-sans-cyrillic-400-normal */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
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;
|
||||
}
|
||||
/* open-sans-greek-ext-400-normal*/
|
||||
|
||||
/* open-sans-greek-ext-400-normal */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
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;
|
||||
}
|
||||
/* open-sans-greek-400-normal*/
|
||||
|
||||
/* open-sans-greek-400-normal */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
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;
|
||||
}
|
||||
/* open-sans-hebrew-400-normal*/
|
||||
|
||||
/* open-sans-hebrew-400-normal */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
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;
|
||||
}
|
||||
/* open-sans-vietnamese-400-normal*/
|
||||
|
||||
/* open-sans-vietnamese-400-normal */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
font-weight: 400;
|
||||
src: url('./files/open-sans-vietnamese-400-normal.woff2') format('woff2'), url('./files/open-sans-all-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;
|
||||
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+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-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
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');
|
||||
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;
|
||||
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-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-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
font-weight: 400;
|
||||
src: url('./files/open-sans-latin-400-normal.woff2') format('woff2'), url('./files/open-sans-all-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;
|
||||
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+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-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
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;
|
||||
}
|
||||
/* open-sans-cyrillic-700-normal*/
|
||||
|
||||
/* open-sans-cyrillic-700-normal */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
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;
|
||||
}
|
||||
/* open-sans-greek-ext-700-normal*/
|
||||
|
||||
/* open-sans-greek-ext-700-normal */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
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;
|
||||
}
|
||||
/* open-sans-greek-700-normal*/
|
||||
|
||||
/* open-sans-greek-700-normal */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
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;
|
||||
}
|
||||
/* open-sans-hebrew-700-normal*/
|
||||
|
||||
/* open-sans-hebrew-700-normal */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
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;
|
||||
}
|
||||
/* open-sans-vietnamese-700-normal*/
|
||||
|
||||
/* open-sans-vietnamese-700-normal */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
font-weight: 700;
|
||||
src: url('./files/open-sans-vietnamese-700-normal.woff2') format('woff2'), url('./files/open-sans-all-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;
|
||||
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+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-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
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');
|
||||
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;
|
||||
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-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-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
font-display: var(--fontsource-display, swap);
|
||||
font-weight: 700;
|
||||
src: url('./files/open-sans-latin-700-normal.woff2') format('woff2'), url('./files/open-sans-all-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;
|
||||
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+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);
|
||||
}
|
||||
|
||||
function graphQLFetcher(graphQLParams) {
|
||||
function graphQLFetcher(graphQLParams, {headers}) {
|
||||
return fetch(entrypoint, {
|
||||
method: 'post',
|
||||
headers: {
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/json'
|
||||
'Content-Type': 'application/json',
|
||||
...headers
|
||||
},
|
||||
body: JSON.stringify(graphQLParams),
|
||||
credentials: 'include'
|
||||
|
@ -42,6 +42,10 @@ header #logo img {
|
||||
background-color: rgba(40, 134, 144, .4)
|
||||
}
|
||||
|
||||
.svg-icons {
|
||||
position:absolute;width:0;height:0
|
||||
}
|
||||
|
||||
/** WEBBY AND WEB **/
|
||||
|
||||
.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;
|
||||
|
||||
use App\Controller\ShopwareController;
|
||||
use App\Entity\Orders;
|
||||
use App\Entity\Order;
|
||||
use App\Helper\Shopware;
|
||||
use App\Repository\OrdersRepository;
|
||||
|
||||
@ -32,17 +32,17 @@ use Vin\ShopwareSdk\Factory\RepositoryFactory;
|
||||
)]
|
||||
class SwGetOrdersCommand extends Command
|
||||
{
|
||||
private $ordersRepository;
|
||||
private $orderRepository;
|
||||
private $logger;
|
||||
private $sw;
|
||||
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->sw = new Shopware();
|
||||
$this->sw = new Shopware($logger);
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
@ -82,7 +82,7 @@ class SwGetOrdersCommand extends Command
|
||||
*/
|
||||
private function getOrders():array
|
||||
{
|
||||
return $this->ordersRepository->findAll();
|
||||
return $this->orderRepository->findAll();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4,6 +4,7 @@ namespace App\Entity;
|
||||
|
||||
use ApiPlatform\Metadata\ApiResource;
|
||||
use App\Repository\ProductRepository;
|
||||
use App\Repository\StockRepository;
|
||||
use Doctrine\DBAL\Types\Types;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
|
||||
@ -93,4 +94,11 @@ class Product
|
||||
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": {
|
||||
"version": "2.6",
|
||||
"version": "3.1",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "2.5",
|
||||
"ref": "05b57782a78c21a664a42055dc11cf1954ca36bb"
|
||||
"version": "3.0",
|
||||
"ref": "0330386d716d3eecc52ee5ac66976e733eb8f961"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/api_platform.yaml",
|
||||
"config/routes/api_platform.yaml",
|
||||
"src/Entity/.gitignore"
|
||||
"src/ApiResource/.gitignore"
|
||||
]
|
||||
},
|
||||
"doctrine/annotations": {
|
||||
"version": "1.13",
|
||||
"version": "1.14",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
@ -23,7 +22,7 @@
|
||||
}
|
||||
},
|
||||
"doctrine/doctrine-bundle": {
|
||||
"version": "2.8",
|
||||
"version": "2.9",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
@ -50,7 +49,7 @@
|
||||
]
|
||||
},
|
||||
"nelmio/cors-bundle": {
|
||||
"version": "2.2",
|
||||
"version": "2.3",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
@ -62,7 +61,7 @@
|
||||
]
|
||||
},
|
||||
"phpunit/phpunit": {
|
||||
"version": "9.5",
|
||||
"version": "9.6",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
@ -112,7 +111,7 @@
|
||||
]
|
||||
},
|
||||
"symfony/flex": {
|
||||
"version": "2.2",
|
||||
"version": "2.3",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
@ -143,7 +142,7 @@
|
||||
]
|
||||
},
|
||||
"symfony/maker-bundle": {
|
||||
"version": "1.43",
|
||||
"version": "1.48",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
@ -163,8 +162,20 @@
|
||||
"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": {
|
||||
"version": "6.2",
|
||||
"version": "6.3",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
@ -203,6 +214,15 @@
|
||||
"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": {
|
||||
"version": "6.1",
|
||||
"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')) {
|
||||
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
|
||||
}
|
||||
|
||||
if ($_SERVER['APP_DEBUG']) {
|
||||
umask(0000);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user