add: change implement enum and distribution

This commit is contained in:
ilham
2021-12-07 20:23:26 +07:00
parent a4cd9d0b92
commit 495ba88ef8
10 changed files with 147 additions and 111 deletions

View File

@@ -3,11 +3,12 @@ import { DistributeTransactionDto } from './dto/distribute-transaction.dto';
import { UpdateTransactionDto } from './dto/update-transaction.dto';
import { InjectRepository } from '@nestjs/typeorm';
import { Transactions } from './entities/transactions.entity';
import { Repository } from 'typeorm';
import { User } from '../users/entities/user.entity';
import { Connection, Repository } from 'typeorm';
import { COA } from './entities/coa.entity';
import { TransactionType } from './entities/transaction-type.entity';
import { TransactionJournal } from './entities/transaction-journal.entity';
import { CoaService } from './coa.service';
import { statusTransaction } from '../helper/enum-list';
@Injectable()
export class TransactionService {
@@ -19,31 +20,50 @@ export class TransactionService {
@InjectRepository(TransactionJournal)
private transactionJournalRepository: Repository<TransactionJournal>,
@InjectRepository(COA)
private coaRepository: Repository<COA>
private coaRepository: Repository<COA>,
private coaService: CoaService,
private connection: Connection,
) {}
async create(distributeTransactionDto: DistributeTransactionDto) {
// GET USER
// GET COA
const coaSender = await this.coaService.findByUser('id_user');
const coaReciever = await this.coaService.findByUser('id_user');
// GET TYPE TRANSAKSI
await this.connection.transaction(async (manager) => {
//INSERT TRANSACTION
const transactionSaved = await manager.insert(Transactions, {
amount: distributeTransactionDto.amount,
user: 'id_user',
userDestination: distributeTransactionDto.destination,
status: statusTransaction.SUCCESS,
});
//INSERT TRANSACTION JOURNAL FOR SENDER
const journalSender = await manager.insert(TransactionJournal, {
amount: distributeTransactionDto.amount,
transaction: transactionSaved.identifiers[0],
coa: coaSender,
});
//INSERT TRANSACTION JOURNAL FOR RECEIVER
const journalReceiver = await manager.insert(TransactionJournal, {
amount: distributeTransactionDto.amount,
transaction: transactionSaved.identifiers[0],
coa: coaReciever,
});
//UPDATE AMOUNT COA SENDER
coaSender.amount = coaSender.amount - distributeTransactionDto.amount;
await manager.save(coaSender);
coaReciever.amount = coaReciever.amount + distributeTransactionDto.amount;
await manager.save(coaReciever);
});
//ADD USER IN INSERT
const transactionSaved = await this.transactionRepository.insert({
amount: distributeTransactionDto.amount,
});
//INSERT TRANSACTION JOURNAL FOR SEND
await this.transactionJournalRepository.insert({
amount: distributeTransactionDto.amount,
transaction: transactionSaved.identifiers[0],
});
//INSERT TRANSACTION JOURNAL FOR RECIEVE
await this.transactionJournalRepository.insert({
amount: distributeTransactionDto.amount,
transaction: transactionSaved.identifiers[0],
});
// await this.coaRepository.update({
// amount:1