diff --git a/src/modules/product/controllers/product.controller.ts b/src/modules/product/controllers/product.controller.ts index 54f736b..81529d3 100644 --- a/src/modules/product/controllers/product.controller.ts +++ b/src/modules/product/controllers/product.controller.ts @@ -10,7 +10,6 @@ import { ApiBody, ApiParam, ApiBearerAuth, - ApiHeader, } from '@nestjs/swagger'; import { Permission } from 'src/common/enums/permission.enum'; import { Permissions } from 'src/common/decorators/permissions.decorator'; @@ -18,42 +17,32 @@ import { CreateCategoryDto } from '../dto/create-category.dto'; import { CategoryService } from '../providers/category.service'; import { FindCategoriesDto } from '../dto/find-categories.dto'; import { UpdateCategoryDto } from '../dto/update-category.dto'; -// import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; -// import { UserId } from 'src/common/decorators'; -// import { AuthGuard } from 'src/modules/auth/guards/auth.guard'; -// import { AttributeService } from '../providers/attribute.service'; -// import { CreateAttributeDto } from '../dto/create-attribute.dto'; -// import { UpdateAttributeDto } from '../dto/update-attribute.dto'; -// import { CreateAttributeValueDto } from '../dto/create-attribute-value.dto'; -// import { AttributeValueService } from '../providers/attribute-value.service'; -// import { UpdateAttributeValueDto } from '../dto/update-attribute-value.dto'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { AuthGuard } from 'src/modules/auth/guards/auth.guard'; + -@ApiTags('products') @Controller() +@ApiTags('products') +@ApiBearerAuth() export class ProductController { constructor( private readonly productService: ProductService, private readonly categoryService: CategoryService, - // private readonly attributeService: AttributeService, - // private readonly attributeValueService: AttributeValueService, ) { } /*====================CATEGORY =========================*/ + @Post('admin/category') - // @UseGuards(AdminAuthGuard) - @ApiBearerAuth() - @Permissions(Permission.MANAGE_PRODUCTS) + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_CATEGORIES) @ApiOperation({ summary: 'Create a new category' }) - @ApiBody({ type: CreateCategoryDto }) createCategory(@Body() createproductDto: CreateCategoryDto) { return this.categoryService.create(createproductDto); } @Get('admin/category') - // @UseGuards(AdminAuthGuard) - @ApiBearerAuth() - @Permissions(Permission.MANAGE_PRODUCTS) + @UseGuards(AdminAuthGuard) @ApiOperation({ summary: 'Get a paginated list of Categories' }) @ApiQuery({ name: 'page', required: false, type: Number }) @ApiQuery({ name: 'limit', required: false, type: Number }) @@ -68,9 +57,7 @@ export class ProductController { @Get('admin/category/:id') - // @UseGuards(AdminAuthGuard) - @ApiBearerAuth() - @Permissions(Permission.MANAGE_PRODUCTS) + @UseGuards(AdminAuthGuard) @ApiOperation({ summary: 'Get a category by id' }) @ApiParam({ name: 'id', required: true }) findCategoryById(@Param('id') id: string) { @@ -78,9 +65,8 @@ export class ProductController { } @Patch('admin/category/:id') - // @UseGuards(AdminAuthGuard) - @ApiBearerAuth() - @Permissions(Permission.MANAGE_PRODUCTS) + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_CATEGORIES) @ApiOperation({ summary: 'Update a category' }) @ApiParam({ name: 'id', required: true }) @ApiBody({ type: UpdateCategoryDto }) @@ -89,9 +75,8 @@ export class ProductController { } @Delete('admin/category/:id') - // @UseGuards(AdminAuthGuard) - @ApiBearerAuth() - @Permissions(Permission.MANAGE_PRODUCTS) + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_CATEGORIES) @ApiOperation({ summary: 'Delete (soft) a category' }) @ApiParam({ name: 'id', required: true }) removeCategory(@Param('id') id: string,) { @@ -99,10 +84,9 @@ export class ProductController { } /* =============================== PRODUCT ================================= */ + @Get('public/products') - // @UseGuards(AdminAuthGuard) - @ApiBearerAuth() - @Permissions(Permission.MANAGE_PRODUCTS) + @UseGuards(AuthGuard) @ApiOperation({ summary: 'Get list of products' }) async findAllAsUser() { const result = await this.productService.findAll({ limit: 1000 }); @@ -110,8 +94,7 @@ export class ProductController { } @Post('admin/product') - // @UseGuards(AdminAuthGuard) - @ApiBearerAuth() + @UseGuards(AdminAuthGuard) @Permissions(Permission.MANAGE_PRODUCTS) @ApiOperation({ summary: 'Create a new product' }) @ApiBody({ type: CreateproductDto }) @@ -120,8 +103,7 @@ export class ProductController { } @Get('admin/products') - // @UseGuards(AdminAuthGuard) - @ApiBearerAuth() + @UseGuards(AdminAuthGuard) @Permissions(Permission.MANAGE_PRODUCTS) @ApiOperation({ summary: 'Get a paginated list of products' }) @ApiQuery({ name: 'page', required: false, type: Number }) @@ -137,8 +119,7 @@ export class ProductController { } @Get('admin/products/:id') - // @UseGuards(AdminAuthGuard) - @ApiBearerAuth() + @UseGuards(AdminAuthGuard) @Permissions(Permission.MANAGE_PRODUCTS) @ApiOperation({ summary: 'Get a product by id' }) @ApiParam({ name: 'id', required: true }) @@ -147,19 +128,16 @@ export class ProductController { } @Patch('admin/products/:id') - // @UseGuards(AdminAuthGuard) - @ApiBearerAuth() + @UseGuards(AdminAuthGuard) @Permissions(Permission.MANAGE_PRODUCTS) @ApiOperation({ summary: 'Update a product' }) @ApiParam({ name: 'id', required: true }) - @ApiBody({ type: UpdateproductDto }) update(@Param('id') id: string, @Body() updateproductDto: UpdateproductDto) { return this.productService.update(+id, updateproductDto); } @Delete('admin/products/:id') - // @UseGuards(AdminAuthGuard) - @ApiBearerAuth() + @UseGuards(AdminAuthGuard) @Permissions(Permission.MANAGE_PRODUCTS) @ApiOperation({ summary: 'Delete (soft) a product' }) @ApiParam({ name: 'id', required: true }) @@ -168,111 +146,4 @@ export class ProductController { } - - /*=============================== Attibute ==========================*/ - - // @Post('admin/product/:id/attribute') - // // @UseGuards(AdminAuthGuard) - // @ApiBearerAuth() - // @Permissions(Permission.MANAGE_PRODUCTS) - // @ApiOperation({ summary: 'Create a new attribute' }) - // @ApiParam({ name: 'id', required: true }) - // @ApiBody({ type: CreateAttributeDto }) - // createAttribute(@Param('id') id: string, @Body() dto: CreateAttributeDto) { - // return this.attributeService.create(+id, dto); - // } - - // @Get('admin/products/:id/attributes') - // // @UseGuards(AdminAuthGuard) - // @ApiBearerAuth() - // @Permissions(Permission.MANAGE_PRODUCTS) - // @ApiParam({ name: 'id', required: true }) - // @ApiOperation({ summary: 'Get list of product attributes' }) - // async findProductAttributes(@Param('id') id: string) { - // return this.attributeService.findAll(+id); - // } - - // @Get('admin/products/attributes/:id') - // // @UseGuards(AdminAuthGuard) - // @ApiBearerAuth() - // @Permissions(Permission.MANAGE_PRODUCTS) - // @ApiOperation({ summary: 'Get a attribute by id' }) - // @ApiParam({ name: 'id', required: true }) - // findAttributeById(@Param('id') id: string) { - // return this.attributeService.findById(+id); - // } - - // @Patch('admin/products/attributes/:id') - // // @UseGuards(AdminAuthGuard) - // @ApiBearerAuth() - // @Permissions(Permission.MANAGE_PRODUCTS) - // @ApiOperation({ summary: 'Update a attribute' }) - // @ApiParam({ name: 'id', required: true }) - // @ApiBody({ type: UpdateAttributeDto }) - // updateProductAttribute(@Param('id') id: string, @Body() dto: UpdateAttributeDto) { - // return this.attributeService.update(+id, dto); - // } - - // @Delete('admin/products/attributes/:id') - // // @UseGuards(AdminAuthGuard) - // @ApiBearerAuth() - // @Permissions(Permission.MANAGE_PRODUCTS) - // @ApiOperation({ summary: 'Delete (soft) a attribute' }) - // @ApiParam({ name: 'id', required: true }) - // removeAttribute(@Param('id') id: string,) { - // return this.attributeService.remove(+id); - // } - - /*=========================== Attibute Values==========================*/ - // @Post('admin/product/attribute/:id/value') - // // @UseGuards(AdminAuthGuard) - // @ApiBearerAuth() - // @Permissions(Permission.MANAGE_PRODUCTS) - // @ApiOperation({ summary: 'Create a new attribute value' }) - // @ApiParam({ name: 'id', required: true }) - // @ApiBody({ type: CreateAttributeValueDto }) - // createAttributeValue(@Param('id') id: string, @Body() dto: CreateAttributeValueDto) { - // return this.attributeValueService.create(+id, dto); - // } - - // @Get('admin/products/attributes/:id/values') - // // @UseGuards(AdminAuthGuard) - // @ApiBearerAuth() - // @Permissions(Permission.MANAGE_PRODUCTS) - // @ApiParam({ name: 'id', required: true }) - // @ApiOperation({ summary: 'Get list of attribute values' }) - // async findtAttributeValue(@Param('id') id: string) { - // return this.attributeValueService.findAll(+id); - // } - - // @Get('admin/products/attributes/value/:id') - // // @UseGuards(AdminAuthGuard) - // @ApiBearerAuth() - // @Permissions(Permission.MANAGE_PRODUCTS) - // @ApiOperation({ summary: 'Get a attribute value by id' }) - // @ApiParam({ name: 'id', required: true }) - // findAttributeValueById(@Param('id') id: string) { - // return this.attributeValueService.findById(+id); - // } - - // @Patch('admin/products/attributes/value/:id') - // // @UseGuards(AdminAuthGuard) - // @ApiBearerAuth() - // @Permissions(Permission.MANAGE_PRODUCTS) - // @ApiOperation({ summary: 'Update a attribute value' }) - // @ApiParam({ name: 'id', required: true }) - // @ApiBody({ type: UpdateAttributeValueDto }) - // updateAttributeValue(@Param('id') id: string, @Body() dto: UpdateAttributeValueDto) { - // return this.attributeValueService.update(+id, dto); - // } - - // @Delete('admin/products/attributes/value/:id') - // // @UseGuards(AdminAuthGuard) - // @ApiBearerAuth() - // @Permissions(Permission.MANAGE_PRODUCTS) - // @ApiOperation({ summary: 'Delete (soft) a attribute value' }) - // @ApiParam({ name: 'id', required: true }) - // removeAttributeValue(@Param('id') id: string,) { - // return this.attributeValueService.remove(+id); - // } }