chore: user setting module

This commit is contained in:
Matin
2025-02-03 15:30:49 +03:30
parent 014aaf353d
commit 957178261e
25 changed files with 465 additions and 52 deletions
@@ -7,6 +7,7 @@ import { BaseEntity } from "../../../common/entities/base.entity";
import { UserAnnouncement } from "../../announcements/entities/user-announcement.entity";
import { Criticism } from "../../criticisms/entities/criticism.entity";
import { DanakService } from "../../danak-services/entities/danak-service.entity";
import { UserSetting } from "../../settings/entities/user-setting.entity";
import { TicketMessage } from "../../tickets/entities/ticket-message.entity";
import { Ticket } from "../../tickets/entities/ticket.entity";
@@ -58,4 +59,7 @@ export class User extends BaseEntity {
@OneToMany(() => UserAnnouncement, (userAnnouncement) => userAnnouncement.user)
userAnnouncements: UserAnnouncement[];
@OneToMany(() => UserSetting, (settings) => settings.user, { nullable: false })
settings: UserSetting;
}
+58 -7
View File
@@ -1,17 +1,18 @@
import { BadRequestException, Injectable } from "@nestjs/common";
import slugify from "slugify";
import { In, Not } from "typeorm";
import { DataSource, In, Not } from "typeorm";
// import { roles } from "../../../../database/seeders/role.seeder";
import { CommonMessage, UserMessage } from "../../../common/enums/message.enum";
import { CompleteRegistrationDto } from "../../auth/DTO/complete-register.dto";
import { UserSettingsService } from "../../settings/providers/user-settings.service";
import { CheckValidityDTO } from "../DTO/check-validity.dto";
import { UpdateProfileDto } from "../DTO/update-profile.dto";
import { CreateUserGroupDto } from "../DTO/user-group.dto";
import { Role } from "../entities/role.entity";
import { User } from "../entities/user.entity";
import { RoleEnum } from "../enums/role.enum";
import { ValidityType } from "../enums/validity-type.enum";
import { RoleRepository } from "../repositories/roles.repository";
import { UserGroupRepository } from "../repositories/user-group.repository";
import { UserRepository } from "../repositories/users.repository";
@@ -33,8 +34,9 @@ export class UsersService {
};
constructor(
private userRepository: UserRepository,
private roleRepository: RoleRepository,
private userGroupRepository: UserGroupRepository,
private readonly userSettingsService: UserSettingsService,
private readonly dataSource: DataSource,
) {}
/************************************************************ */
@@ -96,11 +98,47 @@ export class UsersService {
// const existEmail = await this.userRepository.findOneWithEmail(registerDto.email);
// if (existEmail) throw new BadRequestException(UserMessage.EMAIL_EXIST);
const role = await this.roleRepository.findOneBy({ name: RoleEnum.USER });
if (!role) throw new BadRequestException(UserMessage.ROLE_NOT_FOUND);
const queryRunner = this.dataSource.createQueryRunner();
const user = this.userRepository.create({ ...registerDto, password: hashedPassword, role });
return await this.userRepository.save(user);
await queryRunner.connect(); // Establish a connection
await queryRunner.startTransaction(); // Start the transaction
try {
// Find the USER role
const role = await queryRunner.manager.findOne(Role, {
where: { name: RoleEnum.USER },
});
if (!role) {
throw new BadRequestException(UserMessage.ROLE_NOT_FOUND);
}
// Create and save the User entity
const user = queryRunner.manager.create(User, {
...registerDto,
password: hashedPassword,
role,
});
await queryRunner.manager.save(user);
await this.userSettingsService.createUserSettings(user.id, queryRunner);
// Commit the transaction
await queryRunner.commitTransaction();
return user; // Return the created user
} catch (error) {
await queryRunner.rollbackTransaction();
throw error;
} finally {
await queryRunner.release();
}
// const role = await this.roleRepository.findOneBy({ name: RoleEnum.USER });
// if (!role) throw new BadRequestException(UserMessage.ROLE_NOT_FOUND);
// const user = this.userRepository.create({ ...registerDto, password: hashedPassword, role });
// await this.userSettingsService.createUserSettings(user.id);
// return await this.userRepository.save(user);
}
/************************************************************ */
@@ -153,4 +191,17 @@ export class UsersService {
userGroups,
};
}
///****************************************************** */
async updateUserPassword(userId: string, newPassword: string) {
const updatedUser = await this.userRepository.update(
{ id: userId },
{
password: newPassword,
},
);
return {
updatedUser,
};
}
}
+5 -2
View File
@@ -9,10 +9,13 @@ import { RoleRepository } from "./repositories/roles.repository";
import { UserGroupRepository } from "./repositories/user-group.repository";
import { UserRepository } from "./repositories/users.repository";
import { UsersController } from "./users.controller";
import { UserSetting } from "../settings/entities/user-setting.entity";
import { UserSettingsService } from "../settings/providers/user-settings.service";
import { UserSettingsRepository } from "../settings/repositories/user-settings.repository";
@Module({
imports: [TypeOrmModule.forFeature([User, Role, UserGroup])],
providers: [UsersService, UserRepository, RoleRepository, UserGroupRepository],
imports: [TypeOrmModule.forFeature([User, Role, UserGroup, UserSetting])],
providers: [UsersService, UserRepository, RoleRepository, UserGroupRepository, UserSettingsRepository, UserSettingsService],
controllers: [UsersController],
exports: [UsersService, TypeOrmModule],
})