Bladeren bron

feat(core): Improve OrderEvent and publish for order modify (#3594)

Martin Grolmus 6 maanden geleden
bovenliggende
commit
5a27b14687

+ 1 - 1
packages/core/src/event-bus/events/customer-event.ts

@@ -30,7 +30,7 @@ export class CustomerEvent extends VendureEntityEvent<Customer, CustomerInputTyp
     }
 
     /**
-     * Return an customer field to become compatible with the
+     * Return a customer field to become compatible with the
      * deprecated old version of CustomerEvent
      * @deprecated Use `entity` instead
      * @since 1.4

+ 24 - 8
packages/core/src/event-bus/events/order-event.ts

@@ -1,6 +1,11 @@
-import { RequestContext } from '../../api/common/request-context';
-import { Order } from '../../entity';
-import { VendureEvent } from '../vendure-event';
+import { ModifyOrderInput } from '@vendure/common/lib/generated-types';
+import { ID } from '@vendure/common/lib/shared-types';
+
+import { RequestContext } from '../../api';
+import { Customer, Order } from '../../entity';
+import { VendureEntityEvent } from '../vendure-entity-event';
+
+type OrderInputTypes = Customer | ModifyOrderInput | { customFields: any };
 
 /**
  * @description
@@ -10,12 +15,23 @@ import { VendureEvent } from '../vendure-event';
  * @docsCategory events
  * @docsPage Event Types
  */
-export class OrderEvent extends VendureEvent {
+export class OrderEvent extends VendureEntityEvent<Order, OrderInputTypes> {
     constructor(
-        public ctx: RequestContext,
-        public order: Order,
-        public type: 'created' | 'updated' | 'deleted',
+        ctx: RequestContext,
+        order: Order,
+        type: 'created' | 'updated' | 'deleted',
+        input?: OrderInputTypes,
     ) {
-        super();
+        super(order, type, ctx, input);
+    }
+
+    /**
+     * Return a customer field to become compatible with the
+     * deprecated old version of CustomerEvent
+     * @deprecated Use `entity` instead
+     * @since 1.4
+     */
+    get order(): Order {
+        return this.entity;
     }
 }

+ 2 - 0
packages/core/src/service/helpers/order-modifier/order-modifier.ts

@@ -66,6 +66,7 @@ import { ShippingCalculator } from '../shipping-calculator/shipping-calculator';
 import { TranslatorService } from '../translator/translator.service';
 import { getOrdersFromLines, orderLinesAreAllCancelled } from '../utils/order-utils';
 import { patchEntity } from '../utils/patch-entity';
+import { OrderEvent } from '../../../event-bus';
 
 /**
  * @description
@@ -692,6 +693,7 @@ export class OrderModifier {
             .save(modification);
         await this.connection.getRepository(ctx, Order).save(order);
         await this.connection.getRepository(ctx, ShippingLine).save(order.shippingLines, { reload: false });
+        await this.eventBus.publish(new OrderEvent(ctx, order, 'updated', input));
         return { order, modification: createdModification };
     }
 

+ 2 - 2
packages/core/src/service/services/order.service.ts

@@ -481,7 +481,7 @@ export class OrderService {
         order = patchEntity(order, { customFields });
         const updatedOrder = await this.connection.getRepository(ctx, Order).save(order);
         await this.customFieldRelationService.updateRelations(ctx, Order, { customFields }, updatedOrder);
-        await this.eventBus.publish(new OrderEvent(ctx, updatedOrder, 'updated'));
+        await this.eventBus.publish(new OrderEvent(ctx, updatedOrder, 'updated', { customFields }));
         return updatedOrder;
     }
 
@@ -515,7 +515,7 @@ export class OrderService {
         }
 
         const updatedOrder = await this.addCustomerToOrder(ctx, order.id, targetCustomer);
-        await this.eventBus.publish(new OrderEvent(ctx, updatedOrder, 'updated'));
+        await this.eventBus.publish(new OrderEvent(ctx, updatedOrder, 'updated', targetCustomer));
         await this.historyService.createHistoryEntryForOrder({
             ctx,
             orderId,