Skip to content

Commit

Permalink
fix: amount transaction log menstrual subscription (#229)
Browse files Browse the repository at this point in the history
fix amount transaction log menstrual subscription
  • Loading branch information
rubenkristian authored Dec 5, 2022
1 parent d495e43 commit 1f59bf7
Show file tree
Hide file tree
Showing 37 changed files with 302 additions and 76 deletions.
6 changes: 4 additions & 2 deletions src/common/transaction-logging/dto/transaction-logging.dto.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { TransactionStatusList } from '@common/transaction-status/models/transaction-status.list';
import { TransactionTypeList } from '@common/transaction-type/models/transaction-type.list';
import { Transform } from 'class-transformer';

export class TransactionLoggingDto {
Expand All @@ -14,9 +16,9 @@ export class TransactionLoggingDto {

ref_number: string;

transaction_status: number;
transaction_status: TransactionStatusList;

transaction_type: number;
transaction_type: TransactionTypeList;

transaction_hash?: string;
}
37 changes: 34 additions & 3 deletions src/common/transaction-logging/transaction-logging.service.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import { TransactionStatusList } from '@common/transaction-status/models/transaction-status.list';
import { TransactionStatusService } from '@common/transaction-status/transaction-status.service';
import { TransactionTypeList } from '@common/transaction-type/models/transaction-type.list';
import { TransactionTypeService } from '@common/transaction-type/transaction-type.service';
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
Expand All @@ -9,18 +13,45 @@ export class TransactionLoggingService {
constructor(
@InjectRepository(TransactionRequest)
private readonly transactionRequestRepository: Repository<TransactionRequest>,
private readonly transactionStatusService: TransactionStatusService,
private readonly transactionTypeService: TransactionTypeService,
) {}

create(data: TransactionLoggingDto) {
private async getTransactionStatus(
status: TransactionStatusList,
type: number,
) {
const transactionStatusDb =
await this.transactionStatusService.getTransactionStatus(type, status);

return transactionStatusDb.id;
}

private async getTransactionType(type: TransactionTypeList) {
const transactionTypeDb =
await this.transactionTypeService.getTransactionType(type);

return transactionTypeDb.id;
}

async create(data: TransactionLoggingDto) {
const transactionType = await this.getTransactionType(
data.transaction_type,
);
const transactionStatus = await this.getTransactionStatus(
data.transaction_status,
transactionType,
);

const logging = new TransactionRequest();
logging.address = data.address;
logging.amount = +data.amount;
logging.created_at = data.created_at;
logging.currency = data.currency;
logging.parent_id = data.parent_id.toString();
logging.ref_number = data.ref_number;
logging.transaction_type = data.transaction_type;
logging.transaction_status = data.transaction_status;
logging.transaction_type = transactionType;
logging.transaction_status = transactionStatus;
return this.transactionRequestRepository.save(logging);
}

Expand Down
14 changes: 14 additions & 0 deletions src/common/transaction-status/models/transaction-status.entity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
import { TransactionStatusList } from './transaction-status.list';

@Entity({ name: 'transaction_status' })
export class TransactionStatus {
@PrimaryGeneratedColumn()
id: number;

@Column()
id_type: number;

@Column()
transaction_status: TransactionStatusList;
}
27 changes: 27 additions & 0 deletions src/common/transaction-status/models/transaction-status.list.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
export enum TransactionStatusList {
Cancelled = 'Cancelled',
CustomerAddDataAsBounty = 'Customer Add Data as Bounty',
CustomerStakeRequestService = 'Customer Stake Request Service',
Excess = 'Excess',
Failed = 'Failed',
Finalized = 'Finalized',
Fulfilled = 'Fulfilled',
LabProvideRequestedService = 'Lab Provide Requested Service',
LabVerified = 'Lab Verified',
Paid = 'Paid',
Partial = 'Partial',
Refunded = 'Refunded',
RegisteredUser = 'Registered User',
Rejected = 'Rejected',
Revoked = 'Revoked',
ServiceCharge = 'Service Charge',
Stake = 'Stake',
Staked = 'Staked',
Unpaid = 'Unpaid',
Unstake = 'Unstake',
Unstaked = 'Unstaked',
Unverified = 'Unverified',
Verified = 'Verified',
WaitingForUnstake = 'Waiting For Unstake',
WaitingForUnstaked = 'Waiting For Unstaked',
}
12 changes: 12 additions & 0 deletions src/common/transaction-status/transaction-status.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { TransactionStatus } from './models/transaction-status.entity';
import { TransactionStatusService } from './transaction-status.service';

@Module({
imports: [TypeOrmModule.forFeature([TransactionStatus])],
exports: [TypeOrmModule, TransactionStatusService],
controllers: [],
providers: [TransactionStatusService],
})
export class TransactionStatusModule {}
25 changes: 25 additions & 0 deletions src/common/transaction-status/transaction-status.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { TransactionStatus } from './models/transaction-status.entity';
import { TransactionStatusList } from './models/transaction-status.list';

@Injectable()
export class TransactionStatusService {
constructor(
@InjectRepository(TransactionStatus)
private readonly transactionStatusRepository: Repository<TransactionStatus>,
) {}

async getTransactionStatus(
idType: number,
transactionStatus: TransactionStatusList,
) {
return await this.transactionStatusRepository.findOne({
where: {
id_type: idType,
transaction_status: transactionStatus,
},
});
}
}
11 changes: 11 additions & 0 deletions src/common/transaction-type/models/transaction-type.entity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
import { TransactionTypeList } from './transaction-type.list';

@Entity({ name: 'transaction_types' })
export class TransactionType {
@PrimaryGeneratedColumn()
id: number;

@Column()
type: TransactionTypeList;
}
11 changes: 11 additions & 0 deletions src/common/transaction-type/models/transaction-type.list.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
export enum TransactionTypeList {
GeneticAnalysisOrder = 'Genetic Analysis Order',
GeneticAnalyst = 'Genetic Analyst',
Lab = 'Lab',
Order = 'Order',
Reward = 'Reward',
StakingGeneticAnalyst = 'Staking Genetic Analyst',
StakingLab = 'Staking Lab',
StakingRequestService = 'Staking Request Service',
MenstrualCalendar = 'Menstrual Calendar',
}
12 changes: 12 additions & 0 deletions src/common/transaction-type/transaction-type.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { TransactionType } from './models/transaction-type.entity';
import { TransactionTypeService } from './transaction-type.service';

@Module({
imports: [TypeOrmModule.forFeature([TransactionType])],
exports: [TypeOrmModule, TransactionTypeService],
controllers: [],
providers: [TransactionTypeService],
})
export class TransactionTypeModule {}
21 changes: 21 additions & 0 deletions src/common/transaction-type/transaction-type.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { TransactionType } from './models/transaction-type.entity';
import { TransactionTypeList } from './models/transaction-type.list';

@Injectable()
export class TransactionTypeService {
constructor(
@InjectRepository(TransactionType)
private readonly transactionTypeRepository: Repository<TransactionType>,
) {}

async getTransactionType(type: TransactionTypeList) {
return await this.transactionTypeRepository.findOne({
where: {
type: type,
},
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import { CommandHandler, ICommandHandler } from '@nestjs/cqrs';
import { TransactionLoggingDto } from '@common/transaction-logging/dto/transaction-logging.dto';
import { TransactionLoggingService } from '@common/index';
import { GeneticAnalysisOrderCancelledCommand } from './genetic-analysis-order-cancelled.command';
import { TransactionTypeList } from '@common/transaction-type/models/transaction-type.list';
import { TransactionStatusList } from '@common/transaction-status/models/transaction-status.list';

@Injectable()
@CommandHandler(GeneticAnalysisOrderCancelledCommand)
Expand Down Expand Up @@ -41,8 +43,8 @@ export class GeneticAnalysisOrderCancelledHandler
currency: geneticAnalysisOrder.currency.toUpperCase(),
parent_id: BigInt(geneticAnalysisOrderHistory.id),
ref_number: geneticAnalysisOrder.id,
transaction_status: 17,
transaction_type: 3,
transaction_type: TransactionTypeList.GeneticAnalysisOrder,
transaction_status: TransactionStatusList.Cancelled,
};

if (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import {
import { GeneticAnalysisOrderFulfilledCommand } from './genetic-analysis-order-fulfilled.command';
import { NotificationDto } from '@common/notification/dto/notification.dto';
import currencyUnit from '../../../models/currencyUnit';
import { TransactionTypeList } from '@common/transaction-type/models/transaction-type.list';
import { TransactionStatusList } from '@common/transaction-status/models/transaction-status.list';

@Injectable()
@CommandHandler(GeneticAnalysisOrderFulfilledCommand)
Expand Down Expand Up @@ -63,8 +65,8 @@ export class GeneticAnalysisOrderFulfilledHandler
currency: geneticAnalysisOrder.currency.toUpperCase(),
parent_id: BigInt(geneticAnalysisOrderHistory.id),
ref_number: geneticAnalysisOrder.id,
transaction_status: 15,
transaction_type: 3,
transaction_type: TransactionTypeList.GeneticAnalysisOrder,
transaction_status: TransactionStatusList.Fulfilled,
};

const serviceChargeLogging: TransactionLoggingDto = {
Expand All @@ -74,8 +76,8 @@ export class GeneticAnalysisOrderFulfilledHandler
currency: geneticAnalysisOrder.currency.toUpperCase(),
parent_id: BigInt(geneticAnalysisOrderHistory.id),
ref_number: geneticAnalysisOrder.id,
transaction_status: 32,
transaction_type: 3,
transaction_type: TransactionTypeList.GeneticAnalysisOrder,
transaction_status: TransactionStatusList.Fulfilled,
};

if (!isGeneticAnalysisOrderHasBeenInsert) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ import {
} from '@debionetwork/polkadot-provider';
import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager';
import { keyList } from '@common/secrets';
import { TransactionTypeList } from '@common/transaction-type/models/transaction-type.list';
import { TransactionStatusList } from '@common/transaction-status/models/transaction-status.list';

@Injectable()
@CommandHandler(GeneticAnalysisOrderPaidCommand)
Expand Down Expand Up @@ -59,8 +61,8 @@ export class GeneticAnalysisOrderPaidHandler
currency: geneticAnalysisOrder.currency.toUpperCase(),
parent_id: BigInt(geneticAnalysisOrderHistory.id ?? 0),
ref_number: geneticAnalysisOrder.id,
transaction_status: 14,
transaction_type: 3,
transaction_type: TransactionTypeList.GeneticAnalysisOrder,
transaction_status: TransactionStatusList.Paid,
};

await this.loggingService.create(geneticAnalysisOrderLogging);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import {
} from '@common/index';
import { GeneticAnalysisOrderRefundedCommand } from './genetic-analysis-order-refunded.command';
import { NotificationDto } from '@common/notification/dto/notification.dto';
import { TransactionTypeList } from '@common/transaction-type/models/transaction-type.list';
import { TransactionStatusList } from '@common/transaction-status/models/transaction-status.list';
@Injectable()
@CommandHandler(GeneticAnalysisOrderRefundedCommand)
export class GeneticAnalysisOrderRefundedHandler
Expand Down Expand Up @@ -44,8 +46,8 @@ export class GeneticAnalysisOrderRefundedHandler
currency: geneticAnalysisOrder.currency.toUpperCase(),
parent_id: BigInt(geneticAnalysisOrderHistory.id),
ref_number: geneticAnalysisOrder.id,
transaction_status: 16,
transaction_type: 3,
transaction_type: TransactionTypeList.GeneticAnalysisOrder,
transaction_status: TransactionStatusList.Refunded,
};

if (!isGeneticAnalysisOrderHasBeenInsert) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import {
} from '@common/index';
import { GeneticAnalysisOrderCreatedCommand } from './genetic-analysis-order-created.command';
import { NotificationDto } from '@common/notification/dto/notification.dto';
import { TransactionTypeList } from '@common/transaction-type/models/transaction-type.list';
import { TransactionStatusList } from '@common/transaction-status/models/transaction-status.list';

@Injectable()
@CommandHandler(GeneticAnalysisOrderCreatedCommand)
Expand Down Expand Up @@ -44,8 +46,8 @@ export class GeneticAnalysisOrderCreatedHandler
currency: geneticAnalysisOrder.currency.toUpperCase(),
parent_id: BigInt(0),
ref_number: geneticAnalysisOrder.id,
transaction_status: 13,
transaction_type: 3,
transaction_type: TransactionTypeList.GeneticAnalysisOrder,
transaction_status: TransactionStatusList.Unpaid,
};
const currDateTime = this.dateTimeProxy.new();
const notificationInput: NotificationDto = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import { CommandHandler, ICommandHandler } from '@nestjs/cqrs';
import { TransactionLoggingDto } from '@common/transaction-logging/dto/transaction-logging.dto';
import { DateTimeProxy, TransactionLoggingService } from '@common/index';
import { GeneticAnalystStakedCommand } from './genetic-analyst-staked.command';
import { TransactionTypeList } from '@common/transaction-type/models/transaction-type.list';
import { TransactionStatusList } from '@common/transaction-status/models/transaction-status.list';

@Injectable()
@CommandHandler(GeneticAnalystStakedCommand)
Expand Down Expand Up @@ -37,8 +39,8 @@ export class GeneticAnalystStakedHandler
parent_id:
BigInt(Number(isGeneticAnalystHasBeenInsert.id)) || BigInt(0),
ref_number: geneticAnalyst.accountId,
transaction_status: 23,
transaction_type: 5,
transaction_type: TransactionTypeList.StakingGeneticAnalyst,
transaction_status: TransactionStatusList.Staked,
};
await this.loggingService.create(geneticAnalystLogging);
} catch (error) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import { CommandHandler, ICommandHandler } from '@nestjs/cqrs';
import { TransactionLoggingDto } from '@common/transaction-logging/dto/transaction-logging.dto';
import { DateTimeProxy, TransactionLoggingService } from '@common/index';
import { GeneticAnalystUnstakedCommand } from './genetic-analyst-unstaked.command';
import { TransactionTypeList } from '@common/transaction-type/models/transaction-type.list';
import { TransactionStatusList } from '@common/transaction-status/models/transaction-status.list';

@Injectable()
@CommandHandler(GeneticAnalystUnstakedCommand)
Expand Down Expand Up @@ -37,8 +39,8 @@ export class GeneticAnalystUnstakedHandler
currency: 'DBIO',
parent_id: BigInt(Number(isGeneticAnalystHasBeenInsert.id)),
ref_number: geneticAnalyst.accountId,
transaction_status: 24,
transaction_type: 5,
transaction_type: TransactionTypeList.StakingGeneticAnalyst,
transaction_status: TransactionStatusList.Unstaked,
};

await this.loggingService.create(geneticAnalystLogging);
Expand Down
Loading

0 comments on commit 1f59bf7

Please sign in to comment.