product-bundle-shop.resolver.ts 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. import { Args, Mutation, Resolver } from '@nestjs/graphql';
  2. import { UpdateOrderItemsResult } from '@vendure/common/lib/generated-shop-types';
  3. import { ID } from '@vendure/common/lib/shared-types';
  4. import {
  5. ACTIVE_ORDER_INPUT_FIELD_NAME,
  6. ActiveOrderService,
  7. Ctx,
  8. ErrorResultUnion,
  9. Order,
  10. RequestContext,
  11. Transaction,
  12. } from '@vendure/core';
  13. import { ProductBundleService } from '../services/product-bundle.service';
  14. @Resolver()
  15. export class ProductBundleShopResolver {
  16. constructor(
  17. private productBundleService: ProductBundleService,
  18. private activeOrderService: ActiveOrderService,
  19. ) {}
  20. @Mutation()
  21. @Transaction()
  22. async addProductBundleToOrder(
  23. @Ctx() ctx: RequestContext,
  24. @Args() args: { productId: ID },
  25. ): Promise<ErrorResultUnion<UpdateOrderItemsResult, Order>> {
  26. const order = await this.activeOrderService.getActiveOrder(ctx, undefined, true);
  27. return this.productBundleService.addProductBundleToOrder(ctx, order, args.productId);
  28. }
  29. }