Guten Morgen,
ich versuche gerade, unsere zusätzlichen (variablen, vom Kunden änderbaren) Zusatzfelder (z.B: Gravur) in die Order zu übernehmen.
Momentan habe ich 3 zusätzliche Tabellen:
AdditionalProductData (Standard-Werte für das Produkt)
AdditionalBasketData (die vom Kunden geänderten Werte)
und
AdditionalOrderData, in der die geänderten Werte aus dem Warenkorb dann in die Order übernommen werden sollen.
Um die Daten in die AdditionalOrderData zu schreiben zu können, brauche ich natürlich irgendeinen Einsprungpunkt.
Gefunden habe ich folgendes:
Event OrderPlacedEvent (hat leider nur die Referenz auf die Order als Parameter und ist ausserdem zu spät, da in der Order-EMail die Daten auch stehen sollen, die ein paar Zeilen weiter oben mit FinalizeOrderPlacement angestossen wird)
Wäre es möglich einen zusätzlichen Event einzufügen, der z.B. in OrderProcessingService.PlaceOrder.cs das CartItem und das neu hinzugefügte OrderItem als Parameter übergeben?
Dann kann ich über die alte ShoppingCartItem Id und die GUID im OrderItem eine eindeutige Zuordnung vornehmen und die GUID zurückschreiben in meine Cart-Daten (denn die OrderItems sind zu dem Zeitpunkt noch nicht geschrieben OrderProcessingService.PlaceOrder.cs#L80).
Wenn es da eine bessere Methode gibt (inkl der Moglichkeit ShoppingCartItem Id <-> OrderItem Id zu referenzieren), ich bin offen für Vorschläge.
Wo es besser gelöst wurde:
Wenn man als Gast etwas in den Warenkorb legt und sich dann einloggt wird der Warenkorb migriert.
Die alten sowie die neuen Warenkorbpositionen sind in die Datenbank geschrieben wenn der Event MigrateShoppingCartEvent ausgelöst wird. Das macht es mir einfach auch meine Daten zu migrieren.
Beste Grüße
Chris