diff --git a/src/auth/controllers/customer.controller.ts b/src/auth/controllers/customer.controller.ts index a2c1a84..1fcde49 100644 --- a/src/auth/controllers/customer.controller.ts +++ b/src/auth/controllers/customer.controller.ts @@ -18,14 +18,14 @@ export class AuthCustomerController { @ApiBody({ type: LoginReqDto }) @ApiOkResponse({ type: DataResponse(TokenResDto) }) @ApiBadRequestResponse({ type: ErrorResponse }) - async login(@Body() loginReqDto: LoginReqDto): Promise { + login(@Body() loginReqDto: LoginReqDto): Promise { return this.authService.login(loginReqDto, UserSide.CUSTOMER) } @Post('google') @ApiOkResponse({ type: DataResponse(TokenResDto) }) @ApiBadRequestResponse({ type: ErrorResponse }) - async googleLogin(@Body() googleLoginReqDto: GoogleLoginReqDto): Promise { + googleLogin(@Body() googleLoginReqDto: GoogleLoginReqDto): Promise { return this.authService.googleLogin(googleLoginReqDto) } diff --git a/src/auth/strategies/jwt-access.strategy.ts b/src/auth/strategies/jwt-access.strategy.ts index 88b4ee9..f0a8352 100644 --- a/src/auth/strategies/jwt-access.strategy.ts +++ b/src/auth/strategies/jwt-access.strategy.ts @@ -15,7 +15,7 @@ export class JwtAccessStrategy extends PassportStrategy(Strategy, 'jwt-access') super(opts) } - async validate(payload: AccessTokenPayload) { + validate(payload: AccessTokenPayload) { return { _id: payload.sub, name: payload.name, role: payload.role } } } diff --git a/src/auth/strategies/jwt-refresh.strategy.ts b/src/auth/strategies/jwt-refresh.strategy.ts index a4dc102..02ed85b 100644 --- a/src/auth/strategies/jwt-refresh.strategy.ts +++ b/src/auth/strategies/jwt-refresh.strategy.ts @@ -15,7 +15,7 @@ export class JwtRefreshStrategy extends PassportStrategy(Strategy, 'jwt-refresh' super(opts) } - async validate(payload: RefreshTokenPayload) { + validate(payload: RefreshTokenPayload) { return { _id: payload.sub, role: payload.role } } } diff --git a/src/customer/schemas/customer.schema.ts b/src/customer/schemas/customer.schema.ts index 8e728a0..c5e393a 100644 --- a/src/customer/schemas/customer.schema.ts +++ b/src/customer/schemas/customer.schema.ts @@ -4,7 +4,6 @@ import * as paginate from 'mongoose-paginate-v2' import { ApiProperty } from '@nestjs/swagger' import { Transform } from 'class-transformer' import { Gender, Status } from '@common/contracts/constant' -import { EMAIL_REGEX, PHONE_REGEX, URL_REGEX } from '@src/config' export type CustomerDocument = HydratedDocument diff --git a/src/order/controllers/customer.controller.ts b/src/order/controllers/customer.controller.ts index 627747c..793a303 100644 --- a/src/order/controllers/customer.controller.ts +++ b/src/order/controllers/customer.controller.ts @@ -7,7 +7,7 @@ import { JwtAuthGuard } from '@auth/guards/jwt-auth.guard' import { RolesGuard } from '@auth/guards/roles.guard' import { OrderStatus, TransactionStatus, UserRole } from '@common/contracts/constant' import { Roles } from '@auth/decorators/roles.decorator' -import { CreateOrderDto, OrderDto } from '@order/dto/order.dto' +import { CreateOrderDto, OrderDto, PublicOrderHistoryDto } from '@order/dto/order.dto' import { OrderService } from '@order/services/order.service' import { OrderHistoryDto } from '@order/schemas/order.schema' import { Pagination, PaginationParams } from '@common/decorators/pagination.decorator' @@ -42,7 +42,7 @@ export class OrderCustomerController { @ApiQuery({ type: PaginationQuery }) async getPurchaseHistory(@Req() req, @Pagination() paginationParams: PaginationParams) { const customerId = _.get(req, 'user._id') - return await this.orderService.getPurchaseHistory(customerId, {}, paginationParams) + return await this.orderService.getOrderList({ 'customer._id': customerId }, paginationParams) } @Get(':orderId') @@ -53,14 +53,14 @@ export class OrderCustomerController { @ApiBadRequestResponse({ type: ErrorResponse }) async getPurchaseDetails(@Req() req, @Param('orderId') orderId: string) { const customerId = _.get(req, 'user._id') - return await this.orderService.getPurchaseDetails(customerId, orderId) + return await this.orderService.getOrderDetails({ 'customer._id': customerId, _id: orderId }) } @Get(':orderId/history') @ApiOperation({ summary: 'Get a customer order history' }) - @ApiOkResponse({ type: DataResponse(OrderDto) }) + @ApiOkResponse({ type: DataResponse(PublicOrderHistoryDto) }) @ApiBadRequestResponse({ type: ErrorResponse }) async getOrderHistory(@Req() req, @Param('orderId') orderId: string) { const { _id: customerId } = _.get(req, 'user') diff --git a/src/order/controllers/provider.controller.ts b/src/order/controllers/provider.controller.ts index 8d4bc7c..e545efb 100644 --- a/src/order/controllers/provider.controller.ts +++ b/src/order/controllers/provider.controller.ts @@ -36,7 +36,7 @@ export class OrderProviderController { }) @ApiOkResponse({ type: OrderResponseDto }) getOrderDetail(@Param('orderId') orderId: string) { - return this.orderService.getOrderDetail(orderId) + return this.orderService.getOrderDetails({ _id: orderId }) } @Patch(':orderId/confirm') diff --git a/src/order/dto/order.dto.ts b/src/order/dto/order.dto.ts index 06130e7..9b85319 100644 --- a/src/order/dto/order.dto.ts +++ b/src/order/dto/order.dto.ts @@ -88,3 +88,14 @@ export class CancelOrderDto { orderId?: string orderHistoryItem?: OrderHistoryDto } + +export class PublicOrderHistoryDto { + @ApiProperty() + orderStatus: OrderStatus + + @ApiProperty() + transactionStatus: TransactionStatus + + @ApiProperty() + timestamp: Date +} diff --git a/src/order/schemas/order.schema.ts b/src/order/schemas/order.schema.ts index dec838d..c4812c9 100644 --- a/src/order/schemas/order.schema.ts +++ b/src/order/schemas/order.schema.ts @@ -4,7 +4,7 @@ import * as paginate from 'mongoose-paginate-v2' import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger' import { Transform } from 'class-transformer' import { OrderStatus, TransactionStatus, UserRole } from '@common/contracts/constant' -import { IsEmail, IsNotEmpty, IsPhoneNumber, MaxLength, Min, ValidateNested } from 'class-validator' +import { IsEmail, IsNotEmpty, IsPhoneNumber, MaxLength, ValidateNested } from 'class-validator' import { Product } from '@product/schemas/product.schema' import { CreateOrderItemDto } from '@order/dto/order.dto' diff --git a/src/order/services/order.service.ts b/src/order/services/order.service.ts index 41520c2..d48f7c8 100644 --- a/src/order/services/order.service.ts +++ b/src/order/services/order.service.ts @@ -34,10 +34,10 @@ export class OrderService { return result } - public async getOrderDetail(orderId: string) { + public async getOrderDetails(filter: FilterQuery) { const order = await this.orderRepository.findOne({ conditions: { - _id: orderId, + ...filter, status: { $ne: OrderStatus.DELETED } @@ -49,33 +49,6 @@ export class OrderService { return order } - public async getPurchaseHistory(customerId: string, filter: FilterQuery, paginationParams: PaginationParams) { - const orders = await this.orderRepository.paginate( - { - 'customer._id': customerId, - ...filter, - status: { - $ne: OrderStatus.DELETED - } - }, - { ...paginationParams } - ) - return orders - } - - public async getPurchaseDetails(customerId: string, orderId: string) { - const order = await this.orderRepository.findOne({ - conditions: { - 'customer._id': customerId, - _id: orderId, - status: { - $ne: OrderStatus.DELETED - } - }, - projection: '+items' - }) - } - public async getOrderHistory(customerId: string, orderId: string) { const order = await this.orderRepository.findOne({ conditions: { @@ -83,12 +56,18 @@ export class OrderService { 'customer._id': customerId, status: { $ne: OrderStatus.DELETED } }, - projection: '+orderHistory' + projection: { + orderHistory: { + orderStatus: 1, + transactionStatus: 1, + timestamp: 1 + } + } }) if (!order) throw new AppException(Errors.ORDER_NOT_FOUND) - return order + return order.orderHistory } public async createOrder(createOrderDto: CreateOrderDto) { diff --git a/src/product/dto/product.dto.ts b/src/product/dto/product.dto.ts index 5e99dc0..b90e848 100644 --- a/src/product/dto/product.dto.ts +++ b/src/product/dto/product.dto.ts @@ -8,11 +8,8 @@ import { ArrayMinSize, IsArray, IsNotEmpty, - IsNumber, IsUrl, - Max, MaxLength, - Min, ValidateNested } from 'class-validator' import { Types } from 'mongoose' diff --git a/src/product/services/product.service.ts b/src/product/services/product.service.ts index 7671c54..ee3b16e 100644 --- a/src/product/services/product.service.ts +++ b/src/product/services/product.service.ts @@ -1,4 +1,4 @@ -import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common' +import { BadRequestException, Injectable } from '@nestjs/common' import { ProductRepository } from '@product/repositories/product.repository' import { PaginationParams } from '@common/decorators/pagination.decorator' import { CreateProductDto } from '@product/dto/product.dto'