Files
parsshop-back/dist/modules/users/users.service.js
2026-03-26 12:25:46 +03:00

107 lines
4.6 KiB
JavaScript

"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UsersService = void 0;
const common_1 = require("@nestjs/common");
const typeorm_1 = require("@nestjs/typeorm");
const typeorm_2 = require("typeorm");
const loyalty_profile_entity_1 = require("./entities/loyalty-profile.entity");
const user_entity_1 = require("./entities/user.entity");
const user_level_history_entity_1 = require("./entities/user-level-history.entity");
const wallet_entity_1 = require("./entities/wallet.entity");
const user_role_enum_1 = require("./enums/user-role.enum");
const user_level_enum_1 = require("./enums/user-level.enum");
let UsersService = class UsersService {
usersRepository;
walletsRepository;
loyaltyProfilesRepository;
userLevelHistoriesRepository;
constructor(usersRepository, walletsRepository, loyaltyProfilesRepository, userLevelHistoriesRepository) {
this.usersRepository = usersRepository;
this.walletsRepository = walletsRepository;
this.loyaltyProfilesRepository = loyaltyProfilesRepository;
this.userLevelHistoriesRepository = userLevelHistoriesRepository;
}
findByPhone(phone) {
return this.usersRepository.findOne({
where: { phone },
relations: { wallet: true, loyaltyProfile: true },
});
}
findByUsername(username) {
return this.usersRepository.findOne({
where: { username },
relations: { wallet: true, loyaltyProfile: true },
});
}
findById(id) {
return this.usersRepository.findOne({
where: { id },
relations: { wallet: true, loyaltyProfile: true },
});
}
async findOrCreateByPhone(phone, fullName) {
let user = await this.findByPhone(phone);
if (!user) {
user = await this.create({
phone,
fullName: fullName ?? phone,
role: user_role_enum_1.UserRole.USER,
});
}
return user;
}
async create(payload) {
const user = this.usersRepository.create(payload);
const savedUser = await this.usersRepository.save(user);
const wallet = this.walletsRepository.create({
user: savedUser,
balance: 0,
});
await this.walletsRepository.save(wallet);
const loyaltyProfile = this.loyaltyProfilesRepository.create({
user: savedUser,
currentLevel: user_level_enum_1.UserLevel.BRONZE,
totalSpent: 0,
});
await this.loyaltyProfilesRepository.save(loyaltyProfile);
const levelHistory = this.userLevelHistoriesRepository.create({
loyaltyProfile,
level: loyaltyProfile.currentLevel,
reason: 'Initial level assignment',
});
await this.userLevelHistoriesRepository.save(levelHistory);
const createdUser = await this.findById(savedUser.id);
if (!createdUser) {
throw new Error('User creation failed');
}
return createdUser;
}
async save(user) {
return this.usersRepository.save(user);
}
};
exports.UsersService = UsersService;
exports.UsersService = UsersService = __decorate([
(0, common_1.Injectable)(),
__param(0, (0, typeorm_1.InjectRepository)(user_entity_1.User)),
__param(1, (0, typeorm_1.InjectRepository)(wallet_entity_1.Wallet)),
__param(2, (0, typeorm_1.InjectRepository)(loyalty_profile_entity_1.LoyaltyProfile)),
__param(3, (0, typeorm_1.InjectRepository)(user_level_history_entity_1.UserLevelHistory)),
__metadata("design:paramtypes", [typeorm_2.Repository,
typeorm_2.Repository,
typeorm_2.Repository,
typeorm_2.Repository])
], UsersService);
//# sourceMappingURL=users.service.js.map