shipping-method.resolver.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
  2. import {
  3. ConfigurableOperationDefinition,
  4. DeletionResponse,
  5. MutationCreateShippingMethodArgs,
  6. MutationDeleteShippingMethodArgs,
  7. MutationUpdateShippingMethodArgs,
  8. Permission,
  9. QueryShippingMethodArgs,
  10. QueryShippingMethodsArgs,
  11. QueryTestEligibleShippingMethodsArgs,
  12. QueryTestShippingMethodArgs,
  13. } from '@vendure/common/lib/generated-types';
  14. import { PaginatedList } from '@vendure/common/lib/shared-types';
  15. import { ShippingMethod } from '../../../entity/shipping-method/shipping-method.entity';
  16. import { OrderTestingService } from '../../../service/services/order-testing.service';
  17. import { ShippingMethodService } from '../../../service/services/shipping-method.service';
  18. import { RequestContext } from '../../common/request-context';
  19. import { Allow } from '../../decorators/allow.decorator';
  20. import { Ctx } from '../../decorators/request-context.decorator';
  21. import { Transaction } from '../../decorators/transaction.decorator';
  22. @Resolver('ShippingMethod')
  23. export class ShippingMethodResolver {
  24. constructor(
  25. private shippingMethodService: ShippingMethodService,
  26. private orderTestingService: OrderTestingService,
  27. ) {}
  28. @Query()
  29. @Allow(Permission.ReadSettings, Permission.ReadShippingMethod)
  30. shippingMethods(
  31. @Ctx() ctx: RequestContext,
  32. @Args() args: QueryShippingMethodsArgs,
  33. ): Promise<PaginatedList<ShippingMethod>> {
  34. return this.shippingMethodService.findAll(ctx, args.options || undefined);
  35. }
  36. @Query()
  37. @Allow(Permission.ReadSettings, Permission.ReadShippingMethod)
  38. shippingMethod(
  39. @Ctx() ctx: RequestContext,
  40. @Args() args: QueryShippingMethodArgs,
  41. ): Promise<ShippingMethod | undefined> {
  42. return this.shippingMethodService.findOne(ctx, args.id);
  43. }
  44. @Query()
  45. @Allow(Permission.ReadSettings, Permission.ReadOrder, Permission.ReadShippingMethod)
  46. shippingEligibilityCheckers(@Ctx() ctx: RequestContext): ConfigurableOperationDefinition[] {
  47. return this.shippingMethodService.getShippingEligibilityCheckers(ctx);
  48. }
  49. @Query()
  50. @Allow(Permission.ReadSettings, Permission.ReadOrder, Permission.ReadShippingMethod)
  51. shippingCalculators(@Ctx() ctx: RequestContext): ConfigurableOperationDefinition[] {
  52. return this.shippingMethodService.getShippingCalculators(ctx);
  53. }
  54. @Query()
  55. @Allow(Permission.ReadSettings, Permission.ReadOrder, Permission.ReadShippingMethod)
  56. fulfillmentHandlers(@Ctx() ctx: RequestContext): ConfigurableOperationDefinition[] {
  57. return this.shippingMethodService.getFulfillmentHandlers(ctx);
  58. }
  59. @Transaction()
  60. @Mutation()
  61. @Allow(Permission.CreateSettings, Permission.CreateShippingMethod)
  62. createShippingMethod(
  63. @Ctx() ctx: RequestContext,
  64. @Args() args: MutationCreateShippingMethodArgs,
  65. ): Promise<ShippingMethod> {
  66. const { input } = args;
  67. return this.shippingMethodService.create(ctx, input);
  68. }
  69. @Transaction()
  70. @Mutation()
  71. @Allow(Permission.UpdateSettings, Permission.UpdateShippingMethod)
  72. updateShippingMethod(
  73. @Ctx() ctx: RequestContext,
  74. @Args() args: MutationUpdateShippingMethodArgs,
  75. ): Promise<ShippingMethod> {
  76. const { input } = args;
  77. return this.shippingMethodService.update(ctx, input);
  78. }
  79. @Transaction()
  80. @Mutation()
  81. @Allow(Permission.DeleteSettings, Permission.DeleteShippingMethod)
  82. deleteShippingMethod(
  83. @Ctx() ctx: RequestContext,
  84. @Args() args: MutationDeleteShippingMethodArgs,
  85. ): Promise<DeletionResponse> {
  86. const { id } = args;
  87. return this.shippingMethodService.softDelete(ctx, id);
  88. }
  89. @Query()
  90. @Allow(Permission.ReadSettings, Permission.ReadShippingMethod)
  91. testShippingMethod(@Ctx() ctx: RequestContext, @Args() args: QueryTestShippingMethodArgs) {
  92. const { input } = args;
  93. return this.orderTestingService.testShippingMethod(ctx, input);
  94. }
  95. @Query()
  96. @Allow(Permission.ReadSettings, Permission.ReadShippingMethod)
  97. testEligibleShippingMethods(
  98. @Ctx() ctx: RequestContext,
  99. @Args() args: QueryTestEligibleShippingMethodsArgs,
  100. ) {
  101. const { input } = args;
  102. return this.orderTestingService.testEligibleShippingMethods(ctx, input);
  103. }
  104. }