|
| 1 | +import { Controller, Get, Param, Req, UseGuards } from '@nestjs/common' |
| 2 | +import { ApiBadRequestResponse, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger' |
| 3 | +import * as _ from 'lodash' |
| 4 | + |
| 5 | +import { ErrorResponse, PaginationQuery } from '@common/contracts/dto' |
| 6 | +import { UserRole } from '@common/contracts/constant' |
| 7 | +import { Roles } from '@auth/decorators/roles.decorator' |
| 8 | +import { JwtAuthGuard } from '@auth/guards/jwt-auth.guard' |
| 9 | +import { RolesGuard } from '@auth/guards/roles.guard' |
| 10 | +import { Pagination, PaginationParams } from '@common/decorators/pagination.decorator' |
| 11 | +import { ParseObjectIdPipe } from '@common/pipes/parse-object-id.pipe' |
| 12 | +import { VisitShowroomBookingService } from '@visit-showroom-booking/services/booking.service' |
| 13 | +import { VisitShowroomBookingPaginateResponseDto, VisitShowroomBookingResponseDto } from '@visit-showroom-booking/dto/booking.dto' |
| 14 | + |
| 15 | +@ApiTags('VisitShowroomBooking - Provider') |
| 16 | +@ApiBearerAuth() |
| 17 | +@UseGuards(JwtAuthGuard.ACCESS_TOKEN) |
| 18 | +@Controller('provider') |
| 19 | +export class VisitShowroomBookingProviderController { |
| 20 | + constructor(private readonly visitShowroomBookingService: VisitShowroomBookingService) {} |
| 21 | + |
| 22 | + @Get() |
| 23 | + @ApiOperation({ |
| 24 | + summary: 'Get visit showroom bookings list' |
| 25 | + }) |
| 26 | + @Roles(UserRole.ADMIN, UserRole.STAFF) |
| 27 | + @UseGuards(RolesGuard) |
| 28 | + @ApiQuery({ type: PaginationQuery }) |
| 29 | + @ApiOkResponse({ type: VisitShowroomBookingPaginateResponseDto }) |
| 30 | + async paginate(@Pagination() paginationParams: PaginationParams) { |
| 31 | + return await this.visitShowroomBookingService.paginate({}, paginationParams) |
| 32 | + } |
| 33 | + |
| 34 | + @Get(':bookingId') |
| 35 | + @ApiOperation({ |
| 36 | + summary: 'Get visit showroom booking details' |
| 37 | + }) |
| 38 | + @Roles(UserRole.ADMIN, UserRole.STAFF) |
| 39 | + @UseGuards(RolesGuard) |
| 40 | + @ApiOkResponse({ type: VisitShowroomBookingResponseDto }) |
| 41 | + @ApiBadRequestResponse({ type: ErrorResponse }) |
| 42 | + async getOne(@Req() req, @Param('bookingId', ParseObjectIdPipe) bookingId: string) { |
| 43 | + return await this.visitShowroomBookingService.getOne({ _id: bookingId }) |
| 44 | + } |
| 45 | +} |
0 commit comments