create order as admn

This commit is contained in:
2026-01-19 17:41:49 +03:30
parent c7f5fdf241
commit e74ab1b573
4 changed files with 192 additions and 7 deletions
+27 -2
View File
@@ -8,6 +8,8 @@ import {
Cascade,
Enum,
PrimaryKey,
BeforeCreate,
type EventArgs,
} from '@mikro-orm/core';
import { BaseEntity } from '../../../common/entities/base.entity';
import { OrderStatusEnum } from '../interface/order.interface';
@@ -15,6 +17,7 @@ import { User } from '../../user/entities/user.entity';
import { OrderItem } from './order-item.entity';
import { Payment } from 'src/modules/payment/entities/payment.entity';
import { ulid } from 'ulid';
import { Admin } from 'src/modules/admin/entities/admin.entity';
@Entity({ tableName: 'orders' })
@Index({ properties: ['user', 'status'] })
@@ -38,11 +41,14 @@ export class Order extends BaseEntity {
})
items = new Collection<OrderItem>(this);
@ManyToOne(() => Admin, { nullable: true })
creator?: Admin
// @Property({ nullable: true })
// userAddress?: string | null;
@Property({ type: 'bigint', autoincrement: true })
orderNumber: number;
@Property({ type: 'int', nullable: true })
orderNumber?: number;
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
@@ -79,4 +85,23 @@ export class Order extends BaseEntity {
@Enum(() => OrderStatusEnum)
status!: OrderStatusEnum;
@BeforeCreate()
async generateOrderNumber(args: EventArgs<Order>) {
const em = args.em;
const order = args.entity;
const maxOrder = await em.findOne(
Order,
{},
{
orderBy: { orderNumber: 'DESC' },
fields: ['orderNumber'],
},
);
// Set the next order number (1 if no orders exist, otherwise max + 1)
order.orderNumber = maxOrder?.orderNumber ? maxOrder.orderNumber + 1 : 1;
}
}