fix user input

This commit is contained in:
Ilham Dwi Pratama S 2021-12-09 02:18:02 +07:00
parent d030624765
commit 84fda27e2d
3 changed files with 59 additions and 48 deletions

View File

@ -15,23 +15,19 @@ export class CoaService {
) {}
async create(inputCoaDto: InputCoaDto) {
const user = await this.userService.findExist(inputCoaDto.userId)
console.log(coaType[inputCoaDto.type])
console.log(inputCoaDto.type)
const result = await this.coaRepository.insert({
user:user.id,
name: coaType[inputCoaDto.type] + '-' + user.username,
balanceType:inputCoaDto.balanceType,
type:inputCoaDto.type,
amount:0
});
const user = inputCoaDto.user
let coaData = new COA();
coaData.user = user.id;
coaData.name = coaType[inputCoaDto.type] + '-' + user.username;
coaData.balanceType = inputCoaDto.balanceType;
coaData.type = inputCoaDto.type;
coaData.amount = 0;
const result = await inputCoaDto.coaEntityManager.insert(COA,coaData);
const coaData = await this.coaRepository.findOneOrFail(
result.identifiers[0].id,
);
if(inputCoaDto.type == coaType.ACCOUNT_RECEIVABLE || inputCoaDto.type == coaType.ACCOUNT_PAYABLE){
coaData.relatedUser = inputCoaDto.relatedUserId;
await this.coaRepository.save(coaData)
await inputCoaDto.coaEntityManager.save(coaData)
}
return coaData;

View File

@ -1,9 +1,11 @@
import { IsNotEmpty, IsUUID } from 'class-validator';
import { balanceType, coaType } from 'src/helper/enum-list';
import { User } from 'src/users/entities/user.entity';
import { EntityManager } from 'typeorm';
export class InputCoaDto {
@IsUUID()
userId: string;
user: User;
@IsNotEmpty()
type: coaType;
@ -13,4 +15,7 @@ export class InputCoaDto {
@IsUUID()
relatedUserId: string;
@IsNotEmpty()
coaEntityManager: EntityManager;
}

View File

@ -1,7 +1,7 @@
import { forwardRef, HttpException, HttpStatus, Inject, Injectable } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { EntityNotFoundError, Repository } from 'typeorm';
import { Connection, EntityNotFoundError, Repository } from 'typeorm';
import { User } from './entities/user.entity';
import { InjectRepository } from '@nestjs/typeorm';
import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util';
@ -10,6 +10,7 @@ import { CoaService } from 'src/transaction/coa.service';
import { balanceType, coaType } from 'src/helper/enum-list';
import { RoleService } from 'src/configurable/roles.service';
import { InputCoaDto } from 'src/transaction/dto/input-coa.dto';
import * as uuid from "uuid";
@Injectable()
export class UsersService {
@ -18,39 +19,46 @@ export class UsersService {
private usersRepository: Repository<User>,
@Inject(forwardRef(() => CoaService))
private coaService: CoaService,
private roleService: RoleService
private roleService: RoleService,
private connection: Connection,
) {}
async create(createUserDto: CreateUserDto, currentUser: any) {
const roles = await this.roleService.findOne(createUserDto.roleId);
const superior = await this.findByUsername(currentUser.username);
const salt = randomStringGenerator();
const result = await this.usersRepository.insert({
username: createUserDto.username,
password: await hashPassword(createUserDto.password, salt),
salt,
superior:superior,
roles:roles
});
let 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
await this.connection.transaction(async (manager) => {
const result = await manager.insert(User,userData);
let dataCoaWallet = new InputCoaDto();
dataCoaWallet.userId = result.identifiers[0].id;
dataCoaWallet.user = userData;
dataCoaWallet.balanceType = balanceType.CREDIT;
dataCoaWallet.type = coaType.WALLET;
dataCoaWallet.coaEntityManager = manager;
if(createUserDto.superior){
let dataCoaAP = new InputCoaDto();
dataCoaAP.userId = result.identifiers[0].id;
dataCoaAP.user = userData;
dataCoaAP.balanceType = balanceType.CREDIT;
dataCoaAP.relatedUserId = superior.id;
dataCoaAP.type = coaType.ACCOUNT_PAYABLE;
dataCoaAP.coaEntityManager = manager;
let dataCoaAR = new InputCoaDto();
dataCoaAR.userId = result.identifiers[0].id;
dataCoaAR.user = userData;
dataCoaAR.balanceType = balanceType.DEBIT;
dataCoaAR.relatedUserId = superior.id;
dataCoaAR.type = coaType.ACCOUNT_RECEIVABLE;
dataCoaAR.coaEntityManager = manager;
await this.coaService.create(dataCoaAP);
await this.coaService.create(dataCoaAR);
@ -58,7 +66,9 @@ export class UsersService {
await this.coaService.create(dataCoaWallet);
return this.usersRepository.findOneOrFail(result.identifiers[0].id);
})
return userData;
}
findAll(page:number) {