61 lines
2.1 KiB
TypeScript
61 lines
2.1 KiB
TypeScript
import { ObjectType, Field, ID, ArgsType, InputType } from 'type-graphql';
|
|
|
|
import { Permission } from '@seed/interfaces/permission';
|
|
|
|
import { AccountTypeEnum } from '@src/accounts/account.components';
|
|
import { OrderEngineDBInterfaceSchema, OrderEngineDBSchema, OrderEngineSchema } from './schemas/order.schema';
|
|
import { EngineModel } from '@lib/seed/engine/EngineModel';
|
|
import { plainToClass } from 'class-transformer';
|
|
import { IEngineSchema } from '@lib/seed/engine/EngineSchema';
|
|
import { OrderArgs } from './schemas/order.schema.input';
|
|
import { CustomSearchEngine } from '@lib/seed/services/database/DBRequestService';
|
|
|
|
const permissions: Permission = {
|
|
c: [AccountTypeEnum.admin],
|
|
r: [AccountTypeEnum.admin],
|
|
w: [AccountTypeEnum.admin],
|
|
d: [AccountTypeEnum.admin],
|
|
};
|
|
@ObjectType()
|
|
export default class OrderEngineModel extends EngineModel<OrderEngineDBInterfaceSchema, OrderEngineDBSchema, OrderEngineSchema> {
|
|
public constructor(input?: OrderEngineDBInterfaceSchema & Partial<IEngineSchema>) {
|
|
const dataInit = plainToClass(OrderEngineDBSchema, input || {});
|
|
super({
|
|
// ...init,
|
|
collectionName: 'shop.orders',
|
|
permissions: permissions,
|
|
dataInit,
|
|
});
|
|
}
|
|
|
|
plainToClass(plain: any): OrderEngineSchema | OrderEngineSchema[] {
|
|
return plainToClass(OrderEngineSchema, plain);
|
|
}
|
|
|
|
searchEngine(): CustomSearchEngine<OrderArgs> {
|
|
const sEngine: CustomSearchEngine<OrderArgs> = {
|
|
orderStatus: {
|
|
operation: '$eq',
|
|
},
|
|
paymentStatus: {
|
|
operation: '$eq',
|
|
},
|
|
search: {
|
|
operation: 'freeInput',
|
|
freeInputConfig: {
|
|
searchOptions: ['billingInfo.company', 'billingInfo.email'],
|
|
},
|
|
},
|
|
};
|
|
return sEngine;
|
|
}
|
|
|
|
async afterPaymentSuccess(orderData: OrderEngineSchema): Promise<void> {
|
|
throw 'To Implement on parent';
|
|
}
|
|
|
|
async afterPaymentFailed(orderData: OrderEngineSchema): Promise<void> {
|
|
throw 'To Implement on parent';
|
|
}
|
|
}
|