src/request-order/order-request.controller.ts
api/v1/order-request
Methods |
|
| Async getAllRequestOrders | ||||||
getAllRequestOrders(filterRequestOrderDto: FilterRequestOrderDto)
|
||||||
Decorators :
@UseGuards(new RolesAuthGuard())
|
||||||
|
Parameters :
Returns :
unknown
|
| Async getOrderRequestById | |||||||||
getOrderRequestById(request: AuthRequest, orderId: string)
|
|||||||||
Decorators :
@UseGuards(new RolesAuthGuard())
|
|||||||||
|
Parameters :
Returns :
unknown
|
| Async updateStatus | ||||||||||||
updateStatus(request: AuthRequest, orderId: string, requestOrderDto: UpdateRequestOrderDto)
|
||||||||||||
Decorators :
@UseGuards(new RolesAuthGuard())
|
||||||||||||
|
Parameters :
Returns :
unknown
|
import {
BadRequestException,
Body,
Controller,
Get,
Inject,
InternalServerErrorException,
NotFoundException,
Param,
Put,
Query,
Req,
UnauthorizedException,
UseGuards,
} from "@nestjs/common";
import { RolesAuthGuard } from "src/auth/guards/roles-auth.guard";
import { OrderRequestService } from "./order-request.service";
import { FilterRequestOrderDto } from "./dtos/filter-orderRequest.dto";
import { UpdateRequestOrderDto } from "./dtos/update-orderRequest.dto";
import { UserService } from "src/user/user.service";
import { AuthRequest, EndUserRoles } from "src/common/interfaces";
@Controller("api/v1/order-request")
export class OrderRequestController {
@Inject(UserService)
private readonly userService: UserService;
constructor(private readonly orderRequestService: OrderRequestService) {}
@UseGuards(new RolesAuthGuard(["fundAdmin", "admin", "dealer", "investor"]))
@Get("/:orderId")
async getOrderRequestById(
@Req() request: AuthRequest,
@Param("orderId") orderId: string,
) {
try {
let orderRequest;
if (request.user.role === EndUserRoles.dealer) {
orderRequest = await this.orderRequestService.findRequestOrderbyOrderId(
orderId,
request.user.email,
);
} else {
orderRequest = await this.orderRequestService.findRequestOrderbyOrderId(
orderId,
);
}
if (!orderRequest) {
throw new NotFoundException("Order request not found");
}
await this.userService.checkIfUserIsAllowedToFund(
request.user,
orderRequest.fundId,
);
return orderRequest;
} catch (error) {
console.error(error);
if (error.status === 401) {
throw new UnauthorizedException(error);
}
if (error.status === 404) {
throw new NotFoundException(error);
}
throw new InternalServerErrorException(error);
}
}
@UseGuards(new RolesAuthGuard(["fundAdmin", "admin"]))
@Put("/:orderId")
async updateStatus(
@Req() request: AuthRequest,
@Param("orderId") orderId: string,
@Body() requestOrderDto: UpdateRequestOrderDto,
) {
try {
const orderRequest =
await this.orderRequestService.findRequestOrderbyOrderId(orderId);
await this.userService.checkIfUserIsAllowedToFund(
request.user,
orderRequest.fundId,
);
return await this.orderRequestService.update(
orderRequest._id.toString(),
{
...requestOrderDto,
orderId,
},
);
} catch (error) {
console.error(error);
if (error.status === 400) {
throw new BadRequestException(error);
}
if (error.status === 401) {
throw new UnauthorizedException(error);
}
throw new InternalServerErrorException(error);
}
}
@UseGuards(new RolesAuthGuard(["admin"]))
@Get("/")
async getAllRequestOrders(
@Query() filterRequestOrderDto: FilterRequestOrderDto,
) {
try {
return await this.orderRequestService.getRequestedOrders(
filterRequestOrderDto,
);
} catch (error) {
console.error(error);
throw new InternalServerErrorException(error);
}
}
}