Просмотр исходного кода

feat(server): Add property resolver for Order payments

Michael Bromley 7 лет назад
Родитель
Сommit
2134badd16

+ 6 - 1
server/src/api/resolvers/order.resolver.ts

@@ -1,4 +1,4 @@
-import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
+import { Args, Mutation, Parent, Query, ResolveProperty, Resolver } from '@nestjs/graphql';
 import {
 import {
     AddItemToOrderMutationArgs,
     AddItemToOrderMutationArgs,
     AddPaymentToOrderMutationArgs,
     AddPaymentToOrderMutationArgs,
@@ -48,6 +48,11 @@ export class OrderResolver {
         return order;
         return order;
     }
     }
 
 
+    @ResolveProperty()
+    async payments(@Parent() order: Order) {
+        return this.orderService.getOrderPayments(order.id);
+    }
+
     @Query()
     @Query()
     @Allow(Permission.Owner)
     @Allow(Permission.Owner)
     async activeOrder(@Ctx() ctx: RequestContext): Promise<Order | undefined> {
     async activeOrder(@Ctx() ctx: RequestContext): Promise<Order | undefined> {

+ 3 - 1
server/src/config/payment-method/gripe-payment-method-config.ts

@@ -33,7 +33,9 @@ export const gripePaymentHandler = new PaymentMethodHandler({
                 amount: order.total,
                 amount: order.total,
                 state: 'Settled' as 'Settled',
                 state: 'Settled' as 'Settled',
                 transactionId: result.id.toString(),
                 transactionId: result.id.toString(),
-                metadata,
+                metadata: {
+                    sampleMetadata: 'some arbitrary values',
+                },
             };
             };
         } catch (err) {
         } catch (err) {
             return {
             return {

+ 9 - 0
server/src/service/services/order.service.ts

@@ -10,6 +10,7 @@ import { idsAreEqual } from '../../common/utils';
 import { OrderItem } from '../../entity/order-item/order-item.entity';
 import { OrderItem } from '../../entity/order-item/order-item.entity';
 import { OrderLine } from '../../entity/order-line/order-line.entity';
 import { OrderLine } from '../../entity/order-line/order-line.entity';
 import { Order } from '../../entity/order/order.entity';
 import { Order } from '../../entity/order/order.entity';
+import { Payment } from '../../entity/payment/payment.entity';
 import { ProductVariant } from '../../entity/product-variant/product-variant.entity';
 import { ProductVariant } from '../../entity/product-variant/product-variant.entity';
 import { Promotion } from '../../entity/promotion/promotion.entity';
 import { Promotion } from '../../entity/promotion/promotion.entity';
 import { User } from '../../entity/user/user.entity';
 import { User } from '../../entity/user/user.entity';
@@ -74,6 +75,14 @@ export class OrderService {
         }
         }
     }
     }
 
 
+    getOrderPayments(orderId: ID): Promise<Payment[]> {
+        return this.connection.getRepository(Payment).find({
+            where: {
+                order: { id: orderId } as any,
+            },
+        });
+    }
+
     async getActiveOrderForUser(ctx: RequestContext, userId: ID): Promise<Order | undefined> {
     async getActiveOrderForUser(ctx: RequestContext, userId: ID): Promise<Order | undefined> {
         const customer = await this.customerService.findOneByUserId(userId);
         const customer = await this.customerService.findOneByUserId(userId);
         if (customer) {
         if (customer) {