add: change implement enum and distribution
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user