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 { OrderService } from '../providers/order.service';
|
||||||
import { AuthGuard } from '../../auth/guards/auth.guard';
|
import { AuthGuard } from '../../auth/guards/auth.guard';
|
||||||
import { UserId } from '../../../common/decorators/user-id.decorator';
|
import { UserId } from '../../../common/decorators/user-id.decorator';
|
||||||
import { AdminAuthGuard } from '../../auth/guards/adminAuth.guard';
|
|
||||||
import { FindOrdersDto } from '../dto/find-orders.dto';
|
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 { Permissions } from 'src/common/decorators/permissions.decorator';
|
||||||
import { Permission } from 'src/common/enums/permission.enum';
|
import { Permission } from 'src/common/enums/permission.enum';
|
||||||
import { CreateOrderDto } from '../dto/create-order.dto';
|
import { CreateOrderDto } from '../dto/create-order.dto';
|
||||||
import { CreateInvoiceDto } from '../dto/create-invoice.dto';
|
import { CreateInvoiceDto } from '../dto/create-invoice.dto';
|
||||||
import { AdminId } from 'src/common/decorators/admin-id.decorator';
|
import { AdminId } from 'src/common/decorators/admin-id.decorator';
|
||||||
import { CreateOrderAsAdminDto } from '../dto/create-order-as-admin.dto';
|
import { CreateOrderAsAdminDto } from '../dto/create-order-as-admin.dto';
|
||||||
|
import { AssignDesignerDto } from '../dto/assign-designer.dto';
|
||||||
|
|
||||||
@ApiTags('orders')
|
@ApiTags('orders')
|
||||||
@ApiBearerAuth()
|
@ApiBearerAuth()
|
||||||
@@ -22,7 +20,7 @@ export class OrderController {
|
|||||||
|
|
||||||
@Post('public/order')
|
@Post('public/order')
|
||||||
@UseGuards(AuthGuard)
|
@UseGuards(AuthGuard)
|
||||||
@ApiOperation({ summary: 'Checkout : create order ' })
|
@ApiOperation({ summary: 'create order as user' })
|
||||||
createOrder(@UserId() userId: string, @Body() body: CreateOrderDto) {
|
createOrder(@UserId() userId: string, @Body() body: CreateOrderDto) {
|
||||||
return this.orderService.createOrder(userId, body);
|
return this.orderService.createOrder(userId, body);
|
||||||
}
|
}
|
||||||
@@ -52,7 +50,7 @@ export class OrderController {
|
|||||||
|
|
||||||
@Post('admin/order')
|
@Post('admin/order')
|
||||||
@UseGuards(AuthGuard)
|
@UseGuards(AuthGuard)
|
||||||
@ApiOperation({ summary: 'create order ' })
|
@ApiOperation({ summary: 'create order as admin' })
|
||||||
createOrderAsAdmin(@AdminId() adminId: string, @Body() body: CreateOrderAsAdminDto) {
|
createOrderAsAdmin(@AdminId() adminId: string, @Body() body: CreateOrderAsAdminDto) {
|
||||||
return this.orderService.createOrdeAsAdmin(adminId, body);
|
return this.orderService.createOrdeAsAdmin(adminId, body);
|
||||||
}
|
}
|
||||||
@@ -63,6 +61,13 @@ export class OrderController {
|
|||||||
createInvoice(@Param('orderId') orderId: string, @Body() body: CreateInvoiceDto) {
|
createInvoice(@Param('orderId') orderId: string, @Body() body: CreateInvoiceDto) {
|
||||||
return this.orderService.createInvoice(orderId, body);
|
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)
|
// @UseGuards(AdminAuthGuard)
|
||||||
// @Permissions(Permission.MANAGE_ORDERS)
|
// @Permissions(Permission.MANAGE_ORDERS)
|
||||||
// @Get('admin/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 })
|
@ManyToOne(() => Admin, { nullable: true })
|
||||||
creator?: Admin
|
creator?: Admin
|
||||||
|
|
||||||
|
@ManyToOne(() => Admin, { nullable: true })
|
||||||
|
designer?: Admin
|
||||||
|
|
||||||
// @Property({ nullable: true })
|
// @Property({ nullable: true })
|
||||||
// userAddress?: string | null;
|
// userAddress?: string | null;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
export enum OrderStatusEnum {
|
export enum OrderStatusEnum {
|
||||||
NEW = 'new',
|
DRAFT = 'draft',
|
||||||
|
|
||||||
INVOICED = 'invoiced',
|
INVOICED = 'invoiced',
|
||||||
PREPARING = 'preparing',
|
|
||||||
COMPLETED = 'completed',
|
IN_DESIGN = 'in_design',
|
||||||
|
IN_PRINTING = 'in_printing',
|
||||||
|
|
||||||
|
FINISHED = 'finished',
|
||||||
|
|
||||||
CANCELED = 'canceled',
|
CANCELED = 'canceled',
|
||||||
SHIPPED = 'shipped',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ export class OrderService {
|
|||||||
total: 0,
|
total: 0,
|
||||||
paidAmount: 0,
|
paidAmount: 0,
|
||||||
balance: 0,
|
balance: 0,
|
||||||
status: OrderStatusEnum.NEW
|
status: OrderStatusEnum.DRAFT
|
||||||
})
|
})
|
||||||
|
|
||||||
em.persist(order)
|
em.persist(order)
|
||||||
@@ -121,8 +121,8 @@ export class OrderService {
|
|||||||
const order = await this.em.transactional(async (em) => {
|
const order = await this.em.transactional(async (em) => {
|
||||||
|
|
||||||
let subTotal = 0
|
let subTotal = 0
|
||||||
items.forEach(item => {subTotal += item.unitPrice * item.quantity})
|
items.forEach(item => { subTotal += item.unitPrice * item.quantity })
|
||||||
const total=subTotal-discount
|
const total = subTotal - discount
|
||||||
|
|
||||||
const order = this.orderRepository.create({
|
const order = this.orderRepository.create({
|
||||||
creator: admin,
|
creator: admin,
|
||||||
@@ -131,8 +131,8 @@ export class OrderService {
|
|||||||
subTotal,
|
subTotal,
|
||||||
total,
|
total,
|
||||||
paidAmount: 0,
|
paidAmount: 0,
|
||||||
balance:total,
|
balance: total,
|
||||||
status: OrderStatusEnum.NEW
|
status: OrderStatusEnum.INVOICED
|
||||||
})
|
})
|
||||||
|
|
||||||
em.persist(order)
|
em.persist(order)
|
||||||
@@ -175,7 +175,7 @@ export class OrderService {
|
|||||||
status: TicketStatus.PENDING,
|
status: TicketStatus.PENDING,
|
||||||
admin: null
|
admin: null
|
||||||
})
|
})
|
||||||
|
|
||||||
em.persist(ticket)
|
em.persist(ticket)
|
||||||
|
|
||||||
await em.flush()
|
await em.flush()
|
||||||
@@ -270,4 +270,25 @@ export class OrderService {
|
|||||||
|
|
||||||
return orderItem
|
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);
|
return this.paymentsService.payOrder(orderId, dto, adminId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Post('public/payments/:token/verify/online')
|
@Post('admin/payments/:token/verify/online')
|
||||||
@UseGuards(AdminAuthGuard)
|
@UseGuards(AdminAuthGuard)
|
||||||
@ApiBearerAuth()
|
@ApiBearerAuth()
|
||||||
@ApiOperation({ summary: 'Verify online payment as admin' })
|
@ApiOperation({ summary: 'Verify online payment as admin' })
|
||||||
|
|||||||
Reference in New Issue
Block a user