diff --git a/src/product/entities/product-sub-category.entity.ts b/src/product/entities/product-sub-category.entity.ts index ff50c6b..6cfd1bd 100644 --- a/src/product/entities/product-sub-category.entity.ts +++ b/src/product/entities/product-sub-category.entity.ts @@ -2,17 +2,15 @@ import { Entity, Column, PrimaryGeneratedColumn, - UpdateDateColumn, - DeleteDateColumn, - VersionColumn, - CreateDateColumn, ManyToOne, + OneToMany, } from 'typeorm'; import { ProductCategories } from './product-category.entity'; import { BaseModel } from '../../config/basemodel.entity'; +import { Product } from './product.entity'; @Entity() -export class ProductSubCategories extends BaseModel{ +export class ProductSubCategories extends BaseModel { @PrimaryGeneratedColumn('uuid') id: string; @@ -21,4 +19,7 @@ export class ProductSubCategories extends BaseModel{ @ManyToOne(() => ProductCategories, (categories) => categories.subCategories) category: ProductCategories; + + @OneToMany(() => Product, (product) => product.subCategories) + product: Product; } diff --git a/src/product/entities/product.entity.ts b/src/product/entities/product.entity.ts index 2a3cef8..f754f38 100644 --- a/src/product/entities/product.entity.ts +++ b/src/product/entities/product.entity.ts @@ -13,7 +13,7 @@ import { ProductSubCategories } from './product-sub-category.entity'; import { BaseModel } from '../../config/basemodel.entity'; @Entity() -export class Product extends BaseModel{ +export class Product extends BaseModel { @PrimaryGeneratedColumn('uuid') id: string; @@ -30,13 +30,17 @@ export class Product extends BaseModel{ price: number; @Column({ - nullable:true + nullable: true, }) basePrice: number; @ManyToOne( - () => ProductSubCategories, - (subCategories) => subCategories.category, + () => { + return ProductSubCategories; + }, + (subCategories) => { + return subCategories.product; + }, ) subCategories: ProductSubCategories; } diff --git a/src/product/product.service.ts b/src/product/product.service.ts index 9238e7b..871a49b 100644 --- a/src/product/product.service.ts +++ b/src/product/product.service.ts @@ -55,8 +55,9 @@ export class ProductService { findAllByCategories(page, categories) { return this.productRepository.findAndCount({ - where: { - subCategories: categories, + join: { + alias: 'subCategories', + innerJoin: { subCategories: 'roles.users' }, }, skip: page * 10, take: 10, @@ -130,7 +131,7 @@ export class ProductService { endDate: updatePriceProductDto.endDate, }); - return + return true; } async remove(id: string) { diff --git a/src/users/entities/user.entity.ts b/src/users/entities/user.entity.ts index e23355a..5a121c6 100644 --- a/src/users/entities/user.entity.ts +++ b/src/users/entities/user.entity.ts @@ -1,9 +1,5 @@ import { Roles } from 'src/configurable/entities/roles.entity'; -import { - Entity, - Column, - PrimaryGeneratedColumn, ManyToOne, -} from 'typeorm'; +import { Entity, Column, PrimaryGeneratedColumn, ManyToOne } from 'typeorm'; import { BaseModel } from '../../config/basemodel.entity'; import { hashPassword } from '../../helper/hash_password'; @@ -33,7 +29,7 @@ export class User extends BaseModel { }, ) superior: User; - + @ManyToOne( () => { return Roles; diff --git a/src/users/users.controller.ts b/src/users/users.controller.ts index 4b64e5f..f9f2387 100644 --- a/src/users/users.controller.ts +++ b/src/users/users.controller.ts @@ -9,12 +9,12 @@ import { ParseUUIDPipe, HttpStatus, Query, - Request + Request, } from '@nestjs/common'; import { UsersService } from './users.service'; import { CreateUserDto } from './dto/create-user.dto'; import { UpdateUserDto } from './dto/update-user.dto'; -import {Public} from "../auth/public.decorator"; +import { Public } from '../auth/public.decorator'; @Controller({ path: 'users', @@ -24,12 +24,9 @@ export class UsersController { constructor(private readonly usersService: UsersService) {} @Post() - async create( - @Request() req, - @Body() createUserDto: CreateUserDto - ) { + async create(@Request() req, @Body() createUserDto: CreateUserDto) { return { - data: await this.usersService.create(createUserDto,req.user), + data: await this.usersService.create(createUserDto, req.user), statusCode: HttpStatus.CREATED, message: 'success', }; @@ -48,13 +45,22 @@ export class UsersController { }; } + @Get('find-by-supperior') + async findBySuperrior(@Request() req, @Query('page') page: number) { + return { + data: await this.usersService.findBySuperrior(req.user.id, page), + statusCode: HttpStatus.OK, + message: 'success', + }; + } + @Get('find-by-roles/:id') async findByRoles( - @Param('id', ParseUUIDPipe) id: string, - @Query('page') page: number - ) { + @Param('id', ParseUUIDPipe) id: string, + @Query('page') page: number, + ) { return { - data: await this.usersService.findByRoles(id,page), + data: await this.usersService.findByRoles(id, page), statusCode: HttpStatus.OK, message: 'success', }; diff --git a/src/users/users.service.ts b/src/users/users.service.ts index f122b90..96365c7 100644 --- a/src/users/users.service.ts +++ b/src/users/users.service.ts @@ -41,11 +41,11 @@ export class UsersService { const userData = new User(); userData.id = uuid.v4(); - (userData.username = createUserDto.username), - (userData.password = await hashPassword(createUserDto.password, salt)), - (userData.salt = salt), - (userData.superior = superior), - (userData.roles = roles); + userData.username = createUserDto.username; + userData.password = await hashPassword(createUserDto.password, salt); + userData.salt = salt; + userData.superior = superior; + userData.roles = roles; await this.connection.transaction(async (manager) => { const result = await manager.insert(User, userData); @@ -107,6 +107,20 @@ export class UsersService { }); } + findBySuperrior(superriorId: string, page: number) { + return this.usersRepository.findAndCount({ + skip: page * 10, + take: 10, + where: { + superior: superriorId, + }, + relations: ['roles'], + order: { + updatedAt: 'DESC', + }, + }); + } + async findExist(id: string) { try { return await this.usersRepository.findOneOrFail(id);