Loading backend/src/user/user.service.ts +41 −2 Original line number Diff line number Diff line import { Injectable } from '@nestjs/common'; import { BadRequestException, Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { User } from './entities/user.entity'; import { Repository } from 'typeorm'; import { CreateUserDto } from './dto/create-user.dto'; import { Category } from 'src/category/entities/category.entity'; import { CategoryService } from 'src/category/category.service'; import { LANGUAGES } from 'src/shared/enum/languages.enum'; @Injectable() /** * Service responsible for handling user-related operations. */ export class UserService { constructor(@InjectRepository(User) private userRepository: Repository<User>) {} constructor( @InjectRepository(User) private userRepository: Repository<User>, private categoryService: CategoryService, ) {} async findOne(email: string) { return await this.userRepository.findOneBy({ email }); Loading @@ -28,4 +34,37 @@ export class UserService { async updatePassword(email: string, password: string) { await this.userRepository.update({ email }, { password }); } async updatePreferedCategories(email: string, idCategories: number[]) { const user = await this.userRepository.findOneBy({ email }); const categories: Category[] = []; for (const idCategory of idCategories) { const categoryEN: Category = await this.categoryService.findOne(idCategory); if (!categoryEN) throw new BadRequestException('Category not found'); categoryEN.language = LANGUAGES.EN; const categoryES: Category = { ...categoryEN, language: LANGUAGES.ES, }; categories.push(categoryEN); categories.push(categoryES); } user.preferedCategories = categories; await this.userRepository.save(user); } async getPreferedCategories(email: string, language: LANGUAGES): Promise<any[]> { const user: any = await this.userRepository.findOne({ relations: { preferedCategories: true, }, where: { email, preferedCategories: { language, }, }, }); return user?.preferedCategories || []; } } Loading
backend/src/user/user.service.ts +41 −2 Original line number Diff line number Diff line import { Injectable } from '@nestjs/common'; import { BadRequestException, Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { User } from './entities/user.entity'; import { Repository } from 'typeorm'; import { CreateUserDto } from './dto/create-user.dto'; import { Category } from 'src/category/entities/category.entity'; import { CategoryService } from 'src/category/category.service'; import { LANGUAGES } from 'src/shared/enum/languages.enum'; @Injectable() /** * Service responsible for handling user-related operations. */ export class UserService { constructor(@InjectRepository(User) private userRepository: Repository<User>) {} constructor( @InjectRepository(User) private userRepository: Repository<User>, private categoryService: CategoryService, ) {} async findOne(email: string) { return await this.userRepository.findOneBy({ email }); Loading @@ -28,4 +34,37 @@ export class UserService { async updatePassword(email: string, password: string) { await this.userRepository.update({ email }, { password }); } async updatePreferedCategories(email: string, idCategories: number[]) { const user = await this.userRepository.findOneBy({ email }); const categories: Category[] = []; for (const idCategory of idCategories) { const categoryEN: Category = await this.categoryService.findOne(idCategory); if (!categoryEN) throw new BadRequestException('Category not found'); categoryEN.language = LANGUAGES.EN; const categoryES: Category = { ...categoryEN, language: LANGUAGES.ES, }; categories.push(categoryEN); categories.push(categoryES); } user.preferedCategories = categories; await this.userRepository.save(user); } async getPreferedCategories(email: string, language: LANGUAGES): Promise<any[]> { const user: any = await this.userRepository.findOne({ relations: { preferedCategories: true, }, where: { email, preferedCategories: { language, }, }, }); return user?.preferedCategories || []; } }