assign designer
This commit is contained in:
@@ -3,16 +3,14 @@ import { ApiTags, ApiOperation, ApiBearerAuth, ApiParam, ApiHeader, ApiBody, Api
|
||||
import { OrderService } from '../providers/order.service';
|
||||
import { AuthGuard } from '../../auth/guards/auth.guard';
|
||||
import { UserId } from '../../../common/decorators/user-id.decorator';
|
||||
import { AdminAuthGuard } from '../../auth/guards/adminAuth.guard';
|
||||
import { FindOrdersDto } from '../dto/find-orders.dto';
|
||||
import { OrderStatusEnum } from '../interface/order.interface';
|
||||
import { UpdateOrderStatusDto } from '../dto/update-order-status.dto';
|
||||
import { Permissions } from 'src/common/decorators/permissions.decorator';
|
||||
import { Permission } from 'src/common/enums/permission.enum';
|
||||
import { CreateOrderDto } from '../dto/create-order.dto';
|
||||
import { CreateInvoiceDto } from '../dto/create-invoice.dto';
|
||||
import { AdminId } from 'src/common/decorators/admin-id.decorator';
|
||||
import { CreateOrderAsAdminDto } from '../dto/create-order-as-admin.dto';
|
||||
import { AssignDesignerDto } from '../dto/assign-designer.dto';
|
||||
|
||||
@ApiTags('orders')
|
||||
@ApiBearerAuth()
|
||||
@@ -22,7 +20,7 @@ export class OrderController {
|
||||
|
||||
@Post('public/order')
|
||||
@UseGuards(AuthGuard)
|
||||
@ApiOperation({ summary: 'Checkout : create order ' })
|
||||
@ApiOperation({ summary: 'create order as user' })
|
||||
createOrder(@UserId() userId: string, @Body() body: CreateOrderDto) {
|
||||
return this.orderService.createOrder(userId, body);
|
||||
}
|
||||
@@ -52,7 +50,7 @@ export class OrderController {
|
||||
|
||||
@Post('admin/order')
|
||||
@UseGuards(AuthGuard)
|
||||
@ApiOperation({ summary: 'create order ' })
|
||||
@ApiOperation({ summary: 'create order as admin' })
|
||||
createOrderAsAdmin(@AdminId() adminId: string, @Body() body: CreateOrderAsAdminDto) {
|
||||
return this.orderService.createOrdeAsAdmin(adminId, body);
|
||||
}
|
||||
@@ -63,6 +61,13 @@ export class OrderController {
|
||||
createInvoice(@Param('orderId') orderId: string, @Body() body: CreateInvoiceDto) {
|
||||
return this.orderService.createInvoice(orderId, body);
|
||||
}
|
||||
|
||||
@Post('admin/orders/:orderId/assign-designer')
|
||||
@UseGuards(AuthGuard)
|
||||
@ApiOperation({ summary: 'Assign Order Designer ' })
|
||||
assignDesigner(@Param('orderId') orderId: string, @Body() body: AssignDesignerDto) {
|
||||
return this.orderService.asignDesigner(orderId, body.designerId);
|
||||
}
|
||||
// @UseGuards(AdminAuthGuard)
|
||||
// @Permissions(Permission.MANAGE_ORDERS)
|
||||
// @Get('admin/orders')
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import {
|
||||
IsString
|
||||
} from 'class-validator';
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
|
||||
export class AssignDesignerDto {
|
||||
@IsString()
|
||||
@ApiProperty()
|
||||
designerId: string;
|
||||
}
|
||||
|
||||
@@ -44,6 +44,9 @@ export class Order extends BaseEntity {
|
||||
@ManyToOne(() => Admin, { nullable: true })
|
||||
creator?: Admin
|
||||
|
||||
@ManyToOne(() => Admin, { nullable: true })
|
||||
designer?: Admin
|
||||
|
||||
// @Property({ nullable: true })
|
||||
// userAddress?: string | null;
|
||||
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
export enum OrderStatusEnum {
|
||||
NEW = 'new',
|
||||
DRAFT = 'draft',
|
||||
|
||||
INVOICED = 'invoiced',
|
||||
PREPARING = 'preparing',
|
||||
COMPLETED = 'completed',
|
||||
|
||||
IN_DESIGN = 'in_design',
|
||||
IN_PRINTING = 'in_printing',
|
||||
|
||||
FINISHED = 'finished',
|
||||
|
||||
CANCELED = 'canceled',
|
||||
SHIPPED = 'shipped',
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ export class OrderService {
|
||||
total: 0,
|
||||
paidAmount: 0,
|
||||
balance: 0,
|
||||
status: OrderStatusEnum.NEW
|
||||
status: OrderStatusEnum.DRAFT
|
||||
})
|
||||
|
||||
em.persist(order)
|
||||
@@ -121,8 +121,8 @@ export class OrderService {
|
||||
const order = await this.em.transactional(async (em) => {
|
||||
|
||||
let subTotal = 0
|
||||
items.forEach(item => {subTotal += item.unitPrice * item.quantity})
|
||||
const total=subTotal-discount
|
||||
items.forEach(item => { subTotal += item.unitPrice * item.quantity })
|
||||
const total = subTotal - discount
|
||||
|
||||
const order = this.orderRepository.create({
|
||||
creator: admin,
|
||||
@@ -131,8 +131,8 @@ export class OrderService {
|
||||
subTotal,
|
||||
total,
|
||||
paidAmount: 0,
|
||||
balance:total,
|
||||
status: OrderStatusEnum.NEW
|
||||
balance: total,
|
||||
status: OrderStatusEnum.INVOICED
|
||||
})
|
||||
|
||||
em.persist(order)
|
||||
@@ -175,7 +175,7 @@ export class OrderService {
|
||||
status: TicketStatus.PENDING,
|
||||
admin: null
|
||||
})
|
||||
|
||||
|
||||
em.persist(ticket)
|
||||
|
||||
await em.flush()
|
||||
@@ -270,4 +270,25 @@ export class OrderService {
|
||||
|
||||
return orderItem
|
||||
}
|
||||
|
||||
async asignDesigner(orderId: string, designerId: string) {
|
||||
const order = await this.orderRepository.findOne({ id: orderId })
|
||||
if (!order) {
|
||||
throw new BadRequestException("Order not found")
|
||||
}
|
||||
const designer = await this.adminRepository.findOne({ id: designerId })
|
||||
|
||||
if (!designer) {
|
||||
throw new BadRequestException("designer not found")
|
||||
}
|
||||
|
||||
order.designer = designer
|
||||
order.status=OrderStatusEnum.IN_DESIGN
|
||||
|
||||
|
||||
await this.em.persistAndFlush(order)
|
||||
|
||||
return order
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ export class PaymentController {
|
||||
return this.paymentsService.payOrder(orderId, dto, adminId);
|
||||
}
|
||||
|
||||
@Post('public/payments/:token/verify/online')
|
||||
@Post('admin/payments/:token/verify/online')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@ApiBearerAuth()
|
||||
@ApiOperation({ summary: 'Verify online payment as admin' })
|
||||
|
||||
Reference in New Issue
Block a user