# Vorbereitung Für die Lösung der Aufgaben benötigst du lediglich einen Editor. Es ist empfohlen eine Magento-Instanz zu erstellen, um entsprechende Code-Vervollständigung in der IDE nutzen zu können. Wenn Du Deinen Code auf Lauffähigkeit testen möchtest, so solltest du auch die optionalen Setup-Schritt durchführen. ## Setup Requirements - PHP 7.3 oder höher - composer - **Optional** MySQL 5.7 oder höher - **Optional** ElasticSearch 7 - **Optional** Web-Server: nginx oder Apache ## Magento-Projekt erstellen Erzeuge ein neues Projekt im Verzeichnis `./magento` mit den folgenden Befehlen ```bash composer create-project --repository=https://repo.magento.com/ magento/project-community-edition magento ``` ### **Optional**: Führe die Installation von Magento durch ```bash mysql -e "DROP DATABASE IF EXISTS ws_code_design" mysql -e "CREATE DATABASE ws_code_design" cd magento bin/magento setup:install \ --base-url="http://ws-code-design.test/" \ --base-url-secure="https://ws-code-design.test/" \ --use-secure-admin=1 --use-rewrites=1 --use-secure=1 \ --db-host=localhost --db-name=ws_code_design --db-user=root --db-password=root \ --backend-frontname=admin \ --admin-firstname=admin --admin-lastname=admin --admin-email=v.justus@techdivision.com \ --admin-user=admin --admin-password=admin123 \ --language=en_US --currency=EUR --timezone=Europe/Berlin \ --elasticsearch-host=localhost --elasticsearch-port=9207 \ --cleanup-database cd - ``` Erstelle eine vHost-Konfiguration für die soeben erstellte Magento-Instanz. # Aufgaben Die folgenden Aufgaben werden in kleinen Gruppen bearbeitet. Die Lösung wird anschließend von der Gruppe vorgestellt. Die Aufgabe muss theoretisch gelöst werden. Entscheidend ist dabei die Strukturierung des Codes – nicht dessen Funktionalität. Nach Möglichkeit sollte der Code weitestgehend geschrieben, jedoch nicht getestet werden. --- ## Aufgabe 1 **WER** Als Shop-Betreiber möchte ich<br> **WAS** meine Bestellungen exportieren können<br> **WARUM** um die Daten in einem externen System weiterverarbeiten zu können **UACs:** 1. Mit dem Befehl `bin/magento workshop:order:export <order-id>` kann ich eine Bestellung exportieren 2. Die Exporte werden im Verzeichnis `var/export/order/` abgelegt 3. Der Export erfolgt als JSON-Datei mit dem Dateinamen `<order-id>.json` **INFO:** Das JSON-Format ist näher definiert und kann vom Entwickler frei gewählt werden. Es müssen alle relevanten Informationen der Bestellung (Lieferadresse, Rechnungsadresse, Positionen und Summen) enthalten sein. _**Vorlage:** Nutze für Dein Modul die Vorlage `./module-template`. Kopiere dazu den Inhalt des Ordners in das Verzeichnis `./magento/app/code`._ ```bash cp -R ./module-template/* ./magento ``` _**Zeit:** 45 min_ --- ## Aufgabe 2 **WER** Als Shop-Betreiber möchte ich<br> **WAS** meine Bestellungen über die Admin-UI von Magento exportieren können<br> **WARUM** um die Daten in einem externen System weiterzuverarbeiten<br> **Blocked by:** Aufgabe 1 **UACs:** 1. Im Admin UI von Magento befindet sich auf der Detailansicht einer Bestellung eine zusätzlicher Button mit der Aufschrift “Export [JSON]” 2. Beim Klick auf den Button, wird der Export der Bestellung durchgeführt, dabei wird die Logik aus Aufgabe 1 wiederverwendet 3. Der Benutzer bekommt die Meldung zu sehen, dass die Bestellung exportiert wurde. _**Vorlage:** Nutze das von Dir in Aufgabe 1 erstellt Modul._<br> _**Zeit:** 30 min_ --- ## Aufgabe 2-a Führe die Aufgabe 2 erneut durch, verwende dabei jedoch die Musterlösung der Aufgabe 1 als Ausgangslage. _**Zeit:** 30 min_ --- ## Aufgabe 3 **WER** Als Shop-Betreiber möchte ich, dass<br> **WAS** meine Bestellungen automatisch alle 15 Minuten exportiert<br> **WARUM** um die Daten in einem externen System weiterverarbeiten zu können<br> **Blocked by:** Aufgabe 1 **UACs:** 1. Es existiert ein Cronjob, welcher alle 15 Minuten ausgeführt wird 2. Der Cronjob exportiert alle Bestellungen, der letzten 15 Minuten 3. Für den Export wird die Logik aus Aufgabe 1 wiederverwendet _**Vorlage:** Nutze das von Dir in Aufgabe 1 erstellt Modul._<br> _**Zeit:** 30 min_ --- ## Aufgabe 3-a Führe die Aufgabe 3 erneut durch, verwende dabei jedoch die Musterlösung der Aufgabe 1 als Ausgangslage. _**Zeit:** 30 min_ ---