diff --git a/src/common/enums/permission.enum.ts b/src/common/enums/permission.enum.ts index 1ce2c5a..c609ac7 100644 --- a/src/common/enums/permission.enum.ts +++ b/src/common/enums/permission.enum.ts @@ -38,7 +38,7 @@ export enum PermissionEnum { MANAGE_FORM_BUILDER = 'manage_form_builder', - MANAGE_PRINT = 'manage_print' + CREATE_PRINT = 'create_print' } @@ -62,7 +62,6 @@ export const PermissionTitles: Record = { [PermissionEnum.MANAGE_PAYMENTS]: 'مدیریت پرداخت‌ها', [PermissionEnum.MANAGE_SETTINGS]: 'مدیریت تنظیمات', [PermissionEnum.MANAGE_FORM_BUILDER]: "مدیریت فرم بیلدر", - [PermissionEnum.MANAGE_PRINT]: 'مدیریت فرم پرینت', [PermissionEnum.VIEW_REQUESTS]: "مشاهده همه درخواست سفارش ها", [PermissionEnum.VIEW_All_INVOICED_ORDERS]: "مشاهده همه سفارشات پیش فاکتور شده", [PermissionEnum.VIEW_MY_ASSIGNED_INVOICED_REQUESTS]: "مشاهده همه پیش فاکتور های من", @@ -73,4 +72,5 @@ export const PermissionTitles: Record = { [PermissionEnum.UPDATE_INVOICE]: "", [PermissionEnum.DELETE_INVOICE]: "", [PermissionEnum.DELETE_ORDER]: "", + [PermissionEnum.CREATE_PRINT]: "ایجاد فرم چاپ", }; diff --git a/src/modules/order/controllers/order.controller.ts b/src/modules/order/controllers/order.controller.ts index 7683c34..bf6a552 100644 --- a/src/modules/order/controllers/order.controller.ts +++ b/src/modules/order/controllers/order.controller.ts @@ -99,9 +99,9 @@ export class OrderController { @Post('admin/orders/:orderId/print') @UseGuards(AdminAuthGuard) - @Permissions(PermissionEnum.ASSIGN_DESIGNER) + @Permissions(PermissionEnum.MANAGE_PRINT) @ApiOperation({ summary: 'Create order print' }) createPrint(@Param('orderId') orderId: string, @Body() body: CreateOrderPrintDto) { - // return this.orderService.assignDesigner(orderId, body.designerId); + return this.orderService.createPrint(orderId, body); } } diff --git a/src/modules/order/entities/print.entity.ts b/src/modules/order/entities/print.entity.ts index bd887d5..dc55a70 100644 --- a/src/modules/order/entities/print.entity.ts +++ b/src/modules/order/entities/print.entity.ts @@ -9,7 +9,7 @@ export class OrderPrint extends BaseEntity { [OptionalProps]?: 'createdAt' | 'deletedAt' @Property({ type: 'json', nullable: true }) - attributes?: IField[] + fileds?: IField[] @OneToOne(() => Order, (order) => order.print, { mappedBy: 'print' }) diff --git a/src/modules/order/providers/order.service.ts b/src/modules/order/providers/order.service.ts index 6093b29..fb60d38 100644 --- a/src/modules/order/providers/order.service.ts +++ b/src/modules/order/providers/order.service.ts @@ -27,6 +27,8 @@ import { InvoiceItem } from 'src/modules/invoice/entities/invoice-item.entity'; import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; import { UpdateStatusAsDesignerDto } from '../dto/update-status-as-designer.dto'; import { UpdateStatusDto } from '../dto/update-status.dto'; +import { CreateOrderPrintDto } from '../dto/create-order-print.dto'; +import { OrderPrint } from '../entities/print.entity'; @Injectable() export class OrderService { @@ -233,9 +235,26 @@ export class OrderService { return order } + async createPrint(orderId: string, dto: CreateOrderPrintDto): Promise { + const order = await this.findOrderOrFail(orderId); + + if (order.print) { + order.print.fileds = dto.fields; + await this.em.flush(); + return order.print; + } + + const print = this.em.create(OrderPrint, { + order, + fileds: dto.fields, + }); + await this.em.persistAndFlush(print); + return print; + } + // -----------Hrlper Methods ----------- async findOrderOrFail(id: string): Promise { - const order = await this.em.findOne(Order, { id }, { populate: ['user', 'type', 'product', 'creator'] }); + const order = await this.em.findOne(Order, { id }, { populate: ['user', 'type', 'product', 'creator', 'print'] }); if (!order) { throw new NotFoundException(`Order with ID ${id} not found.`); }