|
@ -73,8 +73,8 @@ export class OrderService { |
|
|
dataSource?: DataSource; |
|
|
dataSource?: DataSource; |
|
|
symbol?: string; |
|
|
symbol?: string; |
|
|
tags?: Tag[]; |
|
|
tags?: Tag[]; |
|
|
|
|
|
updateAccountBalance?: boolean; |
|
|
userId: string; |
|
|
userId: string; |
|
|
updateAccountBalance: boolean; |
|
|
|
|
|
} |
|
|
} |
|
|
): Promise<Order> { |
|
|
): Promise<Order> { |
|
|
let Account; |
|
|
let Account; |
|
@ -90,12 +90,16 @@ export class OrderService { |
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const accountId = data.accountId; |
|
|
|
|
|
let currency = data.currency; |
|
|
const tags = data.tags ?? []; |
|
|
const tags = data.tags ?? []; |
|
|
|
|
|
const updateAccountBalance = data.updateAccountBalance ?? false; |
|
|
|
|
|
const userId = data.userId; |
|
|
|
|
|
|
|
|
if (data.type === 'ITEM') { |
|
|
if (data.type === 'ITEM') { |
|
|
const assetClass = data.assetClass; |
|
|
const assetClass = data.assetClass; |
|
|
const assetSubClass = data.assetSubClass; |
|
|
const assetSubClass = data.assetSubClass; |
|
|
const currency = data.SymbolProfile.connectOrCreate.create.currency; |
|
|
currency = data.SymbolProfile.connectOrCreate.create.currency; |
|
|
const dataSource: DataSource = 'MANUAL'; |
|
|
const dataSource: DataSource = 'MANUAL'; |
|
|
const id = uuidv4(); |
|
|
const id = uuidv4(); |
|
|
const name = data.SymbolProfile.connectOrCreate.create.symbol; |
|
|
const name = data.SymbolProfile.connectOrCreate.create.symbol; |
|
@ -138,8 +142,6 @@ export class OrderService { |
|
|
]); |
|
|
]); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const originalData = Object.assign({}, data); |
|
|
|
|
|
|
|
|
|
|
|
delete data.accountId; |
|
|
delete data.accountId; |
|
|
delete data.assetClass; |
|
|
delete data.assetClass; |
|
|
delete data.assetSubClass; |
|
|
delete data.assetSubClass; |
|
@ -152,8 +154,8 @@ export class OrderService { |
|
|
delete data.dataSource; |
|
|
delete data.dataSource; |
|
|
delete data.symbol; |
|
|
delete data.symbol; |
|
|
delete data.tags; |
|
|
delete data.tags; |
|
|
delete data.userId; |
|
|
|
|
|
delete data.updateAccountBalance; |
|
|
delete data.updateAccountBalance; |
|
|
|
|
|
delete data.userId; |
|
|
|
|
|
|
|
|
const orderData: Prisma.OrderCreateInput = data; |
|
|
const orderData: Prisma.OrderCreateInput = data; |
|
|
|
|
|
|
|
@ -170,19 +172,23 @@ export class OrderService { |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
if (originalData.updateAccountBalance) { |
|
|
if (updateAccountBalance === true) { |
|
|
let amount = data.unitPrice * data.quantity + data.fee; |
|
|
let amount = new Big(data.unitPrice) |
|
|
|
|
|
.mul(data.quantity) |
|
|
|
|
|
.plus(data.fee) |
|
|
|
|
|
.toNumber(); |
|
|
|
|
|
|
|
|
if (data.type === 'BUY') { |
|
|
if (data.type === 'BUY') { |
|
|
amount = amount * -1; |
|
|
amount = new Big(amount).mul(-1).toNumber(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
await this.accountService.updateAccountBalance( |
|
|
await this.accountService.updateAccountBalance({ |
|
|
originalData.accountId, |
|
|
accountId, |
|
|
originalData.userId, |
|
|
amount, |
|
|
originalData.currency, |
|
|
currency, |
|
|
amount |
|
|
userId, |
|
|
); |
|
|
date: data.date as Date |
|
|
|
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return order; |
|
|
return order; |
|
|