update entity id
This commit is contained in:
@@ -66,7 +66,7 @@ export class OrderController {
|
||||
@UseGuards(AuthGuard)
|
||||
@ApiOperation({ summary: 'Update order item ' })
|
||||
updateOrderItem(@Param('id') orderId: string, @UserId() userId: string, @Param('itemId') itemId: string, @Body() body: UpdateOrderItemDtoAsUser) {
|
||||
return this.orderService.updateOrderItemAsUser(userId, orderId, +itemId, body);
|
||||
return this.orderService.updateOrderItemAsUser(userId, orderId, itemId, body);
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ export class OrderController {
|
||||
@Param('orderItemId') orderItemId: string,
|
||||
@UserId() userId: string
|
||||
) {
|
||||
return this.orderService.confirmOrderItem(userId, orderId, +orderItemId);
|
||||
return this.orderService.confirmOrderItem(userId, orderId, orderItemId);
|
||||
}
|
||||
|
||||
@Delete('public/orders/:orderId/items/:orderItemId')
|
||||
@@ -89,7 +89,7 @@ export class OrderController {
|
||||
@Param('orderItemId') orderItemId: string,
|
||||
@UserId() userId: string
|
||||
) {
|
||||
return this.orderService.removeOrderItemAsUser(userId, orderId, +orderItemId);
|
||||
return this.orderService.removeOrderItemAsUser(userId, orderId, orderItemId);
|
||||
}
|
||||
|
||||
/*========================== Admin Routes =====================*/
|
||||
@@ -125,6 +125,24 @@ export class OrderController {
|
||||
return this.orderService.findOrderOrFail(orderId);
|
||||
}
|
||||
|
||||
@Patch('admin/orders/:id')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@Permissions(PermissionEnum.UPDATE_ORDER)
|
||||
@ApiOperation({ summary: 'Update Order ' })
|
||||
updateOrder(@Param('id') id: string, @Body() dto: UpdateOrderAsAdminDto) {
|
||||
return this.orderService.updateOrderAsAdmin2(id, dto);
|
||||
}
|
||||
|
||||
@Delete('admin/orders/:orderId')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@Permissions(PermissionEnum.REMOVE_ORDER)
|
||||
@ApiOperation({ summary: 'Hard Delete Order ' })
|
||||
hardDelete(@Param('orderId') orderId: string) {
|
||||
return this.orderService.hardDeleteOrder(orderId);
|
||||
}
|
||||
|
||||
// =============== Order Item ================
|
||||
|
||||
@Get('admin/orders/item/print')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@Permissions(PermissionEnum.VIEW_All_ORDERS)
|
||||
@@ -137,14 +155,17 @@ export class OrderController {
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@ApiOperation({ summary: 'order item detail' })
|
||||
getOrderItem(@Param('id') itemId: string) {
|
||||
return this.orderService.findOrderItemOrFailByItemId(+itemId);
|
||||
return this.orderService.findOrderItemOrFailByItemId(itemId);
|
||||
}
|
||||
|
||||
@Patch('admin/orders/:orderId')
|
||||
|
||||
@Post('admin/orders/:orderId/item/:itemId/designer')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@ApiOperation({ summary: 'Update Order ' })
|
||||
updateOrder(@Param('orderId') orderId: string, @Body() dto: UpdateOrderAsAdminDto) {
|
||||
return this.orderService.updateOrderAsAdmin2(orderId, dto);
|
||||
@Permissions(PermissionEnum.ASSIGN_DESIGNER)
|
||||
@ApiOperation({ summary: 'Assign Order Designer ' })
|
||||
assignDesigner(@Param('orderId') orderId: string, @Param('itemId') itemId: string,
|
||||
@Body() body: AssignDesignerDto) {
|
||||
return this.orderService.assignDesigner(orderId, itemId, body.designerId);
|
||||
}
|
||||
|
||||
@Patch('admin/orders/:id/item/:itemId/print')
|
||||
@@ -152,45 +173,31 @@ export class OrderController {
|
||||
@Permissions(PermissionEnum.CREATE_ORDER_PRINT)
|
||||
@ApiOperation({ summary: 'Create Print form for order item' })
|
||||
createPrintForm(@Param('id') id: string, @Param('itemId') itemId: string, @Body() dto: CreatePrintFormDto) {
|
||||
return this.orderService.createPrintForm(id, +itemId, dto);
|
||||
return this.orderService.createPrintForm(id, itemId, dto);
|
||||
}
|
||||
|
||||
@Delete('admin/orders/:orderId')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@ApiOperation({ summary: 'Hard Delete Order ' })
|
||||
hardDelete(@Param('orderId') orderId: string) {
|
||||
return this.orderService.hardDeleteOrder(orderId);
|
||||
}
|
||||
|
||||
|
||||
@Post('admin/orders/:orderId/item/:itemId/designer')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@ApiOperation({ summary: 'Assign Order Designer ' })
|
||||
assignDesigner(@Param('orderId') orderId: string, @Param('itemId') itemId: string,
|
||||
@Body() body: AssignDesignerDto) {
|
||||
return this.orderService.assignDesigner(orderId, +itemId, body.designerId);
|
||||
}
|
||||
|
||||
@Post('admin/orders/:orderId/invoice')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@ApiOperation({ summary: 'Create Order invoice ' })
|
||||
createInvoice(@Param('orderId') orderId: string) {
|
||||
return this.orderService.createInvoice(orderId);
|
||||
}
|
||||
|
||||
|
||||
@Delete('admin/orders/:id/items/:orderItemId')
|
||||
// @Post('admin/orders/:orderId/invoice')
|
||||
// @UseGuards(AdminAuthGuard)
|
||||
// @ApiOperation({ summary: 'Create Order invoice ' })
|
||||
// createInvoice(@Param('orderId') orderId: string) {
|
||||
// return this.orderService.createInvoice(orderId);
|
||||
// }
|
||||
|
||||
|
||||
@Delete('admin/orders/:id/items/:itemId')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@Permissions(PermissionEnum.UPDATE_ORDER)
|
||||
@ApiOperation({ summary: 'Remove order Item ' })
|
||||
removeOrderItemAdAdmin(
|
||||
@Param('id') orderId: string,
|
||||
@Param('orderItemId') orderItemId: string,
|
||||
@Param('itemId') itemId: string,
|
||||
) {
|
||||
return this.orderService.removeOrderItemAsAdmin(orderId, +orderItemId);
|
||||
return this.orderService.removeOrderItemAsAdmin(orderId, itemId);
|
||||
}
|
||||
|
||||
@Post('admin/orders/:id/item')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@Permissions(PermissionEnum.UPDATE_ORDER)
|
||||
@ApiOperation({ summary: 'add item to order ' })
|
||||
addOrderItemAsAdmin(@Param('id') orderId: string, @Body() body: CreateOrderItemDtoAsAdmin) {
|
||||
return this.orderService.addOrderItemAsAdmin(orderId, body);
|
||||
@@ -199,10 +206,11 @@ export class OrderController {
|
||||
|
||||
@Patch('admin/orders/:id/item/:itemId')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@Permissions(PermissionEnum.UPDATE_ORDER)
|
||||
@ApiOperation({ summary: 'Update order item' })
|
||||
updateOrderItemAsAdmin(@Param('id') orderId: string, @Param('itemId') itemId: string,
|
||||
@Body() body: UpdateOrderItemDtoAsAdmin) {
|
||||
return this.orderService.updateOrderItemAsAdmin(orderId, +itemId, body);
|
||||
return this.orderService.updateOrderItemAsAdmin(orderId, itemId, body);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,9 +14,9 @@ import { IAttachment, IField, OrderStatusEnum } from '../interface/order.interfa
|
||||
|
||||
|
||||
export class CreateOrderItemAsUserDto {
|
||||
@IsInt()
|
||||
@IsString()
|
||||
@ApiProperty()
|
||||
productId: number;
|
||||
productId: string;
|
||||
|
||||
@ApiProperty()
|
||||
@IsNumber()
|
||||
@@ -73,7 +73,7 @@ export class CreateOrderAsUSerDto {
|
||||
@ApiProperty({
|
||||
isArray: true, type: [CreateOrderItemAsUserDto], example: [
|
||||
{
|
||||
productId: 1,
|
||||
productId: 'sd4',
|
||||
quantity: 100,
|
||||
attributes: [
|
||||
{
|
||||
|
||||
@@ -10,5 +10,5 @@ export class UpdateOrderAsAdminDto extends PartialType(OmitType(CreateOrderAsAdm
|
||||
export class UpdateOrCreateOrderItem extends CreateOrderItemDtoAsAdmin {
|
||||
@ApiProperty()
|
||||
@IsNumber()
|
||||
id: number
|
||||
id: string
|
||||
}
|
||||
@@ -1,17 +1,16 @@
|
||||
import { Entity, Formula, Index, ManyToOne, OptionalProps, PrimaryKey, Property } from '@mikro-orm/core';
|
||||
import { Entity, Formula, Index, ManyToOne, OptionalProps, Property } from '@mikro-orm/core';
|
||||
import { Order } from './order.entity';
|
||||
import { Product } from 'src/modules/product/entities/product.entity';
|
||||
import { IAttachment, IField } from '../interface/order.interface';
|
||||
import { Admin } from 'src/modules/admin/entities/admin.entity';
|
||||
import { BaseEntity } from 'src/common/entities/base.entity';
|
||||
|
||||
|
||||
@Entity({ tableName: 'order_items' })
|
||||
@Index({ properties: ['order'] })
|
||||
export class OrderItem {
|
||||
export class OrderItem extends BaseEntity{
|
||||
[OptionalProps]?: 'createdAt' | 'deletedAt' | 'subTotal' | 'total';
|
||||
|
||||
@PrimaryKey({ type: 'bigint', autoincrement: true })
|
||||
id: number
|
||||
|
||||
@ManyToOne(() => Order)
|
||||
order!: Order;
|
||||
|
||||
@@ -62,9 +61,4 @@ export class OrderItem {
|
||||
@Property({ nullable: true, columnType: 'timestamptz' })
|
||||
printFormCreatedAt?: Date;
|
||||
|
||||
@Property({ defaultRaw: 'now()', columnType: 'timestamptz' })
|
||||
createdAt: Date = new Date();
|
||||
|
||||
@Property({ nullable: true, columnType: 'timestamptz' })
|
||||
deletedAt?: Date;
|
||||
}
|
||||
|
||||
@@ -20,11 +20,12 @@ import { Payment } from 'src/modules/payment/entities/payment.entity';
|
||||
import { ulid } from 'ulid';
|
||||
import { Admin } from 'src/modules/admin/entities/admin.entity';
|
||||
import { PaymentStatusEnum } from 'src/modules/payment/interface/payment';
|
||||
import { BaseEntity } from 'src/common/entities/base.entity';
|
||||
|
||||
@Entity({ tableName: 'orders' })
|
||||
@Index({ properties: ['user', 'status'] })
|
||||
@Index({ properties: ['status'] })
|
||||
export class Order {
|
||||
export class Order extends BaseEntity{
|
||||
[OptionalProps]?: 'createdAt' | 'deletedAt' | 'balance' | 'paidAmount'
|
||||
| 'discount' | 'subTotal' | 'total' | 'taxAmount';
|
||||
|
||||
@@ -205,11 +206,6 @@ export class Order {
|
||||
@Property({ type: 'boolean', default: false })
|
||||
enableTax?: Boolean = false
|
||||
|
||||
@Property({ defaultRaw: 'now()', columnType: 'timestamptz' })
|
||||
createdAt: Date = new Date();
|
||||
|
||||
@Property({ nullable: true, columnType: 'timestamptz' })
|
||||
deletedAt?: Date;
|
||||
|
||||
@BeforeCreate()
|
||||
async generateOrderNumber(args: EventArgs<Order>) {
|
||||
|
||||
@@ -33,7 +33,7 @@ export interface IField { fieldId: number, value: string }
|
||||
export interface IAttachment { type: string, url: string }
|
||||
|
||||
export interface CreateOrderItem {
|
||||
productId: number,
|
||||
productId: string,
|
||||
quantity: number
|
||||
attributes?: IField[]
|
||||
description?: string
|
||||
|
||||
@@ -98,7 +98,7 @@ export class OrderService {
|
||||
for (const item of items) {
|
||||
|
||||
if (item.id) { // update
|
||||
const currentItem = order.items.find(i => Number(i.id) == item.id)
|
||||
const currentItem = order.items.find(i => i.id == item.id)
|
||||
|
||||
if (!currentItem) {
|
||||
throw new BadGatewayException("Order Item not found")
|
||||
@@ -206,7 +206,7 @@ export class OrderService {
|
||||
return orderItem
|
||||
}
|
||||
|
||||
async updateOrderItemAsUser(userId: string, orderId: string, itemId: number, dto: UpdateOrderItemDtoAsUser) {
|
||||
async updateOrderItemAsUser(userId: string, orderId: string, itemId: string, dto: UpdateOrderItemDtoAsUser) {
|
||||
|
||||
const orderItem = await this.findOrderItemOrFail(orderId, itemId)
|
||||
|
||||
@@ -227,7 +227,7 @@ export class OrderService {
|
||||
return updated
|
||||
}
|
||||
|
||||
async updateOrderItemAsAdmin(orderId: string, itemId: number, dto: UpdateOrderItemDtoAsAdmin) {
|
||||
async updateOrderItemAsAdmin(orderId: string, itemId: string, dto: UpdateOrderItemDtoAsAdmin) {
|
||||
|
||||
const orderItem = await this.findOrderItemOrFail(orderId, itemId)
|
||||
|
||||
@@ -240,7 +240,7 @@ export class OrderService {
|
||||
return updated
|
||||
}
|
||||
|
||||
async createPrintForm(orderId: string, itemId: number, dto: CreatePrintFormDto) {
|
||||
async createPrintForm(orderId: string, itemId: string, dto: CreatePrintFormDto) {
|
||||
|
||||
const orderItem = await this.findOrderItemOrFail(orderId, itemId)
|
||||
|
||||
@@ -249,7 +249,7 @@ export class OrderService {
|
||||
return updated
|
||||
}
|
||||
|
||||
async removeOrderItemAsAdmin(orderId: string, itemId: number) {
|
||||
async removeOrderItemAsAdmin(orderId: string, itemId: string) {
|
||||
|
||||
const orderItem = await this.findOrderItemOrFail(orderId, itemId)
|
||||
|
||||
@@ -262,7 +262,7 @@ export class OrderService {
|
||||
return { message: 'success' }
|
||||
}
|
||||
|
||||
async removeOrderItemAsUser(userId: string, orderId: string, itemId: number) {
|
||||
async removeOrderItemAsUser(userId: string, orderId: string, itemId: string) {
|
||||
|
||||
const orderItem = await this.findOrderItemOrFail(orderId, itemId)
|
||||
|
||||
@@ -363,7 +363,7 @@ export class OrderService {
|
||||
// return order
|
||||
// }
|
||||
|
||||
async confirmOrderItem(userId: string, orderId: string, orderItemId: number) {
|
||||
async confirmOrderItem(userId: string, orderId: string, orderItemId: string) {
|
||||
|
||||
const orderItem = await this.findOrderItemOrFail(orderId, orderItemId)
|
||||
|
||||
@@ -379,7 +379,7 @@ export class OrderService {
|
||||
return orderItem
|
||||
}
|
||||
|
||||
async assignDesigner(orderId: string, orderItemId: number, designerId: string) {
|
||||
async assignDesigner(orderId: string, orderItemId: string, designerId: string) {
|
||||
|
||||
const orderItem = await this.findOrderItemOrFail(orderId, orderItemId)
|
||||
|
||||
@@ -651,7 +651,7 @@ export class OrderService {
|
||||
return order
|
||||
}
|
||||
|
||||
async findOrderItemOrFail(orderId: string, itemId: number) {
|
||||
async findOrderItemOrFail(orderId: string, itemId: string) {
|
||||
const orderItem = await this.orderItemRepository.findOne({ id: itemId, order: { id: orderId } },
|
||||
{ populate: ['order', 'order.user'] })
|
||||
if (!orderItem) {
|
||||
@@ -660,7 +660,7 @@ export class OrderService {
|
||||
return orderItem
|
||||
}
|
||||
|
||||
async findOrderItemOrFailByItemId(itemId: number) {
|
||||
async findOrderItemOrFailByItemId(itemId: string) {
|
||||
const orderItem = await this.orderItemRepository.findOne({ id: itemId },
|
||||
{ populate: ['order', 'order.user'] })
|
||||
if (!orderItem) {
|
||||
|
||||
Reference in New Issue
Block a user