order print

This commit is contained in:
2026-02-22 10:27:52 +03:30
parent 9175e83b1f
commit baf5262650
6 changed files with 34 additions and 28 deletions
+2 -11
View File
@@ -43,16 +43,7 @@ export class CreateOrderAsAdminDto {
@IsOptional()
@IsArray()
attachments: IAttachment[];
}
export class CreateOrderItemDtoAsAdmin {
@ApiProperty()
@IsString()
@IsNotEmpty()
productId: string;
@ApiPropertyOptional()
@IsOptional()
@IsInt()
quantity?: number;
}
+4 -11
View File
@@ -1,15 +1,8 @@
import { ApiProperty, ApiPropertyOptional, PartialType } from '@nestjs/swagger';
import { CreateOrderAsAdminDto, CreateOrderItemDtoAsAdmin } from './create-order.dto';
import { IsOptional, IsString } from 'class-validator';
import { PartialType } from '@nestjs/swagger';
import { CreateOrderAsAdminDto } from './create-order.dto';
export class UpdateOrCreateOrderItem extends CreateOrderItemDtoAsAdmin {
@ApiProperty()
@IsString()
id: string;
}
export class UpdateOrderAsAdminDto extends PartialType(CreateOrderAsAdminDto) {
@ApiPropertyOptional({ type: [UpdateOrCreateOrderItem] })
@IsOptional()
items?: UpdateOrCreateOrderItem[];
}
+6 -3
View File
@@ -6,6 +6,7 @@ import {
Enum,
PrimaryKey,
OptionalProps,
OneToOne
} from '@mikro-orm/core';
import { User } from '../../user/entities/user.entity';
import { ulid } from 'ulid';
@@ -13,9 +14,9 @@ import { Admin } from 'src/modules/admin/entities/admin.entity';
import { BaseEntity } from 'src/common/entities/base.entity';
import { IAttachment, OrderStatusEnum } from '../interface/order.interface';
import { InvoiceItem } from 'src/modules/invoice/entities/invoice-item.entity';
import { IField } from 'src/modules/request/interface/request.interface';
import { Product } from 'src/modules/product/entities/product.entity';
import { Category } from 'src/modules/product/entities/category.entity';
import { OrderPrint } from './print.entity';
@Entity({ tableName: 'orders' })
@Index({ properties: ['user'] })
@@ -28,6 +29,10 @@ export class Order extends BaseEntity {
@ManyToOne(() => Product, { nullable: true })
product?: Product | null;
@OneToOne(() => OrderPrint, (orderPrint) => orderPrint.order, { owner: true, nullable: true })
print?: OrderPrint | null
@PrimaryKey({ type: 'string', columnType: 'char(26)' })
id: string = ulid()
@@ -52,8 +57,6 @@ export class Order extends BaseEntity {
})
orderNumber: number;
@Property({ type: 'json', nullable: true })
attributes?: IField[] // print form selected attributes
@Enum(() => OrderStatusEnum)
status: OrderStatusEnum = OrderStatusEnum.CREATED;
@@ -0,0 +1,18 @@
import { Entity, Property, OptionalProps, OneToOne } from '@mikro-orm/core';
import { BaseEntity } from 'src/common/entities/base.entity';
import { IField } from 'src/modules/request/interface/request.interface';
import { Order } from './order.entity';
@Entity({ tableName: 'prints' })
export class OrderPrint extends BaseEntity {
[OptionalProps]?: 'createdAt' | 'deletedAt'
@Property({ type: 'json', nullable: true })
attributes?: IField[]
@OneToOne(() => Order, (order) => order.print, { mappedBy: 'print' })
order!: Order
}
+2 -1
View File
@@ -3,6 +3,7 @@ import { MikroOrmModule } from '@mikro-orm/nestjs';
import { OrderService } from './providers/order.service';
import { OrderController } from './controllers/order.controller';
import { Order } from './entities/order.entity';
import { OrderPrint } from './entities/print.entity';
import { AuthModule } from '../auth/auth.module';
import { PaymentModule } from '../payment/payments.module';
import { JwtModule } from '@nestjs/jwt';
@@ -18,7 +19,7 @@ import { TicketModule } from '../ticket/ticket.module';
@Module({
imports: [
MikroOrmModule.forFeature([Order]),
MikroOrmModule.forFeature([Order, OrderPrint]),
AuthModule,
forwardRef(() => PaymentModule),
JwtModule,
+2 -2
View File
@@ -5,7 +5,6 @@ import { FindOrdersDto } from '../dto/find-orders.dto';
import { EventEmitter2 } from '@nestjs/event-emitter';
import {
CreateOrderAsAdminDto,
CreateOrderItemDtoAsAdmin,
} from '../dto/create-order.dto';
import { UserService } from 'src/modules/user/providers/user.service';
import { OrderStatusEnum } from '../interface/order.interface';
@@ -101,7 +100,8 @@ export class OrderService {
status: OrderStatusEnum.CREATED,
estimatedDays: dto.estimatedDays,
invoiceItem,
attachments: dto.attachments
attachments: dto.attachments,
});
await this.em.persistAndFlush(order);