コード例 #1
0
        public async Task <IHttpActionResult> DeploySampleContract(int userId)
        {
            bool isContractAlreadyExist = _contractRepository.GetAll().ToList()
                                          .Where(item => item.Name == CONTRACT_NAME).FirstOrDefault() != null ? true : false;

            if (!isContractAlreadyExist)
            {
                var user = _userRepository.GetByID(userId);
                if (user != null)
                {
                    var userAccount = _userAccountRepository.GetAll().ToList().Where(item => item.UserId == user.Id).FirstOrDefault();

                    var node = _nodeRepository.GetByID(user.NodeId);
                    if (node != null && userAccount != null)
                    {
                        var accessKey = _accessKeyRepository.GetAll().ToList().Where(item => item.NodeId == node.Id).FirstOrDefault();
                        if (accessKey != null)
                        {
                            var managedAccount = new ManagedAccount(userAccount.Address, userAccount.PrivateKey);
                            var web3Managed    = new Web3(managedAccount, accessKey.UrlKey);
                            var service        = await HelloService.DeployContractAndGetServiceAsync(web3Managed,
                                                                                                     new HelloDeployment());

                            var message = await service.GetMessageQueryAsync(new GetMessageFunction());

                            _contractRepository.Save(new DLL.DataModels.Contract()
                            {
                                Name          = CONTRACT_NAME,
                                Address       = service.ContractHandler.ContractAddress,
                                NodeId        = node.Id,
                                UserId        = user.Id,
                                UserAccountId = userAccount.Id
                            });
                            return(Ok(message));
                        }
                    }
                }
            }
            return(Ok("Contract Already Exist"));
        }