public void EditCoin(int CoinId, int newCount, bool DoBlock) //Изменение блокировки и кол-ва монет { Coin coin = Repos.GetCoin(CoinId); if (coin != null) { coin.Count = newCount; coin.Block = DoBlock; Repos.EditCoin(coin); } }
private async Task <string> DetermineBlockChain(Request request) { try { var asset1 = request.Parameters.GetDefault <string>(CommandsKeys.Asset) ?? request.Parameters.GetDefault <string>(CommandsKeys.Asset1); var asset2 = request.Parameters.GetDefault <string>(CommandsKeys.Asset2); ICoin asset1FromDb = await _coinRepository.GetCoin(asset1); ICoin asset2FromDb = null; if (!string.IsNullOrWhiteSpace(asset2)) { asset2FromDb = await _coinRepository.GetCoin(asset2); } var blockchain1 = asset1FromDb.Blockchain.ToLower(); var blockchain2 = asset2FromDb?.Blockchain?.ToLower(); if (blockchain1 == Constants.EthereumBlockchain) { if (!string.IsNullOrWhiteSpace(blockchain2) && blockchain2 != Constants.EthereumBlockchain) { ThrowBadBlockchain(request.Action, asset1, asset2); } return(Constants.EthereumBlockchain); } if (blockchain1 == Constants.BitcoinBlockchain) { if (!string.IsNullOrWhiteSpace(blockchain2) && blockchain2 != Constants.BitcoinBlockchain) { ThrowBadBlockchain(request.Action, asset1, asset2); } return(Constants.BitcoinBlockchain); } ThrowBadBlockchain(request.Action, asset1, asset2); } catch (BackendException e) { await _logger.WriteError("RouteService", "DetermineBlockChain", "", e); //TODO: send email if blockchain is not supported } return(null); }
public async Task <string> CashinOverTransferContract(Guid id, string coin, string receiver, decimal amount) { var coinDb = await _coinRepository.GetCoin(coin); if (!coinDb.BlockchainDepositEnabled) { throw new ClientSideException(ExceptionType.WrongParams, "Coin must be payable"); } var contract = _web3.Eth.GetContract(_settings.TokenTransferContract.Abi, _settings.TokenTransferContract.Address); var cashin = contract.GetFunction("cashin"); var blockchainAmount = amount.ToBlockchainAmount(coinDb.Multiplier); var convertedId = EthUtils.GuidToBigInteger(id); var tr = await cashin.SendTransactionAsync(_settings.EthereumMainAccount, new HexBigInteger(Constants.GasForCoinTransaction), new HexBigInteger(0), convertedId, coinDb.AdapterAddress, receiver, blockchainAmount, Constants.GasForCoinTransaction, new byte[0]); return(tr); }
public async Task <ICoin> GetById(string id) { var coin = await _coinRepository.GetCoin(id); return(coin); }