diff --git a/src/modules/form-builder/form-builder.module.ts b/src/modules/form-builder/form-builder.module.ts index 25085c0..e9d1e90 100644 --- a/src/modules/form-builder/form-builder.module.ts +++ b/src/modules/form-builder/form-builder.module.ts @@ -1,4 +1,4 @@ -import { Module } from '@nestjs/common'; +import { forwardRef, Module } from '@nestjs/common'; import { FormBuilderController } from './controller/form-builder.controller'; import { FieldService } from './provider/field.service'; import { FieldOptionService } from './provider/field-option.service'; @@ -9,7 +9,11 @@ import { JwtModule } from '@nestjs/jwt'; import { ProductModule } from '../product/product.module'; @Module({ - imports: [PrintModule, ProductModule, JwtModule.register({})], + imports: [ + PrintModule, + JwtModule.register({}), + forwardRef(() => ProductModule), + ], controllers: [FormBuilderController], providers: [FieldService, FieldOptionService, FieldRepository, FieldOptionRepository], exports: [FieldService, FieldOptionService, FieldRepository, FieldOptionRepository], diff --git a/src/modules/form-builder/provider/field.service.ts b/src/modules/form-builder/provider/field.service.ts index f413870..1fb3d89 100644 --- a/src/modules/form-builder/provider/field.service.ts +++ b/src/modules/form-builder/provider/field.service.ts @@ -6,7 +6,6 @@ import { PrintRepository } from 'src/modules/print/repository/print.repository'; import { Field } from '../entities/field.entity'; import { CreateFieldDto } from '../dto/create-field.dto'; import { UpdateFieldDto } from '../dto/update-field.dto'; -import { ProductRepository } from 'src/modules/product/repositories/product.repository'; import { EntityType } from '../interface/print'; import { Product } from 'src/modules/product/entities/product.entity'; import { Print } from 'src/modules/print/entities/print.entity'; diff --git a/src/modules/product/controllers/product.controller.ts b/src/modules/product/controllers/product.controller.ts index e471a6d..8aee46e 100644 --- a/src/modules/product/controllers/product.controller.ts +++ b/src/modules/product/controllers/product.controller.ts @@ -12,30 +12,30 @@ import { ApiBearerAuth, ApiHeader, } from '@nestjs/swagger'; -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 { Permission } from 'src/common/enums/permission.enum'; import { Permissions } from 'src/common/decorators/permissions.decorator'; 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 { 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 { 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'; @ApiTags('products') @Controller() -export class productController { +export class ProductController { constructor( private readonly productService: ProductService, private readonly categoryService: CategoryService, - private readonly attributeService: AttributeService, - private readonly attributeValueService: AttributeValueService, + // private readonly attributeService: AttributeService, + // private readonly attributeValueService: AttributeValueService, ) { } @@ -171,108 +171,108 @@ 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); - } + // @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/: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); - } + // @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); - } + // @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); - } + // @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); - } + // @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/: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); - } + // @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); - } + // @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); - } + // @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); + // } } diff --git a/src/modules/product/product.module.ts b/src/modules/product/product.module.ts index 158fef5..4c4f7e7 100644 --- a/src/modules/product/product.module.ts +++ b/src/modules/product/product.module.ts @@ -1,38 +1,52 @@ -import { Module } from '@nestjs/common'; +import { forwardRef, Module } from '@nestjs/common'; import { ProductService } from './providers/product.service'; -import { productController } from './controllers/product.controller'; +import { ProductController } from './controllers/product.controller'; import { ProductRepository } from './repositories/product.repository'; import { MikroOrmModule } from '@mikro-orm/nestjs'; import { Category } from './entities/category.entity'; import { Product } from './entities/product.entity'; -import { Attribute } from './entities/attribute.entity'; -import { AttributeValue } from './entities/attribute-value.entity'; import { AuthModule } from '../auth/auth.module'; import { JwtModule } from '@nestjs/jwt'; import { UtilsModule } from '../util/utils.module'; import { CategoryRepository } from './repositories/category.repository'; import { CategoryService } from './providers/category.service'; -import { AttributeRepository } from './repositories/attribute.repository'; -import { AttributeService } from './providers/attribute.service'; -import { AttributeValueRepository } from './repositories/attribute-value.repository'; -import { AttributeValueService } from './providers/attribute-value.service'; +import { FormBuilderModule } from '../form-builder/form-builder.module'; +// import { Attribute } from './entities/attribute.entity'; +// import { AttributeValue } from './entities/attribute-value.entity'; +// import { AttributeRepository } from './repositories/attribute.repository'; +// import { AttributeService } from './providers/attribute.service'; +// import { AttributeValueRepository } from './repositories/attribute-value.repository'; +// import { AttributeValueService } from './providers/attribute-value.service'; @Module({ imports: [ - MikroOrmModule.forFeature([Product, Category, Attribute, AttributeValue]), + MikroOrmModule.forFeature([ + Product, + Category + // , Attribute, AttributeValue + ]), AuthModule, JwtModule, UtilsModule, + forwardRef(() => FormBuilderModule) ], - controllers: [productController,], - providers: [ProductService, ProductRepository, - CategoryRepository, CategoryService, - AttributeRepository, AttributeService, - AttributeValueRepository, - AttributeValueService + controllers: [ProductController], + providers: [ + ProductService, + ProductRepository, + CategoryRepository, + CategoryService, + // AttributeRepository, AttributeService, + // AttributeValueRepository, + // AttributeValueService + ], + exports: [ + ProductRepository, + CategoryRepository, + CategoryService, + // AttributeRepository, + // AttributeService, + ProductService ], - exports: [ProductRepository, CategoryRepository, - CategoryService, AttributeRepository, - AttributeService, ProductService], }) export class ProductModule { } diff --git a/src/modules/product/providers/product.service.ts b/src/modules/product/providers/product.service.ts index 307a7d8..09ef913 100644 --- a/src/modules/product/providers/product.service.ts +++ b/src/modules/product/providers/product.service.ts @@ -7,6 +7,7 @@ import { RequiredEntityData } from '@mikro-orm/core'; import { Product } from '../entities/product.entity'; import { CategoryMessage, productMessage } from 'src/common/enums/message.enum'; import { CategoryRepository } from '../repositories/category.repository'; +import { FieldService } from 'src/modules/form-builder/provider/field.service'; @Injectable() export class ProductService { @@ -14,6 +15,7 @@ export class ProductService { constructor( private readonly productRepository: ProductRepository, private readonly categoryRepository: CategoryRepository, + // private readonly fieldService: FieldService, private readonly em: EntityManager, ) { }