|
@@ -40,6 +40,13 @@ export type OrderHistoryEntryData = {
|
|
|
[HistoryEntryType.ORDER_NOTE]: {
|
|
[HistoryEntryType.ORDER_NOTE]: {
|
|
|
note: string;
|
|
note: string;
|
|
|
};
|
|
};
|
|
|
|
|
+ [HistoryEntryType.ORDER_COUPON_APPLIED]: {
|
|
|
|
|
+ couponCode: string;
|
|
|
|
|
+ promotionId: ID;
|
|
|
|
|
+ };
|
|
|
|
|
+ [HistoryEntryType.ORDER_COUPON_REMOVED]: {
|
|
|
|
|
+ couponCode: string;
|
|
|
|
|
+ };
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
export interface CreateOrderHistoryEntryArgs<T extends keyof OrderHistoryEntryData> {
|
|
export interface CreateOrderHistoryEntryArgs<T extends keyof OrderHistoryEntryData> {
|
|
@@ -54,26 +61,37 @@ export interface CreateOrderHistoryEntryArgs<T extends keyof OrderHistoryEntryDa
|
|
|
*/
|
|
*/
|
|
|
@Injectable()
|
|
@Injectable()
|
|
|
export class HistoryService {
|
|
export class HistoryService {
|
|
|
- constructor(@InjectConnection() private connection: Connection,
|
|
|
|
|
- private administratorService: AdministratorService,
|
|
|
|
|
- private listQueryBuilder: ListQueryBuilder) {}
|
|
|
|
|
|
|
+ constructor(
|
|
|
|
|
+ @InjectConnection() private connection: Connection,
|
|
|
|
|
+ private administratorService: AdministratorService,
|
|
|
|
|
+ private listQueryBuilder: ListQueryBuilder,
|
|
|
|
|
+ ) {}
|
|
|
|
|
|
|
|
- async getHistoryForOrder(orderId: ID, options?: HistoryEntryListOptions): Promise<PaginatedList<OrderHistoryEntry>> {
|
|
|
|
|
- return this.listQueryBuilder.build(HistoryEntry as any as Type<OrderHistoryEntry>, options, {
|
|
|
|
|
- where: {
|
|
|
|
|
- order: { id: orderId } as any,
|
|
|
|
|
- },
|
|
|
|
|
- relations: ['administrator'],
|
|
|
|
|
- }).getManyAndCount()
|
|
|
|
|
|
|
+ async getHistoryForOrder(
|
|
|
|
|
+ orderId: ID,
|
|
|
|
|
+ options?: HistoryEntryListOptions,
|
|
|
|
|
+ ): Promise<PaginatedList<OrderHistoryEntry>> {
|
|
|
|
|
+ return this.listQueryBuilder
|
|
|
|
|
+ .build((HistoryEntry as any) as Type<OrderHistoryEntry>, options, {
|
|
|
|
|
+ where: {
|
|
|
|
|
+ order: { id: orderId } as any,
|
|
|
|
|
+ },
|
|
|
|
|
+ relations: ['administrator'],
|
|
|
|
|
+ })
|
|
|
|
|
+ .getManyAndCount()
|
|
|
.then(([items, totalItems]) => ({
|
|
.then(([items, totalItems]) => ({
|
|
|
items,
|
|
items,
|
|
|
totalItems,
|
|
totalItems,
|
|
|
}));
|
|
}));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- async createHistoryEntryForOrder<T extends keyof OrderHistoryEntryData>(args: CreateOrderHistoryEntryArgs<T>): Promise<OrderHistoryEntry> {
|
|
|
|
|
- const {ctx, data, orderId, type} = args;
|
|
|
|
|
- const administrator = ctx.activeUserId ? await this.administratorService.findOneByUserId(ctx.activeUserId) : undefined;
|
|
|
|
|
|
|
+ async createHistoryEntryForOrder<T extends keyof OrderHistoryEntryData>(
|
|
|
|
|
+ args: CreateOrderHistoryEntryArgs<T>,
|
|
|
|
|
+ ): Promise<OrderHistoryEntry> {
|
|
|
|
|
+ const { ctx, data, orderId, type } = args;
|
|
|
|
|
+ const administrator = ctx.activeUserId
|
|
|
|
|
+ ? await this.administratorService.findOneByUserId(ctx.activeUserId)
|
|
|
|
|
+ : undefined;
|
|
|
const entry = new OrderHistoryEntry({
|
|
const entry = new OrderHistoryEntry({
|
|
|
type,
|
|
type,
|
|
|
// TODO: figure out which should be public and not
|
|
// TODO: figure out which should be public and not
|