89 lines
3.4 KiB
TypeScript
89 lines
3.4 KiB
TypeScript
import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards } from '@nestjs/common';
|
|
import {
|
|
ApiTags,
|
|
ApiOperation,
|
|
ApiCreatedResponse,
|
|
ApiOkResponse,
|
|
ApiNotFoundResponse,
|
|
ApiParam,
|
|
ApiBody,
|
|
ApiBearerAuth,
|
|
ApiHeader,
|
|
} from '@nestjs/swagger';
|
|
import { DeliveryService } from '../providers/delivery.service';
|
|
import { CreateDeliveryDto } from '../dto/create-delivery.dto';
|
|
import { UpdateDeliveryDto } from '../dto/update-delivery.dto';
|
|
import { RestId } from 'src/common/decorators/rest-id.decorator';
|
|
import { AuthGuard } from 'src/modules/auth/guards/auth.guard';
|
|
import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard';
|
|
import { Delivery } from '../entities/delivery.entity';
|
|
import { API_HEADER_SLUG } from 'src/common/constants';
|
|
import { Permission } from 'src/common/enums/permission.enum';
|
|
import { Permissions } from 'src/common/decorators/permissions.decorator';
|
|
|
|
@ApiTags('Delivery')
|
|
@Controller()
|
|
export class DeliveryController {
|
|
constructor(private readonly deliveryService: DeliveryService) {}
|
|
|
|
@UseGuards(AuthGuard)
|
|
@ApiBearerAuth()
|
|
@Get('public/delivery-methods/restaurant')
|
|
@ApiOperation({ summary: 'Get restaurant delivery methods' })
|
|
@ApiHeader(API_HEADER_SLUG)
|
|
findAllDeliveryMethods(@RestId() restId: string) {
|
|
return this.deliveryService.findAllForRestaurantId(restId);
|
|
}
|
|
|
|
/*** Admin ***/
|
|
@UseGuards(AdminAuthGuard)
|
|
@ApiBearerAuth()
|
|
@Permissions(Permission.MANAGE_DELIVERY)
|
|
@Post('admin/delivery-methods/restaurant')
|
|
@ApiOperation({ summary: 'Create a delivery method for a restaurant' })
|
|
@ApiBody({ type: CreateDeliveryDto })
|
|
create(@Body() createDto: CreateDeliveryDto, @RestId() restId: string) {
|
|
return this.deliveryService.create(restId, createDto);
|
|
}
|
|
|
|
@UseGuards(AdminAuthGuard)
|
|
@ApiBearerAuth()
|
|
@Permissions(Permission.MANAGE_DELIVERY)
|
|
@Get('admin/delivery-methods/restaurant')
|
|
@ApiOperation({ summary: 'Get the restaurant delivery methods' })
|
|
findRestaurantDeliveryMethods(@RestId() restId: string) {
|
|
return this.deliveryService.findAllForRestaurantId(restId);
|
|
}
|
|
|
|
@UseGuards(AdminAuthGuard)
|
|
@ApiBearerAuth()
|
|
@Permissions(Permission.MANAGE_DELIVERY)
|
|
@Get('admin/delivery-methods/restaurant/:deliveryId')
|
|
@ApiOperation({ summary: 'Get a restaurant delivery method by delivery ID' })
|
|
@ApiParam({ name: 'deliveryId', description: 'Delivery method ID' })
|
|
findOne(@Param('deliveryId') deliveryId: string, @RestId() restId: string) {
|
|
return this.deliveryService.findOne(restId, deliveryId);
|
|
}
|
|
|
|
@UseGuards(AdminAuthGuard)
|
|
@ApiBearerAuth()
|
|
@Permissions(Permission.MANAGE_DELIVERY)
|
|
@Patch('admin/delivery-methods/restaurant/:deliveryId')
|
|
@ApiOperation({ summary: 'Update a restaurant delivery method' })
|
|
@ApiParam({ name: 'deliveryId', description: 'Delivery method ID' })
|
|
@ApiBody({ type: UpdateDeliveryDto })
|
|
update(@Param('deliveryId') deliveryId: string, @Body() updateDto: UpdateDeliveryDto, @RestId() restId: string) {
|
|
return this.deliveryService.update(restId, deliveryId, updateDto);
|
|
}
|
|
|
|
@UseGuards(AdminAuthGuard)
|
|
@ApiBearerAuth()
|
|
@Permissions(Permission.MANAGE_DELIVERY)
|
|
@Delete('admin/delivery-methods/restaurant/:deliveryId')
|
|
@ApiOperation({ summary: 'Delete a restaurant delivery method' })
|
|
@ApiParam({ name: 'deliveryId', description: 'Delivery method ID' })
|
|
remove(@Param('deliveryId') deliveryId: string, @RestId() restId: string) {
|
|
return this.deliveryService.remove(restId, deliveryId);
|
|
}
|
|
}
|